How to Improve Programming Skills by Understanding Top 4 Qualities of a 10x Programmer!
A Badass Programmer (10x programmer) is considered as someone who can be ten times more productive than a normal programmer. Sounds unrealistic?
Yes, some people think of programming as manual labor and programmers as assembly line workers. According to them, there can be some programmers who are a bit better than others, but there can’t be a single programmer who could do 10 times better than others. They also lean on analogies like “You Can’t Make a Baby With Nine Women In One Month” and similarly development time can’t vary based on resource quality.
Productivity of a programmer is not about hours he spent at office or lines of code he produce in a day. Programming is an extremely creative profession, but, it’s logic based creativity. There can be many ways of solving the same problem, being a programmer has less to do with writing more lines of code but more to do with knowing exactly what code to write.
To understand this point better, we can consider a crime solving analogy. 10 average detectives versus one Sherlock Holmes. Who will solve the crime faster? It is all about getting the right insights to go in the direction towards solving the given problem. A great programmer should be able to avoid entire categories of problems in a wrong direction that eat up enormous amounts of time amongst average programmers.
So the point is, it’s about producing value, not just code. It is not that they type faster, it is rather that they don’t get blocked and lose time.
The 10x programmer is not a myth!
The cumulative effect of the subtle changes at different levels make a tremendous difference in the final output that end up in 10x productivity.
A single programmer writing the right code could surely outperform 10 programmers writing code the wrong way.
Also, any programmer could become a superbly efficient programmer if they could put honest effort to attain the right skills for a 10x programmer. It is mostly about getting into the right mental model to approch a problem and putting sincere effort to solve it right. In the following section, let’s discuss on top 4 common qualities of such great programmers.
1. They start with asking the right questions to understand the requirement.
The first step to becoming a good developer is becoming passionate about the software and the problems that you’re trying to solve. You need to understand the problem inside and out.
Instead of making a button do something because that’s what someone said to do, strive to understand ‘WHY’ at a higher level. Remember software development is mostly about communication. As developers, we need to know what we’re working on, what problems we’re trying to solve, and exactly what the result needs to look like. We can go faster if we know more details upfront.
Bad developers will spend hours going the wrong direction on a project without asking any questions. We can call them -10x programmers because they get nothing accomplished and waste the time of their co-workers. Nearly everyone should have encountered some of such developers, and it can be frustrating to work alongside them. All you need to be careful while working with them is not to pick up their habits!
10x developers are really good at identifying what questions to ask and making quick decisions on what needs to be accomplished.
2. They read code fast and write readable code
A great way to be a good programmer is to build the interest and capability to read and understand code as reading any other literature. To be able to smartly craft lines of code, a good programmer obviously needs to master the programming language he work on. Reading good quality code written by high quality developers helps to understand the ways they code and make best use of all the top features available in that technology.
Following principles like SOLID, when combined together, make it easy for a programmer to develop software that are easy to maintain and extend. They also make it easy for developers to avoid code smells and easily refactor code. If not written properly, a small glitch could jeopardise the entire algorithm.
Thus, beyond having a deeper knowledge about the programming languages and good logical reasoning skills, a 10x programmer reads a lot of code and writes maintainable and easily readable code that saves lots of overall time for everyone who touches his code.
3. They will have thorough Knowledge about Environment they work
While excellent programming language and logic skills are the prerequisites to enhancing the quality of the codes, they do not alone make someone a fast programmer. This is because a programmer spends most of his/her time correcting the code than making it. Researches shows that troubleshooting consumes more than seventy percent of a programmer’s time! Many times I have seen developers getting blocked for many days troubleshooting at wrong place as they can’t identify the root cause of problem. This wastage is due to the lack of knowledge in the environment they work on.
At good old times, a programmer gets hands on experience in every element in the environment they work on. For e.g., being a web developer in 2005, it was a developer’s responsibility to handle everything end to end including server setup and configuration. This helps to get a clear understanding on how the overall system works.
But today, developers can make their code working even if they lack basic knowledge in the environment their code works. This is due to the so called ‘specialisation’ and advanced tools with which they can now afford to be ignorant of the environment. Such developers always lack confident to approach a problem as they are habituated to see majority issues are beyond their control and someone else’s involvement is required to get those problems solved. Such dependencies keep them away from even trying to solve those issue by own and keep them unhatched.
Putting effort to solve the problems by own always helps a developer to hit their boundaries and keep on extending it. Understanding the environment helps developers to be confident enough to do this.
A 10x Programmer will know the environment well that helps him get insights to reach the root cause of the problem in a short time span. This in turn will boost confidence to approach a problem and work towards getting it resolved rather than giving the excuse “the code works in my machine”!
4. They use ‘right tools’ and use ‘tools right’.
Tool Mastery! An apprentice carpenter may want only a hammer and saw, but a master craftsman employs many precision tools. Likewise, an average programmer limits himself with the tools which they started with and stays away from any new or updated ones. They consider it as a threat and tries to stay away from it, as it is ‘complex’ and could make their life harder.
They should understand the fact that such tools exist and get wide acceptance only because those are created to help developers do things that they have already being doing in a better manner, with improved efficiency and reduced human error. Being ‘unfamiliar’ with a tool doesn’t mean it is ‘complex’ to use. Once you put necessary effort to get familiar with such new tools, it automatically becomes simpler and many times you couldn’t even imagine going back to the old way. Many such tools give exponential improvement on productivity that makes huge difference between developers who update themselves and who doesn’t.
For e.g., version control systems like GIT, build tools like GULP, automated deployment tools like Jenkins, css preprocessors like SASS etc. are not mandatory for a web developer to create and deploy a website. I had seen many developers who were resistant when they were put to a situation to start using it. But once they get familiar with it, they couldn’t even imagine developing in their old way understanding how it improved their productivity assisting them to avoid redundant tasks and manual processes.
Note: Don’t expect just usage of any new tool to always yield high productivity. Selection of relevant tools and using it in the right way is highly important to get the desired productivity difference. I have seen many developers who use new tools for name sake but code in the old way without utilising any of its benefits.
Thus, a 10x programmer possess ability to identify the right tools and have competence to use tools right.
Along with passion, combination of different above mentioned aspects can definitely make a programmer ten times or even hundred times more productive than average programmers. Mostly such programmers do programming not because they expect to get paid or get attention from others, but because it is fun to code.