The term Agile was introduced in 2001 by the Agile Manifesto. Agile is the umbrella term used to refer to software development methodologies where software is developed iteratively and incrementally through close collaboration between developers and product stakeholders. Agile methodology aims at delivering working software rapidly and incrementally, as opposed to the traditional waterfall delivery model where software is built over longer durations.
Agile is mostly characterized by Sprints. A sprint is a “time-boxed” duration – usually as short as two or three weeks. During this period, the team goes through the entire development process of requirement analysis, design, coding and testing. The product at the end of each sprint is a working piece of software which can be tested successfully. For sprint development, larger tasks are broken into smaller units generally referred to as “stories”. Each story is a fully testable and deliverable task with a well-defined set of acceptance criteria. At the start of the development iteration, the team evaluates all stories for their complexities and weighs them in terms of “story points”. Story points could be as simple as low, medium, and high classifications, to more complex evaluation strategies. All these stories go into a product backlog. The product manager then assigns priorities to each of these stories based on stakeholder inputs and business requirements. Stories are assigned to sprints and the development team sets objectives to complete the story in the time-boxed sprint duration. Each story is considered delivered when it successfully tests against all its acceptance criteria. The product backlog defines what is delivered and when it is delivered. The product manager constantly monitors the product backlog by managing priorities and the velocity of delivery within the team.
Agile helps in delivering value quickly to your customer. You can have a workable piece of software to deliver to your customer as early as your first sprint and then add more functionality iteratively. Agile emphasizes strong teamwork and continuous feedback. Constant communication within the team and between product stakeholders is vital for successful Agile development. Since there is constant feedback from the client, Agile helps in managing requirements and expectations effectively. Agile is best suited with co-located teams because co-location provides an open channel of communication between all stakeholders. Additionally, it is considered best suited for low criticality applications and small sized teams with very experienced developers.
Agile also introduces several development paradigms like Pair programming and Continuous integration. There are several approaches to Agile development, however the most notable methodologies are Scrum, Extreme Programming and Kanban.