New Year’s Report

Programmer Competency Matrix

With 2012 and my final year of undergraduate studies beginning, I thought it would be a good time to gauge my programming progress this year. I’ll be rating myself using Sijin Joseph’s programmer competency matrix. Next year, I’ll look back on this post and see how and where I’ve improved.

 

Programmer Competency Matrix

Computer Science

data structures – Level 1.5
algorithms – Level 2.5
systems programming – Level 1

Software Engineering

source code version control – Level 2
build automation – Level 2
automated testing – 0.1

Programming

problem decomposition – Level 2
systems decomposition – Level 2
communication – Level 1 or 2?
code organization within a file – Level 3 (Please criticize me on this)
code organization across files – Level 2
source tree organization – Level 1
code readability – Level 2
defensive coding – Level 1
error handling – Level 1
IDE – Level 2
API – Level 0
frameworks – Level 2
requirements – Level 0
scripting – Level 2
database – Level 2

Experience

languages with professional experience – Level 1
platforms with professional experience – Level 1
years of professional experience – Level 0
domain knowledge – Level 2

Knowledge

tool knowledge – Level 2
languages exposed to – Level 2
codebase knowledge – Level 2
knowledge of upcoming technologies – Level 1
platform internals – Level 1
books – Level 1
blogs – Level 3

Cumulative

computer science – 5
software engineering – 4.1
programming – 23,24
experience – 4
knowledge – 12
total 2012 – 48,49
total 2011 (estimated) – 26,27

 

TODO

Between work and school in 2012, I plan to focus on learning Haskell, Test Driven Development, and the Unix command line. For the month of January, I will also commit to writing about two Project Euler problems per week with solutions in Haskell (or Python). Finally, I’ll publish the last segment on my partial differential equation solver this week as well.