Post Made Community Wiki by Nos
3 added 926 characters in body
source | link

The summary below is from How to spot a good programmer, which is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's a good programmer".

  • The FizzBuzz test (or something like it to test basic ability to write an algorithm.
  • Harder version of the FizzBuzz test (to get them to the failure or near-failure point.)
  • Discuss their code and see if they are willing to be self critical and look for improvements (which they probably didn't have time do do in a short on the spot test) such as:
    • good variable names (I've had very experienced skilled coders use variables in production like "flag" (WTF??)
    • modularization.
    • Anticipating problems and doing "defensive coding"
  • A willingness to see "flaws" as opportunities for improvement. I think the best coders always look unflinchingly for flaws in their previous code. They are not so egocentric as to think that finding a flaw their is a personal affront. They see it as an opportunity to do better. (Those that can't look at flaws unflinchingly either are overwhelmed by seeing a flaw (and become super underconfident or, to avoid just that, they ignore the flaws. 
  • Can they debug?
  • Can they Unit Test? (I've talked to way too many programmers who say "QC does that". I'm not talking about Testing, I'm talking about testing: you write a function, does it work? Does it make reasonable efforts to deal with likely problems (NULL input, etc.) ? If you can't do that, how do you know when you're done?
  • Do they have good communication skills? (at a minimum: good comprehension and self knowledge about when they do and do not understand and a willingness to say "I don't understand, please explain it again".

Much of the summary above is from How to spot a good programmer, which is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's a good programmer".

The summary below is from How to spot a good programmer, which is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's a good programmer".

  • The FizzBuzz test (or something like it to test basic ability to write an algorithm.
  • Can they debug?
  • Can they Unit Test? (I've talked to way too many programmers who say "QC does that". I'm not talking about Testing, I'm talking about testing: you write a function, does it work? Does it make reasonable efforts to deal with likely problems (NULL input, etc.) ? If you can't do that, how do you know when you're done?
  • Do they have good communication skills? (at a minimum: good comprehension and self knowledge about when they do and do not understand and a willingness to say "I don't understand, please explain it again".
  • The FizzBuzz test (or something like it to test basic ability to write an algorithm.
  • Harder version of the FizzBuzz test (to get them to the failure or near-failure point.)
  • Discuss their code and see if they are willing to be self critical and look for improvements (which they probably didn't have time do do in a short on the spot test) such as:
    • good variable names (I've had very experienced skilled coders use variables in production like "flag" (WTF??)
    • modularization.
    • Anticipating problems and doing "defensive coding"
  • A willingness to see "flaws" as opportunities for improvement. I think the best coders always look unflinchingly for flaws in their previous code. They are not so egocentric as to think that finding a flaw their is a personal affront. They see it as an opportunity to do better. (Those that can't look at flaws unflinchingly either are overwhelmed by seeing a flaw (and become super underconfident or, to avoid just that, they ignore the flaws. 
  • Can they debug?
  • Can they Unit Test? (I've talked to way too many programmers who say "QC does that". I'm not talking about Testing, I'm talking about testing: you write a function, does it work? Does it make reasonable efforts to deal with likely problems (NULL input, etc.) ? If you can't do that, how do you know when you're done?
  • Do they have good communication skills? (at a minimum: good comprehension and self knowledge about when they do and do not understand and a willingness to say "I don't understand, please explain it again".

Much of the summary above is from How to spot a good programmer, which is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's a good programmer".

2 added 2226 characters in body
source | link

Here is a great article, focused a bit moreBased on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot25 years of thingsprogramming (like "passion") that aren't normally mentioned inwhich, admittedly includes only a checklist5 or 6 instances of "what's a good programmer".hiring other programmers) :

How to spot a good programmerThe summary below is from How to spot a good programmer, which is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's 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

In addition, I'd suggest:

  • The FizzBuzz test (or something like it to test basic ability to write an algorithm.
  • Can they debug?
  • Can they Unit Test? (I've talked to way too many programmers who say "QC does that". I'm not talking about Testing, I'm talking about testing: you write a function, does it work? Does it make reasonable efforts to deal with likely problems (NULL input, etc.) ? If you can't do that, how do you know when you're done?
  • Do they have good communication skills? (at a minimum: good comprehension and self knowledge about when they do and do not understand and a willingness to say "I don't understand, please explain it again".

Here is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's a good programmer".

How to spot a good programmer

Based on my 25 years of programming (which, admittedly includes only a 5 or 6 instances of hiring other programmers) :

The summary below is from How to spot a good programmer, which is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's 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

In addition, I'd suggest:

  • The FizzBuzz test (or something like it to test basic ability to write an algorithm.
  • Can they debug?
  • Can they Unit Test? (I've talked to way too many programmers who say "QC does that". I'm not talking about Testing, I'm talking about testing: you write a function, does it work? Does it make reasonable efforts to deal with likely problems (NULL input, etc.) ? If you can't do that, how do you know when you're done?
  • Do they have good communication skills? (at a minimum: good comprehension and self knowledge about when they do and do not understand and a willingness to say "I don't understand, please explain it again".
1
source | link

Here is a great article, focused a bit more on longer range indicators. It definitely confirms my intuitions and experience. It's also a lot of things (like "passion") that aren't normally mentioned in a checklist of "what's a good programmer".

How to spot a good programmer