In recent years, a new project management methodology has been disrupting operations at tech companies, superseding the waterfall processes that have traditionally guided development. Agile development is a more dynamic and responsive process that allows for the uncertainty and experimentation that fosters breakthroughs in innovation.
To understand agile approaches to project management, we first have to get a grasp on the established model they were developed in response to: the waterfall approach.
What is the waterfall model?
For decades tech companies relied on the waterfall model for software development and other project management. The waterfall, or phase-gate, model codifies a logical sequence of steps—one feeding into the other, much like the cascading levels of a waterfall—for the entire software development life cycle, from idea through to implementation.
In a waterfall approach, your team might progress sequentially through the following steps:
- outlining requirements: the requirements of the product are analysed and recorded in a requirements document which will guide development to the end.
- analysis: systems are analysed to produce the logical schema and business models that will underpin the application.
- design: programming language and services are defined, resulting in a software architecture which defines how the models outlined in the analysis step are technically implemented.
- coding: source code is written, integrating all the models and services defined in the previous steps.
- testing: testers systematically detect problems in the product, which are then addressed.
- operations: the product is deployed in a live environment and then supported and maintained in an ongoing process.
Advantages of the waterfall method
The waterfall approach has clear advantages, especially for small projects:
- It’s straightforward, linear and methodical, which makes it easy to understand and implement, especially for those who don’t have a tech background.
- Teams must complete one process before progressing onto the next, so potential obstacles are exposed quickly and addressed. This means projects are less likely to be abandoned half-completed.
- Outlining requirements means the end goal is determined quickly, guides all work and isn’t deviated from.
- Progress at each step is recorded and then transmitted clearly to the team handling the next step.
- The cascading sequence means teams keep moving forward, so projects are delivered on time.
Disadvantages of the waterfall method
However, increasingly the waterfall method is seen as rigid and pasé. No one ‘invented’ this approach for tech development. Rather it was adopted by early software engineers from other industries, particularly ones where it would be costly or impractical to return to previous steps. But laying the foundation of a building isn’t the same thing as writing code, and in tech development, unlike in age-old building practices, new innovations can be uncovered by ripping up previous work and starting again.
There are other disadvantages to the waterfall approach:
- It doesn’t leave room for unexpected changes, including those which can guide the project to exciting and innovative new places.
- It’s particularly difficult to alter the goal or scope of the project. Doing so would require starting the process over from scratch, scrapping existing work.
- The method is an internal process that doesn’t allow much room for communicating with the client or end-user and integrating their requirements and feedback as it progresses.
- Testing is delayed until the latter half of the project. Problems can remain undetected for too long, necessitating costly and time-consuming revisions.
- A rigid, sequential series of steps may lead to incremental innovation but can stymie breakthrough innovation, which runs on the type of uncertainty the waterfall method eliminates.
What is the agile model?
Agile methods of project management were created in direct response to these drawbacks of the waterfall approach, particularly its strangling of breakthrough innovation.
Agile is a dynamic, responsive method of software development, which eschews linear, sequential steps in favour of an incremental, iterative, evolutionary approach. Under agile approaches, requirements and corresponding solutions evolve through the collaborative work of self-organising and cross-functional teams and their clients and end-users, mediated through a series of rapid technology-feasibility loops.
Agile models are guided by the following values, outlined in The Manifesto for Agile Software Development:
- individuals and interactions over processes and tools
- working software over comprehensive documentation
- customer collaboration over contract negotiation
- responding to change over following a plan
Key features of an agile approach
A number of different methodologies have been developed under the agile model banner, including Scrum, Kanban, XP and Crystal. They all share the following components, which define an agile approach to project management:
- loops/sprints: The core of an agile approach is a series of rapid, iterative technology-feasibility loops. The loops, or sprints, answer key questions, yield prototypes and create an increasingly clearer image of the overall solution and product.
- short feedback loop and adaptation cycle: The prototypes generated from these quick (usually two to four-week) cycles can then be shared with clients and customers so the provisional solutions can be tested and, if found lacking, revised, before the team moves onto the next loop.
- cross-functional teams: Each loop involves a team which is involved in all stages of the process, from planning to analysis to design to coding through to testing and revision.
Advantages of the agile model
- leaves space for ambiguity and experimentation
- fluid requirements mean changes can be made at any stage of the project, including to accommodate innovations and efficiencies discovered through the work.
- closer and more transparent collaboration between developers and customers, leading to greater client satisfaction and better products
- problems can be detected and resolved quickly