In recent years, Agile methodology has become very popular among many software development teams due to the increased efficiency it brings about. Most of the companies were unable to design and create desired products within optimum time and cost due to their use of traditional project management methodology. By going the Agile way, they were able to transform their processes completely and change the way teams viewed project management.
Traditional (or waterfall) project management, majority of the times, follows a fixed sequence of
Initiating —-> Planning —-> Execution —-> Monitoring and Controlling —-> Closing
Here, the next process can only begin when one process is complete. Mostly, this method is best suited for projects that anticipate very few changes in Scope from the start to finish, like manufacturing a billion dollar Space Station. The requirements are collected during Planning and are fixed, only Cost and Schedule may vary. Since there are minimal changes in Scope, the probability of the budget or time estimation going haywire is minimal.
Agile is a software development approach where a self-sufficient and cross-functional team works on delivering continuously through iterations and evolves throughout the process by gathering feedback from the end users.
Agile is a set of principles that encourage flexibility, adaptability, communication and working software over plans and processes. These are precisely captured in the “Agile Manifesto”.
When we actually apply Agile methods and methodologies, these cater all the needs of a software development industry right from the software design and architecture to development & testing to project management and deliveries.
Some of the most popular Agile frameworks are Scrum, Kanban, Lean and Extreme Programming.
Agile is all about developing software quickly based on customer needs. It is then changed according to the feedback the customer gives before going onto the next stage in development.
This type of project begins by first outlining the major features of the software the customer desires. These are known as user stories and the developers assemble them into ‘iterations’, based on importance. Teams work in sprints to finish each iteration within a set time span, usually measured in weeks (2-4 weeks). Each sprint aims to create a working software the user can trial, then advocate changes so that it suits their needs.
Waterfall (Traditional Project Management)
A waterfall development project follows a traditional and linear approach. The first stage is gathering requirements, which is usually an extensive process as the developers won’t produce working software for customers to try out in the middle of the project. They want to understand up front exactly what users want the software to look like.
First the team needs to understand up front exactly what users want the software to look like, what features they want to incorporate. After this, the developers will design the software, giving themselves a detailed template to work from. By working in accordance with the plan, the result is the actual development process, which is the next process to be followed, will be smoother and hit fewer obstacles.
Once they’ve built the system, developers enter the testing stage – this is where they make sure the software actually works. This sees developers debug the system, sometimes involving users who try it out. After that, the developers go into maintenance mode, installing, supporting and maintaining the software on behalf of the customer.
The main advantage of Agile is that it involves customers at every stage of development. With the users constantly providing feedback on working software, the project is much more likely to end up meeting their needs, which may develop as the project progresses. Unlike waterfall, if a customer requests a change, agile developers can easily make it.
This approach also delivers working software more quickly to the customers, making it ideal for projects in which speed is of the essence.
Another advantage in agile is the concept of continuous improvement and focuses on reducing wastage.
The Agile projects are intensive for customers as their involvement is required throughout. The customer must be enthusiastic and engaged in the project as Agile projects can fall apart if the customer isn’t interested in working closely with developers.
There cannot be a blueprint of what the final deliverable will be. This makes it harder to gain commitment to the project by stakeholders at the early stage.
By focusing on quality over speed, the waterfall is well-suited to projects which are not urgent in nature with customers who know exactly what they want their software to do. The extensive testing period can result in fewer bugs when the project is complete.
Waterfall’s strict linear process means a project is likely to be finished on time and within budget, and with regular milestones, it is easier for both developers and customers to track its progress.
In waterfall development, once the course is set, any deviations could result in increase in Cost and Schedule. Unlike agile, the waterfall doesn’t involve customers every step of the project as the Requirements are collected at the beginning of the Project during Planning.
This means the waterfall approach works best when customers have clear ideas about what their software needs to do.
If users have only a vague idea, or the project takes a long time to deliver, the finished software often won’t need user’s requirements, which may change over the course of the project.
Similarly, once a waterfall project hits the testing phase, it’s very hard to make changes to the software. Customers will have to pay more money and wait longer if they want to make changes at this stage.
To avoid this, waterfall developers sometimes build in customer feedback points between the stages outlined above, to adjust the project as they go.