Agile development and the CMM can co-exist. Since the CMM specifies the what (in terms of the KPAs) and is methodology neutral, agile development methods can be used as the method (the how) to achieve much of CMM process maturity. Also, if you've gotten this far in this book, it should be obvious that the claim that agile development does not require discipline is very much false. Agile development is hard work and requires a great deal of discipline. The practices of extreme programming have been contrasted with the CMM KPAs in various articles [Glazer 2001] [Paulk 2001] [Bandaru 2004]. If you are interested, I highly recommend reading them. The conclusion reached by all these sources is that the extreme programming practices do offer a solution to most of the KPAs. Of the eighteen KPAs, six are largely addressed in XP, and five are partially addressed. In this book, I have consciously added practices such as configuration management, professional development, and business knowledge because they are implied in the agile literature, but required for sustainable development. As a bonus, they happen to also be called out as KPAs. Likewise, the principles of continual refinement and defect prevention turn out to be level 5 KPAs, and are thus of extremely high value to software organizations. What I find particularly intriguing with agile development and the CMM is the role of the agile mindset in the implementation of development processes. As I have personally discovered, an organization can only be as agile as its least agile part. Furthermore, since software teams must by their nature be cross-functional, if one functional part of the team is not agile, then the entire team will feel the effects. Here are some examples that I have personally seen:
Each of above examples illustrates the problem with process improvement in an organization. If you choose to become an agile organization, then agile can start in software teams, but it had better spread, or overall the positive effects of agile development will not be as noticeable as they should be. This is where the principles of agile development come in because they must be applied across the entire organization. The practices will largely differ depending on the function (i.e., software developers will have different practices than documentation people or marketing people), but the mindset must be similar to maximize overall agility. The topic of an agile enterprise is one that could easily occupy a book of its own. As an exercise to interested readers, I would recommend that you read through the principles in the Agile Manifesto (www.agilemanifesto.org) and reflect on the role of each in all the functional areas of your software teams. In terms of the principles of sustainability outlined in this book and some of the select practices, I believe that there is a great deal of applicability to CMM maturity:
|