Recently Talouselämä reported that the programmer shortage has reached a point where the top coders can expect salaries around 15 000 euros a month. That might seem ludicrous since the average software engineer salary in Finland is 43 000 per year or less than quarter of the top programmers, but at the same time, there are reasons for the disparity, because the best people in the field are actually that much more productive. So, how does one become a supercoder?
Author: Aki Vainio
What is a supercoder?
The disparity between 180 000 (Muukkonen 2017) top salary and 43 000 (DAXX 2016) average a year is huge, but there are reasons for this. Despite difficulties in actually quantifying this, the common wisdom is that the best performing programmers are around ten times more productive than the average ones (for example McConnell 2011). Taking this difference into account, as well as savings in coordination, management, workspace, equipment, and so forth, it is understandable that certain programmers are better paid than others are.
As programming is not manual labor, you can achieve these differences through various means. The best programmers are not only people who can type fast. They have intuitive knowledge of how to structure their code so that it is maintainable, they can do more with less code and they write less bugs. Not only that, but they have an eye on how to maximize value of their work by doing the right things.
How to become an expert?
The myth of 10 000 hours of training is widely quoted, but also widely criticized (for example Baer 2014). The main problem with the rule is that it simplifies the concept too much. Instead of just spending the time, it is preferable to approach this through so-called deliberate practice (Ericsson 2000).
Deliberate practice is, simply put, practicing with a clear goal. You can deliberately learn sub-skills that make up an overall skill. To help with this, you can either come up with exercises yourself or rely on ones designed by others.
If possible, you also should not try to become an expert alone. While the learning pyramid is one of those concepts that are often criticized (Willingham 2013), the target of the criticism isn’t the idea itself, but rather the percentages involved. According to the pyramid, the retention rate is 5% for lectures, but 90% for what we teach others. This is extreme and the percentages definitely are not correct (Thalheimer 2006), but the order of the methods is at least roughly so.
Image 1: The Learning Pyramid. Note that even the creator does not stand behind this (Kuropatwa 2007).
Learning to become a supercoder
This is not a simple question. There a lot of question marks here, because both the field of software productivity and learning methods suffer from an influx of myths, misinformation and over interpretation of various results.
If there is one thing working for us, it is that creating a certain kind of feedback loop is easy. When creating code, you can always test it easily and repeatedly, in order to see whether what you did was correct. Anyone with access to a computer can do this. By being able to analyze the defects, you can achieve deeper understanding of how the different parts of the code function together.
On the other hand, testing for good structure of the code, maintainability or other less tangible characteristics is much more difficult. In certain cases, you can find help, such as Project Euler (2001), which publishes complex mathematical problems frequently, which users can try to solve. The feedback there comes in two forms: you need to be able to solve the problem and your program needs to find the solution in less than a minute. This latter requirement requires understanding of many different concepts in programming to be able to achieve it. Of course, the highly mathematical nature of the site often serves to discourage people from using it.
Agile software development methodologies have brought their own learning methods along with them. Developers work in teams and often program in pairs to enhance learning. When you see what your pair or team member does and you can discuss their rationales for doing so, the members of the teams teach each other as a natural part of the process. You can replicate this by finding other people with similar goals and work together in order to achieve them.
It’s helpful to find a project that can keep you interested. Many of the better programmers started by creating their own games or modifying existing ones, for example. Others have hobbies they can digitalize to a certain degree. By finding ways to make the software better, one step at a time, will be quite helpful, but it is important to break the problem down into small parts that are easier to handle.
In general, it’s important to remember that although you are learning by using certain technologies, those technologies will become obsolete. Therefore, you should emphasize learning the underlying thinking behind programming paradigms and the ability to adopt new technologies, than to learn a currently fashionable programming language or tool.
Baer, D. 2014. New Study Destroys Malcolm Gladwell’s 10,000 Hour Rule. Business Insider. [Electronic newspaper]. [Cited 22 May 2017]. Available at: www.businessinsider.com/new-study-destroys-malcolm-gladwells-10000-rule-2014-7
DAXX. 2016. IT Salaries: Which Is the Highest-Paying Country for a Software Developer? [Cited 22 May 2017]. Available at: https://www.daxx.com/article/it-salaries-software-developer-trends-2016-2017
Ericsson, A. 2000. Expert Performance and Deliberate Practice. [Cited 22 May 2017]. Available at: https://psy.fsu.edu/faculty/ericssonk/ericsson.exp.perf.html
Kuropatwa, D. 2007. The Learning Pyramid. [Cited 22 May 2017]. Available at: https://www.flickr.com/photos/dkuropatwa/2097911609/
McConnell, S. 2011. Origins of 10X – How Valid is the Underlying Research?. [Cited 22 May 2017]. Available at: http://www.construx.com/10x_Software_Development/Origins_of_10X_%E2%80%93_How_Valid_is_the_Underlying_Research_/
Muukkonen, H. 2017. Koodaripula iski Suomeen – palkat jopa 15 000 euroa kuussa. Talouselämä. [Electronic newspaper]. [Cited 22 May 2017]. Available at: http://www.talouselama.fi/uutiset/koodaripula-iski-suomeen-palkat-jopa-15-000-euroa-kuussa-6646542
Project Euler. 2001. [Cited 22 May 2017]. Available at: https://projecteuler.net/
Thalheimer, W. 2006. People remember 10%, 20%… Oh Really? [Cited 22 May 2017]. Available at: http://www.willatworklearning.com/2006/10/people_remember.html
Willingham, D. 2013. Why the ‘learning pyramid’ is wrong. Washington Post. [Electronic newspaper]. [Cited 22 May 2017]. Available at: https://www.washingtonpost.com/news/answer-sheet/wp/2013/03/06/why-the-learning-pyramid-is-wrong/
Aki Vainio teaches information technology at LAMK. He has put a lot of thought into whether he can call himself a supercoder and has solved 52 of the 604 problems on Project Euler.