You can't "certify" craftmanshipability
I'm going to take a departure from my usual Friday Morning Thoughts format
and instead do a brief chautauqua. There is single topic that's been bothering me for a while. It finally came
to head yesterday. No known quantitative-basis exam can measure a programmer ability to
craft quality applications. You can no more certify somebody as a "good"
developer than you can certify a good artistic painter. The best you can hope to achieve
with any testing process is to measure a persons ability to use a tool to some
subjective standard. But being able to say that "I'm certified an expert hammer
user" doesn't make you any more a carpenter than somebody who isn't "certified"
with a hammer.
I know there are many people who will disagree with my assertion. There are
some really intelligent, wise and -- most importantly -- dedicated people at
Microsoft who drive their certification program. They are charged with making
their certification program a true measure of a persons ability to perform the
job tasks for the area being testing. And I can guarantee you that they take the
formalities of the measurement process seriously. They are doing great work to
that end. The same is true in other companies and certificate issuing organizations, I'm sure.
I used to think of Microsoft's Certification programs as being a good
personality screening tool. When I look at an applicant, I can't help but look
differently at the one who is certified. For example, suppose I have Abe and
Bob. Both are journeymen programmers: they've worked with Visual Basic 6 for a
few years and have with the last two years begun using .NET. Both have about the
same job experience and educational backgrounds. But Abe is certified where Bob
is not. They both came out the technical and social style interviewing process
with about the same grade. I'd love to hire both of them, but I can only hire
one. Which one do I pick?
Abe.
Why?
Its not the fact that he is certified for a the given technology, rather, the
fact that he is certified demonstrates to me that he has taken his career more
seriously than Bob; that he is a self-starter (more than likely) and he has the
ability to rapidly analyze a problem and form potential solutions to them. It
has nothing to do with his ability to use the tool: that's assumed.
But this use of a certification as a selector has a serious flaw. I much as I
love having people to work with that are dedicated to learning, that's not all
that I need from them. Learning for the sake of learning is hollow. Learning for
the sake of application is what I need. That can only be demonstrated by
artifacts of the process. What does that mean?
Suppose that instead of spending his time studying for exams, Bob wrote and
released some significant Open Source Software product. And before I knew Bob, I
used said product. And I like it. I liked enough to study its source code. Sure,
I saw things I didn't like, but I also learned something from it. Now who do I
think I would hire?
Obviously Bob. He demonstrated ability. Demonstrated ability requires
demonstrated knowledge. Demonstrated knowledge demonstrates a different kind of
dedication to learning and self-improvement. In a sense, Bob has passed a much
more predictive test of ability than Abe did.
But how do you measure that? Remember what my evaluation criteria was:
- I used Bob's product
- I liked it.
- I saw thing in his source code that I judge subjectively to be good or
bad.
- I learned from his work.
You can't qualitatively measure these the last of these three criteria. Every
judge is different.
That leads me to another problem I have with who certification is used in our
industry. Not so long ago when there were more jobs than people to fill them,
certification became a popular differentiator between candidates. That's exactly
the wrong time to use it, because it doesn't accurately measure what you're
likely to need. In such situations, you need people who can immediately apply
themselves to problems, but certification doesn't accurately measure that. What
you really need in such situations is to look at the artifacts of a person's
work and see if they have the skills and experiences you have immediate needs
for. Letting somebody grow into a job isn't a wise strategy in this
environment.
Consider our current environment where there are more job seekers than jobs
that need to be filled. Is this the right time to use certification as a
selector? In the case of Abe and Bob, I'd still pick Bob for all the reasons
I've given above. Use of certification as a selector is only valid when no one
in your pool of candidates can be measured using an actual work product
artifact. I've just then eliminated the value of certification as selector in
virtually all cases because any programmer with a little skill and experience
can actually produce artifacts that are better selectors.
I've been talking at a highly conceptual level. Let me bring this posting to
a close with what I consider to be practical advise about presenting yourself as
a job candidate.
- First and foremost in my mind, your resume must open the door. It needs to
explain your features and benefits. Think of your resume as being a sales
brochure for you. If I'm interested in your product, I'll seek you out.
- Second, I believe the best thing you can to quantify your features and
benefits it to generate work product. In other words, sit down, shut up and
code. Keep coding. Write something I can use. Then share that source. Writing
out your design thoughts during the analysis and design phase, as well as
documenting your design are show stoppers. They will get my attention faster
than anything.
- Third, don't forego certification. The ability to present work product
artifacts is going work great with a people like me. Other managers are going
to have different ways of thinking. Even I still cling to the use of
certification as a selector because it demonstrates commitment to
professional growth.
- Finally, you have help me find your work. Granted, you could just burn it
to a CD and if you get an interview, you could share it with me then. I'd much
rather have you blog about it and make the source code available someplace
though. That gives me a chance to look at it before the interview.
Finally, I do have a thought about something I'd love to see us -- as an
industry -- adopt. Juried evaluations as an adjunct to the certification. That
is, I'd love to see a program where panels of respected developers review the
candidates work and provide there commentary on it as well as some rating of the
candidates craftsmanship in the work. Put that another way, its great if
Microsoft says "Abe is a competent hammer user." Its better if Philip Rieck,
Matt Payne and Luke Schollmeyer all say "this person produces
good work."
The best of all worlds -- the ultimate candidate -- is the one who presents
both.