In hunting around on tips for CVs and covering letters, David Artiss’s article Applying for a job? Here’s what people often get wrong was one of the more helpful, with specific rather than general pointers. One caught my eye in particular:
Some people will list a level of knowledge against each of their skills, indicating whether they’re a beginner, experienced or a master (for example) of each. This is really helpful.
Good idea, I thought. And then immediately realized I don’t know with any great certainty what level I’m at. I’m definitely not a beginner in php for example, but I’m certainly not a master in anything yet either. Experienced? Maybe, but then I’d probably end up putting myself down as “Experienced” for most things, so that doesn’t really help.
More granularity needed. In the end I settled on a scale of Rudimentary, Beginner, Competent, Advanced, and Expert, thinking that mapping my skills that way would at least show some differentiation.
Dare I call myself Advanced in php? That’s probably a stretch, but what if someone else’s “Advanced” is what I would consider “Competent”? Part of the problem here is that I still don’t know what I don’t know – and in fact I don’t think anyone should be calling themselves Advanced until they do know that. In other words, that label can only apply once you have a deep enough and broad enough understanding of the topic / skill to have mapped out its boundaries and some detail in most areas.
Might be onto something here. If “You know enough to know what you don’t know” is the beginnings of a definition for Advanced, then maybe I can find similar definitions for my other labels…
Here’s what I came up with, plus the little chart I eventually used in my CV. I do realize that this is very much from the perspective of someone who is largely self-taught with little formal training, so it may be narrow in focus. However, at least it gives someone reading my CV something to get their arms around.
Key to the chart
|Rudimentary||Googling for and using snippets without a full understanding of how or why they do what they do.|
|Beginner||Sufficiently experienced to tackle simple problems and have a first idea of approach and the right sort of functions to be using.|
Understands the basics of how the language works as a whole (e,g., is it object-oriented, etc.) and is starting to understand and apply best practices.
|Competent||Confident and competent at taking on more sophisticated problems with little or no recourse to Google in many cases.|
Able to sketch out in advance an approach to the problem in terms of blocks of functionality and how they interact with each other.
Aware of and determined to achieve best practice, and is disappointed when, looking back, the mark may have been missed through inexperience or a knowledge gap.
Is still exploring the language and has not yet discovered or understood its full breadth and depth: “I still don’t know what I don’t know”.
|Advanced||Has a rigorous understanding of the right way to go about things, both in terms of development process and code structure.|
Sufficiently experienced to be verifying others’ work and giving tips for improvement.
Not often faced with a problem where the answer to the question “How long do you need to do it?” is “Hmm, not sure, will have to do a bit of research and get back to you.”
|Expert||Called on for the most complex or unusual of problems.|
Not necessarily “a walking encyclopedia” as no-one can know everything, but has solid capability across the board and several areas of profound expertise.
…which took up way too much real estate in the CV, so was re-formatted to this: