Certification programs are common in the software industry, yet
most capable developers I know have very little regard for them. The
general view is that certification has
little correlation with competence. This is compounded in the
agile community with certification's association with the CMM - which
is historically anything but agile.

A maturity model is a tool that helps people assess the current
effectiveness of a person or group and supports figuring out what
capabilities they need to acquire next in order to improve their
performance. In many circles maturity models have gained a bad
reputation, but although they can easily be misused, in proper hands
they can be helpful.

For nth, and I'm sure not last time, I'm sliding into a
conversation about defining practices, labeling some of them as
"best", and probably the C-word (certification). It's a familiar
discussion, and although we've barely started it, I can predict much
of where it will go. It's driven by a perfectly reasonable desire to
identify who are the better software developers, and how existing
developers can improve their abilities.

This is the month for review of the IEEE's Software Engineering Book of
Knowledge. This is an attempt to define the body of knowledge of
our profession, in a way that can lay the groundwork for a licensed
profession.

Most of my friends and colleagues are very negative about
certification schemes in software development, a disdain that I
share. This doesn't mean that I think that certifications in
software are bad by definition, just that almost every one we see
fails a basic test.

I often run into a complaint that agile methods don't have a
rigorous definition. The complainer may talk about how this means
that you can't tell if a particular team is using an agile method or
not. They may also say that this makes it hard to teach people how
to do agile methods - what's the curriculum?

To some degree I do feel the pain of this complaint - but
I accept there is no cure. This lack of rigorousness is part of the
defining nature of agile methods, part of its core philosophy.

SEMAT (Software Engineering Method and Theory) is
an effort initiated by Ivar Jacobson, Bertrand Meyer, and Richard
Soley. Its stated aim is to "refound software engineering based on a
solid theory, proven principles and best practices". Like many
notorious people in the software world I was invited to
participate. Thus far I've declined and feel the need to explain why.