Programmer Competency Matrix
Programmer Competency Matrix
Note that the knowledge for each level is cumulative; being at level n implies that you also k
Level for self evaluation may range from -1.0 (I hate this) to 4.0 (I'm way above this)
Compu
2 (Level 0)
n
Software
2 (Level 0)
n
Prog
2n (Level 0)
problem decomposition Only straight line code with copy
paste for reuse
systems decomposition Not able to think above the level
of a single file/class
Exp
2n (Level 0)
languages with Imperative or Object Oriented
professional experience
platforms with 1
professional experience
years of professional 1
experience
domain knowledge No knowledge of the domain
Kno
2n (Level 0)
tool knowledge Limited to primary IDE (VS.Net,
Eclipse etc.)
Computer Science
n (Level 1)
2
n (Level 2)
Able to explain and use Arrays, Knows space and time tradeoffs
LinkedLists, Dictionaries etc in of the basic data structures,
practical programming tasks Arrays vs LinkedLists, Able to
explain how hashtables can be
implemented and can handle
collisions, Priority queues and
ways to implement them etc.
Basic sorting, searching and data Tree, Graph, simple greedy and
structure traversal and retrieval divide and conquer algorithms, is
algorithms able to understand the relevance
of the levels of this matrix.
Has written automated unit tests Has written code in TDD manner
and comes up with good unit test
cases for the code that is being
written
Programming
n2 (Level 1) n (Level 2)
Able to break up problem into Able to come up with reusable
multiple functions functions/objects that solve the
overall problem
Able to break up problem space Able to design systems that span
and design solution as long as it multiple technologies/platforms.
is within the same
platform/technology
Related files are grouped into a Each physical file has a unique
folder purpose, for e.g. one class
definition, one feature
implementation etc.
Checks all arguments and asserts Makes sure to check return values
critical assumptions in code and check for exceptions around
code that can fail.
Basic error handling around code Ensures that error/exceptions
that can throw leave program in good state,
exceptions/generate errors resources, connections and
memory is all cleaned up properly
Experience
n2 (Level 1) n (Level 2)
Imperative, Object-Oriented and Functional, added bonus if they
declarative (SQL), added bonus if understand lazy evaluation,
they understand static vs currying, continuations
dynamic typing, weak vs strong
typing and static inferred types
2-3 4-5
2-5 6-9
Knowledge
n2 (Level 1) n (Level 2)
Knows about some alternatives to Good knowledge of editors,
popular and standard tools. debuggers, IDEs, open source
alternatives etc. etc. For e.g.
someone who knows most of the
tools from Scott Hanselman's
power tools list. Has used ORM
tools.
Imperative, Object-Oriented and Functional, added bonus if they
declarative (SQL), added bonus if understand lazy evaluation,
they understand static vs currying, continuations
dynamic typing, weak vs strong
typing and static inferred types
Basic knowledge of the code Good working knowledge of code
layout and how to build the base, has implemented several
system bug fixes and maybe some small
features.
Weight
Has written libraries that sit on E.g. of API can be Java library, 1
top of the API to simplify .net framework or the custom
frequently used tasks and to fill in API for the application
gaps in the API
Author of framework 1
6+ 1
10+ 1
Level Comment
0.0
0.0
0.0
0.0
0.0
Self Evaluation Summary
Name: 0
Software Engineering
0.3
0.0
Programming
Self Evaluation Levels
Computer Science
1.0
0.8
0.5
ng Knowledge
0.3
0.0
Programming Experience
Table of experience approximation according to competency level
Competency Approximative Formula
level years of experience
0 0.0 2^n-1
0.1 0.1 2^n-1
0.2 0.1 2^n-1 28
0.3 0.2 2^n-1
0.4 0.3 2^n-1 26
0.5 0.4 2^n-1
24
0.6 0.5 2^n-1
0.7 0.6 2^n-1 22
1 2 3
level according to Programmer Competency Matrix
4
Authors
Original version Sijin Joseph April 2008 http://weblogs.asp.net/sjoseph/archive/2008/04/30/programmer-compe
Web version John Haugeland February 2009 http://www.indiangeek.net/programmer-competency-matrix/
Excel version Michel Bagnol July 2009 http://www.nodewave.com/programmer-competency-matrix
08/04/30/programmer-competency-matrix.aspx
mpetency-matrix/
ompetency-matrix