Our experience is that to make agile and CMMI co-exist effectively is that four things need to occur:
- You need to adopt an enterprise view of IT. Adopting an enterprise view of IT can require an open mind be both CMMI and agile practitioners. An important implication of enterprise awareness is that different teams are in different situations, therefore they need to tailor their strategy accordingly. This requires enterprise professionals who work with many project teams to be capable of working with and governing those teams accordingly – they need to work with traditional teams in a traditional manner and agile teams in an agile manner. For agilists being enterprise aware can be very difficult at first due to the prevalence of a project mindset within the development community. Agilists need to become disciplined enough to leverage and enhance the existing software and data infrastructure, to follow common guidelines, to work with enterprise professionals such enterprise architects and operations professionals, and to be governed effectively.
- You need to focus on quantifiable business value. Your organization must focus on delivering quantifiable business value to your stakeholders in all activities that you perform. In other words, perform real process and organization improvement at squeeze out the needless bureaucracy that is all too prevalent in CMMI environments. We have yet to work with a CMMI organization, including those rated at L4 and L5, that didn’t have huge opportunities for improving their productivity by adopting more agile ways of working. For example, we often run into existing development processes where a requirements specification is created, then test plans and test cases are written so that the solution may be validated, and traceability maintained between these artifacts (and more) for good measure. Yes, business value is being delivered via this process, but we can work more effectively while achieving the same goals. For example, but adopting an acceptance-test driven approach the acceptance tests become both the detailed tests and detailed requirements specification, with full requirements-to-test traceability between them with no extra work to be performed. By working smarter, not harder, you not only reduce the work required to provide the same business value as before but you do so with a shorter feedback cycle between requirement elicitation and implementation, thereby reducing project risk.
- Agile teams must adopt a full delivery lifecycle. Minimally this lifecycle includes project/team initiation, construction, and deployment activities although enterprise activities such as portfolio management, enterprise architecture, asset management, operations, support, and others should also be considered. The Disciplined Agile (DA) toolkit includes four delivery lifecycles: The Agile/Basic Lifecycle based on Scrum, The Advanced/Lean Lifecycle based on Kanban, The Exploratory Lifecycle based on Lean Startup, and the Continuous Delivery Lifecycle.
- You need to adopt a hybrid approach. Many agile methodologies – including Scrum, XP, AM, Agile Data, Kanban, and more – focus on a subset of the activities required to be CMMI compliant. Before the advent of DAD you needed to cobble together your own agile methodology to get the job done. DAD adopts ideas from Scrum, Agile Modeling, Agile Data, XP, Kanban, Lean Software Development, and many more. The bottom line is that if you intend to address all of the CMMI process areas you will need to adopt a hybrid approach such as DAD or do the work to invent your own.
In the next blog in this series we will explore how Disciplined Agile Delivery (DAD) maps to the CMMI framework.