While the wonderful folk in the world of information technology would have us all believe that all we need to do is buy their latest “solution”, the facts of the matter are that if you’re serious about leveraging technology eventually you are going to need go beyond what came free in the box.
Going beyond what came free in the box typically means hiring somebody calling themselves a Programmer, Developer, Software Engineer or even Software Architect. If they worked someplace interesting or for themselves, they might prefer terms like Hacker, Geek or Programming Rock Star. Unfortunately, none of this stuff really means anything! Having worked with and around these guys for a few years I can say with great confidence that their ability to program is in no way related to these accolades. Unfortunately, involvement with large companies or ostensibly successful high-profile projects doesn’t necessarily mean anything either. It’s not that hard to hitch your wagon to a train.
So what are you looking for?
- Engaged with Technology. I’ve never met a good programmer who didn’t get excited about almost any technical project. It could be simple like “hey did you see the new Google fizzbuzz application” or complicated like “hey, did you hear they added support for asyncronous transaction replication to the latest version of MySQL”? Either way, a good programmer will engage. Bear in mind, the first response is likely to be “That’s BS, MySQL sucks, use MS SQL Server”, but they’ll engage. If they sit there like a dead fish and don’t even ask you what you are talking about, be afraid. Caveat: You need to be able to be sufficiently technical to engage in a discussion with a programmer. If you can’t, chances are you aren’t equipped to manage one either, so why try to hire one?
- Problem Solving. To a degree beyond most professions, programming is about problem solving. See my previous post on Levels of Work, but frankly, you can’t afford to have many Stratum I programmers on your staff unless you’re running an internship program. You want the guys that can engage problems head on, and come out with solutions. Good programmers love to hear about what your problems in an interview, and would love to offer ideas as to how to solve them. Give them the chance.
- Language Agnostic. Great programmers are familiar with more than one language. Actually, more like more than ten. It should be obvious, then, that looking for somebody with 10 years of C++ experience is a sure-fire way to eliminate great candidates. Bear in mind, if your goal is to create the next revision of the C++ standard, you really do need somebody who is deeply involved in the C++ community and has been for 10 years. Most of us, however, are much better off using the right tool for the job, and frankly, sometimes that means using a new programming language. Anybody who hasn’t even dabbled in another environment for 10 years probably won’t adapt well to the future. Computer languages aren’t that complicated, and even better, learning another language adds a ton of great perspective to every program you write. The obvious extension to this rule is that they should also be familiar with more than one development framework. Every Rails programer should have at least checked out what Django has to offer by perusing their website. J2EE programmers should at least know that they aren’t just WebLogic or WebSphere programmers, but that they are also Glassfish or JBoss programmers.
- Understands Development Process. If you haven’t seen The Joel Test by now, you’re missing out. Ditto for any programmer that isn’t familiar with Specifications, Revision Control, Defect Tracking and Automated Build Systems. Good programmers whine about how they never get complete enough specs, or say they gave up on specs in favor of agile methods. Good programmers will happily bore you to tears with the reasons you should use distributed version control instead of that lame old CVS clone you’re using. If they say something dumb like “I don’t use revision control, I make backups to floppy discs”, run away. Quickly.
-

- Image via Wikipedia
Continuous Learning. Would you want a brain surgeon who last updated his technique in 1985? Maybe you would, but you definitely don’t want a programmer with skills that old. Technology is the fastest moving set of skills in the workplace today, and among technology, software is arguably the fastest moving of all. Programmers are the mechanics of software, and they need to be up to date. Good programmers are always looking for an excuse to try something new. Suggest a possible Rails app to a guy who’s been doing J2EE and, all things being equal, the correct response is “I’m familiar with it, but never had the chance to use it for a Project”. Now, bear in mind she may be afraid to sidetrack her career by becoming the Junior Rails Programmer (TM), but you wouldn’t be so silly as to try to pull that stunt anyway, right?
In short, hiring a programmer is hiring somebody to think. They have to be able to think out of the box of convention while still staying in the box of what can actually be done using the technology available. They have to continually update their skills, and enjoy doing it. I’ve barely scratched the surface of what makes a great programmer, but here’s some other opinions to consider as well:

![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=1cf7becd-6083-48d3-8a94-c70d3f500c8c)