The Capability Maturity Model - CMM - is a powerful tool in process improvement, in Software and in organisations generally. Although replaced by its successor, CMMI, it's still valuable in most cases "out of the box".
From Wiki :
There are five levels defined along the continuum of the CMM and, according to the SEI: "Predictability, effectiveness, and control of an organization's software processes are believed to improve as the organization moves up these five levels. While not rigorous, the empirical evidence to date supports this belief."
- Initial (chaotic, ad hoc, individual heroics) - the starting point for use of a new or undocumented repeat process.
- Repeatable - the process is at least documented sufficiently such that repeating the same steps may be attempted.
- Defined - the process is defined/confirmed as a standard business process, and decomposed to levels 0, 1 and 2 (the latter being Work Instructions).
- Managed - the process is quantitatively managed in accordance with agreed-upon metrics.
- Optimizing - process management includes deliberate process optimization/improvement.
However... as was pointed out as early as 1996, some organisations are worse than level 1. Much worse. the CIMM extends the CMM, downwards, where organisations that reached rock-bottom started to dig.
The four levels of software immaturity.In my observation, the best government bureaucracies are at about level -1. Many though are at -3.
0. Negligent Indifference - Failure to allow successful development process to succeed. All problems are perceived to be technical problems. Managerial and quality assurance activities are deemed to be overhead and superfluous to the task of software development process. Reliance on silver pellets.
-1. Obstructive Counter Productive - Counterproductive processes are imposed. Processes are rigidly defined and adherence to the form is stressed. Ritualistic ceremonies abound. Collective management precludes assigning responsibility. Status quo ueber alles.
-2. Contemptuous Arrogance - Disregard for good software engineering institutionalized. Complete schism between software development activities and software process improvement activities. Complete lack of a training program.
-3. Undermining Sabotage - Total neglect of own charter, conscious discrediting of peer organizations software process improvement efforts. Rewarding failure and poor performance.