Hello Everybody! Here, I’ll give you basic understanding of what is Agile and why Agile in software development
Waterfall
One wouldn’t be able to appreciate Agile methodologies unless we go back a decade or so when most of the software world used to follow the Waterfall model of development. In waterfall model, projects are split into distinct phases with no overlap whatsoever. The phases were requirements, design, coding, unit testing, integration testing and system testing. So one phase had to get over i.e. frozen, to start another and typically the project duration used to take many months to years. The biggest problem in this approach was by the time the project was delivered to the Customer, either the requirements would have changed or the requirements may have been wrongly interpreted by the development team. Because of the rigid boundaries waterfall it had the following shortcomings
a. Any change was expensive, as it meant it has to start from requirements and corrected along the other phases
b. Communication silos, as each person restricted themselves to that phase
c. The responsibility was fragmented. No one took E2E responsibility, everyone focussed on only their phase
d. Low levels of motivation, as exposure and learning was limited
The data from the Standish group shows that only 14% of the projects using waterfall was considered successful i.e. within budget and on-time delivery, compared to this Agile methodology had a whopping 49% success rate
Over the course of the last two decades, the software industry has moved from various variations of waterfall based developments and nowadays most organisations have adopted to one or the other forms of agile development
Agile
So, Agile is a time-boxed iterative approach that builds & delivers software incrementally instead of trying to deliver it all at once at the end of the project
It works by breaking projects down into little bits of user functionality, prioritising them and continuously delivering them in shorter cycles
Agile Principles
In Feb 2001, about 17 s/w developers met to discuss on arriving at a light-weight s/w development methodology. Although they couldn’t agree on many things, they all agreed on the following 12 principles
1. The highest priority is to satisfy customer through early and continuous delivery
2. Welcome changing requirements even if it is late in the development
3. Deliver working software frequently, from a from a few weeks to months, with preference to shorter timescale
4. Business people and developers should work together
5. Build projects among motivated individuals. Give them the support and environment and trust them to do their job
6. The most efficient way to convey information to and within development team is face to face communication
7. Working software is the primary measure of progress
8. Promote sustainable development. Team should be able to maintain a constant pace than burn out after a release
9. Continuous attention to technical excellence and good design enhances agility
10. Simplicity – the art of maximising the amount of work not done, is essential
11. The best products emerge from self organising teams
12. At regular intervals, teams should reflect on how to become more effective
These principles are core to any of the Agile methodologies
Agile Manifesto
Based on these 12 principles, the Agile Manifesto was made, according to which, one has come to value
Individuals and Interactions over Processes and Tools
Working Software over Comprehensive Documentation
Customer Collaboration over Contract Negotiation
Responding to Change over following a Plan
While there is value in the items on the right, the items on the left are valued more
Agile Methodologies
There are various Agile Methodologies starting from Scrum, eXtreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM), etc. We will dwell into some of these in future videos