Review of
Article Title
: " The Immaturity of CMM" by James Bach
Published in American Programmer, Sept. 1994
Kelly Nehowig
The paper being reviewed was written to support the thesis that the Software Engineering Institute's Capability Maturity Model (SEI CMM) is a collection of software engineering practices that are organized according to a simple model based on process evolution that are not completely effective in every software organization. The author makes his case by describing six areas in which he has general problems with the CMM. This is followed by a section outlining the author’s claim that a “level 1” organization is completely misunderstood by the SEI and that effective software can be (and actually is) created by many level 1 organizations. Finally, the author briefly describes an alternative to CMM that can be used as a framework for process improvement.
For the most part, I believe that the author has accurately critiqued the CMM and, from my experience, I would agree with the problems he discusses. In my mind, the CMM is a good theoretical guideline for establishing a basic understanding of the characteristics of a good software development organization, but by stringently following its processes and procedures to the letter, an organization is not guaranteed to be successful. The CMM does not deal effectively with innovation issues and people issues. It also does not reconcile the fact that many successful software organizations can claim various attributes associated with four (or sometimes all five) of the CMM levels but, due to the rules established by the CMM, would officially be designated a Level 1 organization, which unfairly describes the organization’s capabilities.
The article is broken into several sections that
describe the CMM in general, the problems that the author has with the CMM, an
alternative to the CMM, and a postscript that was added to the original paper
in February of 1999.
The author describes the CMM as a group of key
practices that are divided into five levels representing various maturity
levels that organizations should go through on their way to becoming “mature”.
The author lists the CMM levels as follows:
1.
Initial
(chaotic, ad hoc, heroic)
2.
Repeatable
(project management, process discipline)
3.
Defined
(institutionalized)
4.
Managed
(quantified)
5.
Optimizing
(process improvement)
The author states that the original intent of the
CMM was that of a tool to evaluate the ability of government contractors to
perform a contracted software project.
His primary concern is that many tout the CMM as a general model for
process improvement and he believes that in this area, it has many weaknesses.
The author describes six basic problem areas that he
has identified with the CMM:
·
The
CMM has no formal theoretical basis and in fact is based on the experience “of
very knowledgeable people”. Because of
this lack of theoretical proof, any other model based on experiences of other
experts would have equal veracity.
·
The
CMM does not have good empirical support and this same empirical support could
also be construed to support other models.
Without a comparison of alternative process models under a controlled
study, an empirical case cannot be built to substantiate the SEI’s claims
regarding the CMM. Primarily, the model
is based on the experiences of large government contractors and of Watts
Humprey’s own experience in the mainframe world. It does not represent the successful experiences of many
shrink-wrap companies that are judged to be a “level 1” organization by the
CMM.
·
The
CMM ignores the importance of people involved with the software process by assuming
that processes can somehow render individual excellence less important. In
order for this to be the case, problem-solving tasks would somehow have to be
included in the process itself, which the CMM does not begin to address.
·
The
CMM reveres the institutionalization of process for its own sake. This guarantees nothing and in some cases,
the institutionalization of processes may lead to oversimplified public
processes, ignoring the actual successful practice of the organization.
·
The
CMM does not effectively describe any information on process dynamics, which
confuses the study of the relationships between practices and levels within the
CMM. The CMM does not perceive or
adapt to the conditions of the client organization. Arguably, most and perhaps all of the key practices of the CMM at
its various levels could be performed usefully at level 1, depending on the
particular dynamics of an organization.
Instead of modeling these process dynamics, the CMM merely stratifies
them.
·
The
CMM encourages the achievement of a higher maturity level in some cases by
displacing the true mission, which is improving the process and overall
software quality. This may effectively
“blind” an organization to the most effective use of its resources.
The author’s most compelling argument against the
CMM is the many successful software companies that, according to the CMM,
should not exist. Many software
companies that provide “shrink wrap” software such as Microsoft, Symantec, and
Lotus would definitely be classified by the CMM as level 1 companies. In these companies, innovation reigns
supreme, and it is from the perspective of the innovator that the CMM seems
lost.
The author claims that innovation per se does not
appear in the CMM at all, and is only suggested by level 5. Preoccupied with predictability, the CMM is
ignorant of the dynamics of innovation.
In fact, where innovators advise companies to be flexible, to push
authority down into the organization, and to recommend constant constructive
innovation, the CMM mistakes all of these attributes to the chaos that it
represents in level 1 companies.
Because the CMM is distrustful of personal contributions, ignorant of
the environment needed to nurture innovative thinking, and content to bury
organizations under an ineffective superstructure, achieving level 2 on the CMM
scale may actually destroy the very thing that caused the company to be
successful in the first place.
The author discusses the issue of “heroism”, defined
as the individual effort beyond the call of duty to make a project
successful. The SEI regards heroism as
a negative and as an unsustainable sacrifice on people that have special gifts. It considers heroism the sole reason that
Level 1 companies can survive. The
author claims a different definition for heroism – taking initiative to solve
ambiguous problems. He claims that this
is a definable and teachable set of behaviors that enhance creativity, which
leads to personal mastery of the subject matter. In his opinion, it is not a negative, but it is a requirement of
most successful organizations.
As an alternative to the CMM, the author introduces
the idea of a framework based on heuristics for conducting successful projects. The key to this model is that it is an aid
for judgement, not a prescription for institutional formalisms. In this model, maturity means recognizing
problems through the analysis of experience and the use of metrics and to solve
them through selective definition and deployment of processes.
This process model consists of a seven-dimensional
framework for analyzing problems and identifying the correct processes. These dimensions include: business factors,
market factors, project deliverables, four primary processes (commitment,
planning, implementation, and convergence), teams, project infrastructure, and
milestones. This framework connects to
a set of processes that are repeatable for performing certain common tasks.
In an addendum to the original thesis, the author
comments that not much has changed in his opinion on the CMM in the five years
since originally writing his paper.
Some software companies are successfully using the CMM in their
organizations, but many, including most of the newer Internet-based software
companies, are not using the CMM.
The author does comment on one shift in his thinking
– that is the fact that he has become more comfortable with the idea of using
CMM as a basic philosophy and not as an issues list. He now believes that using CMM to identify a list of issues worth
addressing in the course of overall software improvement may be useful, but
that it should not be adapted as a philosophy for good software engineering.
For the most part, I agree with the author’s
assessment of the CMM. Some of his
arguments seem weaker than others, but I believe they are valid.
Due to the fact that the CMM has no theoretical
basis and that it has no empirical proof, it loses value from an academic point
of view. Although this (in my opinion)
is one of the author’s weaker arguments, it is important from the aspect of
substantiation of the claims made by SEI.
Without the theoretical proof and the lack of empirical support based on
comparison of alternative models under a controlled study, the SEI’s case for
promoting CMM as the optimal model for software development is weakened.
The author’s implication that the CMM
institutionalizes process for its own sake without regard to current practices
is an accurate assessment in my view. I
have seen organizations that implement policies without regard to current
organizational practices (some of which are quite successful). The result is a confused development group
that gets a series of mixed messages from “management” which do not necessarily
improve the development process.
Another key fault in the CMM described by the author
is the overriding pressure to move to the next maturity level, sometimes by
ignoring the true mission, which is the quality of the software product. The factors important in moving up to the
next level may or may not necessarily benefit the organization and its products
because all subjectivity is removed.
What benefits one organization may not have the same effect in another
organization.
The author’s claims about heroism are interesting,
but I differ slightly with the conclusions that he draws. I agree that heroism, as defined by taking
the initiative to solve ambiguous problems, is critical to the success of an
organization. However, in my
experience, heroism is a trait that is difficult to teach. I believe it is inherent within the
individual for the most part and, without a good process model, can be abused
by the organization in order to accomplish its goals.
Probably one of the more important points that the
author touches on is the CMM’s implied claim of the importance of process over
people. It has been my experience that
processes are not direct substitutes for the quality of the development team
personnel. In other words, the right
organizational processes can improve the output of a group of talented software
developers, but they do not create one.
By ignoring this critical item, the CMM loses credibility with anyone
experienced with a wide range of development teams.
A striking example that is prevalent throughout the
author’s thesis is the number of software companies that probably exist at CMM
Level 1, but that are incredibly successful.
Microsoft is a prime example – although they do not model their
organization in a manner that the SEI considers to be “mature”, their products
mostly meet or exceed the customer’s needs and this creates a very successful
company.
In considering the alternatives to the CMM, I
believe that the author is correct in his assertion that a model based on past
experience and the use of metrics is probably more effective in practice as
compared to the CMM. The implementation
of such a model is based on selective definition of problems and the selective
deployment of specific processes.
However, I also believe that such a model is very difficult to define
and is very much dependant on individual organizations and the particular
environment that each exists within. I
believe that it would be a difficult proposition to create such a model that
would apply to all organizations.
I agree with the author’s postscript in terms of the
fact that I am comfortable with using the CMM as a basic philosophy and to
study the various relationships of the characteristics established by the
various functional levels. Most of
these characteristics describe good traits that can benefit any software
organization. However, adapting the
stringent practices of the CMM and focusing on the goals of achieving each
maturity level may benefit large corporate software organizations, but I
believe they would not necessarily add value to small and medium sized
organizations due to the cost/benefit ratio that the organization would incur
to implement the model.
Many software companies (especially startups) are
successful because of their ability to innovate and because of the
entrepreneurial spirit that they possess.
As the author mentions, these factors are not considered in the
CMM. The danger, therefore, is that by
implementing the CMM process within such a company, the company may not benefit
and, in some cases, may be harmed by adapting its stringent polices.
In summary, I believe that Mr. Bach’s thesis defines
many shortcomings of the CMM, but offers few solutions for a better model or
set of practices to use instead of the CMM.
Ultimately, I believe that an organization can benefit by studying the
CMM and selectively implementing the “best practices” that will benefit their
respective organization.