Here at The Jake Group, one of the first things we consider when planning a web development project is the best process to to guide us towards project goals. While some projects lend themselves to a simple linear approach, many are better served by a more organic, iterative model that allows us to deploy faster and incorporate feedback into the process as the project grows and evolves. This article discusses the iterative development model.
But first, some philosophy …
Agile is a software development philosophy meant to guide better strategies for developing software products. Described in the Manifesto for Agile Software Development, Agile summarizes its principles in four core values:
Individuals and interactions over processes and tools;
Working software over comprehensive documentation;
Customer collaboration over contract negotiation; and
Responding to change over following a plan.
Put another way, Agile regards people, collaboration and feedback as the central elements of project success.
The Agile philosophy was originally created by a group of software developers in 2001.
Software Development Methodologies
A software development methodology is a framework that guides planning, production and deployment of development projects. While there are a number of possible methodologies and variations, this presentation exams two: sequential and iterative frameworks.
The sequential development approach treats a development project as a whole with distinct stages leading from start to finish. Each stage is dependent on the work accomplished during the previous stage, resulting in a process that moves step-by-step towards completion and full deployment. The Waterfall Development Model is the most commonly used sequential development process. The ‘waterfall’ concept derives from the idea of work completed in one stage flowing down into the subsequent stage, creating movement towards a completed product.
The ‘pure’ Waterfall model does not incorporate opportunities for feedback and changes between stages. However, in practice the process is adjusted on-the-fly to account for these almost certain necessities, while maintaining the overall sequential progress of the project. In addition, many modified Waterfall models do expressly incorporate opportunities for feedback between stages.
Strengths of the sequential development model include:
Simplicity: The Waterfall method is a very linear and straightforward approach — easy to understand and map-out, and tends to satisfy client expectations about how a project schedule should be structured.
Discipline and Professionalism: Because it is highly-structured and linear, this method forces a level of discipline on the process that can help keep overall progress on track towards full deployment.
Avoiding Costly Errors: The products of each stage can be tested and perfected before moving on to the next step, allowing them to be used as stable building blocks in subsequent stages and reducing the possibility of discovering an error or inconsistency later in the project.*
Documentation: The heavy up-front planning that goes into the Waterfall method lends itself to a clear record and documentation of the product. This will benefit the team creating the product as it grows, as well as the client when putting it to use.
* This is true in theory, but whether it is borne out in practice is debatable.
Iterative Development Methodology
In contrast to the sequential approach, iterative development seeks to break the development process down into smaller, nonlinear phases, or iterations. While the project may remain bookended by launch and deployment, the majority of the process is broken into separate, repeated iterations each ending in a functional project component. Iterative approaches such as Scrum, Lean and XP are often associated with the Agile philosophy. Each method has its own unique and sometimes complex structure, but they all share the focus on iterations.
Iterative Production Cycle
Another way of thinking about the iterative model is as a cycle of evaluation and implementation in which each cycle is informed by — but not dependent on — the other cycles (both past and future).
Strengths of the iterative development model include:
Flexibility: The iterative method addresses the reality that project requirements tend to evolve during the production process. Rather than changes causing unexpected setbacks, the iterative model builds change into the process.
Project Management and Schedule: By breaking a larger project into smaller iterations, multiple components can be developed by separate teams at once, reducing downtime and speeding up deployment.
Communication: The iterative project structure makes communication imperative between team members as well as the client. This increases involvement and understanding among all players.
Testing: Testing takes place at the iteration level rather than solely at the close of the project, making it much more likely that problems will be discovered and addressed before they are become integrated into the larger system.
Phased Launch: The iterative approach may help facilitate phased product launches as well as ongoing versioning.
Agile/Iterative Web Development
The Waterfall model tends to be the default model used for general website development projects because of its simplicity and familiarity. However, it may not be the best approach for every project, or even most projects.
However, an Agile development strategy applied through the iterative model may prove advantageous for web development because of its focus on working with real people under real world circumstances.
Benefits of Agile/Iterative Web Development
Address Scope Unpredictability: For many clients, a website development project doubles as a discovery process. Despite best efforts to define the scope of the project at the beginning, once underway new ideas often emerge that may significantly alter the project requirements. An iterative process is equipped to respond to these changes, as are the team members who are able to adjust as the project evolves.
Client Communication and Education: Another challenge common to website development projects is maintaining good communications between the development team and the client, and helping the client understand the process. The iterative approach requires frequent communications between the project team and client, ensuring that all players remain actively involved in the evolution of the product. It also creates an opportunity to display project progress as each iteration is completed.
Workflow: Workflow in a traditional waterfall model is characterized by starts and stops — while the design stage takes place, the developers have little to do, and vice versa. The iterative approach combines all stages in each small iteration to create a more even workflow so that all team members can remain productive. This also eliminates bottlenecks and potentially would allow the team to take on more simultaneous projects overall.
Teamwork and Responsibility: The Agile approach relies on the contributions of team members not just to execute individual tasks, but to guide the iterations and overall project evolution. This allows the team members to bring more of their own expertise to bear on the project, and encourages ownership over iteration trajectories.