Table of Contents
Agile
Agile is a broad family of software development approaches that emphasise iterative delivery, collaboration with customers, and responding to change over following a fixed plan. The term was formalised in 2001 when seventeen software developers published the Agile Manifesto, which states four values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The manifesto does not prescribe a specific process. Agile is an umbrella term; Extreme programming (extreme programming), Scrum, and Kanban are all agile methodologies.
Scrum
Scrum is the most widely used agile framework. Work is organised into fixed-length sprints (typically two weeks). At the start of each sprint the team selects a set of items from the product backlog and commits to completing them. At the end, the team reviews what was built with stakeholders and holds a retrospective to improve the process.
The key roles are the product owner (decides what to build and prioritises the backlog), the scrum master (facilitates the process and removes blockers), and the development team.
Contrast with waterfall
The traditional waterfall model divides a project into sequential phases: requirements, design, implementation, testing, deployment. Each phase is completed before the next begins. This works when requirements are stable and fully understood upfront, which is rare in software.
Agile treats requirements as evolving. Instead of defining everything before writing code, agile builds incrementally, learns from real usage, and adjusts direction. The cost is that the final shape of the system is less predictable upfront, which is uncomfortable for fixed-budget contracts but often produces better outcomes for the actual users.
