Programmer Competency Matrix
indiangeek.net
indiangeek.net
Realistically speaking, you've gotta be not just an über-programmer, but having extensive exposure to the HR and developer management to have any credibility on the matter. Otherwise the statistical sample is just not there, so the list has very little value outside of being entertaining.
A concrete gripe with this particular matrix - maintaining a blog has nothing to do with programmer's competency. In fact the exact opposite is true based on my observations. The reference to the value of TopCoder rankings is also laughable at best; again based on my own experience.
I don't necessarily agree with everything in the matrix, but I think overall it was pretty well thought out and it sets some good minimum expectations.
Programming is a social activity. Communication and discussion are important. Even if no one reads your blog, the act of regularly putting insights into text form forces you to organize your thoughts. If affects your way of thinking and your approach to problems. It exposes your thoughts to criticism, or at least the possibility of it.
Part of the reason I was recruited and hired by Yahoo, despite not having a lot of professional front-end experience at the time, was the fact that I maintained a blog about web development. I was told this by both HR and the hiring manager.
Guess I'd better get to work finding professional experience in prolog, and write some custom macros for the IDEs I don't use. Yikes, I'm falling behind...
http://news.ycombinator.com/item?id=209412
http://www.newyorker.com/online/video/conference/2008/gladwe...
Watch the video, it's well worth it.
I'd also nominate machine learning/simple ai/recommendation systems/probabilistic filters as another skill -- once you have some familiarity you can use it everywhere.
After a few years doing this job and taking it seriously, diligent practice and all that, anyone who's reasonably bright should be at the top level in at least a few of these categories. But it's always good to spot areas that need work, and lists like this can be very helpful.
We programmers are mental athletes. Like athletes, we shouldn't ever stop training.
I would change the IDE & log(n) (Level 3) intersection from "Has Written Macros" to "Doesn't Use Them". Real programmers don't use training wheels.
Had a chuckle on this one as well. I shouldn't laugh though. I've seen quite a few CS people coming into startups struggle with setting up editors, compilers via the CLI. I really hate editors that don't allow you to work the way you want. This could be seen as a sign of inflexibility - not being able to work with the tools you are given. These days I simply choose my own toolset. I just don't like tools that you can't modify yourself. Out of boredom once, I found out how to compile MS-VB apps via the command line compiler. It (can) could be done. Wouldn't recommend it, but you could this way if you wanted.
I'm apparently level 1, in 13 years (I'll be 35) I should be a decent programmer.
Obviously skewed toward geekery (he is the Indian geek after all).
Guess I need to brush up on my data structures and learn some Erlang.
I do like the reading list included had some books I'll defiantly check out.
Give me a couple more years and I'll be at four pretty solidly, though I think I'll focus my learning myself rather than focusing too heavily on this guys assumptions of what I should learn.