source | link

Obviously it always helps to have a programming literate manager who can actually read code and even more importantly delve into the bug tracking system and understand what's going on, know that not all bugs are created equal and just delivering bad code on time doesn't count for much.

But that's an ideal case. For a manager to get the measure of a programmer from a non technical perspective I have a couple of suggestions.

  • Do they promptly/regularly/consistently highlight where there are problems with getting things done to meet the currently specified requirements... and are thoroughly annoying because of it (this is software development after all, if it's not complex enough to have these issues, it's not a real development project).
  • If they're not sure about something, do they immediately say so - only a programmer confident in their own ability would actually do this (and they know if you don't like it, they can easily get another job). Conversely someone who knows they are seriously out of their depth tends to hide and look for cover.
  • What do other programmers in the team say/imply about the other programmers? If you're a half decent manager, you are in the trenches with your programming team - especially during integration testing/bug fixing time. So if you're not getting this kind of feedback, someone else should be doing your job.
  • And my favorite: what I call the 'tomcat' programmer. If after a little while you are constantly noticing various programmers always milling around the same programmer's desk (assuming they are doing work and discussing some troublesome issue, and not the resident finder of cool & funny webstuff)... then there's a reason other programmers are gravitating to that person's desk. If they aren't already a team leader, then they probably should be made one asap.

If any or all of these apply, you are likely to have a good programmer on your hands. Note that by good programmer I don't just rate their coding ability but other useful stuff like being able to communicate with other human beings ;-)