TechRepublic : A ZDNet Tech Community

10 Things

Host: Jody Gilbert, Senior Editor
Contact

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 you’re hiring a programmer.

Note: This information is also available as a PDF download.

#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 blinders 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 2 and 2 to get 4 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 math or science backgrounds. It makes them a bit better at programming, but more important, 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, Web sites 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 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 be significantly more productive than one who doesn’t, all else being equal. 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.

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 (as well as his fashion sense). 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!

#5: Quick learner outside of programming

Unless your company develops programming tools, like 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 math 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 extremely rare for a programming shop to have the budget and time to provide training to its programmers. This is unfortunate, but it’s a current 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, Web sites, blogs, etc?”. Candidates who aren’t just capable but who are eager to teach themselves new programming skills are much better to have on staff than those who don’t like to learn outside a formal training program.

#7: Passion

Some programmers are “daycoders” — people who write code 9 to 5, Monday through Friday, and do not think about it in the slightest outside of those times. That’s perfectly fine; not everyone can be a super geek who lives and breathes code. I have hired people like this in the past to fill a gap or to work on the sections of a project that are routine. But when I need to hire a top programming candidate (regardless of skill or experience level), I need to be hiring someone with a passion for the work.

Passion is a “make or break” during crunch time or on a project that requires tricky techniques, rare skills, and so on. After all, daycoders won’t be motivated to learn the best way of doing things and will instead just do what they’ve always done, which may not be the best way of doing things. Daycoders are also difficult to retain without a steady stream of raises and a high level of perks, since they are there for the money, not for the work. Passion will be fairly obvious during the interview. Candidates who get excited when you talk about your project or who are talking about their past projects have it for sure.

#8: Adaptability

Have you ever worked on a programming project that ended with the same specs it started with? Neither have I, and I am including short projects that lasted less than a day! Programmers who do not handle change well will probably not be very successful, except on long-term, Waterfall-type projects that last years, usually under government contract. That is not to denigrate those kinds of projects or programmers, of course. But most projects are simply incompatible with a lack of adaptability.

It’s pretty obvious during interviews when candidates are not adaptable or handle change poorly, particularly if you ask questions like, “Did the requirements change often?” Candidates who say something like, “Sure, but that happens on all projects and it’s a fact of life” are winners. Those who roll their eyes and respond with, “Yeah, that’s why I could never get anything done!” probably will not be a good fit for most environments.

#9: Good communication skills

“Communication skills” doesn’t mean the same thing as “Speaks perfect English.” It means, “able to convey an idea accurately and effectively.” Pictures, sounds, and hand motions are all part of communication skills. Programmers who have a hard time getting their point across or understanding what others are trying to tell them will not be effective in the long run. This is a difficult ability to properly measure in a phone interview, but when candidates have difficulty communicating even in a face-to-face interview, you can be sure that they’ll have a hard time on the job as well.

#10: Who’s the boss?

Programmers are a notoriously independent group of people. Indeed, I believe that’s one of their strengths, and it’s great not having to micromanage people working on technical projects. However, a good portion of programmers struggle with the idea of “I am the boss and you are not.” I know, it sounds tyrannical. In a way, it is. Managers often need to make decisions for nontechnical reasons, and they may not be able to explain those reasons to their team (secrecy, politics, not enough time, etc.).

A little bit of pushback, particularly on bad decisions, is something I encourage and fully support, especially if the boss doesn’t realize that it is a bad decision and if the feedback is delivered correctly. But when the boss says, “I know from the technical perspective this is a bad idea, but this is how we need to do it,” it’s final. All too often, certain “rogue coders” will ignore their marching orders and go do their own thing. Even worse, they have a tendency to run their mouth to anyone and everyone about how stupid the boss is, and how he or she obviously does not understand programming — which may or may not be true. This sinks projects and does nothing but cause animosity and hurt team morale.

This mentality can often be seen during the interview process, especially when you’re asking about past work experiences. Rogue coders love to talk about their “evil, idiot, pointy-haired slave driver” former managers, even when it is wholly inappropriate to do so, like in a job interview. Well-adjusted programmers will say things such as, “I disagreed with some of my manager’s decisions at a technical level, but I know that those decisions had to have nontechnical issues factored into them.”

Justin JamesJustin James is an employee of Levit & James, Inc. in a multi-disciplinary role that combines programming, network management, and systems administration. He has been blogging at TechRepublic since 2005. Read his full bio and profile.

Print/View all Posts Comments on this blog

Bring your laptop and show me how you program BALTHOR | 03/05/08
Yeah...and usually leads to ineffective non-teams ben@... | 03/12/08
I tend to avoid them too Justin James | 03/13/08
joel spolsky has excellent articles speculatrix | 03/13/08
I have 9/10 of these qualities jimmylll@... | 03/05/08
the skilled trade of programming keith2468a | 03/13/08
I feel much better now Tony Hopkinson | 03/13/08
I see his point Justin James | 03/14/08
Did you forget I'm one of the unqualified? Tony Hopkinson | 03/14/08
That actually proves the point more Justin James | 03/15/08
Programming - Art, Science or Craft Tony Hopkinson | 03/15/08
I heard this 10 years ago TheGooch1 | 03/18/08
I think most of this is correct, normhaga@... | 03/06/08
I used to be a programmer SObaldrick | 03/10/08
you make the author's point keith2468a | 03/13/08
sounds like a good way to deal with your circumstances keith2468a | 03/13/08
11/14, especially Tony Hopkinson | 03/06/08
I have never needed to program a fact or fib madhead@... | 03/12/08
Me neither Tony Hopkinson | 03/12/08
Like the shovel idea ben@... | 03/12/08
It was a good answer Tony Hopkinson | 03/12/08
RE: 10 traits to look for when you're hiring a programmer celeste@... | 03/06/08
Your link doesn't work Tony Hopkinson | 03/06/08
RE: 10 traits to look for when you're hiring a programmer iryxn@... | 03/06/08
Bosses and such Justin James | 03/08/08
A good manager... ben@... | 03/12/08
My vision of a manager... Justin James | 03/13/08
RE: 10 traits to look for when you're hiring a programmer somone@... | 03/06/08
a few comments Jaqui | 03/09/08
Most of these skills apply to a Systems Administration position as well michael@... | 03/10/08
Yes, quite true Justin James | 03/10/08
Malicious obedience timjgreen2@... | 03/10/08
Really? Dr_Zinj | 03/10/08
Precisely right Justin James | 03/10/08
Malicious Obediance? michael@... | 03/10/08
What?!? Timbo Zimbabwe | 03/12/08
Doesn't work in the UK either Tony Hopkinson | 03/12/08
#7 jozimmerma@... | 03/10/08
Agreed DougOfCBSTechrepublic Moderator | 03/10/08
think they were aimimg at those who Tony Hopkinson | 03/10/08
Yup Justin James | 03/10/08
Balance and such Justin James | 03/10/08
I see DougOfCBSTechrepublic Moderator | 03/10/08
That Makes Sense TheGooch1 | 03/11/08
Other interests Justin James | 03/11/08
Glad You Understood TheGooch1 | 03/12/08
I graduated Chubb. Locrian_Lyric | 03/12/08
It's a shame about Chubb Justin James | 03/13/08
Couldn't agree more. Locrian_Lyric | 03/13/08
Passion for abusing the programmers Dr_Zinj | 03/10/08
Re: Passion for abusing the programmers GingerLassy | 03/10/08
too true! look at retention (company and personal) a.southern@... | 03/10/08
I agree Justin James | 03/10/08
10 Things you should know about... 10 things dougbrong@... | 03/10/08
You read too much into it Justin James | 03/10/08
Training jk2001 | 03/12/08
You're right about our end of things Justin James | 03/13/08
#7 - Um, no. TheGooch1 | 03/10/08
I've learnt things ranging from Tony Hopkinson | 03/10/08
One more little point... Forum Surfer | 03/10/08
That's not a skilled coder Tony Hopkinson | 03/10/08
#10 might have been enough here ... DesD | 03/12/08
You got it Justin James | 03/13/08
The company car Forum Surfer | 03/17/08
Not strictly developer related, LocoLobo | 03/10/08
Portfolios and mechanics Justin James | 03/11/08
RE: 10 traits to look for when you're hiring a programmer sysyphus1 | 03/10/08
Yeah you have Tony Hopkinson | 03/10/08
That is sadly typical Justin James | 03/11/08
Fibonacci - is one of our tests Tony Hopkinson | 03/11/08
I know this one! Justin James | 03/11/08
Maybe a little more correct answer. normhaga@... | 03/12/08
I like to separate out those Tony Hopkinson | 03/12/08
Agreed r.salazar | 03/12/08
I have only found recusion,,, normhaga@... | 03/12/08
Some more: Dr Dij | 03/10/08
What they want versus what they need. Tony Hopkinson | 03/10/08
They rarely know what they want, and so we rarely know waht they need. SObaldrick | 03/11/08
Analysts are Tony Hopkinson | 03/11/08
I progressed my career .. SObaldrick | 03/12/08
Analyst could be tech progress in some firms Tony Hopkinson | 03/12/08
how much does what you ask for constrain the developer? SObaldrick | 03/13/08
Management TheGooch1 | 03/12/08
Nice to see someone further up ladder Tony Hopkinson | 03/12/08
Example Of Not Thinking Ahead TheGooch1 | 03/13/08
May not have been an option Locrian_Lyric | 03/13/08
Not an option for development certainly. Tony Hopkinson | 03/13/08
All great additions Justin James | 03/11/08
gotta have a craftsman's PRIDE chasAFD | 03/10/08
Wish it tasted nicer though Tony Hopkinson | 03/10/08
That's a great one Justin James | 03/11/08
Chided for Pride TheGooch1 | 03/18/08
Interesting but.. emmetor@... | 03/11/08
Those are ways of modelling a problem Tony Hopkinson | 03/11/08
Yourdon! SObaldrick | 03/12/08
Now you know you aren't allowed to ask that question ! :D Tony Hopkinson | 03/12/08
1974 SObaldrick | 03/13/08
Audio & visual Justin James | 03/11/08
RE: 10 traits to look for when you're hiring a programmer ramdhavepreetam@... | 03/12/08
If you have one of those guys you have to Tony Hopkinson | 03/12/08
Clear thinking skills mick@... | 03/12/08
Agreed, clear thinking has little to do Tony Hopkinson | 03/12/08
That's a common misconception Justin James | 03/12/08
I enjoy both subjects Tony Hopkinson | 03/12/08
Non-math/science logic courses Justin James | 03/12/08
Damn, 0 for 10 darren_1065@... | 03/12/08
RE: 10 traits to look for when you're hiring a programmer me@... | 03/13/08
Gorilla development style programmers batya@... | 03/14/08
Good point Justin James | 03/15/08
It's Guerrilla not Gorilla dougbrong@... | 03/15/08
Here's the proper definition dougbrong@... | 03/15/08
Perhaps they really meant 'Gorilla' SObaldrick | 03/16/08
ROFL. Tony Hopkinson | 03/16/08
Me too TheGooch1 | 03/18/08
199 out of 200 can't code Fizzbuzz jmgarvin | 03/16/08
I'd be one of those senior developers Tony Hopkinson | 03/16/08
My horror indeed Justin James | 03/17/08
I looked for the trick too jmgarvin | 03/17/08
Two's Complement SObaldrick | 03/17/08
It seems to be typical jmgarvin | 03/17/08
We are teaching them why bubble sort Tony Hopkinson | 03/17/08
Bah!! I only learned Quick Sort ;-) jmgarvin | 03/17/08
You left out Clairvoyance rana@... | 03/18/08
What do you mean you didn't expect this 10 years ago? jmgarvin | 03/18/08
Anyone who pretends to understand what Tony Hopkinson | 03/18/08
I hate to admit it... Justin James | 03/18/08
RE: 10 traits to look for when you're hiring a programmer joycehays@... | 08/05/08
Where to find good developers Justin James | 08/06/08
RE: 10 traits to look for when you're hiring a programmer joycehays@... | 08/05/08

What do you think?

White Papers, Webcasts, and Downloads

Recent Entries

TR on Twitter

Archives

TechRepublic Blogs



IT Professional's Guide to Policies and Procedures, Third Ed
Whether you're creating policies for management, training, personnel, support, privacy, Internet/e-mail usage, security, or inventory, you'll meet the needs of your entire enterprise with this one download!
Buy Now
500 Things Every Technology Professional Needs to Know
Did you know Microsoft's RegClean does not work with XP but you can use shareware to clean your registry? Did you know most wireless access points don't have encryption enabled by default? Did you know there are 500 tidbits of information contained in TechRepublic's 500 Things Every Technology Professional Needs to Know that will help you become a successful IT professional.
Buy Now

SmartPlanet

Click Here