Balancing Agile and Waterfall Methodologies
Compromise is often the linchpin to success. Agile development methodologies have become the standard in the software industry these days. But it’s important to remember and recognize the advantages of other development methodologies. Many companies, especially companies that have a large volume of legacy code, often employ a hybrid of Agile and Waterfall development methodologies.
Agile development processes typically implement a series of small development iterations that allow for periodic adjustment and schedule correction. By cycling more often on short iterations Agile theory proposes that stakeholder feedback can be incorporated sooner and defects introduced as part of new function can be managed more easily. These concepts are often augmented with other complementary concepts and methods like test-driven development and automated unit testing and deployment frameworks. These are often highlighted as the reason why Agile development processes are “better” than more traditional development processes. Theory and reality, however, are usually different. Agile development processes do inherently have a component of uncertainty since iterations can change, backlog contents are constantly evolving and stakeholder feedback can drive requirements in a different direction mid-release. Without the augmentation of automated tooling, some organizations can experience Agile pile up where there are more small releases to test and deploy than the existing infrastructure can consume.
A waterfall process has a more disciplined, regimented approach to development cycles with well-defined start and end points. It also emphasizes requirements gathering and thorough design prior to implementation in an attempt to optimize efficiency of implementation. The obvious disadvantages of a process like this are apparent when stakeholder reviews of the final product happen after implementation and the stakeholder exclaims, “This isn’t what I had in mind at all!” Or after spending considerable time in the design phase, development hits a roadblock during implementation that turns out to be a show stopper for your release.
To mitigate the issues of these two processes, some organizations choose to hybridize their Agile process with Waterfall concepts. Companies like IBM have formalized this concept and describe them as Scaled Agile or Disciplined Agile Delivery. These hybrid approaches usually marry the Agile and Waterfall concepts by describing the development stage as a series of well defined milestones that provide an evolutionary implementation of the goals provided at the outset of the release. They often work toward a fixed date as a traditional Waterfall process might.
Regardless of the details of the hybridization, the need for compromise on process is real and powerful. Whether an it’s an artifact of organizational resistance or a customer requirement by born out of rigid external standards, aspects of more traditional processes like Waterfall still have value. The fast-paced demands of modern software development require the flexibility and responsiveness of methodologies like Agile. For some customers, finding that sweet spot of a hybrid custom process is the formula for success.