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.

 

Banner


Meta Releases OpenSource Podcast Generating Tool
28/11/2024

Meta has released an open source project that can be used to automatically convert a PDF file into a podcast. Meta says Notebook Llama can be considered an open-source version of Google's NotebookLM.

 [ ... ]



Apache Fury Adds Optimized Serializers For Scala
31/10/2024

Apache Fury has been updated to add GraalVM native images and with optimized serializers for Scala collection. The update also reduces Scala collection serialization cost via the use of  encoding [ ... ]


More News

 

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Monday, 21 July 2014 )