Programmers come with a wide range of skill sets, hail from many countries and cultures and can have differing backgrounds and experiences. Nevertheless, certain qualities can mean the difference between a great programmer and someone who's not so great. Here are 10 things to look for when hiring a programmer.
1. Curiosity
Great programmers never accept things "as is"; they need to poke deep inside something, even when it appears to be working fine, to learn more. This is how many problems are solved before they are problems, and it's usually the quickest way to fix acute issues. A programmer without this mentality will usually end up lacking the knowledge underlying why they are doing what they are doing, which means they're working with blinkers on. Unless candidates are very shy, their curiosity, if they have it, will show strongly during interviews.
2. Clear thinking skills
It may sound obvious, but programming is an exercise in logic. People who can add two and two to get four are common, but people who can take "2 + x = 4" and figure out that "x" is equal to 2 are much less common.
This is why I have always preferred programmers with strong maths or science backgrounds. It makes them a bit better at programming but, more importantly, it generally indicates good logic skills. When I discuss the job, I sometimes leave blanks in what I'm saying to see if the candidate can fill them in. In addition, if your hiring process includes formal testing, that's a good time to test logic skills.
3. Top-flight reading speed and comprehension
Another "duh" when it comes to programmer productivity is that most of their work is not the typing of the code. A significant portion of a programmer's day is spent reading, whether it be other people's code, websites with examples, documentation or project specs.
Programmers who read slowly or, worse, don't understand what they're reading, will be inefficient at best and dangerous at worst. You probably don't want someone on your staff who misreads the spec and spends three weeks doing the wrong thing; that's just embarrassing when you need to explain the delay to the project sponsors. It's really hard to gauge reading skills during the hiring process unless you use a formal testing process.
4. Attention to detail
Attention to detail is a close cousin to curiosity. A programmer who pays attention to detail will tend to be significantly more productive than one who doesn't. It is, unfortunately, extremely difficult to measure this quality during the hiring process. Still, sometimes things happen during the hiring process that show that a candidate has this trait. Maybe it's a casual remark or just a minor incident that occurs during the interview.
Read this
Feature: Ten reasons to rethink your career as a developer
Software development is an attractive career proposition for many — but not everyone is cut out for the job
For example, I once had an interviewee casually compliment me on my shirt and mention that he was a fan of that designer; that spoke volumes about his attention to detail. Of course, a severe lack of attention to detail can sometimes be obvious too; the candidate who walks in with trousers unbuttoned or toilet paper stuck to a shoe is clearly not paying attention to detail!
5. Quick learner outside programming
Unless your company develops programming tools, such as compilers and IDEs, your programmers are working with projects outside the realm of programming. Just as journalists need to understand a little bit about the subjects of their stories and good teachers need a working knowledge of the field they're teaching, good programmers are able to learn about the environment their software will work within. Of course, you don't need a CPA with a computer-science degree to work on your accounting software, but a programmer who can't understand the basics of the maths and business rules involved is going to be a liability.
I take candidates I'm seriously considering on a tour of the facility and provide a brief, simple, jargon-free overview of the company and how it works. Candidates who ask pointed questions that show they understand what I'm talking about, or who otherwise show comprehension, get extra credit in the overall hiring decision.
6. Self-learning skills
It's rare for a programming shop to have the budget and time to provide training to its programmers. This is unfortunate, but it's a business reality. The result is that most programmers self-teach their skill sets (ideally with a mentor handy) once their formal schooling is over. Programmers who are good at self-learning are going to be better at programming.
During the interview process, I like to ask questions such as: "How did you learn to do that?", when the candidate talks about something difficult; or: "How do you get new skills?"; and: "Do you read any programming-related books, magazines, websites, blogs, etc?". Candidates who aren't just capable but who are eager to teach themselves new programming skills...








Talkback
Not a bad text, looking for the perfect worker forgetting the reality.
I would, as a programmer since 68 add a few things.
The ability to use ten finger input and the ability to face stress.
Fast input, such a simple task, after all, I would demand from anyone programmer today.
The ability to face stress is a no brainer too.
However, I think you are much too concentrated on what to demand from programmers, forgetting totally that programmers and programming may have demands on "you" too.
It is hardly surprising that good programmers are more drawn to work in surroundings, like open sorce, where the reality is not run bye idiots, like in most so called IT companies, to day.
The most typical stupidity is that all time shedules are based, not on reality, but on whistfull thinking, like perhaps, bye people like you who are totally unaware of the reality. ( I could be wrong on your part, ofcousre.)
The second most typical problem is that programmers are put to work in a surrounding that is not fit for programming. Large noisy open spaces where stupid people keep walking about. Think Railway stations.
For your next article on programming, try perhaps, to understand a bit about the working conditions, and the fact that the programmer, in most cases, is the one who will have to face all the stupidity and tress you have forced upon him.
By your standards, though generally fine in themselves, you would have failed in some areas and with some, if not startling, certainly bemusing and unforeseen results.
Newton, beyond all debate, was a great thinker. He created much of what we recognise today as the ground rules for logical thought.
He was also according to the likes of Charles II and other brilliant contemporaries, almost totally unaware of the passing of time and rarely remembered appointments, even with his King.
Charles tells us, he arrived at the great fellow's house at a prearranged time for dinner. The housekeeper announced the King's arrival and served the dinner. Charles waited for a while before eating his meal. After some time Charles then finished off Newton's as well. When Newton finally arrived, he spied the empty plates and asked, `Sire have we already eaten?'
There have been many anecdotes of such absent minded professors throughout time. Indeed many of our greatest and most inspiring revelations arrive from that other world beyond the conscious mind.
There is another side to everything and your subject, as presented, lacked one vital element. It is essential to capture and hold the attention of the interviewee. You need to be full of enthusiasm and empathy for your projects. It is as every `bit' important to inspire and captivate others, as it is for them to waken to all the possibilities that you are presenting to them. You are after all, most often, the first point of sale.