Self Assessment For Programmers
Written by See Gee   
Monday, 21 July 2014

A useful proficiency matrix has been produced that could be used to track your own progress when learning to program or to advertise your skillset to prospective employers.

The Programming skills self-assessment matrix is a table that has been made available under a Creative Commons Attribution-ShareAlike 4.0 International License. It was drawn up by Raphael 'kena' Poss, a researcher in the Computer Systems Architecture Group of the University of Amsterdam.

In his post, How good are you at programming?, Poss explains that the initial idea of an assessment matrix appeared during discussions about average programmer skills in online forums and that he used the structure of the CEFR (Common European Framework of Reference for Languages) relating to proficiency in foreign languages as the basis for measuring proficiency in programming languages.

The matrix can be applied to any language and identifies three broad levels:

  • A - Basic
  • B - Intermediate
  • C - Proficient

The levels are the columns of the table and each is subdivided into two with a testable milestone for each sub-level.

The rows are for different programming activities in three groups:

  • Writing
    • Writing code
    • Refactoring
    • Embedding in a larger system

  • Understanding
    • Reusing code
    • Explaining/Discussing code

  • Interacting
    • Exploring, self-learning
    • Mastery of the environment
    • Troubleshooting


Poss gives the following suggestions of  how to use the matrix.

  • row by row, to assess one's own level per activity (different skill levels for different activities are possible);
  • column by column from left to right, to determine one's own minimum level for a programming language (the rightmost level where all requirements in the column and all columns to the left are matched);
  • column by column from right to left, to determine one's most developed skill (the rightmost level where any requirement in the column is matched);
  • language per language, to assess one's own relative proficiency in different programming languages.

and suggests several scenarios in which it might be useful:

  • to track one's own progress while learning how to program;

    for example: this year, I transitioned from A2 to B2 in C++.For Java, I am B1 for understanding but still A2 for writing.

  • to advertise the educational goals of a programming course;

    for example: this Java introductory course will bring you to level A1 or A2 for all activities.

  • to advertise one's own skillset to peers or prospective employers;

    for example: I am C1 in Python, B2 in O'Caml and A2 in Haskell.

  • to set basic level requirements for courses or professional activities:

    for example: This course requires A2 proficiency with a language in the C family.

  • to select a programming course that best matches one's skill level;

    for example: My current level is A2 but this course requires B1, so I will need some extra work before starting.

  • to coordinate the teaching objectives of successive programming courses in a curriculum;

    for example: Our introductory course brings students to A2 in Java, but our follow-up program requires B1 or B2, so we need to propose a supplementary course for that level.

Having this type of standard seems a great idea - but of course it needs people to use it and to share it with others so that it catches on.


More Information

How good are you at programming?

Programming skills self-assessment matrix

Related Articles

What makes a programmer

Is Programming Skill Related To Age?

Programming - A Life Long Challenge


To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, Facebook, Google+ or Linkedin,  or sign up for our weekly newsletter.



Google Chrome Will Enforce HTTPS By Default

Google has announced that it plans to make HTTPS the default on Chrome. Over 90 percent of traffic on Chrome is already to HTTPS sites, but between 5 and 10 percent of traffic remains 'stubbornly' on  [ ... ]

Microsoft And Oracle Announce Oracle On Azure

Oracle and Microsoft have jointly announced an expanded partnership that will make it easier to run Oracle on Azure.

More News


Summer SALE Kindle 9.99 Paperback $10 off!!




or email your comment to:

Last Updated ( Monday, 21 July 2014 )