I came across an article just the other day where this guy Daniel writes about how to recognize a good programmer. In this article he lists some bullet points on how to tell....
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
... so naturally I started to see which ones apply to me. What in this list would define where I stand? As I started to look at the list it made sense and actually I could see it applied to someone one else I know who always wants to be a better programmer but lacks some of the bullets from the first part.
As I read the bullets, everyone one of the positive bullets matched with me, only one of the negatives I felt matched as well. The last one about technology stacks. At first I thought that contradicted learning new technologies from the first one but it doesn't. Example, I learned AJAX, I'm learning Silverlight, those are new technologies. I am stacking the technology because I'm using everything with VB.NET. That's what I feel I stack. I can read C# but slower to code in it then VB and ususaly when I want to get something done I default to VB.NET because I already know it's full sytax.
Anyway, it was an interesting read.