Saturday, March 27, 2010

So What is SCRUM?

Scrum is an iterative, agile project management methodology. Its key goal is to get some usable functionality out the door with each iteration. It also recognizes that a customer can change their mind about the requirements anytime during the project and is designed to deal with that.

The iterations, known as sprints, run 2 to 4 weeks each and must result in some usable functionality. In normal software development, this means something that the end-user can actually use, and technically you analyze as you go. Of course its not that clean as it one really need some upfront analysis to flush out the initial requirements, known as stories, to include in the product backlog (list of prioritized requirements, as well as issues to be addressed).

From the product backlog, high-level requirements are selected for the next sprint and are recorded in sprint backlog. During the sprint the requirements are fleshed out, modified, or discarded. The goal for each sprint is to get something useful to the end user out the door. Now for networking, this will need to be modified to something useful to the network since, for instance, a new fiber run, may not be of immediate use to the users until the new high-speed switches are installed in the next sprint.

In each sprint their is a analysis/design phase, build phase, and test phase. At the end of the sprint the finished product is demoed to the product owner and other stakeholders to get signoff and feedback.

A key rule is that what is included in the sprint must be able to be finished during the sprint, if it is not, then the requirement must be broken up into chunks that can be delivered in a 2 to 4 week time frame.

Another key rule is that the people responsible for the work get to set the schedule via their estimates. If management says they must deliver by X date, then management via the product owner must decide what requirements will be dropped from the planned release.

SCRUM teams are small, running from 5 to 9 members. and consist of the SCRUM master, a product owner, and various other members, such as developers, testers, etc. SCRUM is usually used in conjunction with some agile development methodology, such as eXtreme Programming.

As someone who has successfully delivered agile projects involving virtual teams spread over multiple cities, companies, and even continents, the one thing that annoys me about SCRUM is the obsession with having everyone work out of literally the same room. Frankly haven't these people heard of Skype?, teleconferencing, and Netmeeting?

There is a lot more to SCRUM than I have outlined here, but my purpose is not to teach you SCRUM, but to modify it for use in data and voice network projects.

You can learn more about it at the SCRUM Alliance, or by Goggling SCRUM.

My future articles will go into my specific modifications, so stay tuned...

No comments:

Post a Comment