Agile Software Development: An Introduction

Agile software development describes a set of values and principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. [Wikipedia]

But what really is agile?

According to the Agile Alliance, Agile is:

“The ability to create and respond to change in order to succeed in an uncertain and turbulent environment.”

This is especially important when building software as it is inherently unpredictable. Creating software is a bespoke process and not a commodity skill. Therefore methods that allow quick feedback are vital.

The 12 Principles of Agile Software Development:

  • 1. Customer satisfaction by early and continuous delivery of valuable software;
  • 2. Welcome changing requirements, even in late development;
  • 3. Working software is delivered frequently (weeks rather than months);
  • 4. Close, daily cooperation between business people and developers;
  • 5. Projects are built around motivated individuals, who should be trusted;
  • 6. Face-to-face conversation is the best form of communication (co-location);
  • 7. Working software is the primary measure of progress;
  • 8. Sustainable development, able to maintain a constant pace;
  • 9. Continuous attention to technical excellence and good design;
  • 10. Simplicity — the art of maximizing the amount of work not done — is essential;
  • 11. Best architectures, requirements, and designs emerge from self-organizing teams;
  • 12. Regularly, the team reflects on how to become more effective, and adjusts accordingly. [link]
  • The Agile Manifesto resulted in an agreed set of 4 values and 12 principles between the group, which form the basis of Agile Software Development and are still in common use today.

    Agile