How to recognise a good programmer 169

Posted by daniel Tue, 13 Nov 2007 13:28:00 GMT

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. In fact, a lot of that CV experience can be misleading. Yet there are a number of subtle cues that you can get, even from the CV, to figure out whether someone’s a great programmer.

I consider myself to be a pretty good programmer. At the same time, I’ve spent a fair amount of time on the business side of the fence, filtering technical CVs for projects, interviewing people, etc. Thanks to this, I think I have a bit of experience in recognising good programmers, and I want to share it in this article, in the hope that it may help other “business guys” to recognise good programmers. And, who knows, perhaps some programmers who have the potential to be good but haven’t really exploited this can also read this and realise what they need to do to become good (although, as I’ll argue, that’s definitely not accessible to all programmers!).

In his article The 18 mistakes that kill startups, Paul Graham makes the following point:

“… what killed most of the startups in the e-commerce business back in the 90s, it was bad programmers. A lot of those companies were started by business guys who thought the way startups worked was that you had some clever idea and then hired programmers to implement it. That’s actually much harder than it sounds—almost impossibly hard in fact—because business guys can’t tell which are the good programmers. They don’t even get a shot at the best ones, because no one really good wants a job implementing the vision of a business guy.

In practice what happens is that the business guys choose people they think are good programmers (it says here on his resume that he’s a Microsoft Certified Developer) but who aren’t. Then they’re mystified to find that their startup lumbers along like a World War II bomber while their competitors scream past like jet fighters. This kind of startup is in the same position as a big company, but without the advantages.

So how do you pick good programmers if you’re not a programmer? I don’t think there’s an answer. I was about to say you’d have to find a good programmer to help you hire people. But if you can’t recognize good programmers, how would you even do that?”

I disagree with Mr Graham on this one. I think there are a number of very strong indicators of a “good programmer” (and, conversely, strong indicators of a “not-so-good programmer”) that even a business guy can recognise. I’ll summarise some key indicators and counter-indicators in a list at the end of the article.

#1 : Passion

In my corporate experience, I met a kind of technical guy I’d never met before: the career programmer. This is a person who’s doing IT because they think it’s a good career. They don’t do any programming in their spare time. They’re shocked when they find out I have a LAN and 3 computers at home. They just do it at work. They don’t learn new stuff unless sent on a training program (or motivated by the need to get a job that requires that technology). They do “programming” as a day job. They don’t really want to talk about it outside of work. When they do, they talk with a distinctive lack of enthusiasm. Basically, they lack passion.

I believe that good developers are always passionate about programming. 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). Some people might see that as maladapted social skills (which it is), but if you want to recognise a good developer, this passion for what they’re doing at the expense of social smoothness is a very strong indicator. Can you get this guy to excitedly chat up a technology that he’s using, for a whole half hour, without losing steam? Then you might be onto a winner.

#2 : Self-teaching and love of learning

Programming is the ultimate moving target. Not a year goes by without some new technology robbing an old, established standard blind and changing half the development universe. This is not to say that all good programmers pick up these changes and ride the bleeding edge. However, there’s a class of programmers that will never, ever pick up a new technology unless forced to, because they don’t like learning new stuff. These programmers will typically have learnt programming at university, and expect to get by on whatever skills they picked up there, plus whatever courses their company is willing to send them on.

If you’re thinking of hiring someone as a programmer, and he ever utters the words “I can work with that, just send me on a training course for a week and I’ll be good at it”, don’t hire that guy. A good programmer doesn’t need a training course to learn a new technology. In fact, the great programmer will be the one talking your ear off about a new technology that you haven’t even heard of, explaining to you why you must use it in your business, even if none of your staff knows how to use it. Even if it’s a technology he doesn’t know how to use yet.

#3 : Intelligence

Some business people assume that lack of social tact and lack of intelligence are the same. Actually, intelligence has several facets, and emotional/social intelligence is only one of them. Good programmers aren’t dumb. Ever. In fact, good programmers are usually amongst the smartest people you know. 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.

This doesn’t mean that they’ll all feel comfortable in every social context. But it does mean that if the context is comfortable and non-threatening enough, you’ll be able to have as great a conversation with them as you would with the most “socially enabled” people (perhaps better, since most good programmers I know like their conversation to revolve around actually useful topics, rather than just inane banter).

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. On the other hand, anyone who’s clearly very smart at the very least has a strong potential to be a good or great programmer.

#4 : Hidden experience

This is correlated with the “Passion” point, but it is such a strong indicator that I’d like to emphasise it with its own point.

I started programming when I was about 9, on a Commodore 64. I then migrated onto the PC, did some Pascal. When I was 14 I wrote a raycasting engine in C and Assembler, spent a large amount of time playing with cool graphic effects that you could get your computer to do by messing directly with the video card. This was what I call my “coccoon stage”. When I entered that stage, I was a mediocre programmer, and lacked the confidence to do anything really complicated. When I finished it, I had gained that confidence. I knew that I could code pretty much anything so long as I put my mind to it.

Has that ever appeared on my CV? Nope.

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. A good question to ask a potential “good programmer” in an interview would be “can you tell me about a personal project - even or especially one that’s completely irrelevant - that you did in your spare time, and that’s not on your CV?” If they can’t (unless their CV is 20 pages long), they’re probably not a good programmer. Even a programmer with an exhaustive CV will have some significant projects that are missing from there.

#5 : Variety of technologies

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. So they’ll do it all the time, and accumulate a portfolio of things they’ve “played around with”. They may not be experts at all of them, but all decent programmers will be fluent in a large inventory of unrelated technologies.

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. This is possibly hard to recognise for non-programmers, but it is possible to tell whether their technology stack is varied by talking to them about it, and asking them how the different technologies they know relate to each other. Over-specialisation in a single technology stack is an indicator of a not-so-good programmer.

Finally, if some of those technologies are at the bleeding edge, that’s a good positive indicator. For instance, today (November 2007), knowledge of Merb, Flex, RSpec, HAML, UJS, and many others… Please note that these are fairly closely related technologies, so in a couple of years, someone who knows all these will be equivalent to someone familiar with the Java stack listed in the previous paragraph.

Update: As a clarification to this point, there’s in fact two indicators here: variety and bleeding edge. Those are separate indicators. A good variety of technologies across a period of time is a positive indicator, whether or not the technologies are bleeding edge. And bleeding edge technologies are a positive indicator, whether or not there’s a variety of them.

#6 : Formal qualifications

This is more a of non-indicator than a counter-indicator. The key point to outline here is that formal qualifications don’t mean squat when you’re trying to recognise a good programmer. 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. You can’t base your decisions about programmer quality on age (though you might decide to hire people around a certain age to have a better fit in the company; please do note that age discrimination is illegal in most countries!).

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.

Disclaimer

None of the indicators above or below are sure-fire indicators. You will find great programmers who break some of those moulds. However, my view is, you’ll rarely find a great programmer that breaks all of them. Similarly, you may find poor programmers that meet (or appear to meet) some of these criteria. But I do strongly believe that the more of these criteria a programmer meets, the more likely they are to be one of those elusive “good programmers” that, as a business guy, you need to partner with.

The criteria in bullets

So, in summary, here are some indicators and counter-indicators that should help you recognise a good programmer.

Positive indicators:

  • Passionate about technology
  • Programs as a hobby
  • Will talk your ear off on a technical subject if encouraged
  • Significant (and often numerous) personal side-projects over the years
  • Learns new technologies on his/her own
  • Opinionated about which technologies are better for various usages
  • Very uncomfortable about the idea of working with a technology he doesn’t believe to be “right”
  • Clearly smart, can have great conversations on a variety of topics
  • Started programming long before university/work
  • Has some hidden “icebergs”, large personal projects under the CV radar
  • Knowledge of a large variety of unrelated technologies (may not be on CV)

Negative indicators:

  • Programming is a day job
  • Don’t really want to “talk shop”, even when encouraged to
  • Learns new technologies in company-sponsored courses
  • Happy to work with whatever technology you’ve picked, “all technologies are good”
  • Doesn’t seem too smart
  • Started programming at university
  • All programming experience is on the CV
  • Focused mainly on one or two technology stacks (e.g. everything to do with developing a java application), with no experience outside of it

I hope these help. Let me know below if you have any comments, or anything to add to them!

Thanks for reading.

Please vote this article up on social news sites! Why?

Stumble It!
Trackbacks

Use the following link to trackback from your own site:
http://inter-sections.net/trackbacks?article_id=how-to-recognise-a-good-programmer&day=13&month=11&year=2007

  1. [...] Recognizing good programmers I believe that good developers are always passionate about programming. 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 o...
  2. [...] I’m going to offer up a great list provided by the Daniel over on inter-sections.net. These points all rang true to me when I read them so make sure you jump [...]
  3. [...] (titta så fint jag anger källan) hittade jag en lång lista på vilka egenskaper som utmärker en bra respektive dålig programmerare. Jag har märkt för min egen del att bredden håller på att avta lite för mycket. Kanske dags [...]
  4. [...] Nice little blog post on “How to recognize a good programmer”: http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ [...]
  5. [...] Uncategorized — Sonia @ 2:55 pm KDan (via Slashdot) has written a really good article on how to recognise a good programmer; I think many of his points also apply to system [...]
  6. [...] about this issue as I read this post about how to get hired by Google. Then, along comes this terrific list of criteria is about screening for good tech hires. Hint: what you want is not printed on the resume. I am sad [...]
  7. [...] How to Recognize a Good Programmer How to recognise a good programmer [...]
  8. [...] Inter-Sections » Blog Archive » How to recognise a good programmer (tags: programming business) Published by ichen January 12th, 2008 in General [...]
  9. [...] Inter-Sections » Blog Archive » How to recognise a good programmer (tags: good-reads software programming blog) [...]
  10. [...] How to Recognize a Good Programmer [...]
  11. [...] Enlace al articulo completo. [...]
  12. [...] there are a variety of ways to identify a good programmer. Daniel of Inter-Sections has an essay on how to recognize a good programmer. Here is a summary.  Positive [...]
  13. [...] read more | digg story Explore posts in the same categories: Uncategorized [...]
  14. [...] guy has some very good points about recognizing a good programmer. If you are in a position where you need to hire people for a tech job, this is a good read! I [...]
  15. [...] http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ [...]
  16. [...] http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ [...]
  17. [...] is an older post from last year November, but still relevant and on-topic, so I will share it here. The post analyzes the qualities of a good programmer, someone who has a real passion for the code and the technology and how it works… ...
  18. [...] I’m not the kind of person to go to someone’s blog and try to start a flamewar, either.read more | digg [...]
  19. [...] found this post on digg and thought that I share almost all of this persons views of who is a good [...]
  20. [...] This article really resonated with me.  I recently interviewed at a small software/hardware company.  Less than two hours into the interview process the VP of Engineering made me a job offer - seriously, on the spot.  Up until that po...
  21. [...] Link How do you recognise good programmers if you’re a business guy? [...]
  22. [...] at inter-sections has written a nice guide to hiring good programmers. I think he’s right [...]
  23. [...] Inter-Sections » Blog Archive » How to recognise a good programmer (tags: business programming) [...]
  24. [...] Corfield links to a nice summary of how to recognize good programmers when you aren’t one. The article isn’t a magic bullet, but it does a nice job talking [...]
  25. [...] cygwin, delphi, history, opengl, Personal, programming, Python, Ubuntu, vb I just saw an article at Inter-Sections about how to spot a good programmer when recruiting a person. I can see some of [...]
  26. [...] Inter-Sections » Blog Archive » How to recognise a good programmer [...]
  27. [...] source: how to recognise a good programmer [...]
  28. [...] How to recognise a good programmer (tags: programming) [...]
  29. [...] found this essay on Slashdot yesterday: how to recognize a good programmer. Some of the comments were quite insightful, but many followed the following [...]
  30. [...] uitgebreider engelstalig artikel waardoor ik mijn punten opgeschreven heb: http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/  Stem of voeg toe aan [...]
  31. [...] Inter-Sections » Blog Archive » How to recognise a good programmer (citations) [...]
  32. [...] What Is A Good Programmer? [...]
  33. [...] about “How to recognise a good programmer“. Where Mr Daniel tries to sell the idea of good programmer = a guy who lives and love [...]
  34. [...] just read a great article on how to recognize a great programmer.. It is a worthy read for those interested in hiring [...]
  35. [...] January 13, 2008 at 7:15 pm · Filed under Programming How to recognize a good programmer [...]
  36. [...] Published January 13, 2008 1 Recently Inter-Sections web site published an interesting article about how to detect a good programmer. Among all the things someone needs to sit and create… [...]
  37. [...] с английского. Оригинал находится на сайте [...]
  38. [...] found a pretty good article on the signs of a good programmer. I fit a lot of those, except maybe being in a variety of technologies. I pretty much stick to [...]
  39. [...] can find myself in all of the above You can read some more in-depth stuff over here. Posted in [...]
  40. [...] to Recognize a Good Programmer http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ Pretty interesting article on what makes a good [...]
  41. [...] Posted January 14, 2008 Via Slashdot, an article was brought to my attention which asks the question: “How do you recognise a good [...]
  42. [...] Inter-Sections » Blog Archive » How to recognise a good programmer (tags: career development) [...]
  43. [...] found an article this morning that was from a guy that is a programmer and a businessman. It is an interesting read [...]
  44. [...] aqui para ler o artigo [...]
  45. [...] How to recognise a good programmer [...]
  46. [...] Inter-Sections » Blog Archive » How to recognise a good programmer (tags: programming hiring career interview business jobs programmers development) [...]
  47. [...] 可幸的是,好的Programmer大多都還是有些大眾都可以分辨出的基本因數,網上有一篇Blog就做了一個不錯歸納,不家不彷比較一下。 [...]
  48. [...] un buen programador? Según este documento, las siguientes son las características que distinguen a un buen [...]
  49. [...] How to recognise a good programmer How do you recognise good programmers if you’re a business guy? [...]
  50. [...] A blog post that could be worth reading it before hiring some developers. [...]
  51. [...] Posted by damodar on January 16, 2008 How to recognize a good programmer [...]
  52. [...] на Inter-Sectionst. Доста е интересен и затова реших освен оригиналния линк към поста, да му направя кратко резюме. Още в началото се оспорв...
  53. [...] How to recognise a good programmer - Great discussion on recognising great developers. The problem would seem to be finding them! Most recruiters just pattern match on CVs which tends to favour the “career” developer. Topics...
  54. [...] Inter-Sections » Blog Archive » How to recognise a good programmer Some interesting first-order-approximation criteria when recruiting programmers. I found myself nodding at a long list of stuff that I’d never thought to look for. (t...
  55. [...] ha publicado un artículo: How to recognise a good programmer cuya traducción podemos encontrala (entre otras) en el siguiente post: Como reconocer a un buen [...]
  56. [...] How to recognise a good programmer lists criteria and non-criteria for - you guessed it - recognizing good programmers. His points would nail most of the good programmers that I have ever known. They really seem to boil down to passion. I ce...
  57. [...] 从JavaEye的文章看到这篇How to recognise a good programmer,其中的观点我颇认同: 1.激情 — 写代码是你的日常生活,而非工作; 2.自学好学 — 不会等着公司给你培训; 3.聪明 — 好的程序员...
  58. [...] $self [...]
  59. [...] 如何“识别”优秀的程序员 January 18th, 2008 | by ming | 如何“识别”优秀的程序员,Daniel总结了几条关键要素。他写道,“并不是和听起来那么容易。在这儿工作经验的作用是...
  60. [...] 如何“识别”优秀的程序员 Posted By: webclerk  Published in IT 18Jan 如何“识别”优秀的程序员,Daniel总结了几条关键要素。他写道,“并不是和听起来那么容易。在这儿工作经验的作...
  61. [...] búsqueda por el mejor programador (Leer también como ser mejor [...]
  62. [...] búsqueda por el mejor programador (Leer también como ser mejor [...]
  63. [...] Finalmente, outros dois links interessantes foram o do Overview sobre Eclipse RAP e o Screencast de demostração criado por Michael Coté e o artigo escrito por Daniel Tenner chamado Como reconhecer um bom programador. [...]
  64. [...] posted a link to a great article on how to recognize a good programmer. Anybody who is looking to hire programmers or technical people should read this article. [...]
  65. [...] 一月 22, 2008 於 12:42 上午 · 歸檔於 研究與資訊, 轉載 連結 [...]
  66. [...] How to recognise a good programmer ============================= http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-prog… [...]
  67. [...] Fromhttp://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ [...]
  68. [...] de leer un artículo en el que explican como reconocer a un buen programador durante una entrevista de trabajo. Para los [...]
  69. [...] Nu we het toch over programmeurs hebben, waar herken je een goede programmeur aan? [...]
  70. [...]  Não gosto de ser radical, mas depois de conhecer vários profissionais de informática, durante vários anos e em vários projetos, posso dizer que em 95% dos casos os indicadores caem como uma luva. Muitos dos que não concordam dizem qu...
  71. [...] This struck a chord with me, since I’ve been thinking of whether there was a way to translate my how to recognise a great programmer article into something similar for [...]
  72. [...] 在delicious上看到一篇去年的文章: How to recognise a good programmer。正好这段时间一直在为面试发愁,看看这篇文章很有帮助。原文篇幅很长,这里就不逐字逐句地翻译了,只把要点和看...
  73. [...] على كتابة شئ بهذا الخصوص ، حتى وجدت مقالاً في مدونة Inter-Sections فقررت الاستعانة بتسلسل الافكار الواردة فيه .. المحتوى [...]
  74. [...] The article [...]
  75. [...] Scoble has an interesting viewpoint on the Microhoo ballyhooSome stuff about Enterprise Library 4.0Are you a great programmer? (I know I have placed myself in the appropriate category ;)) Posted: Feb 04 2008, 11:00 PM by [...]
  76. [...] few months ago there was an article written about how to recognize a good computer programmer if you are a business manager that has trouble recognizing what makes a good programmer. There are [...]
  77. [...] Como reconocer a un buen programadorwww.inter-sections.net/2007/11/13/how-to-recognise-a-good-pr... por charliebcn hace pocos segundos [...]
  78. [...] Cómo reconocer a un buen programador Gran artículo que ha sido portada en Digg: How to recognise a good programmer. [...]
  79. [...] ¿Que opinan? El artículo completo en Inter-Sections [...]
  80. [...] How to recognize a good programmer Where Are the Software Engineers of Tomorrow? [...]
  81. [...] notice: Originally written by Daniel Tenner (not me, Marcel ) link : http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ reason : copy-pasted here for personal archive bookmark These icons link to social bookmarki...
  82. [...] Now the business guys who create startups in technology will try to hire engineers on low wages (preferably H1 Visa) to do the grunt work. However, since none of the business guys have any inkling of what technology is about, they end up hir...
  83. [...] an article about noticing good programmers by Daniel Tenner, he believes that CVs tells only half the full story and that good programmers [...]
  84. [...] How to recognise a good programmer [...]
  85. [...] How to recognise a good programmer 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. In fact, a lot of...
  86. [...] Inter-Sections han dado una lista que puede sentar una base de indicadores positivos y negativos para reconocer a [...]
  87. [...] How to recognise a good programmer [...]
  88. [...] Sulo tipsade om en intressant artikel som behandlar ämnet hur man hittar bra [...]
  89. [...] the things that can go wrong with it. And if your project is really tough, you’ll need to find great developers to work on [...]
  90. [...] a un buen programador Publicado el Febrero 25, 2008 por micarreralaboralenit Un excelente artículo que me recomendaron leer. Y realmente lo es!. Aquí les dejo los principales puntos para poder [...]
  91. [...] excelente artículo. Aquí les dejo los principales puntos para poder identificar si un profesional es un buen [...]
  92. [...] Lo anterior es un resumen, del articulo original en inglés. Lo que yo hice fue copiar el resumen y ni me tome el trabajo de leer el articulo original, por lo [...]
  93. [...] Fuente: inter-sections.net [...]
  94. [...] recently read Daniel Tenner’s blog post on How to recognize a good programmer, and I was curious to see if we do have good programmers according to his [...]
  95. [...] Desde Mi Experiencia laboral en I.T. traemos una serie de indicadores para reconocer quien es buen programador. A su vez, el post está traducido desde Inter-Sections. [...]
  96. [...] How to recognize a good programmer. Posted Febrero 25, 2008 Esta es una entrada express antes de irme a la escuela. Me he encontrado con este “howto” para reconocer a un buen programador. Esta es la fuente. [...]
  97. [...] It can be very hard to separate out the good programmers from the not-so-good programmers until you’ve actually spent a fair bit of time working with them and seeing how they perform. Obviously, that’s a bit too intensive for you...
  98. [...] http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ [...]
  99. [...] was reading this blog over at Inter-Sections (blog: Inter-Sections » Blog Archive » How to recognize a good programmer) and some of the topics brought up I thought could be of value. I also thought that I would apply [...]
  100. [...] don’t have a background in programming. Anyway, so was jumping from site to site and I found a great blog by a programmer. He lists some practical indicators of good programming skills. I usually don’t read long posts, [...]
  101. [...] Original en ingles [...]
  102. [...] ver esta lista de Yo, programador, una traducción de este interesante post acerca de “Cómo reconocer a un buen programador”, no he podido evitar sentirme feliz. [...]
  103. [...] unknown wrote an interesting post today onHere’s a quick excerptHow 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...
  104. [...] Original en ingles [...]
  105. [...] Este es una interpretación y resumen del texto original publicado en  How to recognize a good programmer? [...]
  106. [...] Viernes, 21 de Marzo de 2008 por Dark_Zoke Articulo robado de aquí. Me pareció tan pero tan cierto que quise ponerlo en el blog. Aquí les dejo los principales puntos para poder identificar si un profesional es un buen programador…. ...
  107. [...] on the topic of good coding practices I forgot to post a link to this great artical on recognizing a good programer. I have used this as a reference when interviewing new Flash Developers where I work. Posted by [...]
  108. [...] http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ [...]
  109. [...] How to recognise a good programmer from: http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/ [...]
  110. [...] How to recognize a good programmer [...]
  111. [...] negotiations. What you need is to network in the right communities, whether online or offline, to recognise the people you need, and to bring them in not as employees but as partners in your [...]
  112. [...] negotiations. What you need is to network in the right communities, whether online or offline, to recognise the people you need, and to bring them in not as employees but as partners in your [...]
Comments

Leave a comment

  1. Avatar
    Ross about 23 hours later:

    Its a good list!

    Focusing on one or two technology stacks can cover a hell of a lot of technology and shouldn’t really be cause of concern. In fact constantly following trends and the bleeding edge could also be an indicator of a limited attention span / inability to master technologies. I suppose thats one to be looked at in a interview.

    So where’d you find these programmers?

  2. Avatar
    crysfel 16 days later:

    You´re totally right!

  3. Avatar
    vahid 16 days later:

    Hi Daniel . Great essay! I absolutely agree with you. Specially, I believe that most of great programmers -i.e. great hackers- have a bunch of programming languages ans technologies in their pockets to deploy them in appropriate conditions. This viewpoint avoid them to choose dump ways. And this fact leads them confidence and audacity to get their jobs done . That’s why great programmers are eager to learn new technologies and have a lot of fun with them :)

  4. Avatar
    Ashley Moran about 1 month later:

    Nice summary! I agree with the comments about developers who started programming at university, and see it as a day job (to me, they are two sides of the same coin). Until I worked in IT professionally, I didn’t even realised these people existed! I assumed that all computer science/software engineering etc graduates were previously teenage hackers.

    One positive indicator I think you missed is that most, or at least many, great programmers have excellent command of written language. This isn’t quite the same thing as being good in conversation, where being quick-witted gives some people an illusion of talent. I would certainly not hire someone who couldn’t form coherent written sentences - if they can’t do it in a natural language I wouldn’t have much confidence in them doing it in a strict programming language. (Unless you are hiring for VB work of course, in which case the reverse may apply.)

    Also, something that has stuck with me long after I forgot where I read it (possibly the Jargon File?) is that you should look out for developers with highly-developed outside interests. Generally, the ones who excel at or show extreme dedication to their hobbies are better hackers than those that don’t. I’ve got no idea why this should be the case, but I have seen many examples of it. Perhaps it’s because they find inspiration in strange places, or perhaps because they solve as many problems subconsciously as they do in front of a keyboard.

  5. Avatar
    Vitor Pellegrino about 1 month later:

    I agree with everything except by the fact i consider myself a pretty good programmer as well even though i started to program at college; i think the passion and self-learning attitude are more important than any “pre-college” experience.

    Keep the good work! Regards from Brazil

  6. Avatar
    daniel about 1 month later:

    Hi Vitor,

    As I mentioned in the article, but it is worth repeating, these are all only indicators. None of them is sure-fire. You will find excellent developers who break some of those indicators. Marcel Molina Jr, one of the leading lights of the Ruby community, started his career as a Linguist before falling in love with Ruby. However, I think that few great programmers break all of these indicators.

    Thanks everyone for your comments!

    Daniel

  7. Avatar
    Marc about 1 month later:

    >I consider myself to be a pretty good programmer.

    Well, then you don’t want to hire me!

    Confessions of a Terrible Programmer

    :-)

  8. Avatar
    daniel about 1 month later:

    Marc: Good article, quite smart :-)

    Looking at your list, I see you actually match my list pretty well: you’re opinionated, you know what you like, you’re articulate, you’ve got experience in a good variety of technology stacks… I don’t know about the rest, but that’s a good start!

    But I’m guessing you didn’t post this to start an argument :-)

  9. Avatar
    Daniel about 1 month later:

    I am a self taught programmer and this list is almost the same as the one I use when hiring on new programmers. Our team is like 50% college educated, 50% fully self taught, some guy has a biology degree, etc.

  10. Avatar
    DR about 1 month later:

    Hey, we’re all good programmers, aren’t we!

    I completely disagree with this essay.

    Basically, you took a description of yourself and said “Here is what a good programmer looks like.” On the other hand, there are plenty of bad programmers that look just like that as well. Of course, at least half of them believe they are good programmers.

    I also know good programmers who weren’t into computers when they were growing up. Most bad programmers will list all of the latest technology on their resume to make it look good.

    Anybody who tells you in an interview that they decided to be a programmer for the money, will probably fail the intelligence part as well, so at least that one is right. The young woman who I got to babysit my children once was overheard at a party asking “Give my name out for babysitting because I love money.” Needless to say, she turned out to be a lousy babysitter, even though she had all of the qualifications (first-aid certification, etc.)

  11. Avatar
    Ed about 1 month later:

    @Ashley Moran

    Some of the best developers I have ever seen are dyslexics or have other similar problems with natural language…so I think comparing written work at the lowest level may not be the best indicator - I agree that verbal statements may however be some of the best structured sentences out there however.

  12. Avatar
    Anonymous about 1 month later:

    Gott… I have all but intelligence :-(

  13. Avatar
    Henrik about 1 month later:

    I think there are many good things in this list, but… the inevitable but… i think many “hacker” types are terrible programmers. Not that they write terrible code, but from a business perspective. I have many times seen programmers use bleeding edge technologies in places where it was inappropriate from a architectural point of view but .”…but this is really cool, we NEED to use this pattern/ technology etc.” and then clutter the application with unneeded complexity, just because “its cool”. Naturally a university degree will not safe guard you from bad designers but i prefer programmers who have the big picture in mind and not go goofing off with their pet technology

    Never the less, there are many good points in this list. :)

  14. Avatar
    Jeff about 1 month later:

    Considering I’m not in a position to review the talent of all that many developers, my opinions aren’t based in nearly as much hard data as I’d prefer. However, I take exception to these two bullet points:

    Opinionated about which technologies are better for various usages

    Very uncomfortable about the idea of working with a technology he doesn’t believe to be “right”

    Knowing a lot of technologies and being able to determine which to use in specific circumstances is clearly a benefit. However, being overly opinionated on the matter could easily lead to conflict. Team dynamics and the social aspect of software development, such as being pleased with the people you work with and the environment you work in, is very highly correlated with successful software projects. If one developer is going insane trying to convince the team to do things their way, it will harm the project significantly more than using a slightly less skilled developer who won’t cause problems.

    Furthermore, such developers as you listed are prone to becoming magpies (c.f. http://www.codinghorror.com/blog/archives/000916.html )

    Anyway, as I said, I may just have read too much into what you wrote.

  15. Avatar
    suffering fools about 1 month later:

    I work for a large software company in the Seattle area…one thing I am really surprised by is how poorly managed the interview process is. They ask puzzles, even though officially they are not supposed to. So reading one of the books on puzzles is a qualification. And they ask programming questions that are either impossible in the time given or for which they are looking for a very specific answer to regardless of if there are other valid solutions. I think they want to see the solution they received in their CS course.

    Basically we don’t consider any of the ideas mentioned in this article. And since anyone on the team can sink a candidate then good candidates are sunk while candidates who have studies to the interview get through. Its frustrating to watch and its frustrating when trying to make lateral moves.

    But hey, if upper management doesn’t care what can you do? The worst situation is when upper management is happy with the products you are producing, profits are up, even though you feel, nay know, they are total @rap.

    Sometimes all you can do is plan for an exit.

  16. Avatar
    pp about 1 month later:

    I’m very suspicious of this, it looks to me like you’re projecting an (idealised) version of yourself. The first attribute you describe as passion is really just a hobbyist mentality, you even say they will do it without being paid. Number 2, love of learning, follows on from #1 and is a useful attribute for a lot of workers - when it’s focussed as initiative and not just limited to collecting new skills like a butterfly collector takes specimens. Some may even call it a lack of loyalty, as they are just using you as a stepping stone in their career. Number 3 “… if you can’t have a great conversation … ” is a bit of a giveaway about reflecting your own personality. Ever considered they may not want to talk, or have other things they’d prefer to be doing than brown-nosing with the boss? Like getting home to the husband or wife (or can’t a great programmer have a home life and a family???)

    Pretty much all the other attributes fit any good worker in any field, you could just as well say “car mechanic”

    My measure of a great programmer would be one who does what they say they will, on time, in a clear and organised way. They will be able to integrate into a team and use his/her initiative to circumvent problems. They will be able to communicate at a professional level and have a JFDI mentality - without any tantrums about “my way is better than your way” languages/methods/coding style etc. But most of all, their code will work. It will be efficient, reliable, tested and fully documented so that when this great programmer gets a greater offer, what they leave behind can be picked up easily by the next great programmer you hire. That’s the most important attribute of all.

  17. Avatar
    MikeW about 1 month later:

    Great post. The one thing I would add is you should look for these types of attributes in employers when you are job hunting. Often if an interviewer shows no passion or interest in what they are doing, it probably is not a place you would enjoy working.

    In addition, you can apply these same principles to almost any IT job, not just programming.

  18. Avatar
    Jonah H. Harris about 1 month later:

    Daniel,

    Awesome post. In my experience, I too have found the same common criteria for all good programmers I’ve hired and/or worked with.

    -Jonah

  19. Avatar
    Steve about 1 month later:

    Wanted to mention that often a developer that was required to acquire certificates for a prior job (for whatever reason) will often gloss over them because they know how meaningless they really are, whereas a poor programmer will talk them up no end and make sure to emphasis them.

  20. Avatar
    Gordon about 1 month later:

    I think the passion indicator is entirely overrated. I see cases all the time, especially in college, where a person’s passion exceeds their abilities. They are the same people who spend day and night in the computer labs and even know a plethora of cutting-edge technologies, but are ultimately mid-tier students who are passed up by truly good programmers.

    With that said, raw intelligence is the best indicator. That’s why puzzle questions are not entirely bad. They generate less false-positive, which is the worst-case for a new hire, and are harder to fake. All of the qualities you listed above can be faked easily. They are also universal in the sense that the business-minded variety are capable of asking them.

  21. Avatar
    unknown about 1 month later:

    You must got really hairy balls

  22. Avatar
    Obiwan about 1 month later:

    The simplest way to check for 1337 programming skills: pony-tail

  23. Avatar
    Kevin about 1 month later:

    The best programmer I ever worked with:

    1) Had a life outside work and did not in general talk shop outside his 6am-3pm schedule. He had once been “passionate” about his code but after too many projects got canned he realized that in the end it is just a job. (Corollary: why do so many programmers think the rest of the world isn’t passionate about THEIR work?)

    2) Had EXPERIENCE in designing and implementing larger systems.

    3) Always wrote his code so that it could handed off immediately to someone else. Nothing was ever his “baby”.

    Those are qualities I see way too rarely these days.

  24. Avatar
    Daniel about 1 month later:

    Great article! A lot of what you said rings true with me… and of course I was flattered that most of your points are things I could say “yup that’s me” to :)

    The opening quote was also interesting because I’ve never considered what a huge task it would be to be the “business guy” who has a great idea but has trouble hiring good talent.

  25. Avatar
    sayinghai about 1 month later:

    Why didn’t you write this when I was 18, bright eyed and bushy tailed - and looking for my first programming job! :)

  26. Avatar
    David Emery about 1 month later:

    Good list and I’d like to emphasize #5. My position is that I -never- hire a programmer without experience/knowledge of more than 1 programming language. The Sapir-Whorf hypothesis applies; if you know only 1 programming language you can’t really think through alternate approaches to the problem. I’ve told people who clearly qualified based on the other criteria in this list, “Go learn another programming language and then come back and I’ll hire you.”

    See also this article: http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html

    With respect to #4, some of us are old enough that our first chance to do any programming was when we got to universities. And that’s a point I’d like to make: Experience counts. Someone with 20 years experience, even if it’s not in the hottest technologies, but that otherwise meets these criteria, is often likely to be more productive in the middle to long run, than someone with 1-2 years of direct experience but no “time-in-life”. A tremendous amount of stuff I experienced 20 years or more ago in some “antique” technology is still relevant; part of the skill to look for is an ability to apply life experiences to the new technologies. Remember that 1 good programmer significantly outperforms several mediocre programmers (based on both skill and Brooks’ Law about team sizes.)

    dave

  27. Avatar
    Michael E. Burke about 1 month later:

    A very good article! I started programming back in 1965 on IBM 1401’s, doing cryptology for the Army. (When other guys were working on their cars I was building Ham Radio sets and Stereos…Vacuum tube technology.) In today’s market I’m almost unemployable. Why? Because I’m 60 years old and have had over a hundred jobs (contracts). But I do program for myself. I love assembly language programming, I can write competent programs in dozens of higher-level languages, I love to THINK about how to solve difficult problems, and I love the fact that there is a wealth of opportunity in the form of unresolved, undiscovered, un-articulated possibilities. In my lifetime I have seen programmers hired who had a lot of paper credentials and could not think their way out of the lunch room.

    Something that is implied in your article, but not mentioned explicitely, is a system for describing problems and then a system for resolving them. At this stage of my life I think that coding gets in the way of real programming, and a good programmer solves problems ‘way upstream from the actual code.

    Another good indicator is a person who gets so involved in the process that their coffeee gets cold, they lose track of time, and don’t get up until they absolutely HAVE to go to the bathroom.

    Mike

  28. Avatar
    Richard about 1 month later:

    As someone that has programmed for nearly 15 years (hobby and professionally) with a background in psychological research I hate to say I find this “essay” not very scientific. This is all based on anecdotal evidence, stereotypes, and conclusions were reached without a solid methodology.

    Can I find people that fit these bullet items that are good programmers? Sure, but I can also point to some really bad programmers that fit this model in nearly every way also.

  29. Avatar
    macc about 1 month later:

    prefer prgrammers that can use a soldering iron or have other hardware expertise. “pure” programmers are often unable to “jump”.

    This meshes into the no single stack argument G! MACC

  30. Avatar
    Anonymous about 1 month later:

    Yup, I agree with you. I would add another point:

    Values simplicity.

    This is the rarest of things to find.

    We programmers tend to have rivers of thoughts flowing in our brains all at once.

    A good programmer will find an elegantly simple solution in a word of complexities.

    Ask them about the K.I.S.S. principle :-)

  31. Avatar
    Franky about 1 month later:

    Great! Now I have a list of things to act out when I am applying for all those crappy boring jobs. Come on folks we all know that 95% (or more?) of the work out there isn’t what we’d rather be doing.

    What percentage of you are going to even get an interview at Google, Apple, Microsoft, or some sexy startup? (OK, I did at two of them…but that’s not my point.)

    My point is it can be hard to fit this list when you are interviewing at Billy Joe Bob’s Insurance Co. for some churn and burn IS programming job.

    Oh well, at least we all now have a guide about how to act to get a job ;-)

  32. Avatar
    flambard about 1 month later:

    Your list covers only half of the requirements of a good programmer. You might say its the basics. Whitout that you cant be a good programmer. But I have know a lot of programmers who got all the skills, abilities and markers you list and still where lousy programmers. By a lot I mean 60 - 70 %. Tinkering with code and technology has only little to do with writing clear, consice, maintainable code. Picking a new sexy technology is probably the best way to screw up a serious project. Jumping from one interest to another does not show the disipline you need for good programming. A good programmer can balance his skills and eagerness with the need of the programm/employer. Not to mention the social skill he needs to understand his employer.

  33. Avatar
    James about 1 month later:

    Your list is completely wrong. I am a great programmer and you have missed on every point…

    Actually, I was reading through this and found that I fit in pretty well with many of your points. While I would like to think that your list is good because of this, I do not consider myself a good programmer.

    One of the issues that compelled me to comment, was about learning a first language in a college course. I am mostly a self taught programmer, which shows determination and interest in the subject. It doesn’t really mean that I am a good programmer. Because I am self taught, I may have sloppy code that gets the job done, though horribly inefficient. A more fitting title for this article is “How to recognize an enthusiastic programmer”.

    An enthusiastic programmer can very likely be a good programmer, but not always. A good programmer should have a more intimate knowledge of programming procedures and logic, then of any particular language itself. Most any programmer knows that there are many ways to construct a procedure, but a good programmer knows how to create the most efficient procedure. Knowing the difference between and the proper use of a ‘for each’ loop verses a ‘for i=0-10’ loop is only one example (and one that I actually learned more recently in my career).

    Though an enthusiastic programmer is a good one to have: Enthusiastic != Good Good != Enthusiastic

    I have no problem calling myself an enthusiastic programmer. Instead of learning new languages and technologies as I have done in the past, becoming a good programmer has been my ‘hobby’.

    Your article was great, and I very much enjoyed reading it. You also warmed my heart a little. :)

  34. Avatar
    Raymond about 1 month later:

    I am not sure how I feel about this list.

    It is a good overall pattern to follow for someone who does not have strong development experience, such as business manager. Employment is one area where trial and error is not a good method for success, so examples from experienced people are very helpful. Still, I have to strongly disagree with two items on the list. At one point in my career, I would have agreed with them, but additional experience working in the enterprise has changed my mind.

    1) someone who suggests bleeding edge technology does not know what it takes to develop real world solutions and maintain those solutions. I consider this to be a major indicator of inexperience. Good developers have lots to do, so they cannot afford to spend large amounts of time evaluating things that might or might not apply to completing their tasks. Good developers know how to use the tools they have to get the job done. New tools tend to waste time. I am not saying that an interest in new technologies is bad, but I am saying that someone who suggests AJAX as a solution rather than just a potential method for achieving an end probably does not know much about real world web development.

    2) Good developers do not spread their time all over the place learning every technology under the sun. Good developers understand that solving problems is the name of the game, and to be efficient you have to focus. I evaluate developers for new hire all the time, and I am suprised by how many different technologies they put down on their resume. How do you obtain expert experience in a technology within 6 months? You barely understand syntax and overall theory in 6 months. It takes years with a technology to understand what it does or does not do well, and where all the gotchas are. Focus is much more important than spreading it around.

    I usually spot good developers through one easy test. I mention a problem that we are having to them. I look to see how they approach it. If they start breaking it down and asking questions that get to the heart of the matter then they are good. If they start asking if I have tried this technology or that product or tell me about their agile methodology for tackling problems then I politely escort them to the door. A good developer knows how to see what is important in solving the problem and knows how to get there quickly.

  35. Avatar
    Jared Parsons about 1 month later:

    I think you missed one key factor that I would put at #3. The ability to systematically break down large problems into small, managable ones.

  36. Avatar
    programmer about 1 month later:

    …and then there are the morons who look to get someone who is a great programmer/thinker/developer and then “test” you with arcane references within their required language stack that have no bearing on being able to create or develop and then rub it in your face that you must not know what you are doing…because his onscreen definition that he found on www.howcomputerswork.com is not what you just said….

  37. Avatar
    unknown about 1 month later:

    “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” - this is not a valid statement. True, if you start programming earlier and continues to do so, you would probably be a good programmer. But I am a good programmer who doesn’t start programming before university. Other than that, I agree with you mostly.

  38. Avatar
    macc about 1 month later:

    After reading some more recent comments:

    Avoid programmers that think of themselves as “great programmers”.

    And yes, KISS is allimportant.

    G! MACC

  39. Avatar
    Nelson about 1 month later:

    I don’t think someone that goes home from a long day of programming and wants to do something other than program is a sign of a bad programmer.

    My main criteria are:

    1) ability to think logically

    2) works well with others - knows when to take a stand and when to be pragmatic

    3) a certain creativity and intelligence that can take a complex problem and break it down to its fundamentals (writes solutions that can be understood by “the next guy”)

    4) curious - wants to know “why” - solutions can often be improved with a deeper understanding of the problem or task desired (or of the target system/environment)

    Disclaimer - My list might be more relevant for software engineering than just “hack ‘n slash” programming.

  40. Avatar
    Peter Rowell about 1 month later:

    Good article.

    One error I’ve seen managers make (myself included) is finding a programmer that is good in one area and then later trying to fit them into something entirely different. Crossover is possible, but the programmer has to be interested in the new area and self-motivated to explore it.

    E.g., good in compilers != good in computational linguistics, even though on the surface they may look related.

  41. Avatar
    quantum kev about 1 month later:

    I agree with Pp (way up there). Although I agree with some of your assertions, I have found in my experience that many great programmers are not necessarily great employees. I have worked primarily for corporations that deal with sensitive data, and they have all been very hesitant - even somewhat apprehensive - about implementing the “hottest” technologies. Often times, security holes or other vulnerabilites are only truly exposed until after a product has been out for awhile. So it is important, in my opinion, to have a solid foundation in the basics, like VB, Java, C++, or even good old ASP, HTML or JSP. Sure, it’s great to know Ruby, AJAX, and all the hottest stuff. But I can tell you from experience that those technologies are not to be found in banks, hospitals, insurance companies and other large organizations - some of which are still running Windows 2000. The other major objection I would like to voice is your point that “most average or poor programmers started programming at university” - I don’t think I need to beat this dead horse, as several others have addressed it. The best 2 programmers to come out of my class in college were myself, and my buddy - both older guys just learning to program. And the reason we were the best is my final point : to me, the one most important quality of any programmer is DEPENDABILITY. When given an assignment, is it completed on time, and as requested? Many of the young guns I went to school with were avid hackers, and very talented. But they could never complete anything on time, or as requested - if it wasn’t something illegal, or “fun”, they simply lost interest. It doesn’t matter how many technologies a person knows, or that they programmed their first OS at 10 years old, or that they cracked their own iPhone - in the business world, if you cannot be depended upon to deliver requests on time, and within required parameters, you typically don’t last long.

  42. Avatar
    PhotoTherapy about 1 month later:

    Well, I am happy to know that I am almost a good programmer ;)

  43. Avatar
    Tarakava about 1 month later:

    This is the first time I ever read an article that assumes the meaning of “smart” is great social skills and the meaning of “dumb” is lack of social skills, am I losing something?

  44. Avatar
    unknown about 1 month later:

    You obviously don’t have your SCJP to say that it is completely irrelevant.

  45. Avatar
    unknown about 1 month later:

    Daniel is someone who makes stupid decisions.

  46. Avatar
    piedoggie about 1 month later:

    crap, crap, crap. I hit every one of those points. Self driven learning, always exploring new forms of technology and then applying it to the current business, etc. etc. Maybe if I hadn’t been so good, my hands would still work and I wouldn’t be living with constant pain up to my elbows. What’s ironic is I left my father’s rigging business (machinery moving) because I saw so many people around me losing fingers, damaging their limbs and back etc.. and I wanted to go do something where I wouldn’t be injured on the job. Since I had been programming in high school, I thought hey, this is not a bad career. You work indoors, you’re not covered in grease, you don’t breathe toxic chemicals and you aren’t going to get injured by heavy machinery falling on you.

    Ha.

  47. Avatar
    Chip Uni about 1 month later:

    I slightly disagree with one bullet point:

    • Happy to work with whatever technology you’ve picked, “all technologies are good”

    I think that you need to discover what motivates the programmer.

    If the project’s goal motivates the programmer, then she might be happy to use any (reasonable) technology to reach that goal.

    If the programmer is coming from a different platform, she may choose not to have a strong opinion about which particular technology to use.

  48. Avatar
    Steve about 1 month later:

    WOW! Sorry to have arrived at your article so late! I really can say much of what you have written sounds similar to what I do when sourcing/reviewing/hiring new candidates. I think that your bulleted list gives clear enumeration to what we all should be aware makes a good startup candidate, period! :)

    Love the info and perspective. I’ll be relying on this piece from now on!!

    Thanks and take care,

    Steve

  49. Avatar
    Merijn Vogel about 1 month later:

    about new vs old technology

    In programming-land I am a rare case. I like to take on ‘challenges’ on old software code that other people created, modernize it where necessary and make something useful of it. In my company people always are complaining when some other colleague created something, left the building and they have to figure out what and where, however I do like that.

    It gives a bit of a base, you’ll have to work around things that are weird/hacked in, etc. The fact that I do like that, makes that I may become stuck in “Old Tech”, like java 1.4 whereas java 1.6 and such are more current. That’s where home-hacking comes in; the company is in web-space, so at home i try to develop a suite of gui applications, etc.

    And trying to learn a programming language you do not know each year, in a few weekends, is always a very nice experience I my opnion.

    Nice article, and nice discussion afterwards, which amazingly is still going on.

  50. Avatar
    Jana about 1 month later:

    That’s real good insight into the process of hiring. Except maybe for one thing. Before you start interviewing people, you as an employer need to cut the list of applicants short by about 90 %, unless you have unlimited time. And most of the criterias you mention do not show up in a CV.

    Still, a one-in-ten chance you happen upon a great programmer!

    But really, what the CV-bound hiring process does is it swings the pendulum at least 60-40 in favor of people with great communication skills. And if you know your DISC, you’ll understand that is not the main trait to look for in an employee with a problem solving profile.

  51. Avatar
    mike about 1 month later:

    @gordon

    how many of those “mid-tier students” go onto become great programmers b/c of their work ethic and desire; whereas, how many of those “great programmers” at school, who do not have this work ethic/passion, inevitably flame out and end up hawking some “mid-tier students” tech in pre-sales calls???

  52. Avatar
    Anonymous about 1 month later:

    I don’t get the bit about “started programming before University”. It doesn’t make any sense to me. Your other points are equally unreliable.

  53. Avatar
    James Priestley about 1 month later:

    “I usually spot good developers through one easy test. I mention a problem that we are having to them. I look to see how they approach it. If they start breaking it down and asking questions that get to the heart of the matter then they are good.” – Raymond’s post, Jan 11

    And if they offer a solution, they are worth hiring. Which is how my oldest son happens to be writing code at FaceBook.

  54. Avatar
    smith about 1 month later:

    I think your comment about the “exotic” ruby libraries is completely wrong, and perhaps leads to the problem with your argument. Writing a website is simple. Any douche can do it. Rails code is so simple that even NON programmers can do it - so it shouldn’t be held up as a sign of greatness.

    When I look for great programmers, I look for the following:

    1. Fluent in lisp or prolog - there is no prolog/lisp programmer who cant pick up ROR in an hour.
    2. Understand to at least an undergrad level another field (soft sciences).
    3. Can design complex software (database indexing, data mining, distributed memory) with
  55. Avatar
    Paul about 1 month later:

    You’ll catch flak but this is all essentially on target. In particular, you’ll catch shit about the ‘formal qualifications’ thing. But it’s closer to be being true than not.

    Most non computer people don’t realize that coding is far more of an art than either a science or a craft, much like painting or writing, I don’t think you can teach someone to be good at it. I think you need to be ‘wired’ a certain way to be good at it. In other words, born with the talent.

    As such, hiring is difficult, it becomes almost more of a ‘tocuhy feely’ thing.

  56. Avatar
    John about 1 month later:

    I think it’s all about time. The best programmers can do the most work in the least amount of time with the least amount of errors. The gurus can do that and make it easy for other people to understand. “They make it look so easy”.

  57. Avatar
    Programmer and former software development manager about 1 month later:

    I think you forgot couple. These come to mind: