After ten years of self-analysis and continuous improvement, Asynchrony’s software development practices have been validated through the awarding of the Capability Maturity Model Integration (CMMI) Maturity Level 2 earlier this year; we are now embarking on the CMMI Level 3 assessment.
At Asynchrony, we have been using Agile methodologies for over ten years. The maturity of our Agile processes reflects incorporation of industry best practices, continuous introspection by our development teams, and a commitment of our company’s leadership to identifying and integrating standard agile processes across our development teams. From the start of our company, we have always understood the importance of effective development processes in ensuring the quality and reducing risk associated with the commitments we make to our customers. The very bright software developers in our organization (which we view as a prerequisite to delivering great software) are able to consistently deliver game-changing solutions by wrapping themselves within our agile/lean methodology.
As agile was emerging as a best practice at the turn of the century, Asynchrony was an early adopter. Our CTO, Nate McKie, was the primary architect who figured out how to apply the basic tenets of agile to our growing company. Initially, we had many challenges, including convincing our own developers that things like pair programming, test driven development and continuous integration could enable operational capabilities to be delivered every few weeks. Likewise, we had to convince our customers that Agile was not risky and that, in fact, it was significantly more dependable and effective than the traditional waterfall development methodologies that were so much in vogue at the time.
Public sentiment has really come around on this one. Today, Agile is the preferred approach to delivering software for the Department of Defense, according to multiple recent studies and publications – even to the extent that the 2010 Defense Authorization Budget included the following language: The Secretary of Defense shall develop and implement a new acquisition process for information technology systems. The acquisition process developed and implemented pursuant to this subsection shall, to the extent determined appropriate by the Secretary—
be designed to include—
(A) early and continual involvement of the user;
(B) multiple, rapidly executed increments or releases of capability;
(C) early, successive prototyping to support an evolutionary approach; and
(D) a modular, open-systems approach.
Sounds a lot like Agile!
As we tried to improve our basic development processes, we started sending all of our developers to training in Agile and Test Driven Development. In 2006, after we sent most of our people through Brian Button’s agile training classes, Brian joined Asynchrony, bringing us one of the leading agile trainers and gurus in the St. Louis area. With Brian and Nate leading the way, we continued to refine our approach to agile, working to standardize certain agile practices (e.g. retrospectives, SCRUM, refactoring) within all of our teams. Over time, we moved to weekly iterations, daily (and multi-day) swapping of programming pairs, and incorporation of certain standard metrics into our vocabulary (it still is heartening when a customer will explain to me what an XPU – extreme programming unit – means). And over the last year or two, almost all of our larger teams began adopting the use of kanban boards and lean concepts with continuous iterations and throughput of a story becoming standard metrics.
This year, Asynchrony was evaluated for CMMI Level 2 by Hillel Glazer, the founder, Principal and CEO of Entinex, Inc. (http://www.entinex.com/). Hillel is a certified appraiser by the Software Engineering Institute (SEI) and evaluated Asynchrony under the SEI guidelines. Our assessment at CMMI Level 2 was the first time Hillel had heard of using kanban to achieve CMMI Maturity Level 2.
We achieved this rating very quickly. When we started the process in January 2010, we just wanted to gauge how our software development compared to CMMI. As it turned out, we didn’t have to make many improvements or changes. We were already close to the CMMI Maturity Level 2 rating from the outset based on ten years of practicing the agile principles of self-analysis and iterative improvement.
At Asynchrony, the ease of adapting our existing processes to CMMI’s model rested on the identification of patterns that, for the most part, we already had in existence, which aligned with the CMMI areas. The critical thing the CMMI process added to our way of doing business is the conscious assessment of how these key patterns apply to each project and the documentation of such assessments. The resulting artifacts help our customers understand the operational decisions we make, and also each new team member that joins the team during a project has access to this shared understanding of the teams’ standard processes.
See http://www.agilecmmi.com/index.php/2010/05/truly-agile-cmmi/ for Hillel’s post and video of our path to certification.
Achieving CMMI Maturity Level 2 is a testament to Asynchrony’s innovation, expertise, and leadership in software development and acknowledges our ability to meet the standards put forth by the Department of Defense, federal government agencies, and U.S. military. Government procurements increasingly look to CMMI as a discriminator among companies as they assess competitive bids. Government and DOD procurements are starting to require Agile methodologies as a preferred approach for delivering software. I am hopeful that the Government will recognize the increased relevance of CMMI Mature processes on Agile development projects if the Maturity assessment is actually based on the agile software methodologies that will be utilized on the projects.
We are now getting our arms around CMMI Level 3 processes, and I am confident we will both be successfully appraised, and also continue to learn about how we can do things better by going through the process. Stay tuned!