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


PiBot - Not Quite The Pilot You Were Expecting
21/09/2014

Take a small humanoid robot, teach it the rules of flying and you have an auto-pilot that can pilot any plane with standard controls. 



Duetto Morphs To Cheerp
03/09/2014

A C/C++ compiler for the Web has been released. It brings the advantage of bi-directional interoperability between C or C++ code and JavaScript code.


More News

 

blog comments powered by Disqus

Last Updated ( Monday, 21 July 2014 )
 
 

   
RSS feed of news items only
I Programmer News
Copyright © 2014 i-programmer.info. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.