Agile development is known for being cheaper, faster, and quicker to respond to changing market demands, as compared to the slower but steady, sequential process of the waterfall method. And while Agile may be more suitable for projects that are amenable to its speed and quick reaction time, traditional waterfall industries are starting to see the value of using this methodology.
Agile vs. Waterfall
Agile development centers around short “sprints” where developers race to fix bugs and write working software within a span of anywhere between 4 to 6 weeks. Agile is most often talked about in terms of modern Web 2.0 applications where we see frequent updates and changes to code as feature sets are enhanced and new functionality is added at a rapid pace. This methodology is typically seen as the opposite of the waterfall process where development and management follows a sequential process. In waterfall projects, progress is seen as cascading steadily through the phases of conception, initiation, analysis, design, development and testing.
Agile Making Inroads
But Agile isn't just for modern languages or web-only applications. While the financial services and mobile markets were obvious early adopters, we could argue that there isn’t any industry where Agile wouldn't be a good fit. Agile is cheaper, faster, has more flexible processes, responds better to changes in market demands and, while not perfect, Agile environments can bring a certain honesty to team dynamics by exposing who's behind contributions and progress.
Although Agile methods are definitely more suited to projects where you need to deliver small yet frequent pieces of functionality, and where time to market is a key concern, we have seen Agile adoption increasing in traditionally waterfall industries, like medical device manufacturing and even military/aerospace. These companies are seeing the value in iterative development in terms of increased software integrity, developer efficiency and in reducing technical debt.
Considerations When Adopting Agile
The nature of Agile development, however, can introduce risk, as testing cycles become condensed and serious bugs can be overlooked. This usually requires an additional level of developer testing upstream to help identify defects early in the cycle. Most industries, let's take consumer electronics for instance, make calculated tradeoffs when it comes to development. A mobile device company wants to be first to introduce a phone with the latest features, so time to market might take precedence over quality. However, quality concerns are a primary drawback in safety-critical industries or industries where projects require heavy documentation and modeling before coding begins. Because waterfall development stresses the end product over process, it has remained prominent in these industries where quality (and safety) over speed reigns supreme.
It is important to understand that Agile, as defined in the Agile Manifesto, is a set of values and principles, not a pre-defined process with obvious areas of limitations. Hence, adoption of the methodology is context-sensitive to the individual project team practicing it. This means that whatever limitations experienced need to be addressed via “inspection and adaptation,” and that the teams detect the problems and seek solutions. However, one area where most teams are looking for answers is in the area of risk management. This is a weakness for most software development methodologies. Risk management in terms of software quality and technical debt needs to be integrated into the development process.
Editor's Notes: You may also be interested in reading:
- What is Information Management Agility?
- 8 Great Tips for Web Product Management
- An Agile Enterprise CMS — What's That?
About the Author
Rutul Dave, Senior Development Manager, Coverity, received his Masters in Computer Science with a focus on networking and communications systems from University of Southern California. His focus these days is on creating tools and technology to enhance the Software Development process and to equip Developers with the best resources, techniques and practices to maximize the integrity of software.