This lesson is in the early stages of development (Alpha version)

Introduction to Agile

Overview

Teaching: 10 min
Exercises: 20 min
Questions
  • What is ‘Agile’?

  • Why should I work in an Agile way?

Objectives
  • List drawbacks of Waterfall model

  • Describe Agile Manifesto

  • List benefits of following Agile manifesto

What is Agile?

The term ‘Agile’ refers to a broad family of software development methodologies. The core concepts linking these methodologies is iterative development, with frequent interaction between interested parties to decide and update requirements.

Is that all? Well, there is a bit more to it than this, but the best way to get a feel for Agile is to understand why it exists in the first place: it is a reaction to the type of ‘Waterfall’ methodology that was prevalent at the time. Let us first look at what ‘Waterfall’ means, to see the problems that Agile is trying to solve.

Waterfall model

Typically, many real-world (software development) projects are divided into different phases, where each phase depends on the output of the previous phase. We refer to this as the ‘waterfall model’, because each phase flows into the next phase like a waterfall:

Waterfall model

The key is that there is a clear project timeline and agreed-upon deliverables at the beginning of the project. Learn more about the waterfall model here

Discussion

What do you think are potential drawbacks of the waterfall model?

Solution

  • Less customer involvement (only in the beginning)
  • Users usually only really know the requirements once they have working software, but then it is too late.
  • Requirements change during development, these changes are not incorporated so the software does not do what the user needs.
  • No way to know upfront what difficulties you might face
  • Testing happens only at the very end
  • Deadlines are often not met, in practice waterfall projects are delayed a lot
  • Only at the very end of the project there is working software, if you do not reach the end you do not have working software.

Agile manifesto

The Agile way of working contrasts the Waterfall model and mitigates most of its drawbacks. Watch this video introducing the Agile manifesto.

Exercise

These are the 12 principles behind the Agile manifesto. Which of these resonates the most for you?

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Discussion

Think about following the Agile manifesto when working on your projects in a team.

  • What are benefits?
  • What are downsides?

Solution

Benefits:

  • Because the focus is on product quality, you will build better products
  • By incorporating users/customers you bring more value to them.
  • Because of iterative reflective process, the team process keeps on improving.
  • Reduced risk of failing projects
  • Very flexible, changes are introduced easily (normally this can be time-consuming)
  • There is trust in the team and its self-organisation, which boosts morale of the team.
  • By supporting motivated individuals and accommodating to what they need, they will keep motivated.

Downsides:

  • Lack of clear structure can make it easy to get side-tracked.
  • Because of incremental nature it is hard to say when something is done.
  • You need a high level of collaboration that is hard to maintain.
  • You need support from the management to do it effectively.

Summary: Why should I work in an Agile way?

Essentially, Agile works well for projects in which we do not know all the requirements in detail at the start, and in which requirements are likely to change during the course of the project. This is very likely the case in a research project, which naturally have many unknowns and the requirements of software can change as new information is collected. Both Agile and Waterfall are suitable for teams, but an Agile approach gives the team more power to adapt and organize itself.

In short: following the Agile principles helps teams to make the benefits of working in a team outweigh the downsides. See episode 6 for more on the challenges of applying Agile methods in research.

Disclaimer to comparison with waterfall model

It is good to note that the comparison of the Agile movement with the waterfall model is a bit artificial. Agile methodologies are often framed as the way of solving the pitfalls of the Waterfall model, but there have been modifications of the ‘pure’ waterfall model that accommodate these pitfalls too. In fact, they are not mutually exclusive and you could apply principle 12 by picking aspects from the Waterfall model to continuously improve your teams process.

Key Points

  • The Agile manifesto provides good pointers for successfully working on software projects as a team