Editor’s Note: This post was originally published on Seattle 2.0, and imported to GeekWire as part of our acquisition of Seattle 2.0 and its archival content. For more background, see this post.

By Anthony Stevens

Are great programmers born, or made?

My dad, who started programming back when punch cards were still new, often told me about (possibly apocryphal) studies done in the 1960’s that showed that programming ability was rare and, oddly enough, related to native musical ability.  As he told it, Boeing hired expert musicians and cross-trained them as programmers.  I’m not sure of the results of that particular experiment.

Can a bad programmer learn to become a decent programmer?  Can a merely decent programmer become an expert programmer, one of the top in her or his field?

I’ve directly managed hundreds of programmers in my career, and my opinion is that there are innate characteristics that predict success in programming. Further, I believe that these characteristics are resistant to coaching.    In my mind, it is very similar to music: one can only be coached so far. Off the top of my head, I would suggest that great programmers exhibit most or all of the following strengths, skills or capabilities:

  • Math
  • Logic
  • Pattern-Matching
  • Memory
  • Intuition
  • Persistence

Steve Yegge would also have you believe that strong typing skills are an essential prerequisite for programming success.  Not sure I agree.  However, it is a strange list, and I’ve known excellent programmers who lack one or more of these supposed prerequisites.  So I’m not sure I’m about to stake my reputation on having to defend this (or any) specific list – but I do remain convinced that what one might call the “career mobility” of a programmer – the ability to significantly improve one’s relative standing vs. peers over time – is limited.

Having made this claim, and as a working software development manager, what can I do?
 
First, there are many types of programming, and what makes a good embedded systems coder may be slightly (or very) different than what makes a good Silverlight developer.  Second, programmers don’t just write code – they read and critique specifications, they do technical analysis, they diagnose and troubleshoot problems, they learn new languages and techniques, they need to use tools effectively – so even a decent programmer, if she is excellent at all these other required skills, can be an awesome contributor. Finally, what I like to call a person’s “intangible” contributions – teamwork, communication skills, helpfulness, responsiveness – are a huge part of success in programming, just as in any career.  In this “big tent” approach to coaching and managing technical talent, everyone can find a home.

What’s your opinion?  Are great programmers born or made?  Let us know in the comments!

Like what you're reading? Subscribe to GeekWire's free newsletters to catch every headline

Job Listings on GeekWork

Find more jobs on GeekWork. Employers, post a job here.