I've used Dreyfus Modelling very successfully in a number of different programmer-related skills. Dreyfus Modelling looks at five levels of competency:
- novice
- experienced beginner
- competent (I tend to use "practitioner")
- knowledgeable practitioner
- expert
The two to pay most attention to are the novice and practitioner levels. Novices learn by following practices step-by-step. Competent practitioners are safe to try things on their own. It's like driving, in that you start very consciously, following instructions. Eventually you get your license. You're still quite likely to have an accident, but you probably won't kill anyone. Knowledgeable practitioners tend to lose all conscious effort required, and experts have a sound understanding of the theory involved, maybe teaching or doing something extraordinary with it.
I usually assign the numbers 1 to 5 to these, to get a numeric result. It's very useful for using to measure the results of trainers and coaches.
You can use this model for every aspect of programming - TDD, continuous integration, language, OO design, etc. Just work out how people start trying a skill and what they do differently when they're successful. You may need to go seek some successful people to get an idea.
A word of caution, though. This can only be used as a personal measure. If you try to use it to, say, work out how much people should be paid, it will cause hell (but I believe any metric will do so anyway). I find it most useful to use as a roadmap, in conjunction with coaching to help people work out where they'd like to be learning more and what resources are available to them to do so.
I don't believe it's possible to get accurate measurements, because of the ability to game the system to make yourself look better than you are. I do believe that if you keep this stuff personal and private, and focus on strengths rather than weaknesses, a team can improve rapidly and dramatically, wherever they started from.