published on August 22, 2011
As I am preparing my resume I try to think of a way to best represent the knowledge I have in the various programming languages. Of course I have searched the interwebs high and low, and the general consensus seems to be that it is a completely stupid question.
Nevertheless I think it is useful to convey your level of expertise at a glance, even if it can only be of limited detail. Then the question is how do you come up with a scale that is informative and as objective as possible?
I have decided to try to stick a label on each level, referring to a level of experience and expertise you can proclaim. Without further ado, here it comes:
|10.||Language designer: Bjarne Stroustrup, Guido van Rossum, Rich Hickey|
|9.||Language guru, compiler writer.|
|8.||Author of significant library / framework (think Boost or Django).|
|7.||Major library contributor, book author.|
|6.||Deep understanding of the language, has designed and written several significant applications.|
|5.||Knows most of the language, has designed and written medium-sized applications.|
|4.||Knows the most important subset of the language, can write short programs with help of the documentation.|
|3.||Can write short programs with help of the documentation.|
|2.||Has experimented with the language, written short example programs.|
|1.||Read a tutorial, wrote one short example program.|
There we go. Very far from perfect and a lot of gray areas (note that it says very little) or nothing about the quality of the code you have written up to point 6. My assumption is that somebody with a passion for programming will always try to improve their skills, so was you climb the numbers I assume the quality of your code improves. That might not be a perfect assumption, but as I said this list is supposed to be a vague gauge, used to convey information quickly.
The depressing thing is that I can only rate myself at most a 5 in most languages I have worked with, maybe a 6 in C++ but that is pushing it. Oh well, I guess it just takes a little to become a truly proficient coder.