Skip to content

Properties of a good programmer

I was just pointed to this article thanks to the blog of Kris Buytaert. The author writes about his experiences on how to recognize a good programmer as a recruitment person.

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 ©

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.

Posted in Technology, Various.

Tagged with , , , , .

11 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. gianmt says

    Nicolas, the link doesn’t work for me

  2. Nicolas says

    Sadly enough it looks like is down… You can check the Google Cache version though.

  3. Philip Paeps says

    Regarding the degree bit: I have no degree and I’ve been working as a full-time developer for various companies for seven years now. Only once has someone asked me why no degree was mentioned on my CV and what degrees I had. I asked the man if he wanted a programmer with the embedded and kernel experience he was looking for, or one with a certain kind of degree. Needless to say, I got the project. I’ve been on the project for the last fourteen months and not once have I (or anyone else, I think) felt that a degree is really missing from my personal baggage.

    While I have nothing but admiration for people who manage to suffer through X years of university, I would always give the benefit of the doubt to applicants without a degree. Not just because I ‘sympathize’ with them, but because it shows willingness to leave the trodden path. A feature I find admirable in a programmer but which the author of the cited article neglects to mention explicitly.

  4. Nicolas says

    Philip: you’re right, although maybe you’re missing one point too: not everyone wants to stay in the programming business until he retires. I don’t. At the stage you want to stop doing programming jobs, and get into new things (both related and unrelated to IT), the absence of a degree can have a major impact on hiring success.

  5. Jan says

    Boy do I sympathize with that “(no degree yet, maybe I won’t ever get one)”.
    I’ll go even further to say that the difference between a good student and a bad student is the difference between a sheep and a persistent sheep. Both are still part of the herd, you see.
    Look, I’m not implying good programmers don’t have degrees. I’m just saying the only reason someone goes to university in the first place is due to hereditary prejudices. The biggest fear of a human being is becoming a misfit. I just happen to think it’s a risky prejudice, because someone good at something gets compared with someone who’s not on the same grounds, for the most part. Or at least a significant one.

  6. Nicolas says

    That’s how our social systems work, I guess? Whether you or I like it or not, in some circumstances you do need this piece of paper (=> diploma), I won’t be able to change this, neither will you.

  7. Benjamin Otte says

    > 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’
    That suggestion has one big problem. It assumes you have the right people already. If you’re just starting a company (the example from Paul Graham) you don’t have any people they’ll work with yet. And if your programmers are all mediocre, they’ll not want to work with people that are better than them, so they’ll not recommend hiring the really good ones.

  8. Nicolas says

    You’re completely right, Benjamin, didn’t think of that scenario. A sad truth though.

  9. Clark says

    Actually this article and your comments come as a relief to me. I just had a really bad interview where my experience (including team lead of a successful application), passion, and more were thrown to the side and all the questions and so forth seemed to be targeting my schooling and stuff (which is currently without a degree). It was a terrible interview for what seemed like a good job and I’ve had been less confident since.

    I just wish everyone valued programmers like this since I definitley fit in this category (passionate and always trying something new). I’m also going to school but that has been second to my programming jobs.

  10. Bee says

    Hmm, you are making it difficult to contact you. I am urgently looking for Java programmers, but don’t want to log on or get LinkedIn. If you are free to work, let me know.

  11. irfan ali says

    i much liked your article and i have a question for you sir” please send me about what is struct in c++ language?

Some HTML is OK

or, reply to this post via trackback.