Capability Maturity Model (CMM)

Those that know me have probably seen a similar image in my office, as it's been up there more at least the past five years. CMM is a very interesting concept with the focus of the model on analyzing the maturity of processes within an organization. The model was originally designed for objectively analyzing Department of Defense's contractors ability to implement software projects, though is now used for many purposes in many industries.

Capability Maturity Model (CMM)

There are five levels to the model, beginning with chaotic process and ending with the fifth level, which is optimizing and continuous improvement processes. Now, imagine a tech startup, they typically lack processes and everything is freeform, which typically works, since it is a small group and they can quickly pivot to improve. They want to figure out the best way to deploy there server code every night to the production servers, so they start trying various items (chaotic). They settle on a basic script that someone runs at night, though sometimes they mess up and two people run it. It works fairly well, but crashes the servers on occasion (repeatable). After one mistake of running it twice, the boss sets a policy that only the senior engineer can run it (defined). This starts working really well on that team, with no crashes and they build a simple application so someone only has to click a button. It's so great, the boss decided they'll implement it across all of the teams (managed). They build a dashboard in the office showing all of the team's deployments, along with times and other metrics. They build in auto-detection of failures so it'll auto-deploy again if it crashes and the team is always looking for ways to improve their release management system (optimizing). The startup has now gone from Level 1 to Level 5.

That short story is great from understanding how it works, but the real power is the ability for managers to take the model and apply it to all of their project activities, thereby being able to get an objective view of how they are doing and potential weaknesses in their overall processes. Realistically, for most organizations, they'll never get beyond a Level 3 for most or all of their processes.

The reason I find CMM to be so great is that I've found this enormously beneficial when working on software development projects. Analyze what people are wanting and if they don't have processes in place at a lower level, it'll be that much harder to implement the system. Additionally, if you can't define a process, you certainly can't automate one. It really is as simple as that.