For most people, the idea of software development is somewhat of a black art. So consider this: if you’ve ever experienced homeownership, you already have a sense of what it is like to manage software development.
For starters, you’re familiar with a fixed deadline:
“You really need to get the plumbing sorted out by Sunday night.”
You know about changing requirements:
“I didn’t know it was the wrong color until you finished painting the house”.
And you know that mistakes are expensive:
Cutting the new bathroom door too small = buying another bathroom door.
Given these challenges are taxing enough in the domestic realm, how does a company like Voalté manage these same challenges in the complex world of software development
? And how do our developers keep it all straight when they are delivering code for three endpoints (iPhone, Blackberry, web client), and two servers (voice & data) in a mission critical environment such as a hospital?
The answer is through a process called Scrum. The idea behind Scrum is fairly simple: develop software incrementally in iterations that last two to four weeks. These iterations, referred to as Sprints, allow the Team to add new features on a frequent basis, with each iteration resulting in a shippable release. Perhaps the greatest advantage of Scrum is to the business itself, through the ability to quickly adapt to changing requirements and customer preferences.
Compare Scrum to the traditional model of software development (Waterfall):
1. Spend six months conducting market research
2. Spend another three months writing the product specifications
3. Hand requirements over to the Engineering Team (with great ceremony)
4. Engineering Team develops the product for a year.
5. Software is passed to the Quality Assurance Team (more ceremony)
6. Then the long slog as the product is debugged, often with limited success.
7. Finally the product is launched (greater ceremony).
Here’s where the real heartbreak is. By this time the product is launched, the customer’s needs have either changed, or the customer now realizes that with the product in hand, they really wanted something else in the first place (see “wrong color” above). Compare this to Scrum -- a working product, although not fully featured, is released to the customer far sooner, when changes can be made more easily and less expensively (bathroom door).
There are three main roles in Scrum. The most central role is held by the development Team (typically seven members). The Team is self-organizing, meaning that Team members decide how the problem is to be solved, and who is to complete what tasks. Scrum is a “pull” based process, meaning the Team commits to only as much work as it believes it can complete during the Sprint.
The Team pulls work from a list called the Backlog. The Backlog is composed of several user stories, which are effectively new features to be added to the product. An example user story follows:
As a clinician, I want an easy way to send my most commonly used text messages, so that I do not have to retype the same message over and over again.
The backlog is created by the Product Owner, who is responsible for the commercial success of the product. The Product Owner writes the user stories and prioritizes them by business value. The Product Owner also has the responsibility of reviewing and accepting work completed by the Team.
The final role in Scrum is the Scrummaster. The Scrummaster facilitates communication between Scrum participants, removes impediments, shields the Team from interruptions, and ensures the Team is on track to complete the work it has committed to.
One of the most powerful elements of Scrum is the process of continuous improvement. At the end of each Sprint, the Team reviews what went well and what didn’t, and then uses this feedback to improve the next Sprint. This feedback loop is just one of the reasons highly effective Scrum teams see productivity levels at 5 to 10 times the industry average*.
Scrum, born from the shortcomings of the traditional Waterfall process, traces its roots a variety of influences, including lean manufacturing techniques, process engineering, and behavioral science. Designed to be lightweight, easy and fun, Scrum is realistic enough to be adopted by even the most skeptical engineering team.
Now if I can just convince myself my next home improvement project will be lightweight, easy and fun…
* http://jeffsutherland.com/scrumpapers.pdf