Hacker News .hnnew | past | comments | ask | show | jobs | submitlogin
Programmer Competency Matrix (indiangeek.net)
77 points by spydez on June 30, 2008 | hide | past | favorite | 33 comments


This sort of summaries always leave me with an impression of being written by someone about himself and a few guys in his epsilon neighborhood.

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.


In the long run, I think that maintaining a blog does have to do with a programmers competence.

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.


I'd be interested in hearing some of those experiences. In mine, good performance on topcoder is a fairly reliable indicator of intellectual horsepower (though the opposite isn't implied).


Hmm I wonder how you did in his matrix? Not too happy about how you scored in some of the boxes perhaps?

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.


Hilarious! I think I saw someone I knew in every box.

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.


Real programmers stopped using the IDE in favor of a good editor.


No, real programmers use cat.



Cat by itself is insufficient. You'd at least need to pair it with sed or head and tail. Or maybe you enjoy retyping entire files just to correct that misspelling on line 1.


Obviously, Real Programmers get it right the first time. ;)


By that logic, real carpenters would also refuse to use staple guns and electric screwdrivers.


No, carpenters wouldn't use robots that are hard to control.


"... I would change the IDE & log(n) (Level 3) intersection from 'Has Written Macros' to 'Doesn't Use Them' ..."

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 think IDEs are a matter of personal preference. There's nothing wrong with wanting good integration between the various tools you use, and good tools are not the same thing as "training wheels". Most of the popular IDEs have at least a few tempting features. I use emacs and command-line tools most of the time, but I also worked full time in Visual Studio a few years ago. I was surprised that I got to like it better than my usual emacs setup, for the languages it supports.


Uh... what conceivable purpose can this have? Bragging rights? Or is the intent that someone checks this stuff off and decides to only hire "log(n) level 3 competent programmers"?

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...


I see this chart as a list of things to learn. I'm only in the 2nd or 3rd column in a lot of these categories, and this chart forced me to honestly assess where my weaknesses are. So, it is useful as a reality check and possibly as a roadmap.


People like creating lists of criteria to predict performance. This gives them a warm and fuzzy feeling of being in control. Quite often they fail as the best predictor of performance turns out to be performance itself. This has came up on HN before:

https://hackernews.hn/item?id=209412

http://www.newyorker.com/online/video/conference/2008/gladwe...

Watch the video, it's well worth it.


I think it's a decent taxonomy for the skills you can use in practice. It's for learning about your weaknesses, and either learning something to fix them, or finding yourself on a team where someone's an expert in the area.

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.


Completely agree.

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 think it's supposed to be a hiring aide as well as a potential ego boost. However, I work with a 2^n and they still manage to contribute to the team.


Is Prolog still relevant? I am still curious about it, but never got round to checking it out.


The "languages with professional experience" and "languages exposed to" rows are duplicates, is it a bug or a feature?

I'm apparently level 1, in 13 years (I'll be 35) I should be a decent programmer.


All I have produced before the age of seventy is not worth taking into account. At seventy-three I have learned a little about the real structure of nature, of animals, plants, trees, birds, fishes and insects. In consequence when I am eighty, I shall have made still more progress. At ninety I shall penetrate the mystery of things; at one hundred I shall certainly have reached a marvelous stage; and when I am a hundred and ten, everything I do, be it a dot or a line, will be alive. --Hokusai


Um... Why did someone downmod every single comment on this page?


inevitable noise that comes with growth, no doubt


Entire sections are missing, f.ex. process. Others are naive, f.ex. build automation (no continuous integration?).

Obviously skewed toward geekery (he is the Indian geek after all).


I find myself to be mostly in the 3rd column, and sometimes in the fourth. This just gave me some specifics of what to focus on. What columns are you people at?


Between the second and third columns mostly. Sometimes slipping into the fourth. Which is ok; it's where I saw myself anyway.

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.


Mostly in the fourth, some in the third.

Guess I need to brush up on my data structures and learn some Erlang.


I found my self mostly in the second, surprised me as I'm a very noobish self taught programmer.

I do like the reading list included had some books I'll defiantly check out.


3rd column all the way. Not bad, but there is still room for improvment.


could someone comment on why files should have license headers (code organization within a file)? i'm not clear on the idea there, so i'd like to know more.


Usually you put a copyright statement and license terms at the beginning of a file. In the case of proprietary software it's usually simply that all rights are reserved.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: