MANAGING YOUR DEVELOPMENT
There are two main methodologies used by developers to manage projects, known generally as “Waterfall” and “Agile”. These are very different to each other and apply to projects depending on their type and the scope of the work.
This post is a high level introduction to these two methodologies and aims to provide a basic explanation to business managers who might be considering having an ICT solution developed.
“Waterfall” Project Management
Waterfall methodology is a sequential design process, involving a number of discrete steps, generally Requirement, Analysis, Design, Development, Testing, Delivery and Installation.
A well defined requirement is generated by the customer. This requirement is analysed by an experienced developer (Analyst, Architect) and a comprehensive technical design is produced with each part of the work scoped and costed. The solution is presented to the customer who decides whether to continue or not.
Once the project has been initiated, the developers break the work down into modules and provided that they stay within agreed tolerances, they work in isolation to produce the product.
At the end of the development phase, the product is assembled and tested to ensure that it complied with the original requirement. The finished product is demonstrated to the customer and previously agreed tests performed to prove compliance.
Advantages of the Waterfall Methodology
- As the scope of the work is clearly defined from the start, it is less dependent on critical staff or knowledge.
- As the detailed plan is known from the start, it can allow more efficient planning and use of critical and shared resources.
- With the waterfall methodology, the client knows what to expect.
- They’ll have a good idea of the size, cost, and timeline for the project.
- They’ll have a detailed understanding of what their product will do at the end of the development.
- Waterfall’s requirement for detailed design up front, removes many of the development risks and therefore timescales and costs can be committed to.
Disadvantages of the Waterfall Methodology
- Once a step has been completed, developers can’t go back to a previous stage and make changes. If a requirement error is found, or an essential change needs to be made, the project must start again from the beginning.
- Waterfall methodology relies heavily on initial requirements. However, if these requirements are faulty in any manner, the project may be doomed.
- The whole product is only fully tested at the end, so issues introduced early in the development can cascade throughout the subsequent development.
- The temptation is often to skip thorough sub-assembly testing under pressure to stay on the time or budget schedule.
- The owner must have a clear understanding of their exact requirements at the start and these requirements must be unambiguously documented as a contractual definition.
When should you use waterfall methodology?
- When there is a clear picture of what the final product should be and all of the significant factors to get there are all well-known and understood.
- When clients won’t need to change the scope of the project once it has begun.
- When detailed and precise definition, rather than speed, is an essential requirement.
- When you require a contractual commitment from the developer to a timescale and budget.
What is Agile?
Agile came about as a “solution” to the disadvantages of the waterfall methodology and to allow controlled flexibility during the development program.
Instead of a sequential design process, the Agile methodology follows an incremental approach.
- The designer works with the Product Owner to develop an outline requirement for their product.
- From the outline requirement an initial list of functions or modules is produced (the Product Backlog) and prioritised by the Product Owner.
- The developers consider the top priority items and estimate the costs for each.
- The owner and development team agree which parts of the Backlog are to be completed in a short Sprint (typically a week or month) and produce the Sprint Backlog.
- The development team lock themselves away for the Sprint, working efficiently and uninterrupted.
- At the end of each sprint tests are run, the backlog priorities are reviewed and any changes required by the Product Owner ready for the next Sprint.
- At any time the Product may be delivered for testing and/or live use, allowing the Product to evolve as features are added.
Advantages of the Agile Methodology
- The Agile methodology allows for changes to be made by the Product Owner between each sprint to the scope and priority of work.
- Because the Agile methodology allows you to make changes, it is easier to add features reflecting developments in technology, ideas and revised requirements as they emerge.
- At the end of each sprint, project scope and priorities are evaluated. This allows clients to add their feedback so that they ultimately get the exact product they desire.
- The testing at the end of each sprint ensures that the bugs are caught and taken care of early in the development cycle, rather than in a big bang during final product testing.
- Because the products are tested so thoroughly, the product could potentially be launched at the end of any cycle. Thus allowing for interim launches on test platforms or even in the live environment.
Disadvantages of the Agile Methodology
- If the product owner changes requirements too radically or switches priorities too frequently the project is may come in late and over budget.
- Interrupting the Sprint team can dramatically reduce effectiveness and cause delays to the agreed sprint backlog.
- As the initial project doesn’t have a definitive plan, the final product may turn out to be very different than what was initially imagined by the Product Owner.
- It is virtually impossible to produce an accurate timescale or budget as the scope of the project is flexible and controlled by the Product Owner, not the development team.
When should Agile Methodology be used?
- When rapid production with interim functional deliveries is required.
- When the Product Owner is likely to want to change the scope of the project during the development.
- When there isn’t a definitively clear picture of what the final product should look like.
- When the product is intended for an industry with rapidly changing standards.
In a nutshell
Both the Agile and waterfall methodologies have their strengths and weaknesses. The key to deciding which is right for you comes down to the context of the project.
- Is it going to be changing rapidly?
If so, choose Agile. - Do you know exactly what you need?
Then maybe waterfall is the better option. - Would you like to see the product evolve and refine the requirement as you use and test functionality?
Then Agile is definitely for you.
Consider a Hybrid approach
Another option is to use both methodologies. Controlling the main project path and fixed requirements with Waterfall and where flexibility is required use Agile for sub-projects within the main path.