Software Engineering Principles and Practices / Agile Software Development

Agile Manifesto Principles

The Agile Manifesto was drafted in 2001 by seventeen software developers who sought a better way to build software than the traditional, document-heavy "Waterfall" method. It consists of 4 Core Values and 12 Guiding Principles.


🚀 The 4 Core Values

The manifesto states that while there is value in the items on the right, we value the items on the left more:

  1. Individuals and interactions over processes and tools.

  2. Working software over comprehensive documentation.

  3. Customer collaboration over contract negotiation.

  4. Responding to change over following a plan.


📜 The 12 Principles of Agile

These principles provide the "how-to" for teams looking to implement Agile effectively.

1. Customer Satisfaction

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2. Welcome Change

Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

3. Frequent Delivery

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale.

4. Collocated Teams

Business people and developers must work together daily throughout the project.

5. Motivated Individuals

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

6. Face-to-Face Conversation

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

7. Working Software as Progress

Working software is the primary measure of progress. (If it doesn't run, it doesn't count toward completion).

8. Sustainable Development

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. (Avoid "crunch time").

9. Technical Excellence

Continuous attention to technical excellence and good design enhances agility.

10. Simplicity

Simplicity—the art of maximizing the amount of work not done—is essential. (Don't build features the user hasn't asked for yet).

11. Self-Organizing Teams

The best architectures, requirements, and designs emerge from self-organizing teams rather than top-down command.

12. Regular Reflection

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. (Often called a "Sprint Retrospective").


📊 Agile vs. Waterfall: The Practical Difference

Feature

Waterfall

Agile

Requirements

Fixed at the start.

Evolving throughout.

Delivery

Once, at the very end.

Iterative (Small pieces).

Customer Role

Involved at start/end.

Involved throughout.

Risk

High (errors found late).

Low (errors found early).


💡 Why does Agile matter?

In the modern world, market conditions change fast. If you spend 2 years building exactly what a customer asked for in 2024, by the time you deliver it in 2026, their needs have likely changed. Agile allows you to course-correct every 2 weeks.