As a developer, there are certain skills that are needed and then there are certain skills that are a must.
For example, a developer needs to know essential computer science concepts like algorithms and data structures. They also need to know source control, networking basics, database basics, text editors like Visual Studio Code, VIM, Atom, etc. Of course, developers also needs to know the language they are using and they need to know it well.
This list is not an exhaustive list. But this list is pretty standard, regardless the programming language you are using and the type of developer you are, i.e. web developer, software engineer, mobile developer, etc.
But there is a second list of skills that a developer must have. They are debugging, testing and code reading skills.
Have you ever heard a developer say: “Finally it works! I have been staring at this code for hours and it turned out to be a silly mistake!” Perhaps you have even said this yourself once or twice. What is the problem here?
Our code does not always do what we expected it to do. When that happens we need to figure out what is happening. To effectively do this we need to make use of the debugger. For many developers, debugging means writing a bunch of console write lines to see what is being produced. This is not debugging!
Debugging means to use a debugging tool to run the code step by step in order to find the exact point of the mistake.
Once you becomes proficient in using a debugger, you will save loads of time and become a better developer. You will also be able to help others find and squash their bugs faster.
Testing is an extremely important step to make sure our software is bug free before releasing.
A developer should be familiar with several different testing methods. For example, unit testing, integration testing, and system testing, to name a few. There are many frameworks out there to help us, we just have to use them.
It takes time and patience to learn how to test your code. Many developers may feel testing is not important or that it is a waste of time, especially if they are the sole developer at their company. But it is important. A smart developer will take the needed time to learn this skill and become proficient at it.
Debugging is for the developer. With it, we save our time and reduce stress while we code.
Testing is for the user. With it, we save them time and reduce their stress while they use our software.
Debugging saves time, testing requires time. But the result is better software.
This is a skill that hardly ever makes the list of needed skills for developers. This skill is a must because we have to read our own code when we debug, but we also have to read other developers’ code.
If a developer can’t read other developers’ code, they will waste a lot of time and constantly feel frustrated. Eventually they will just give up and decide to “rewrite the whole thing”.
Take the time to improve your code reading skills. Do coding challenges like TopCoder or Codewars. Here is a list of other coding challenges. Go to GitHub and read code repos. Actively participate in code reviews at your company.
While many job applications will not list these skills (at least not debugging and code reading skills) these skills are definitely required when taking a coding challenge on the job interview. Honing these skills will definitely help you to land the job or at least put you at the top of the list.