Scrum is a process that we have adopted to improve our development process and increase our software productivity.
Previously our developers would work independently on a piece of work from start to finish, this could be a 1 hour task or a 100 hour task. Often a large task would take longer than estimated due to interruptions, distractions, inaccurate estimates, sheer scale of the project and numerous other factors. Occasionally a couple of developers would work on a particularly large piece of work, but that wasn’t the norm.
With Scrum a team of developers are all working together, large tasks are broken down into much smaller manageable chunks, the developers pick and choose what they want to work on, the team estimate the work and commit to the work they can complete in a fixed time period. Thus they are all pulling in the same direction, working to a common goal to deliver completed work in a relatively short space of time.
The following are all key elements to scrum, that I will explain in more detail throughout this article:
Before I start explaining how we use scrum, there are some terminologies used in Scrum that I’d better explain first, these are:
Our Sprints normally last 2 weeks and always start with a Sprint Planning Meeting, this is when all members of the scrum team get together to discuss Stories that are awaiting development in the Product Backlog, these Stories have already been prioritised prior to the meeting.
At the start of the meeting we estimate how much time we have available, taking into consideration number of developers, holidays, etc, and allowing some contingency. This gives the team a good idea how much work they can put into a sprint / commit to.
During the meeting, we go through these Stories, discuss them, break them down into manageable smaller chunks (tasks) and estimate them. In Scrum no single task should take longer than 16 hours, so if a Story is estimated at say 32 hours, this may get broken up into half-a-dozen tasks (we don’t just break up the large tasks, smaller tasks would also get broken up).
We use a product called Trello (https://trello.com/), to manage our Task Board. Trello allows the creation of Boards, Lists and Cards, it’s not specifically designed for Scrum, but it’s one of the best products available for managing an electronic task board (it’s also great for managing any sort of to-do list).
We have quite a few Trello Board’s, but the key ones we use for Scrum are:
Each Sprint Board contains the following Trello Lists:
Each Trello List contains Trello Cards, we use a card for each Story or Task. So our ‘Product Backlog’ contains a Trello Card for each Story, and our Sprint Board contains a Trello Card for each Task.
During the Sprint Planning Meeting we create Tasks from the Stories, these Tasks get placed into a ‘Sprint Backlog’.
We also a browser plugin called ‘Scrum for Trello’ (http://scrumfortrello.com/), as this helps to see a total time allocated to the ‘Sprint Backlog’.
During a sprint the developers assign themselves to cards (they choose what they want to work on) and they move the cards around the board as they work on them (i.e. Sprint Backlog -> In Progress -> Code Review -> Ready for Testing -> Testing -> Done).
Daily Scrum Meetings
At the start of each day we have a scrum meeting, this occurs every day at the same place and same time.
When we first started doing scrum, we used held these in the Kitchen, but we have since moved to carrying them out in an Office at 9.30am, the Office allows us to display our Task Board on a large screen, which helps everyone know what each person is talking about and we can visually see how much work in in progress, in the backlog, etc.
These meetings last no longer than 15 minutes, and at the meeting each member answers the following questions:
The Sprint Burndown Chart is also available during the meeting, this helps everyone to see if we are on-track, ahead or behind schedule.
Sprint Burndown Chart
This is a graphical representation of the current sprint showing:
We store our burndown chart in a Google Spreadsheet, which is shared with all the developers, so they can view it at any time.
To generate the spreadsheet and keep it up to date (automatically) we use Google Apps Script that integrates with the Trello API to obtain the latest information on a 5 minute interval. The Google Apps Script was obtained from: http://lsjuanny.wordpress.com/2012/08/17/step-by-step-create-trello-burndown/ but I’ve tweaked it slightly to better suit our needs.
Sprint Retrospective Meeting
At the end of the sprint, we have a sprint retrospective meeting (just before the Sprint planning meeting), at this meeting we discuss how things went during the current sprint (what went well, what can be improved).
I hope this short explanation of how we have adopted scrum will help other development teams to start using scrum.
The following sites have a wealth of information about scrum:
I also found the following Scrum Cheat Sheet very helpful when we first started Scrum: http://www.scribd.com/doc/2370861/Scrum-Cheat-Sheet