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.
data structures – Level 1.5
algorithms – Level 2.5
systems programming – Level 1
source code version control – Level 2
build automation – Level 2
automated testing – 0.1
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
languages with professional experience – Level 1
platforms with professional experience – Level 1
years of professional experience – Level 0
domain knowledge – Level 2
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
computer science – 5
software engineering – 4.1
programming – 23,24
experience – 4
knowledge – 12
total 2012 – 48,49
total 2011 (estimated) – 26,27
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.