How to Become A “Bad-Ass” Developer in Nigeria

Ok, so here’s the deal, we all know becoming an exceptional developer requires a lot of years of experience working on large scale projects and all that.

However, there’s more to being a real bad-ass developer than just knowing how to code, you’ve got to also know how to work with the right tools, techniques and standards. Unfortunately, this is where most Nigerian developers are seriously lacking.

So in this article I’m going to be mentioning some things you already know or you may have missed out, in honing those ninja skill of yours in truly becoming the “Kick-ass Master” you were born to be.

1) Clean Code

I’ve got to say, this is perhaps the holy grail of software/code writing. Its amazing to see how much code is being churned out by developers in Nigeria that fall short of this requirement.

If you’re going to be a real bad-ass then you’re going to have to learn how to work with others in a team and this means you’re going to be looking at their code and them yours. This means your code should be easy to understand without a member of your team needing to ask you to explain what you’re doing.

It sounds trivial and maybe even ridiculous, but trust me you may not be able to reach the zenith of perfection as a bad-ass developer if you don’t develop this skill.

For this, I’d recommend the book titled Clean Code by Robert Cecil Martin (aka Uncle Bob), it deals extensively on naming conventions & methodologies for variables, arrays, functions, iteration statements, classes, objects, comments and so much more.

2) Integrated Development Environment (IDE)

Most likely you may already be using an IDE or code editor at work. So I’m not really going to dwell on this too much. So what’s the big deal about an IDE?

Well here’s the thing, a good IDE will personally help you save a lot of time running tasks you’d have performed outside the IDE.

A great IDE will usually have option for you to write code, run shell terminal commands, connect GIT accounts, add extensions, load snippets, run emmet abbreviations and so on.

Some of these amazing IDEs I’d personally recommend are Visual Studio Code, Sublime, Atom, Komodo, Brackets, Coda & Notepad++. My personal favourite is Visual Studio Code and I encourage developers to use it. It can be installed on both Mac & PC.

3) Development Frameworks

If you have been developing software and web applications for a while, you must have at some point in your career, wondered if there is a better way to build your applications easily and faster without having to reinvent the wheel all the time.

Truth be told is, there is a way! Its called frameworks!!!

Simply put, a framework is a library of files and scripts all bundled together & designed to help developers build applications faster and better in a more structured, organized and standard format.

The major advantage is that applications built using frameworks are easily scalable, since developers who were not present during the initial build can quickly dive in and contribute to the code if they are familiar using the framework.

It also provides advantages such as Data Sanitation & Validation, User Authentication, URL Rewrites (Routes), 404 Error Handling, Unit Testing, Templating, Database Seeding, In-built Application Functions, Security (CSRF) and many others too numerous to mention.

Most frameworks employ the MVC approach (Model, View, Controller) to building applications and here are few examples of frameworks in different languages: Laravel (PHP), Symphony (PHP), ExpressJS (JavaScript), AngularJS,2,4 (JavaScript), NodeJS (JavaScript), Sinatra (Ruby), Ruby on Rails (Ruby), Django (Python), Flask (Python) and so on.

4) Version Control Software (GitHub & BitBucket)

Every bad-ass developer is going to work with a team at some point in their career, and often times software tasks may be broken down in form of modules and assigned to individual team members.

One of the most frequent questions asked by young developers in Nigeria is “how can many developers work on a piece of code without worrying about who has made changes and at what point the changes were made”?

VCS to the rescue!!!

Version control software like GitHub & BitBucket were designed exactly for the scenario I just painted above. With VCS, once a project is begun in a new repository, a master branch is created.

From then on, other contributors can create individual branches of their own from the original master branch to work separately and when they’re finished they can request for their branch to be merged with the master branch.

One major advantage of VCS is you can flash back to certain builds or past points of the application as VCS retains copies of various states of the application while being built. This is particularly useful when you need to revert back to a previous build as a result of a mishap along the development cycle.

A good working knowledge of git or mercurial commands and how you can use them to push, pull, merge codes with existing branch repositories of an application is extremely important, if you really want to be bad-ass.

5) Unit Testing

The concept of unit testing has been around for a while and to be quite honest I really didn’t know much about it until I was required to do this as part of a strict software design policy based on a client’s requirements.

Unit testing simply means to test small parts of code (subroutines) to ensure that they actually do what they were designed to do. At first this might seem funny and developers may consider this a waste of time. However, it has proven to be the most effective approach for TDD (Test Driven Development) software.

Unit testing ensures that the quality of your code is maintained at a high value and that software defects are detected before they are ever pushed out with the application.

Most languages or frameworks come with unit testing capabilities. Examples of unit testing frameworks are PHPUnit, Jasmine, Jest, Mocha, Behat, Cucumber, Concordion and so on.

6) Cloud Services (DevOps)

A good working knowledge of how to configure and use various cloud services is by far a huge advantage to a developer. Even more important is the ability to push code to an existing pre-configured cloud service.

The Cloud is where all our data are stored to be redistributed or served to various devices, applications and users. A good cloud service will usually provide options for Capacity Provisioning, Load Balancing, Auto-Scaling, Operating System, Application & Database tiers and much more.

One of the cloud services that stands out in this area is Heroku (a platform as a service — PAAS that provides cloud infrastructure management services for developers to easily deploy applications).

With Heroku, developers don’t need to be worried about the infrastructure anymore as it takes care of those issues so they can focus on the apps they’re building. The favourite part for me is that applications can be created and pushed to Heroku on the command line using git quite effortlessly.

Other cloud service providers include AWS (Amazon Web Services), Windows Azure, OpenShift, App Engine and VMWare.

7) Project Management

Sometimes a project might be large and cumbersome and may require that module tasks be scheduled and where need be issues tracked. To help manage this situation a software such as Jira was created so that projects could be managed and maintained effectively.

Jira was developed by Atlassian and it also has options for bug tracking and other project management functions.

If you’re going to be a bad-ass developer, you may need to learn how Jira works and how to use it in your daily tasks.

Conclusion

Perhaps one of the most productive behavioral traits of bad-ass developers is that they are constantly learning and seeking for better ways of improving themselves. True bad-ass developers know that there is never an end to learning new things.

In my own opinion, I do think that keeping up-to-date with the last trends is every developer’s responsibility in truly becoming a bad-ass developer irrespective of where they find themselves.

Full Stack Engineer