So you want to hire a programmer. You don’t know what you should look for in your new team member or maybe you are sick and tired of recruiting programmers who fail you over and over? The problem is that you may look for skills which don’t really matter. How to avoid that? What makes a good programmer apart from technical skills?
Here are 14 things you should take into consideration in your next interview:
Walt Disney once said ‘We keep moving forward, opening new doors, and doing new things because we’re curious and curiosity keeps leading us down new paths’ and these words could be the motto of great programmers. They never accept things as they are and they strive to find the best solutions and new ways of solving problems. A programmer without this mentality doesn’t move forward. Are your candidates curious? Do they ask questions?
2. Attention to detail
Curiosity goes with attention to detail. As you know, details matter. Paying attention to details directly translates into a programmer’s performance. In his article 10 traits to look for when you’re hiring a programmer, Justin James wrote: ‘And of course, a severe lack of attention to detail can sometimes be obvious too; the candidate who walks in with pants unbuttoned or toilet paper stuck to a shoe clearly is not paying attention to detail!’
3. Clear thinking skills
Programming is connected to logic, so a programmer’s strong, clear thinking skills are of key importance. You can check this by performing a logic questions test or you can leave blanks in what you’re saying to see if the candidate will figure out what you’re talking about.
4. Ability to plan
Good programmers have the ability to plan their actions after analysing a new assignment. Asking candidates to explain their approach to a new task is a way of checking this ability.
5. Respect for deadlines
Some programmers cringe at the very mention of the word ‘deadline’. Being on time should be a priority for your programmers. Do they meet their deadlines?
Ask your candidate to describe a situation when they were faced with a deadline.
6. Top reading speed and comprehension skills
Typing code is, in fact, just a fraction of a programmer’s work. They spend the vast majority of their time reading, so slow readers won’t be very efficient. It can get worse if your programmer misreads or doesn’t understand what a spec says. You don’t want to waste your company time, do you?
7. Learning skills
If you have to choose just one skill great programmers have, it is definitely the learning skill. In his article What Skills Employers Want in a Software Developer: My Conversations with Companies Who Hire Programmers, Matt Weisfeld mentions the words he heard as a young programmer looking for a job: ‘ “We don’t hire people for what they know, but what they can learn.” These words have always resonated with me. From that point on, my career strategy as a programmer has always been to look forward instead of simply focusing on a specific, current technology. As someone else told me more recently, “As a programmer you don’t have a single 30-year career, you have 30 one-year careers.” ’
Programming is constantly changing, so a person who doesn’t want to learn is going to lose out. For you it is important if your new programmer is going to be better at the job you’re offering and how fast he or she can learn new things.
Perfect programmers always follow the latest trends, they look for new solutions and learning opportunities. They are masters of self-learning. These programmers are relatively easy to find – ask your candidates how they learned a specific skill. Do they read/ follow any programming-related websites, magazines, books? What do they do to be up-to-date? Their answers will show you their willingness to learn.
Learning doesn’t refer only to programming – good programmers have to be quick learners also outside of programming, for example, to understand the environment where their software will be implemented. Ask them whether they mastered any skills (cooking? singing? drawing? skateboarding?). If so, they are more likely to master something else.
What about their degree? Does it matter? In his article This is why you never end up hiring good developers, Laurie Voss writes: ‘engineers write code and ship software; academics prove theories and write proofs of concept. Somebody smart might be able to do both, but it’s by no means a given, or even very strongly correlated.’
8. Judging one’s own knowledge
There is no person who knows everything, so the ability to accurately judge one’s own knowledge is an asset. Are your candidates trying to hide their gaps in knowledge? They may try to do so in other situations as well… Socrates’s ‘I know that I know nothing’ may not be sufficient, so you should also look for a strong desire to figure things out.
9. Passion & enjoyment
With no passion, there is no motivation to search for new solutions. Passion can help get through difficult cases. Ask yourself if candidates are excited when you talk? Do they seem to enjoy programming? What do they sound like when they talk about their previous work? Ask for their opinion – if they have a strong opinion and they can talk a lot about something – they are passionate about it. Working without passion and enjoyment will make your new staff constantly unsatisfied.
In a changing environment such as programming, not being able to adapt or handle change is a major no-no for a good programmer. A candidate who complains over changing requirements will not be a good team player.
11. Ability to handle failure
There are no programmers who haven’t failed at some point, so the ability to handle failure will tell you a lot about your candidate. Ask them about their failure and how they eventually solved the problem. Your candidates claim they don’t fail? You’ve found either a genius or a person with a really huge ego. What do you think?
12. Communication skills
If you need a programmer as your team member, take a look at their communication skills. Programmers who don’t want to or can’t communicate with other team members don’t perform effectively in the long run. Check if your candidates can convey their ideas both accurately and effectively. You can apply the pitching method often used in the world of start-ups. Can your candidates sell themselves in a short presentation on their skills or field of expertise? Do they explain things in a way layman would understand? It will tell you much more about a candidate than a regular interview.
13. Teamwork mentality
If candidates speak badly of their former managers and their previous work experiences, they are likely to think too highly of themselves. They may ignore orders, do their own thing and complain about the stupidity of orders (or about ‘this ignorant person who obviously doesn’t understand programming’). Even if they disagree with somebody, good programmers are able to understand the reasons for a particular decision.
It’s worth to consider the No Asshole Policy: ‘There is no level of brilliance and productivity that can compensate for poisoning the morale of your team, and once a team culture is broken it is very hard to fix. Hiring these people, even to get you through a crunch, is not worth what it costs. And if you hire one by mistake, fire them fast, and without hesitation.’
Just ask yourself a really easy question: would your team enjoy working with such a person? Do YOU want to work with such a person? (it doesn’t mean being friends).
Yes, laziness. In the article entitled 15 Characteristics of a Good Programmer, John Rampton writes about three good qualities in a good programmer enumerated by Larry Wall, i.e. laziness, impatience and hubris.
A lazy person can come up with perfect time-saving solutions. But it can also have some drawbacks, so it may be better not to rely on laziness as the dominant feature.
Keep in mind that hiring a wrong programmer is more expensive and wastes more time than waiting for a good one.