In our association with various teams of different sizes and different domains, we have come across many questions related to adoption of CMMI® and Agile. Questions like, "We are CMMI® Level 3 Organization, how can we be agile", " Our company is doing Agile, but our customers are looking for CMMI® Level 5, how do we adopt both" etc. In this post and the subsequent posts in this category, we would provide our perspective about CMMI and Agile and how both the good practices can be merged to bring organizational success.
|Image Courtesy- http://www.freedigitalphotos.net|
Any model or methodology is a set of good practices that have been proven and can be adopted for better results in similar kind of work. All companies wants to deliver the products and services better, faster and cheaper. Nearly all organizations have found that the products and services have varied levels of complexity. It is unusual today for a single organization to develop all the components that compose a complex product or service. More commonly, some components are built in-house and some are acquired. The integration of these components needs better planning and strong engineering practices.Organization must be able to manage and deliver such complex development and maintenance.
CMMI®-Dev comprises of 22 process areas. These process areas covers aspects related to Engineering, Planning, Support and Organizational processes. Agile is a way of thinking about software development. The canonical description of this way of thinking is the Agile Manifesto, a collection of 4 Values and 12 principles. (http://www.thinkinginagile.com/2011/03/agile-manifesto.html). Agile Methods are available in different flavors like SCRUM, XP, Lean Software Development (Kanban), DSDM, Crystal and others. Most of the teams adopt SCRUM and XP together. SCRUM comprises of the management practices and XP consists of the engineering practices.
One important fundamental which needs to be noted is : A method or process is a way of working. Whenever we do something, we are following a process. Some processes are written, as-when we are assembling a machine but others are adhoc and informal, as-when sometimes we clean our house. Most of members we have worked have said that CMMI is about excessive documentation. In fact this is not correct about CMMI. As per Appraisal Requirements for CMMI®Version 1.3 (ARC, V1.3) Section 4.3.4," the finding can be derived from objective evidence seen or heard during data collection sessions." This means that for the rating purpose when the data is being collected Objective evidence is seen or heard or observed during the appraisal time. While following the Agile practices there are many instances where the documentation is less. Some examples are given below :
- Daily Standup Meeting is done where the actions are being tracked on a daily basis unlike Weekly Meeting.
- Simple Design is achieved through XP practices like Test Driven Development, Refactoring unlike detailed low level design documents.
- Continuous Integration is practiced instead of dedicated Integration testing phase.
Above list may go on and on. In fact these practices are less documentation intensive but it can ensure that the management and engineering level practices are followed well. It is really important to understand that CMMI looks for the intent of the process area rather than documentation. So CMMI and Agile compliment to each other. The basic issue is about the right understanding about both the set of good practices.
CMMI® provides set of process areas that covers all the activities of software development. Agile methods like SCRUM and XP provides simplified solutions for management and engineering practices. Collection of agile best practices through these methods makes the delivery process fast and robust. It is important to adopt both CMMI and Agile practices together rather than bringing conflicts with each other. All it requires is to balance and customize the process based on the business and the team working for the development. In the next posts we would provide insight about how the good practices of agile and the CMMI® process areas can be integrated effectively for project and organization success.