Quantifying programming skills and competences is quite a challenge, especially for self-evaluation and learning progress visualization. In the context of a recent class on Software Engineering, I looked for a somewhat concise yet expressive list of programming skills and their levels. My idea was to use such a list to survey student backgrounds coming into the class, and allow the students to track their own development either in the course or during their studies.
I found two interesting resources:
The first matrix is modeled after language proficiency levels for a small number of key skills, while the second rather focuses on a larger set with less detail in the progress in each skill. Both come with a webapp to track levels for students.
In the context of the class, our first concern was to create evenly skilled groups for the programming project at hand. The self-assessment matrix by Raphael Poss proved to be quite useful, as students could quickly locate themselves quite accurately in the skill spectrum. We collected the self-assessment per student (a PDF version is available for easy printing) and assigned teams such that the average skill level was roughly equal across all groups.
The feedback from students was quite good. They found the resource useful, but mainly, it achieved the task of equalizing skill well without the usual back-and-forth.
Future classes will show if either resource is useful for self-assessment of learning progress and/or as a part of a student portfolio.