The interest in Agile software development practices continues to grow as companies seek more efficient methods of developing software while meeting market demands for delivery.
Scrum is a software development methodology based on Agile principles. Agile methodologies promote a project management process that encourages frequent inspection and adaptation, a leadership philosophy using teamwork, self-organization and accountability, with strong customer involvement*.
We have seen companies improve their performance using Agile, CMMI, and other frameworks. In this tidbit, we discuss two common questions that we hear when visiting clients and prospects:
- “Agile in my company means code and ship, avoiding requirements and design; what shall I do?”
- “My company is trying to use CMMI, and now it wants to consider Agile; what shall I do?”
1. Agile in my company means code and ship, avoiding requirements and design; what shall I do?
If the only development activities are coding and some test, then we call an organization “Agile declared”, not Agile! Although Agile is intended to speed up a project’s progress, it still includes basic engineering and management steps.
Whether your organization chooses an Agile approach, Waterfall or an incremental life cycle, activities such as requirements and design are performed to, a) clarify the project at a time when rework is less expensive, and b) reduce the risk of failure. Abandoning these practices increases your risk of budget, deadline or quality problems.
If you want to be Agile, a good place to start is to take basic life cycle phases, (such as requirements, prototype, design and test) and apply them to a small amount of work that takes between two and four weeks to complete. If you are contemplating becoming full-Agile, add the remaining practices that build communication and tracking into the project. Agile does not mean skipping all known best practices; it means adopting smaller versions of existing practices, and ones defined by Agile.
2. My company is trying to use CMMI, and now it wants to consider Agile; what shall I do?
Almost all the practices in Agile map to CMMI practices, but Agile provides more implementation details.
- Project status reviews in CMMI can be implemented by the daily stand up meetings in Agile.
- Measuring project progress can be implemented by the sprint and backlog burndown charts.
- Basic requirements definition and ownership can be implemented by user stories and the role of the product owner.
- Effort and size estimation can be implemented by ideal time and story points.
However, not everything in CMMI is in Agile. These additional practices can be implemented in an agile way. For example, simple version control can be implemented by adding a version number to an artifact and taking a picture of it. Other CMMI practices (such as configuration management, risk management, supplier selection, process auditing and skills assessment / training) are additional steps that can be taken to mature an organization.
For a detailed comparison of CMMI and Scrum, see http://processgroup.com/agilescrum/
Neil is a Certified Scrum Master, Certified CMMI Lead Appraiser and Six Sigma Green Belt. Mary is a Certified Scrum Master, certified High-maturity CMMI Lead Appraiser.