An Interest In:
Web News this Week
- April 16, 2024
- April 15, 2024
- April 14, 2024
- April 13, 2024
- April 12, 2024
- April 11, 2024
- April 10, 2024
SCRUM: The Story of an Agile Team
Scrum is one of the most heavily used agile techniques. It’s not about coding; instead, it focuses on organization and project management. If you have a few moments, let me tell you about the team I work with, and how we adopted Scrum techniques.
A Little History
Scrum’s roots actually extend beyond the Agile era.
Scrum’s roots actually extend beyond the Agile era. The first mention of this technique can be found in 1986, by Hirotaka Takeuchi and Ikujiro Nonaka, for commercial product development. The first official paper defining Scrum, written by Jeff Sutherland and Ken Schwaber, was presented in 1995.
Scrum’s popularity grew shortly after the 2001 publication of the Agile Manifesto, as well as the book Agile Software Development with Scrum, coauthored by Ken Schwaber and Mike Beedle.
A Few Facts
Scrum defines a set of recommendations, which teams are encouraged to follow. It also defines several actors – or roles, if you prefer that terminology – together with an iterative process of production and periodical planning. There are several tools, which accommodate the Scrum process. I will reference a few in this article, but the most powerful tools are the white board and sticky notes.
There is not, and never will be, a list of “Scrum Best Practices,” because team and project context trumps all other considerations. — Mike Cohn
The Roles
Everything starts with the pig and the chicken. The chicken asks the pig if he is interested in jointly opening a restaurant. The chicken says they could call it, “Ham-and-Eggs.” The pig answers, “No thanks. I’d be committed, but you’d only be involved!“
That’s Scrum! It specifies a concrete set of roles, which are divided into two groups:
- Committed – those directly responsible for production and delivery of the final product. These roles include the team as a whole, its members, the scrum master, and the product owner.
- Involved – represents the other people interested in the project, but who aren’t taking an active or direct part in the production and delivery processes. These roles are typically stakeholders and managers.
This is How We Started
Everything depends on dedication and good will. If you want your team to be efficient, productive, and deliver on time, you need someone to embrace some form of Agile techniques. Scrum may or may not be ideal for you, but it is surely one of the best places to start. Find that someone on your team who is willing to help the others, or you, yourself, can take on the responsibility of introducing Scrum.
You may ask why you should care how another team, like mine, does Scrum. You should care because we all learn how to do Scrum better by hearing stories of how it has been done by others – especially those who are doing it well. – Mike Cohn
The talented team I work with already knew a lot about Agile. We switched from Waterfall development to a more agile process, and released quite frequently. We successfully managed to release every three to six months, having a decently low number of bugs after each release.
But, still, we were far from what we can achieve today. We missed the process, or rules, that would force us to change our perspective on the product and process. That was the moment when our team manager introduced us to Scrum, a term we, at that time, had never heard of.
This person took the role of the Scrum Master.
The Scrum Master
The Scrum Master is easily one of the most important roles. This person is responsible for creating a bridge between the Product Owner (defined below) and the Team (also defined later). This person usually possesses a strong technical knowledge, and actively participates in the development process. He or she also communicates with the Product Owner about the User Stories, and how to organize the Backlog.
The Scrum Master coordinates development processes, but he does not micro-manage (the team is self-organized). At the beginning of the process, however, the Scrum Master might micro-manage part of the team, in order to improve their team interaction and self-organization techniques.
Scrum Masters have more responsibilities, and I’ll cover them as we discuss this process.
Introducing the Term “Sprint”
Personally, we don’t have any problem with three to six month releases, but I originally couldn’t imagine such a frequent release schedule. I thought it was too fast, and didn’t provide us with the necessary time to integrate and debug our products. But then, our Scrum Master introduced us to the term, sprint.
Spring: a basic unit of development in Scrum. It can take between one week and one month, and the product is in a stable state after each sprint.
That sounds outrageous! Stable every week> Impossible! But, in actuality, it’s quite possible. First, we reduced our production cycles from three months to one-and-a-half months, and, finally, to a single month. All of this was accomplished without changing our style. However, you’ll need to introduce some rules for a sprint less than thirty days. There’s no magic rule-set here; the rules must benefit your project.
If I recall correctly, the first significant change in our development process came by the introduction of sprint planning.
Sprint Planning
This is one of the several meetings that Scrum recommends. Before each new sprint, the team, product owner, and scrum master plan the next sprint. This meeting can take a whole day, but shorter sprints likely only need a couple hours or so.
Our process is mostly reviewing the product backlog, and deciding upon a subset of user stories that will be included in the next sprint. These decisions are made by direct negotiations between the team, represented by the scrum master, and the product owner.
The Product Owner
Setting the direction of a product by guessing which small feature will provide the most value may be the most difficult task.
This person is responsible for defining the User Stories and maintaining the Product Backlog. He or she is also a bridge between the team and higher management. The product owner evaluates the requests from stakeholders, higher management, users, and other feedback (like bug reports, user surveys, etc).
He or she prioritizes this backlog, providing the maximum value to the stakeholders in the shortest possible time. The product owner achieves this by planning the most valuable user stories that can be completed in a timely manner. This may sound sophisticated – it is! In fact, setting the direction of a product by guessing which small feature will provide the most value may be the most difficult task of the whole process. On the other hand, sometimes it’s rather easy. You may have a thousand users asking for a specific feature. In these cases, the correct choice is obvious.
If those users represent a large portion of you user base, providing that specific feature increases loyalty.
But again, this is a difficult choice. What if you could increase your user base by 100% by implementing a different feature? So, you can either increase your current users’ loyalty, or increase the user base. What is the correct choice? It all depends on the current direction of the business, and the product owner must decide where to take the product.
In the company I work for, these decisions propagate to the team. It’s not a requirement of the Scrum process, but it is especially useful with new teams. Sharing information goes a long way in helping everyone understand why some decisions are made, and why seemingly obvious features may be delayed or dropped.
The Planning Board
I remember the morning it happened: I arrived at the office, only to find our scrum master preparing a makeshift planning board with A4 paper and transparent tape. I had no idea what he was doing. As with every morning, I prepared a pot of coffee, and waited to see.
When finished, a white board was placed on the wall. It had several columns, and morphed into a rectangular shape. Several colored sticky notes peppered the “board.” That was two years ago.
The board now accommodates the Lean Development Process that we use today. Remember, Agile is all about change and adapting to change. Never blindly follow the rules.
So, what’s on that board?
Columns for the Development Process
There are four main columns:
- Release Backlog – Where all the stories reside for the current release. Yes, the product is ready for release after each sprint, but that doesn’t necessarily mean that we actually release it. We typically have five-day sprints.
- Sprint Backlog – When we plan, we negotiate what the product owner wants to complete in the sprint. How do we decide what we can and cannot complete? By estimating the difficulty of each story (see below – Estimating stories). The end result is a set of stories moved from the release backlog to the sprint backlog. The team concentrates on finishing those stories in the upcoming week.
- Working On – This one is simple. When team members take a story, they add it to this column, to show everyone what they are working on. This is meant for employee control, but rather for communicating with team members. Everyone should always know what their teammates are working on. In the above image, the small bookmarks stuck on the sticky notes contain my team members’ names.
- Done – Complete all the things! Yes, this is where completed stories go. However, it’s important to define “what is done.” At the end of an ideal sprint, all stories and bugs from the sprint backlog should be contained within this column.
Tip: Many teams like to split the Working On column into several others to better define different stages of work. We split ours into Design, Development and Testing. Feel free to invent your own steps, according to your process.
The Definition of Done
What is done? When can you confidently state that a story is complete? How do you know?
“Done” must be clearly and precisely defined, so that everyone knows when a story is complete. The definition of “done” can differ from team to team, and even from project to project. There is no exact rule. I recommend that you raise this issue at a team meeting, and decide what determines a complete story. Here are some ideas that you might want to consider:
- Create a minimalistic design.
- Create a GUI mockup.
- Use TDD or ensure that there are unit tests.
- Write the code.
- Let another team member manually test your story.
- The whole system can be built and compiled with the new code.
- Functional or acceptance tests pass as expected, after the new code is integrated into the system.
There are multiple ideas that can be included in the definition of done. Take what you consider to be necessary for your team and use it. Also, don’t forget to adapt this definition over time. If you notice that your definition is becoming outdated, you may consider removing some elements or adding necessary, but frequently forgotten, ideas.
In the picture above, the green sticky notes describe what we considered to be done, for each part of the process.
Populating the Board
That was the question we asked ourselves. Until this point, we did not use sticky notes for planning. We used software to keep track of user stories and bugs, but, other than that, we used nothing. After lunch, our scrum master presented us with a mountain of colored sticky notes. After preparing a dozen notes, he explained them to us.
The User Stories
A user story is a short, one sentence definition of a feature or functionality.
These represent the main features that we want to implement. A user story is a short, one sentence definition of a feature or functionality. It is referred to as a user story, because it is presented from the perspective of a user. Naturally, the term user is the person using our application. This person can be in one or more different categories: a system administrator, restricted user, manager, etc.
An example of such a story might sound something like, “As a user, I want to share a folder with my teammates.“
At that point, we did not have a product owner defined, so our scrum master invented these stories. This is acceptable at the beginning, but I highly recommended that you separate these two roles. Otherwise, how can the scrum master negotiate the sprint backlog with the product owner?
You may think to yourself, “Why negotiate? Isn’t it actually better for a single person to decide what to do and when?” Not quite. The two roles would be influenced by a single person’s views of the system or project. Two people, on the other hand, have a better chance of providing a more objective path for the team, ensuring the end goal (better valuable software) is achieved.
The product owner should define user stories; the team should negotiate their execution, and the scrum master represents them.
User stories define everything new that needs to be done; they’re represented by yellow sticky notes on our board.
Bugs, Bugs, Bugs
Tracking your bugs is incredibly important.
We also list bugs on the board. Do you see those red sticky notes? Those are the bugs that we need to fix for the next release.
Different teams treat bugs in different ways. Our team mixes the bugs with the stories, but we always begin a sprint by fixing the bugs.
I know of other teams who pile up bugs for a period of three sprints, and spend every fourth sprint fixing them. Others split sprints into 25/75 for bugs/stories. Further, other teams may work on stories in the morning, and bugs after lunch; it simply depends on the company.
It’s up to you to find the best solution for your team, and of course, keep track of your bugs. Write them on sticky notes so that you can track your system’s issues and the fixes for those issues. Tracking your bugs is incredibly important.
Tasks or Sub-Stories
Tasks are written as simple sentences from the developer’s point of view.
Ideally, each story should be short enough to be completed with relative ease, but splitting stories into other stories can prove difficult. Some projects simply don’t afford this possibility. Still, you’ll find large stories that several team members can work on. It’s important to divide huge chunks of work into smaller, easier to manage pieces.
One approach splits big stories into Tasks. Tasks are written as simple sentences from the developer’s point of view. For example, the previous folder sharing story might be divided into several tasks, such as: “Create UI for sharing”, “Implement public sharing mechanism”, “Implement access control functionality”, “Add Access Control checkboxes to the UI”, and so on. The point is that you have to think more about the story every time you break it into smaller tasks. Your team will have much greater control over a story, when you analyze each piece.
We use light-blue sticky notes for tasks on our board. Look in the last column (the “Done” column), and you’ll find our tasks under the user story stickies. That particular story was broken into around four tasks.