Programmer Competency Matrix
indiangeek.net
indiangeek.net
Hmmm, maybe my comment should read as: "it doesn't perfectly describe me in every way, hence it's a terrible list" ;) I'm getting too many 2's damnit!
Programmer competency articles are sort of a macho, nerdy equivalent of "do these pants make my butt look big?"
Though, this chart implies all skills are equally worthwhile. There's another extremely important category missing here, which I'll call "solving the right problem". It might need to be split into a technical side and a business/marketing side. Solving the customer's actual problem, and using the correct technical approach vastly outweighs many of the categories listed.
like coming up with n(n+1)/2 to sum integers from 1 to n
To use an example. Lets say I'm considered an expert in a closed pretzel making community. I worked for the Bavarians who are renown in the pretzel making community. While there I made some waves in the pretzel making arts. Lets say the Bavarians are very secretive and won't talk about their pretzel making to other pretzel makers. They're Bavarians, they don't need to.
Later I saw a job at a medium sized pretzel factory in Portugal. I liked the location and applied as an operational pretzel maker. They asked me to fill out a survey and I listed that I didn't have experience with dough pullers and have only shaken the salt shaker a few times in recent history.
Quickly said factory sends a "you're not what we're looking for email". Needless to say, I was slightly perplexed.
The survey didn't give me a chance to state that I had invented new pretzel recipes (and pretzel making techniques that did not require dough pullers at that) and had a different view on pretzel making because I was working for the Bavarians for so long. They also missed out on my motivation to get closer to people eating pretzels and take my ideas outside of the schnitzel tower the Bavarian pretzel makers occupy.
In short, I wrote all this to say I'm not a fan of pre-interview surveys.
It is the abstract thinking, akin to what is needed at TopCoder and mathematical olympiads, that makes a programmer great, not his fucking .emacs file or nice template for a file.
In essence to put it this way:
"for $thing in ( technology, pattern, algorithm, methodology ):
it doesn't discriminate someone who've toyed with a $thing, someone who has made an implementation of that $thing for an employer or someone who has authored an all-new $thing."
So, how do we stack up here?
With 15 years of experience, I SHOULD be a "3" in every category... but in reality, I'm more like 2/3 '2's and 1/3 '3's.
Chalk the shortfall up to laziness, I suppose.
How about the rest of you?
Hopefully at some point I'll be able to make up for my terrible education in the areas of math and algorithms.
My results are about 1/2 three, 1/2 two, a couple ones, and nothing in the gifted category. :) Background here is some (very bad) programming before undergrad, undergrad CS from a good school, then 6 years working in enterprise software.
I really don't think this chart categorizes what makes a programmer competent though. I value the knowledge of a programmer that is extremely deep in a couple categories more than someone who has a sprinkling of everything.
Jeremy