I think joel[^] does a good job covering the highlights of what makes a good software development shop. There is process, and it is very important that it is there, but it exists for only one reason, to produce high quality software. I think CMM breaks down because it has one solution for every problem, create a document. It enforces process and communication through documentation and that is very unnatural and slow. Many problems have better solutions. I had a manager that was all into CMM. Every time we had a problem, he added a section to a document or another document to prevent it from happening again. So when the team wanted to create an automated install to reduce launch problems and get us out of the office before 2AM, he fought it because it elmininated the 8 page launch document and all the launch drills that we had to endure, even though most problems during launch could be linked to the admins missing steps outlined in the launch doc.
I can imagine the sinking feeling one would have after ordering my book, only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon