Reasons of adopting agile
This article is a collective summary for reasons why adopting agile project management in software industry is better than using the waterfall model. The article first explains what the waterfall model is, what challenges it faces, then gives a brief explanation about agile and shares the agile principles to sum up by elaborating why agile is a better approach.
Waterfall model and challenges
Waterfall model breaks down the project into sequential tasks that are implemented in order; where each task depends on the task executed before it; this means that any phase in the development process begins only if the previous phase is complete and accordingly, you don't get to see the product until the end of the project life-cycle.
When using the waterfall model, it's quite challenging to trace back to earlier phases and fix issues; incur huge cost and risk, manage changing requirements during the life-cycle (handling rapid changes) and the model does not suit large/complex/integrated projects that have evolving requirements. Accordingly, the challenges in project delivery can be defined as seen below:
- Dealing with changing requirements
- Lack of resources and/or quality of the resource
- Unrealistic schedule
- Issues with unproven technologies
- Overburden by documentation and reporting
- Too many dependencies
- Managing expectations
Why Agile?
Agile is most appropriate with complicated and complex projects. The core of agile practices is responding to change and accordingly, divides the project timeline into multiple releases; where each release targets delivering a working software delivery a part of the full scope; hence, repeats the whole development cycle over and over across the project timeline as seen in the figure below.
The Manifesto for Agile Software Development states that individuals and interactions over processes and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan.
Principles of Agile Development
- Satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, should be usually during a couple of weeks.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Given them the environment and support they need, and trust them to get the job done.
- The most effective method of conveying information to and within a development team is face-to-face conversations.
- Working SW is the primary measure for progress.
- Agile processes promote sustainable development. Maintaining constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility. Technical debt should be avoided.
- Simplicity -- the art of maximizing the amount of work not done.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Collective reasons of adopting agile
The graphs below gather some collective reasons why agile development is better overall.
Summary
The waterfall model is based on sequential activities; while the agile approach aims to provide sub-deliverables at the end of each release to ensure the project always provides a working software. Accordingly, agile project management is considered a better model when working with complicated and complex projects. Given the Manifesto for Agile Software Development, agile development always welcomes change and therefore enhances the ability to change and manage priorities easily.
?? Senior Expert of Artificial Intelligence, Valeo Group | LinkedIn Top Voice | Machine Learning | Deep Learning | Data Science | Computer Vision | NLP | Developer | Researcher | Lecturer
5 年excellent!