Why does the agile software development exist? What’s it all about? Why do people use it? Who uses it? How do you use it?

It’s about communication and flexibility, delivering business value sooner, breaking work down into manageable chunks and even automated testing.

It’s a way to provide businesses with the discipline and focus needed to maintain agility and sustainably deliver customer value.

Imgur

“Broadly defined, Agile Project Management is an iterative process that focuses on customer value first, team interaction over tasks, and adapting to current business reality rather than following a prescribed plan” - ThoughtWorks

Agile software development is an approach to software development, and there are others, such as the v-model and waterfall.

Background

The reason why agile has become popular since its inception in 2001 is because one of the major problems with the traditional “waterfall” approach was that work would take months or years to deliver rather than weeks or days, but that’s not all.

The Manifesto for Agile Software Development is based on twelve principles that stem from a long history of trying to bring iterative and incremental development methods to software development by setting standards and principles.

In 2001, seventeen software developers met at a resort in Snowbird, Utah to discuss these lightweight development methods, including among others Kent Beck, Ward Cunningham, Jeff Sutherland, Ken Schwaber, Jim Highsmith, Alistair Cockburn, and Bob Martin. Together they published the Manifesto for Agile Software Development.

Before the agile manifesto, there were a number of methodologies and frameworks such as Kanban, Scrum, from 1995; Crystal Clear and extreme programming (XP), both from 1996. The principles behind these were fed into the agile manifesto.

Values and Principles

The agile software development approach is founded in a set of four core 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. This forms the basis which form what they believe to be a better way to software development.

The Manifesto for Agile Software Development is outlines twelve principles:

  • Customer satisfaction by early and continuous delivery of valuable software
  • Welcome changing requirements, even in late development
  • Working software is delivered 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

The benefits are quite straightforward:

  • It means you can be more adaptive rather than predictive, in a very fast moving industry, this is important.
  • It means you can deliver iteratively, rather than a big bang release, helping to alleviate big problems and lots of stress.
  • Importance is put on face to face communication, with a view to optimise the return on investment (ROI) and ensure alignment with customer needs and company goals.
  • The feedback loop shortens as you close the feedback loop and listen to the customer is essential to adapt.
  • Quality improves as everyone is responsible for quality.
  • Good code, processes and tools, as well as easy to use software means less comprehensive documentation is needed.
  • Being agile means you can tailor your methods to suit your needs, by having a good foundation in principles, you can choose the right methods for what you need
  • You can scale due to a stronger alignment between teams

That doesn’t mean agile is without its pitfalls, they come with some warnings and anti-patterns.

We’ll talk more about warnings in the next part…