Overview and the Agile Manifesto

Structured method have been criticised for not having a way to manage the unexpected or the uncertain. Additionally, from a management point of view, once the design and the timescale have been agreed, legal and commercial interests come into play that place huge constraints on the development team. To a certain extent, the rigid structure of the waterfall model was the result of a misinterpretation of Royce’s original paper. It was an oversimplification that downplayed the challenge of creating a comprehensive design in advance of any development work.

The need for a more nuanced approach to the management of software development was recognised by many pioneering figures from the 1980s onwards. Several methodologies were proposed that were based on the principles of iterative prototype building and incremental refinement of requirements. Some notable examples are RAD (Martin, 1991) and Dynamic Systems Development Method (DSDM) reviewed by Millington and Stapleton (1995).

The final move to a dynamic approach that prioritised the incremental nature of software development occurred in 2001 with the publication of the Manifesto for Agile Software Development. It marked a major paradigm shift and Agile has become the preferred approach to software development projects for many companies. According to some sources, up to 94% of companies practice agile to some extent, although only 52% use Agile for the majority of projects.

Agile values

The Manifesto for Agile Software Development outlines four key value statements that guide Agile software development. Each value highlights a shift in focus from traditional methodologies toward a more flexible, people-centered approach.

Individuals and Interactions over Processes and Tools

Agile prioritises human collaboration and communication as the driving forces of success. While processes and tools are important, it’s the ability of team members to work together effectively that ultimately leads to high-quality outcomes. Emphasising collaboration ensures teams can quickly resolve problems, adapt to change, and innovate.

Working Software over Comprehensive Documentation

Agile focuses on delivering functional software that meets user needs, rather than creating exhaustive documentation that may not add immediate value. While documentation has its place, the primary goal is to build software that works, and Agile ensures that the product is always prioritised over paperwork.

Customer Collaboration over Contract Negotiation

Agile fosters close collaboration with customers throughout the development process, ensuring their feedback shapes the product. Rather than relying solely on predefined contracts or rigid agreements, Agile encourages ongoing dialogue with customers to adjust and adapt the product to meet their evolving requirements. This leads to better customer satisfaction and more relevant software solutions.

Responding to Change over Following a Plan

Agile embraces the reality that requirements and priorities can shift throughout a project. Rather than sticking rigidly to a predetermined plan, Agile teams are empowered to adapt to new information and changing circumstances. This flexibility allows them to deliver the most value to customers, even if it means changing course mid-project.

Warning!

Do not misinterpret these values! They do not imply that you can forget about planning entirely or that standardised processes are not important. Adapting to change does not mean that you should be a continual victim of events. Agile is not the absence of rules - it is simply better rules. The most common mistakes when attempting to apply an Agile approach are:

  • Ignoring processes, tools, or documentation entirely
  • Failing to empower teams to make decisions and collaborate effectively
  • Delivering incomplete or low-quality software in the name of speed
  • Allowing customer demands to cause scope creep or lose focus
  • Abandoning planning or overreacting to change without a balanced, thoughtful approach

Agile principles

On their own, the four values are not detailed enough to act as a framework for development. The Manifesto develops them as the 12 principle listed below, and named methodologies such as Scrum refine them even further into usable processes.

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

In a collaborative software development project, customer satisfaction drives the process. This principle emphasises the importance of delivering functional pieces of software early and frequently. By doing so, teams can gather feedback from stakeholders throughout the project, ensuring that the software remains aligned with customer needs and business objectives. Instead of waiting until the end of the project for delivery, each iteration produces a tangible, valuable result, increasing stakeholder confidence and reducing the risk of misalignment between expectations and the final product.

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

Collaborative teams recognise that requirements often evolve as stakeholders gain a deeper understanding of the project’s goals or as market conditions change. This principle encourages flexibility, allowing the team to adapt even during later stages of development. By welcoming change rather than resisting it, the team can deliver software that provides a competitive edge. In this context, team members work closely with stakeholders, regularly reviewing requirements to ensure the final product meets the evolving needs of the business or customer, rather than sticking rigidly to an outdated specification.

3. Deliver working software frequently, with a preference for shorter timescales.

Collaborative software development thrives on frequent, iterative deliveries that demonstrate progress to stakeholders. Short timescales, typically within a few weeks, allow the team to focus on completing small, manageable increments of the product. Each delivery of working software fosters a sense of accomplishment, keeps the project moving forward, and provides regular opportunities for feedback. This continuous delivery process builds trust with the customer, as they can see tangible results and offer input early and often, reducing the risk of surprises at the end of the project.

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

In collaborative environments, close cooperation between business stakeholders and the development team is crucial to ensuring that the project remains aligned with the business goals. Daily interactions help resolve misunderstandings quickly, clarify requirements, and prioritise work effectively. Whether it’s through stand-up meetings, workshops, or informal discussions, these frequent touchpoints help to bridge the gap between technical implementation and business objectives. This principle emphasises that collaboration between both sides leads to a more informed, responsive, and adaptive development process, ultimately delivering more value.

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

Successful collaborative projects rely on teams of motivated, self-organising individuals who are given the autonomy to make decisions and take ownership of their work. This principle highlights the importance of trust and empowerment within the team. When developers, testers, and designers feel trusted and supported, they are more engaged and productive. Providing an environment that fosters creativity, accountability, and problem-solving ensures that the team is equipped to overcome challenges and deliver high-quality software. The team’s motivation directly influences the success of the project.

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

Direct, face-to-face communication fosters collaboration and quick decision-making in software development projects. While tools like email or documentation have their place, in-person conversations (or video calls in remote settings) are the most effective way to resolve issues, clarify misunderstandings, and share ideas. Face-to-face communication allows team members to quickly ask questions, discuss solutions, and gain immediate feedback, reducing the potential for delays or miscommunication. In a collaborative project, this method accelerates the flow of information and enables teams to stay aligned.

7. Working software is the primary measure of progress.

In Agile, the focus is on delivering functional software, not on the volume of documentation or the completion of tasks. In a collaborative project, this principle helps ensure that the team remains aligned on what matters most: producing software that works and delivers value. Regularly delivering working software provides a tangible measure of progress that stakeholders can review and test. This approach keeps the project moving forward, as the team can continuously refine and improve the product based on real feedback rather than theoretical completion markers.

8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Collaborative teams strive for a steady, manageable pace throughout the project to avoid burnout and maintain productivity over the long term. Sustainable development means setting realistic goals and avoiding periods of intense work followed by downtime. In a team environment, this constant pace ensures that all members, including sponsors and end users, can stay engaged and contribute consistently. This approach leads to higher-quality work and a more enjoyable work environment, which ultimately improves the team’s effectiveness and the project’s outcome.

9. Continuous attention to technical excellence and good design enhances agility.

Technical excellence and strong design practices form the foundation for an Agile project’s flexibility. In a collaborative environment, team members focus on writing clean, maintainable code and designing robust systems that can adapt to changes. This principle emphasises that high-quality engineering is essential for remaining responsive to new requirements or shifts in direction. By focusing on technical excellence, the team ensures that the software is scalable, easier to modify, and less prone to bugs, which supports the Agile goal of quick iteration and adaptation.

10. Simplicity — the art of maximising the amount of work not done — is essential.

Agile promotes simplicity, encouraging teams to focus on doing only what is necessary to deliver value. In collaborative software development, this means avoiding unnecessary complexity or features that don’t directly contribute to the project’s goals. Teams must prioritise the most important tasks and eliminate waste. By focusing on simplicity, the team can deliver value faster, reduce the risk of overengineering, and create a product that is easier to maintain and scale. This principle ensures that the team remains focused and efficient.

11. The best architectures, requirements, and designs emerge from self-organising teams.

Self-organising teams have the autonomy to decide how best to approach their work, which leads to better problem-solving and innovation. In collaborative projects, this principle empowers team members to take ownership of architecture, design, and implementation decisions. By encouraging collaboration and trust within the team, Agile creates an environment where the best ideas can come from anyone, not just senior leaders. This autonomy allows the team to respond quickly to changes and find creative solutions that fit the project’s unique challenges.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Agile values continuous improvement through regular reflection. In collaborative projects, teams hold retrospectives at the end of each iteration to assess what worked well and what didn’t. This practice encourages transparency and open communication, allowing the team to learn from their experiences and improve processes for the next iteration. By consistently reflecting and adjusting, the team becomes more efficient, productive, and cohesive over time, leading to better outcomes and a more effective development process. This principle reinforces the idea that no project is ever static—there’s always room for growth.

Practical tips for getting started with Agile

Further reading