I realized that my article about "How to interview a programmer" is pretty popular, so I decided to extend this topic and share my thoughts about recognizing a good programmer.
Nowadays, it is known that IT guys can make relatively good money in software or web development industry. This makes a lot of people to start learning basics of programming from the school, or sometimes even change their current careers to become programmers. Unfortunately, having a desire is not enough to become a good programmer. Even a number of certificates or diploma from university is not a sufficient sign of a good programmer.
If you are looking for a really good professional you must pay your attention to a certain important indicators.
Programming has to be not just a 9-to-5 job, it has also be a hobby. Good programmer always has passion for programming, and always tries to code for himself / herself at home, trying something new or create something on his own. Ask about personal or open-source projects where the candidate has participated.
2. Self-education and problem solving
IT is a very dynamic industry, so programmers have always to catch up with the most recent technologies. Good programmer always wants to be up-to-date about newest practices or technologies. This makes programmers to follow news, blogs and books daily. During the interview ask your candidate about the most recent article, book or blog post about programming that he or she read.
Also ask the candidate about how he solves problems when he runs into any unknowns. If he says: "I just google it!", it is usually a good answer. :-)
3. Communication skills and having own opinion
To progress, learn and solve problems programmer has to communicate with other programmers. This means that programmer needs to have at least a little bit more than just minimal communication skills. In addition, good programmers has to have own opinion and has to be able to defend it if needed. This is especially important during brainstorming and projects design processes. This is also important if there is a problem in the project and needs to be solved with the best solution.
Start a conversation about a tech problem, for example an problem that you are currently having in your team, and see if the candidate can keep the conversation going.
4. Critical thinking
This indicator may also apply to the one above, but I decided to make it separate. Good programmer never does things blindly; he always thinks in advance to prevent potential problems. Even if the task was given by a higher manager, but programmer thinks that it is wrong or has to be done in another way, good programmer will always talk to the manager and explain his point of view.
5. A variety of technologies.
Being a good programmer means being familiar with a number of different technologies and practices. This allows good programmers to find better solutions for different problems depending on specific situation.
This indicator might be not very common, but still it is a good one. Good programmer must have good ambitions. Real professionals usually looking for good salary, career progression, and recognition in professional field. All these factors motivate to improve skills and make the next step in professional career.
Hopefully, you found this article useful. If you have anything to add or ask, your comments are very welcome. ;-)