I was in a meeting with a customer earlier this week, discussing some of the changes that we see in development teams that start a metrics program and begin to measure the results. I used the phrase “change in the culture and behaviors” of development. In most cases, the skills are there, but the reason best practices aren’t being adhered to, or unit tests aren’t being written has more to do with that fact that there is no measurable goal to work toward in these areas.
One of the architects in the meeting made an insightful reference to Carnegie Mellon's Personal Software Process (PSP). While the PSP represents a good, structured framework for changing “culture and behaviors”, we have never come across a development team that is using it, despite its having been around since 1998.
There's no doubt that a change in habits will drive improvements in code quality. What is needed is a simple, practical catalyst for change. From what I have seen, capturing a few simple metrics and setting attainable thresholds is a pretty good place to start.