Tuesday, 29 November 2016

Agile and Scrum

Agile development is an iterative and flexible process. Rather than specifying all the requirements of a project up-front and adhering to them throughout the development process (as happens in waterfall development), the requirements are listed as items in a product backlog. Specifiying software in this flexible and responsive way is better for customers and better for users.

The product backlog is prioritised by the 'product owner' (a role that represents the business users of the product to be developed). They can change the priority of an item in the backlog at any time.

Each item in the product backlog represents a block of work to be done, which should ultimately result in 'shippable product', otherwise known as a feature that users can use. Items in the product backlog are called 'user stories', which can be an epic (an overarching dewcription of some functionality), a spike (a time-boxed investigation), a bug (broken functionality that needs fixing), or a feature (a piece of functionality that delivers business value).

The development team commits to doing a number of user stories in a set time period which is known as a sprint. While the team is on the sprint, they should not be distracted by other work, and one of the roles of the scrum master is to protect the team from such distractions.

The Agile Manifesto

The Agile manifesto was written by a group of developers who wanted to create better software using better methodology. It prioritises the following:
  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

A typical sprint

  • The product owner updates the product backlog to prioritise the stories
  • The team breaks each user story down into sub-tasks (discuss in pairs)
  • At the estimation meeting, the team estimates the next 15-20 stories in the backlog
  • At the sprint planning meeting, the sprint is created from a manageable number of stories, based on previous team velocities (extracted from the burndown chart)
  • The team works on the sprint for around two weeks
  • There is a daily stand-up (what did you do yesterday? what will you do today? do you have any impediments?)
  • Completed tasks move across the scrum board
  • At the end of the sprint, there is a review meeting, where team members demonstrate shippable product (working components of the system)
  • Then there is a retrospective meeting, where people review the working practices and how the sprint went

Key features of Scrum

  • Estimation meetings, retrospectives
  • Scrum board, sprints
  • User stories


  • Constant visibility of progress
  • Anyone can pick up any task


  • Amount of time spent on planning, estimation and retrospectives
  • Can be invasive if it requires 360ยบ feedback
  • Does not account for varied roles in the team - "generalising specialists"

Further reading