Agile software development is gaining a lot of popularity due to its incremental nature, flexibility to change and its multi-faceted collaborative and self-organizing teams. This provides the perfect solution for companies such as startups that are not resource heavy and who need to respond to market conditions pretty quickly. Modern day Agile owes its proliferation to the Agile Manifesto which was published in 2001 by a group of veterans who came together to discuss lightweight and flexible development methods. The rest, as they say, is history!
There are several popular Agile processes such as Extreme Programming or XP, Scrum, pair programming, acceptance testing and feature driven development to name a few. Perhaps the most popular and widely used today is Scrum. Scrum was formalized in 1993 by Ken Schwaber and Dr.Jeff Sutherland. Scrum has been successfully implemented at many top organizations round the globe such as Yahoo, Capital One, GE and Thoughtworks. So what exactly is Scrum, and how is it different from the many other methodologies or frameworks out there?
The word ‘scrum’ is derived from the game of rugby where a team collectively moves down the field to reach its goal. Scrum is an empirical process that encourages teams to challenge themselves a little more every time. Scrum follows a process of ‘Inspect’ and ‘Adapt’. Frequent inspection exposes issues or barriers and the team then adapts its approach as needed. This shorter feedback loop ensures that any product flaws are fixed early in the cycle.
Scrum is made up of certain roles, artifacts and time boxes. A Scrum team is made up of 5-7 people. Let us have a brief look at the various components of Scrum.
Scrum defines only three roles for its development team. These are the Product Owner, the Scrum Master and the Team. There is typically one Product Owner who serves as the customer or customer proxy and finalizes the requirements. The Scrum Master is the process owner who mainly works on removing any barriers the team faces and ensures that Scrum is followed correctly. The Team is any team member other than the Product Owner or Scrum Master. This could be a programmer, tester, business analyst, architect etc. Scrum encourages its team members to wear different hats and it is very common to find team members pitching in as and where needed.
In Scrum lingo, the team members are called pigs whereas external resources are called chickens. This stems from a story about a pig and chicken planning to open a restaurant called ‘ham and eggs’. The pig would be ‘committed’ since its hide is on the line. The chicken is only ‘involved’.
Scrum is made up of iterations or ‘sprints’. These may have any length ranging from one week to four weeks. Sprints start and end at a fixed time irrespective of whether the targeted work is finished. This aspect is called a ‘time box’ which will be explained below in further detail.
The main artifacts that are produced in Scrum are the Product Backlog, Sprint Backlog, Sprint Burndown and Release Burndown.
The Product Backlog is an ordered list of all the features that the customer might want in the product. The highest priority features are at the top ensuring that the most important and highest value functionality is built first.
The Sprint Backlog has a limited scope. It consists of features from the Product Backlog that are going to be built in that particular sprint. Any work that is not done at the end of the sprint goes back to the product backlog for reprioritization.
The Sprint Burndown chart tells us how much time is left before we reach our goal. It tracks the work done every day and is relevant only for the given sprint.
The Release Burndown chart tracks the time left up to the end of the release. It also portrays how much work is done with respect to release goals.
Scrum introduces the concept of a time box. This means that a given event will have a fixed time and will expire at the end of the time limit. The various meetings in Scrum are allocated a timebox. The Scrum time boxes include the Sprint planning meeting, Release planning meeting, the Daily Scrum, Sprint review and retrospectives. The Daily Scrum or standup is always 15 minutes. The other planning meetings also have a fixed time depending on the Sprint length that the team decides on.
Scrum Acceptance Criteria
Scrum introduces the concept of ‘done’. This is also called success criteria or acceptance criteria and outlines the conditions a particular feature must meet in order to be considered ‘done’ or complete.
Scrum Story Boards and Collocation
The story board – used to portray the Sprint Backlog – is another mainstay of the Scrum process. This is a physical board in the team which could be part of a wall or several walls as needed. There is a concept of a ‘story’ which is a feature or high level requirement. Typically, any item from the product backlog could become one or many stories. The story states what the user accepts from a given feature. For example, ‘As a user, I should be able to log in to my email’. The success criteria outline the things that must happen to consider this ‘done’. All the tasks needed to plan, design, code and test this story are placed under this. These tasks could be done by several people on the team.
Scrum encourages collocating all the team members in an open group area minus walls. The idea is to encourage open communication and reduce overheads from emails or phone calls. Impromptu discussions between the customer and team members are pretty common in a Scrum room.
The Scrum artifacts are displayed throughout the area where the team sits and works. These include story boards, backlogs, burndown charts, barrier section, architecture maps, designs etc. The idea is that any relevant information should be easily visible to the team all the time. This is informative as well as motivational. The information radiates or jumps out from all the charts and boards. Color coding is used to differentiate tasks, stories, barriers etc. A lot of software tools are available for tracking Scrum projects, but it cannot replace the effect physical information radiators have in my opinion.
The retrospective deserves special mention. This is where the team comes together at the end of a sprint and openly talks about what went well and what could be done better. A retrospective is not to be used for finger pointing. Retrospectives become more effective as a team gels and team members trust each other and the management. This is necessary to uncover impediments that people may be hesitant to speak about in a typical controlling management structure.
Scrum in the Global Scenario
Even though Scrum encourages collocation, it may not always be possible, especially in the case of distributed teams that are in multiple geographic locations. Scrum has been proven to be effective even in such situations and many teams practice distributed Scrum.
This is a high level introduction to Scrum. In the coming weeks, we will be taking a closer and more detailed look at the various Scrum concepts discussed in this article.