It is sensible to want to avoid the head-butting sort of competition—that is, arguing for the sake of arguing. But, differing opinions and styles can be a good thing. Competitive forces have driven markets, innovation, and civilization for millennia. Here, Jurgen Appelo takes a look at some of the various approaches to agile development and what they bring to the table.
There are few games without competition and few systems without conflict. Our world wouldn’t be interesting without some dissenting views. Fortunately, there is plenty of healthy competition within the agile world, like Scrum versus Extreme Programming, Scrum versus Kanban, and even Scrum versus Scrum! But, the various agile methods are not the only players in this game. There are a couple of powerful and promising contestants offering ideas that are sometimes analogous, sometimes complementary, and sometimes downright contradictory.
One of the bigger players is lean software development , which is a translation of the concepts of lean manufacturing to the domain of software development. The seven principles of lean  are based on the fourteen principles of the Toyota Way (the management philosophy of the Toyota corporation) and the fourteen points for Management by W. Edwards Deming . There is significant overlap between the worlds of lean and agile, which is why they often play on the same side, with the same experts, sharing the same fan base, and being covered in the same blogs, magazines, and TV shows. Lean software development has made considerable contributions to the agile world from a managerial perspective, with its clear focus on removing waste and optimizing the whole. And, though lean joined the software development league a few years later than agile, the lean movement has caught up by evolving its own conferences, consultants, coaches, and consortiums.
A smaller but capable player is the Software Craftsmanship movement, guided by the Manifesto for Software Craftsmanship (see figure 1), which is said to both challenge and extend the original Agile Manifesto. The software craftsmanship proponents take the stance that software developers are not engineers but craftsmen and craftswomen. (Some people draw on the apprenticeship model of Medieval Europe as a fitting metaphor.) The craftsmanship movement can be seen as the nimble and fearless new co-player of agile and lean, with its own (smaller) events, books, and forums. Together, on the lightweight side of software development, the three of them seem to form a great team—despite the occasional fist fights in the locker rooms.
Figure 1: The Manifesto for Software Craftsmanship
But, the heavyweight methods and frameworks have not remained idle either. Possibly the most famous of these players and one of the most controversial is the Capability Maturity Model Integration (CMMI). Since 1987, it has been developed and maintained by the Software Engineering Institute, a research and development center headquartered at the Carnegie Mellon University. It started out as a process improvement description for software engineering, but it has grown into a more abstract framework that now covers other professions besides software development. The CMMI is an approach that aims to provide guidance by describing five maturity levels and twenty-two process areas. The CMMI only tells you which process areas can be addressed in your process improvement efforts. It doesn’t prescribe how to implement them. For this reason, some agilists believe that the CMMI, even though its full description spans many hundreds of pages, is still compatible with agile software development, because agile methods complement the CMMI by describing the “how” of process improvement. But, agilists wouldn’t be agilists if they didn’t disagree with each other. And, thus, there are some who