Agile software development: Scrum

Software development can be done in lots and lots of different ways. A software company, whether it develops in-house software or software on order (or both), probably has adopted one of the more well known ideologies for this.

The Waterfall model, a non-agile development methodology

For a long time, sequential software development was prevalent. One of these methods is known as the Waterfall model (see the image on the left). The Waterfall model originated in the manufacturing and construction industries, where after-the-fact changes were costly to say the least.

A Waterfall has several blocks, as you can see in the picture. Every ‘block’ has its own specialists who work on it. When one is completed, the work is handed down to the next block, making going back impossible (down, not up). So requirements were not allowed to be altered after the design started, and the design could not be altered when the implementation started.

As you can imagine, this form a very rigid and un-agile software development model. This may have worked fifteen years ago, but the world has sped up since then, and software development needs to change along with it.

Scrum, or SCRUM

Scrum (sometimes written capitalized SCRUM) is an agile software development methodology that has been used in large corporations such as Microsoft, IBM, Google and Crowd Control Productions (CCP) in their development of the MMO Eve Online (click here to see a presentation of CCP about Scrum and Eve on EVE Fanfest 2009).
Although considered ‘new’ by some people, Scrum was actually introduced by Hirotaka Takeuchi and Ikujiro Nonaka in 1986. In 1991, DeGrace and Stahl named this approach Scrum, after a rugby term where the whole team “tries to go to the distance as a unit, passing the ball back and forth”.

A graphical representation of the Scrum process

So, what is so agile about it and why is it more usable than the Waterfall model?
People are divided into teams (one or more) of 5 to 9 people, which will be working together for at least one “sprint”; a period of one to four weeks where a predetermined amount of features are developed. These features are taken from the ‘product backlog’; a list of prioritized items that need to be implemented in the software. This backlog is created by the Product Owner, which may be the customer, and prioritized by the Product Owner as well.
It is important to note that the team is represented by people from all relevant specialties. This may include programmers, testers, database specialists, and others.
At the beginning of a sprint cycle, the team will select the items from the product backlog it thinks can complete in the time set for the sprint (typically one to four weeks in length). These items become the ‘sprint backlog’, and contain a list of things that need to be done in a high level way. For example, so-called ‘user stories’ can be used for this. Simply put, this is a small description of the feature: “As a user, I would like to be able to send private messages to other users”, or “As an administrator, I would like to be able to ban spammers”. These user stories can not be changed during the sprint, but they can be changed before or after. The user stories are expanded into tasks, which typically take 1 to maximal 16 hours to implement.

Every day, there is a ‘daily scrum’, which is a short meeting (typically limited to 15 minutes) where every team member answers three questions:

  1. Wat have you done yesterday?
  2. What are you going to do today?
  3. Are you running into any problems?

The Scrum Master is the ‘manager’ of the team, and is responsible for making sure the team performs optimally. This includes solving any problems team members might encounter, which can be anything from a broken calculator to customer service for a supplier not returning their calls.

When the sprint is over, there is a ‘potentially shippable product’ (e.g. the software builds and runs), and a demo is held to showcase the work done during the sprint. Then, new items can be picked from the product backlog and the next sprint can commence.

Tip of the iceberg

I think Scrum is a promising way to develop software, especially to add features or update existing software. It’s too bad you need a whole team to implement it, though, but perhaps I will use a slightly modified version on my one person projects. It is only a framework, after all.

The information in this blog post is only the tip of the proverbial iceberg. There is so much more the Scrum, that it would take me ages to type a blog post on it. If you’re interested in reading more about Scrum, I suggest you take a look at the following web sites.

  • Trackback are closed
  • Comments (0)
  1. No comments yet.

Comment are closed.