- Curiosity
“Curiosity is, in great and generous minds, the first passion and the last”, said Samuel Johnson. That is also true when considering the qualities of a good programmer (and their great and generous minds). Let’s look for a more contemporary reference that develops Johnson’s point of view. Dan Pupius says that “curiosity is important throughout the life of an engineer”. It pushes you to learn new languages, experiment, and look for new solutions. That’s exactly what you want in an engineer. It also drives you to investigate the architectural choices of others, as well as question assumptions. Pupius claims that a lot of qualities usually associated with great engineering “stem from a rich sense of curiosity”. - Technical skills
Rahul Varshneyasays that “fine art and programming are similar in that great technical skills don’t make for a great artist or programmer”. Greatness doesn’t come from technical skills alone. However, you can’t expect exceptional results from people who don’t have the right skills for the job. You should think of skills as one of the elements of the puzzle which doesn’t do much in isolation. It can do wonders when accompanied by other developer strengths, though. Luckily, the presence of key strengths and qualities of a software engineer is super easy to verify with coding tests. - Speed & productivity
A Sackman, Erikson, and Grant study discovered a 10-fold difference in productivity between programmers. The research is not without flaws, though. It doesn’t “control for differences in individual capabilities”. It also combines results from users working in low-level and high-level programming languages. - Love of learning
According to John Krystynak, “genuine commitment to continuous learning” is one of the key developer strengths. “You have to love the fundamental practice of going from not knowing to knowing, every single day” otherwise you won’t be good at it.
This holds especially true in the world of IT. While it’s useful to have your way of doing things, it’s essential you venture out of what you know. Find faster ways of getting things done. One of the ways to do that is by noticing patterns and drawing conclusions.