Scrum

Perhaps the most popular of Agile methods today, Scrum is an project management framework that encourages teams to self organize and deliver functionality iteratively in two week time boxes called sprints.

agile scrum overview

The Product Backlog is the to do list for the project. It contains a list of all the features the Product Owner would one day like to see in their software. It’s prioritized, estimated, and what the team draws from when deciding what to do in a iteration or sprint.

What the team commits to each sprint is tracked in a Sprint Backlog. It contains a list of user stories the Product Owner would like to developed for that sprint.

The sprint is the Scrum version of an Agile iteration. This is the two week period where the team gets stuff done. Scrum likes to call the output of a sprint potentially shippable product to remind us that this is production ready stuff and we could ship it if we had to.

Scrum sprints don't have to be two weeks in length. In fact the original Scrum sprint was 30 days. But most teams found this too long and two weeks seems to be about right for most teams.

The Daily Scrum is ten minute daily huddle where all team members quickly get together to form plan of attack for the day. At this meeting team members are asked to answer three simple questions:

  1. What did you do yesterday?
  2. What will you today?
  3. Is there anything blocking your way?

Key Practices

roles blur on agile projects

Roles blur

Self organizing teams

Scrum, like most Agile methods, favors cross functional teams. There are no formal titles or roles on Scrum projects (save Scrum Master and Product Owner). People still have their areas of specialization (tester, analyst, developer) but the expectation is that people work outside of traditional narrowly defined titles or roles and do whatever it takes to make the project a success.

Scrum Master

Scrum likes have a dedicated coach called a Scrum Master help the team reach optimal performance by watching the overall Scrum process. They aren’t Project Managers in the sense that they tell people what to do. Rather they facilitate, monitor and make recommendations ensuring the team is consistently delivering shippable product.

Like a Project Manager, they shelter the team from outside distractions, but mostly they get out of the way, play a servant leader type role, and help the team focus on that Sprints user stories.

Product Owner

Next to the Scrum Master, the only other dedicated role on a Scrum project is the Product Owner. The Product Owner is the customer on a Scrum project. They decide what gets built, the order it gets built in, and are the source of truth for any user story requirements.

It’s probably one of the hardest roles to play on a Scrum project (because of all the trade-offs and decisions they need to make). It’s also the most crucial as the team executes on the Product Owners vision.


Scrum the good

Scrum has a lot going for it. Through it’s ease of adoption, and non-threatening nature, it has become the Agile method of choice for most companies.

It promotes a lot of important Agile principles (iterative development, self organizing teams, delivering shippable product) and it’s certification program has made it attractive for companies looking for ways to train their people in the Agile arts fast.

Scrum the bad

The challenge with Scrum is that it’s a project management framework - not a software delivery framework. It is silent on engineering. And the engineering really matters in Agile. Nothing works without it.

And this is what gets some teams into trouble. It’s easy to show up for daily standups, and do sprint planning. The hard part about software is … well writing great software. And this is where if you are going to do Scrum, it is essential you supplement it with really good software engineering practices - like those described in Extreme Programming (XP).

A Popular Choice = Scrum + XP

For that reason, any Scrum team serious about delivering high quality working software will supplement the process with sound engineering practices like:

  • Automated unit testing
  • Refactoring
  • Continuous integration
  • Test-Driven Development

This is a great combo because it leverages the popularity of Scrum with the sound engineering practices of XP.