Why Agile is the Future of Application Development
Why Agile is the Future of Application Development by Paul Gillin
Application development has been conducted via the traditional “waterfall” approach at most organizations for the past 60 years. This method has typically been used to manage monolithic software projects, but Agile development has grown more and more prominent in the app development space, and for good reason.
Let’s take a look at the traditional waterfall approach to software projects and how Agile development became the new standard.
The waterfall approach
The waterfall approach is a development model with distinct sequential stages that take an application from concept to delivery.
Typically, users fill out a comprehensive requirements definition document that becomes the basis for a high-level design. Once this is approved, the coding process begins—a stage that often takes months—and this is followed by a testing and revision cycle that can last just as long. Exhaustive documentation is prepared, and user sign-off must be obtained after a thorough review for the application to move into production.
The waterfall technique is disciplined and accountable, but also slow. It isn’t uncommon for departments within large enterprises to wait a year or more for a project they devised to come to fruition, and by that time the specifications and requirements have often changed.
The types of applications that organizations will build in the future will be quite different from those of the past. Many will be single-purpose, short-lived, and intended to be superseded over time by something better. Think of the apps on your phone: Most are updated every couple of months, evolving iteratively in the field so that the version you use today looks completely different from last year’s. Bugs are more tolerable because they can be fixed with a simple update.
Most of the 500 million+ applications that International Data Corp. expects to be built over the next two years will be closer to the phone analogy than the traditional monolithic model. Similarly, the way that the application development process works is also changing. Applications are increasingly assembled from loosely coupled microservices rather than being encapsulated in a single code base. New features are added by plugging in services, which enables software to continually evolve.
Enter Agile development
Agile development is a new approach to building software that is sweeping the application development community. Digital.ai’s 2020 State of Agile Report found that 95% of organizations have some form of Agile process in place, though most are still coming up the learning curve.
Agile and waterfall methods differ in some fundamental ways. Instead of thorough requirements definition statements, the Agile application development process utilizes a bare-bones set of objectives and assumes that things will change. Projects are broken down into small components that can each be delivered in “sprints” of a month or less.
Developers work in teams called “scrums” that include project owners, developers, testers, database designers, and support personnel. These teams often work together around a large conference table, placing heavy emphasis on daily face-to-face communication with users via 10-minute “stand-up” review meetings. Because it’s assumed that requirements will change, the process is designed to adapt to new ideas rather than reject them.
In contrast to the waterfall technique’s tight focus on procedure and documentation, Agile app development eschews process in favor of creativity. The emphasis is on speed, flexibility, and teamwork, with the guiding principle that it’s better to deliver something that works and continually improve it than to wait for the perfect solution to emerge. Documentation is typically limited only to basic information — as the Agile Manifesto advises, “working software over comprehensive documentation.”
Not a panacea
While Agile application development can be advantageous, it isn’t right for every scenario. Big projects built to spec, such as those commonly detailed in government contracts, are a better fit for waterfall techniques. However, there’s no question that Agile is ascendant and more compatible with emerging building-block software architectures.
Respondents to the Digital.ai report listed the five top benefits of Agile development as:
- Increased ability to manage changing priorities
- Better project visibility
- Improved business/IT alignment
- Faster delivery
- Better team morale
Evolving from a traditional development process to an Agile one can be like asking a construction firm that specializes in skyscrapers to pivot to building single-family houses. The tools, tactics, and time frames are entirely different, and that’s why over half of the respondents to the Digital.ai survey said they were “still maturing” in their use of Agile practices, and just 16% reported a high level of competency.
If a development organization has a history of working with time- and scope-constrained contracts, Agile can be a bit of a shock. Not all team members will be comfortable working closely with end-users, so roles and expectations need to be defined to help everyone remain content and productive. Job descriptions will also change. Software testers who are accustomed to designing large and comprehensive test suites will need to adapt to a recursive approach that tests individual modules as they are built, as well as the total of all work to that point. Fewer people may be needed to create documentation.
There can be no question, however, that Agile development is better adapted to the rapidly changing world of software applications. Organizations that aren’t on board yet should prepare for an even greater emphasis on Agile development in the years to come.