As I still am unqualified myself (no degree yet, maybe I won’t ever get one) the article was a relief to read, as in some of the things he mentions I could recognize myself. Hopefully lots of HR people read it too
Some excerpts of particular interest, and my opinion on them (all blockquotes © inter-sections.net):
Update: article blog seems to be down, see the comments for a Google cache link.
How do you recognise good programmers if you’re a business guy? It’s not as easy as it sounds. CV experience is only of limited use here, because great programmers don’t always have the “official” experience to demonstrate that they’re great.
This is most certainly true, it’s sometimes extremely hard to provide an overview of your knowledge in a CV. Some time ago I was in contact with someone looking for people interested in IT security. This is a very interesting field, in which I got some (both applied and theoretical) knowledge, but none of this was listed on my CV, which was a killer.
Good developers would do some programming even if they weren’t being paid for it. Good programmers will have a tendency to talk your ear off about some technical detail of what they’re working on (but while clearly believing, sincerely, that what they’re talking about is really worth talking about).
Correct, although even the most geeky persons should know it’s not very healthy to be coding all day (as a job) and all night (not paid).
A good programmer doesn’t need a training course to learn a new technology.
Agree, although training courses can be useful to get more in-depth knowledge. Learning the basics should be done on your own though, always following new developments, rising technologies, etc.
Many of them will actually have pretty good social skills too. The cliché of the programmer who’s incapable of having a conversation is just that – a cliché. I’ve been to a few meetings of the London Ruby User Group and I can say that with only a very few exceptions, most people there are smart, talkative, sociable, have varied interests, etc. You wouldn’t look at them chattering away in the pub and think “what a bunch of geeks!” – at least until you approach a group and realise they’re talking about the best way to design a RESTful application with a heavy UI frontend.
Just come to one of the GUADEC parties once
Don’t ever hire a dumb person thinking they’re a good developer. They’re not. If you can’t have a great conversation with them in a relaxed social context, they’re very likely not a good programmer.
Next to this, programming is not a solo business at all, so social abilities are very important to get projects done.
I strongly believe that most good programmers will have a hidden iceberg or two like this that doesn’t appear on their CV or profile. Something they think isn’t really relevant, because it’s not “proper experience”, but which actually represents an awesome accomplishment.
Too bad this one is pretty hard sometimes, as you forget about your own little pet projects yourself sometimes, or can’t really explain what you were trying to achieve. Sometimes it’s hard to explain why something you did is a real accomplishment as to you it all seems very simple and obvious.
This one’s pretty simple. Because of the love of learning and toying with new technologies that comes with the package of being a “good programmer”, it’s inevitable that any “good programmer” over the age of 22 will be fluent in a dozen different technologies. They can’t help it. Learning a new technology is one of the most fun things a programmer with any passion can do.
Who doesn’t recognize this one I’d even lower the 22 years.
That “unrelated” bit is the subtle twist. Every half-decent java programmer will be able to list a set of technologies like “Java, J2EE, Ant, XML, SQL, Hibernate, Spring, Struts, EJB, Shell scripting”, etc.. But those are all part of the same technology stack, all directly related to each other.
Which is why a good IT HR person should have quite some knowledge of the technologies his company is using. Not on the practical/implementation side, but at least the ‘sub-technologies’ being used. Listing ‘PHP, HTML, XHTML, CSS, XML, SQL, MySQL, AJAX’ on a CV isn’t thát impressive.
Many good programmers will have a degree in Computer Science. Many won’t. Certifications, like MCSE or SCJP or the like, don’t mean anything either. These are designed to be accessible and desirable to all. The only thing they indicate is a certain level of knowledge of a technology. They’re safeguards that allow technology recruitment people in large corporations to know “ok, this guy knows java, he’s got a certification to prove it” without having to interview them. If you’re hiring for a small business, or you need really smart developers for a crack team that will implement agile development in your enterprise, you should disregard most formal qualifications as noise. They really don’t tell you very much about whether the programmer is good. Similarly, disregard age. Some programmers are awesome at 18. Others are awesome at 40.
Maybe this is the most important paragraph of the whole article. Sadly enough in the IT industry (maybe more than in any other) it’s really hard to ‘measure’ experience and capabilities. Some gut-feeling is very important.
As a final note to this, in my experience most average or poor programmers start programming at university, for their Computer Science course. Most good programmers started programming long before, and the degree was just a natural continuation of their hobby. If your potential programmer didn’t do any programming before university, and all his experience starts when she got her first job, she’s probably not a good programmer.
I don’t completely agree here. Most people programming before university can be pretty good programmers (I started at 9 myself, writing a program in QBasic which questioned the French vocabulary I had to learn at school ), but I know at least a couple of guys who did no programming at all before university, which I’d hire myself nowadays (well, hypothetically) or I would give a hire recommendation.
(A good programmer is) opinionated about which technologies are better for various usages.
Partially agree. A good programmer should be flexible and pragmatic too, so he can integrate in many environments, both on the technical as on the social side.
(A good programmer is) very uncomfortable about the idea of working with a technology he doesn’t believe to be “right”.
Disagree, see the previous comment (even stronger). I dislike the MS operating system. If I’d need to work with it to get some task/job done, that wouldn’t be a big problem though. Obviously I don’t think I’d apply for a job consisting of nothing but MS platform work.
Here’s a little idea. Maybe the best way to know whether someone applying for a position in the IT department at your company is to ‘throw him in front of the wolves’: if someone passes the initial tests (both IT and non-IT related), get some guys of the department where he’ll be working, and let these people have a chat with the applicant. Your own IT staff will most certainly know how to recognize the skills someone needs to be able to join them, and they’ll know what to ask to figure out whether the applicant got these skills. Afterwards, ask your IT crowd about their impressions. These will most certainly be very valuable.