New Year’s Report

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.



