Agile Development
Backstory
Agile development is essentially a philosophy developed in response to bureaucratic software development processes.
It is an approach that focuses on the realities of software:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Essentially, it is based on a mistrust of machines, plans, contracts, documents, etc.
The Agile Manifesto was written in 2001 after a number of lighter and more flexible approaches were developed in the 1990s.
- SCRUM
- XP (Extreme Program)
- Etc.
It is also a collection of methods and tools:
- User stories
- Scrum meetings
- Sprints
- Task weighting with cards
- Etc.
Agile is also counter-cultural, like many of the software movements that attended the rise of the web.
Principles
Here are the 12 Principles of Agile SD:
Customer satisfaction by early and continuous delivery of valuable software. → The “early and often” of open source development.
Welcome changing requirements, even in late development.
Deliver working software frequently (weeks rather than months).
Close, daily cooperation between business people and developers.
Projects are built around motivated individuals, who should be trusted.
Face-to-face conversation is the best form of communication (co-location).
Working software is the primary measure of progress.
Sustainable development, able to maintain a constant pace.
Continuous attention to technical excellence and good design.
Simplicity—the art of maximizing the amount of work not done—is essential.
Best architectures, requirements, and designs emerge from self-organizing teams.
Regularly, the team reflects on how to become more effective, and adjusts accordingly.
As you can see, it’s all about giving teams the freedom and trust to creatively respond to client needs and change.
Aside
As an aside, it’s worth noting the effect of the Web on these developments.
- Agile was spurred by the affordances of the Web and open source software
- And for teams to organize organically, without the oversight of governmental bodies or corporations
- Influenced by the success of Open Source tools like Linux
- Consistent with Git as a tool for organically organizing software development.