Programmer Competency Matrix

Jun 30

Programmer Competency Matrix

Programmer Competency Matrix: This page presents a matrix of programmer skills and what it requires to be at different levels, 1-4, from novice to master.

For instance, for “data structures,” it outlines the following levels:

  1. Doesn’t know the difference between Array and LinkedList
  2. Able to explain and use Arrays, LinkedLists, Dictionaries etc in practical programming tasks
  3. Knows space and time tradeoffs of the basic data structures, Arrays vs LinkedLists, Able to explain how hashtables can be implemented and can handle collisions, Priority queues and ways to implement them etc.
  4. Knowledge of advanced data structures like B-trees, binomial and fibonacci heaps, AVL/Red Black trees, Splay Trees, Skip Lists, tries etc.

I picked “data structures” specifically for good reason: I still don’t know what a LinkedList is. I’ve always wondered, but I truly do not know. I’ve talked to Joe about it, and he claims I do actually know what they are and have used them, but since I have no formal training in computer science (I was going to be a lawyer, after all), I just don’t know one when I see it.

I looked through the entire list, and I average about the second level (level 1, because the levels are 0-based). That was a little humbling, but there are two points that are important to acknowledge here:

  1. I score much higher on some things than others. For instance, I’m probably at level 3 for “version control,” level 4 for “communication,” and level 3-4 for “code organization.”

    Thankfully, besides than one blip on “data structures, ” I don’t think I’m a complete novice for anything else (maybe “systems programming,” just because I’m not 100% clear on the difference between a “linker” and an “interpreter”).

  2. This list is designed for pure programmers. If it was designed around Web development, I’d score much differently. Web development encompasses a wider variety of skills (both code and human-oriented), and it keeps you more superficial inside them. The reason I don’t know what a LinkedList is, for instance, is because I’m abstracted far enough away from C that I haven’t had to use them — there are usually three or four layers between me and the core implementation.

Even if these lists are totally arbitrary and just one guy’s opinion, they’re still valuable because they help you learn what you don’t know. If I really want to bone up on some aspects of programming, this matrix gives me a good roadmap of where to go.


Comments

by Eric,   June 30, 2008 4:10 PM  

There's help for you yet, Deane. :)

http://www.geeknews.net/2008/06/21/who-needs-a-computer-science-degree-when-theres-wikipedia


by Tal Ater,   July 3, 2008 5:55 AM  

Humbling? That was damn right embarrassing!

And to think the blog post I read right before this was about Impostor Syndrome. I feel like giving all my clients a refund! I'm not worthy!


by Michel Bagnol,   August 25, 2009 7:30 AM  

Hi,

I have "ported" the programmer competency matrix to Excel and added some self-evaluation functionalities.

Please find the Excel version of the Programmer Competency Matrix here: http://www.nodewave.com/programmer-competency-matrix



Add Comment