There is an idiom in American English that I use quite often. I assumed that it was commonly used – at least here in the States. The full idiom is “as American as motherhood and apple pie”. It’s typically used when you are describing something that is quintessentially American and an idea that very few would disagree with. Its often abbreviated to “motherhood and apple pie” and use when describing something obvious. When I enumerate the benefits of agile methods, they are, well, mother hood and apple pie! Here they are:
- Ensure the right software gets built through customer collaboration
- Deliver value early and often with incremental development
- Optimize production throughput and communication with collaborative, cross-functional teams
- Rapidly adapt to changing business, market and customer requirements
- Deliver higher-quality software through test-driven development
- Provide predictable execution and real-time visibility
Ensure the right software gets built through customer collaboration. Agile methods are customer-driven. Where possible, agile teams will embed the customer into the agile team where they create and prioritize requirements (in Scrum, this is the Product Owner role and typically requirements are captured as User Stories). If its not possible to actually embed the customer on the team, a proxy for the customer is used. The customer proxy may be a Business Analyst or Product Manager depending on your business and organizational structure. With the customer closely aligned with team, the team will always be focused on delivering the most valuable features and will have a higher likelihood of meeting customer expectations.
Deliver value early and often with incremental development. Almost all agile methods espouse some type of incremental development where potentially shippable features are developed and delivered incrementally. Assuming the requirements are being effectively prioritized (see previous bullet), and that we are developing incrementally, we are then optimizing the frequency of value delivery to the customer. Now, if we are incrementally delivering value rather than in the traditional 18+ month cycles, basic finance tells us that the time value of money will yield higher ROI with the incremental model (see my blog post on this here).
Optimize production throughput and communication with collaborative cross-functional teams. From its inception, agile methods have been all about optimizing the throughput of agile development teams. Depending on whom you talk to, this was either borrowed from or developed in parallel to the work that was done in Lean Manufacturing. In agile, we optimize in a variety of ways. Perhaps the most profound is the creation of cross-functional teams. The cross-functional team moves us away from stove-piped organizations that use documents as a mechanism for communication. Agile cross-functional teams produce just enough documentation and focus value delivery over formal process documentation.
Rapidly adapt to changing business, market and customer requirements. This benefit is inherent with incremental development and effective prioritization of requirements. If we are continuously prioritizing and re-ranking the team’s future work, we will optimize the value delivered with the market requirements.
Deliver higher-quality software through test-driven development. Test-driven development is one of the essential practices that teams employ to ensure that not only do the features that they deliver work, but that they continue to work over lifecycle of the product, application, or service. The combination of test-driven, development, automation, and continuous integration practices allow teams to improve the quality of their software deliverables.
Provide predictable execution and real-time visibility. One of they myths about agile methods is that there are no processes to ensure predictable execution and that stakeholders get no visibility into status, progress, and risks. Well, if this is the case, then you are not practicing agile, you’re just not managing your software development efforts. Agile methods can provide high levels of CMMI process maturity (see Jeff Sutherland's post on this here). Additionally, teams that are effectively planning and performing incremental development will deliver higher levels of visibility to their stakeholders.
To me, this all motherhood and apple (agile?) pie. The benefits are obvious and it would be negligent or at least irresponsible not to pursue them.