
Programmer Competency Matrix - sliceghost
http://www.indiangeek.net/wp-content/uploads/Programmer competency matrix.htm
======
ratsbane
I don't disagree with the comments about the triteness of this page and other
articles like it. That doesn't mean it's entirely without value though. Think
of it as like a financial budget: you know you're not going to hit it
completely and some of the items you've budgeted for will turn out to be
unnecessary or wasteful. At the end of the budget period, though, it gives you
something to measure actual performance against.

~~~
joe_the_user
Honestly, I think it's seems like a great check list for finding holes in
one's background and education.

If you could make it into a wiki, it would be good since then the hole's in
the author's experience could also be filled.

~~~
ratsbane
What would add to or remove from the original matrix?

What I would change: \- add mention of RFCs, e.g. 2616 (HTTP) and 1738 (URL)

~~~
sorbits
I would introduce ‘make’ in the build automation (level 3) section.

Understanding make (dependency graphs, splitting up the build process into
small tasks which can be parallelized, restarted, and leave an exact record of
how much was succesfully built) I consider a valuable trade and magnitudes
better than “writing your own build script” (as is presently what is the level
3 skill).

------
Silhouette
Isn't this the sort of table that shows its author is a L337 hax0r because
he's in the top category of everything? Anyone who automatically puts things
like DVCS, TDD, and practices obviously related to Open Source development in
the top tier sounds more like a Kool-Aid drinker than an objective observer
making a sincere attempt to provide a useful resource.

~~~
nostrademons
A lot of the O(log N) items were depressingly basic. An undergrad education in
CS will get you to O(log N) in basically all the Computer Science categories.

Where are the finger trees? Array-mapped hash tries? Cuckoo hashes? Where's
the domain-specific algorithm knowledge, like machine learning or information
retrieval or computer vision? The IDE plugins? "Let it crash" and supervisor
processes for error handling?

It's also depressing that O(log N) for "years of experience" = 10+. A
motivated and reasonably intelligent student can get to O(log N) in all the
other categories with an undergraduate CS degree and about 2 years of work
experience at a good employer.

~~~
antirez
Hey, didn't you noticed that the O(1) column was missing?

------
GFischer
Hmm... as joe_the_user said, it's a nice checklist for holes in one's
background, but I'm not sure if it should serve as a list for "hireability" -
I know people that are probably on the higher end of most of the points, but
are terrible at real-world situations.

These probably are crucial for the kind of programming done at the startups,
though.

I score as Level 1 or Level 2 at most on almost all the items, some Level 3
points don't seem relevant (why should I need a license header for my work
programming?).

What I believe is that some of the points are WAY more important than others,
I personally place great value on my domain and business knowledge and believe
that is a trend going forward.

Still, thanks for making it available, reminded me I have to do some more
studies.

------
ivenkys
Must be a slow week - this particular "very simplistic" article has been here
at least 3 times before in the last month.

Its very cute to divide programmer competency into a clean matrix - its never
that simple.

~~~
andrew1
> Must be a slow week

Well, it is December 30th so probably likely to be slower than average...

------
nightlifelover
He misses a few points subjects like computer graphics, computational
geometry, understanding of databases (did he mention this?), numerical
simulations, GUI design, general math skills, compression algorithm, heuristic
algorithm, etc

That's what just comes in my mind..

~~~
argv_empty
I'd file most of those under "domain knowledge" >_>

------
eplanit
All is fine so long as one does not assume 'great programmer' = 'competent'.
This matrix really only differentiates 'well-educated' programmers.

There are many well-educated failures, and as many (some might say more)
un-/under-educated successes.

------
lujz
Quantifications like these drive what we do from serious play into solemnity.

------
puneetht
This matrix is a bunch of crap. The ability to "get things done" is the most
important factor of programmer competency. Every thing else is incidental.

~~~
strlen
Not true. Getting "things done" while creating an O(N^2) solution, in
spaghetti code, to a problem that's already well solved by an external library
is _horrible_.

~~~
puneetht
Of course an elegant solution is desirable, however I prefer bloatware that
works, over a beautifully architected one that is vaporware.

~~~
bhousel
I used to believe that too, but I've changed my mind.

Now, I'll _always_ prefer clean organized code, even if it doesn't work. I can
always hire someone or jump in myself and make the changes that are necessary.

It is safer to assume that _all_ code is broken in some way. E.g. If someone
says that code "works", what they usually mean is that the software is broken
in ways that they doesn't understand. When someone says a system is "secure",
it means that it contains vulnerabilities that they haven't yet discovered.

A pessimistic attitude, but it has served me well.

------
larrykubin
Here's an alternative 1x1 matrix:

[ build something that people will pay money for by any means necessary ]

Much easier to remember.

~~~
andrewcooke
christ. i know this place is related to yc. but sometimes the constant
emphasis on making money gets a little tedious.

~~~
jrockway
Agreed. This attitude is why software has such a bad reputation. People are in
such need for software, that they will tolerate horribly unreliable software
if it happens to sort of solve their problems. Good software is rarely
available, so people just expect it to be bad.

If people started demanding software as reliable as the things produced by
other engineering professions (buildings that don't collapse, etc.), then
being a good programmer would be strictly tied to making money. But right now,
the code is the least important part of software companies. The idea and the
marketing is significantly more important. (Hello, Twitter.)

Also, people are quick to associate personal gain with the economic value of a
program. The Facebook founders may be rich, but automatic trading systems
handle a lot more money (even though the programmers didn't necessarily get
rich writing it). Facebook can have as many bugs as it wants, and they will be
fine. An automatic trading system can ... cause problems ... if it is not bug-
free (and well-written, or written by good developers). But you never hear
about that sort of thing from these people; only how their blog makes $10/day
and that how they are a genius and visionary for doing that.

------
marltod
where is the linear algebra to combine it all into a single value? Some HR
executive would pay big money for that.

------
DannoHung
Where's O(1)?

~~~
marcus
I had a professor in college that used to say A+ is for me, A is reserved for
God, A- for the head of the department, and the grades B+ and below are for
you...

So by that line of reasoning I assume that O(1) is reserved for the author.

~~~
lucifer
I think for O(1) in each category you can write "have conceived, designed, and
implemented" a log(n) concept, construct, or tool.

data structures: creator of skip lists

algorithms: creator of genetic algoritms

systems programming: lead engineer on JVM HotSpot

source control: "subversion sucks, here's Git"

build automations: creators of Maven

etc. (You can go down the whole list and figure out exactly what O(1) is and
who belongs to that set.)

------
caffogene
The books category is especially ridiculous. You might have read some books in
each one of those levels, and they're not exactly prerequisites to one
another.

I also use Git exclusively, that doesn't mean I'm proficient with SVN.

Et cetera.

------
gaius
_Thanks to John Haugeland for a reformatting of it that works much more nicely
on the web._

Where does "basic HTML" come in the matrix?

PS Flagged, dupe.

------
seshagiric
From John Mayer's 'Vultures'

".....How do I stop myself from Being just a number How will I hold my head To
keep from going under.........."

