How good are you at programming?

A CEFR-like approach to measure programming proficiency

Author: Raphael ‘kena’ Poss
Date: July 2014

The table

Programming skill self-assessment matrix

Also available in PDF form.

The online test

A web application is available to assess your own skills according to this table for one or more programming languages.

How to use this table

The table characterizes the proficiency level (columns) of programmers of a particular programming language in the context of different programming activities (rows).

This table is inspired by the CEFR table of the same name, for assessing proficiency in natural languages. Like the CEFR, this table divides learners into three broad level divisions: “Basic user” (A), “Independent user” (B) and “Proficient user” (C). The broad divisions are each further divided in two levels (A1, A2, B1, B2, C1, C2) that correspond to testable milestones in language acquisition.

This table can be used in different ways, for example:

Possible applications

Design methodology

The table was designed following the CEFR methodology:

First, recognize the different modalities (production, reception, interaction, mediation). Then group and abstract activities in each modality by clusters that share similar motivations and actors. The resulting set becomes the rows in the matrix.

The requirements for “A” levels are then phrased to identify users that can perform language acts under supervision or under dedicated/personalized guidance from peers.

The requirements for “B” levels are then phrased to identify users that can perform language acts without supervision or guidance from peers, or with minimal effort from peers.

The requirements for “C” levels are then phrased to identify users who are fully independent and who can demonstrate skills corresponding to a high expertise level according to the majority of other users of the language.

References

Acknowledgements

The initial idea of an assessment matrix appeared during discussions with Merijn Verstraaten about average programmer skills in online fora. The concrete form as presented here was further developed thanks to inspiration and suggestion from Philip Hölzenspies, Jan Kuper, Cosmin Dumitru, Taddeüs Kroes, and many others.