Scrum is an agile process framework built around practices that create excellent visibility into product development's true progress. A product developed with Scrum might be, for instance, a consumer-oriented software package or a business-to-business web service. Armed with the benefit of transparency, businesses can make informed, facts-based decisions continuously as development progresses.
Scrum suits complex initiatives
Traditional product development processes begin with a detailed requirements specification in which the goals and requirements for the system to be developed are nailed down. Predicting the future proves difficult, however. That's why we often notice, between trawling for requirements and deploying the solution, that the predictions made in the beginning were downright wrong – and that's why the implemented solution falls short of meeting the real needs.
In Scrum, predictions aren't set in stone in the beginning but rather planning and requirements elaboration are continuous activities throughout the project.
The key question for those pondering the use of Scrum is, how much uncertainty does the operating environment entail? If the world, including competition, the market, technology, and customer needs, can be accurately predicted and the implementation is straightforward, traditional approaches may work just fine. If, however, there are factors contributing to uncertainty in the business and technology domains, Scrum is likely a great match.
No last minute surprises
Using Scrum it is easy to track the progress on different fronts of product development. Current information enables decision-making about development, improvement of working practices, and dealing with obstacles hindering progress. New requirements and sudden changes in the operating environment can be reacted to quickly and in a controlled manner.
As the work progresses, functionality to be built can be cut down, re-prioritized or redefined differently based on feedback and knowledge acquired along the way. Keeping taps on quality we can observe the need for a shape-up already before a major incident or the ensuing fallout.
Perhaps most of all, however, Scrum offers transparency into the costs and schedule through its short development cycles. Thanks to regular checkpoints built into the process, a clear understanding of the development teams' capacity is formed, i.e. how much functionality they can deliver in one cycle.
When using Scrum, there will be no last minute surprises because you always know where you are.
Product Owner brings the business perspective
Product development in Scrum is steered by the Product Owner, based on the vision of the business and the needs of their customers. The Product Owner works in close collaboration with the development teams responsible for developing the product.
The role of a Product Owner is critical because he is accountable for the time and resources being used on doing the right things. Lacking a product vision or the product not serving the users' needs, there's nothing a good implementation can do to save the day.
The Product Owner uses a prioritized list called the Product Backlog for steering development. He prioritizes the functionality and improvements based on business needs and context, and the estimates of implementation effort provided by the development teams. Continuous, daily collaboration and re-prioritization ensures that development is focused on what's most important for the business.
By virtue of this prioritized list of work, plans can be adapted as development proceeds, whenever there is new information available about the progress or the business context.
One of the most useful sources of information for the Product Owner is the Release Burn-down or the Release Burn-up chart. These charts visualize the progress of the whole, for instance, the next release. Using these charts, the Product Owner can estimate the time required to implement the remaining functionality and the potential impact of a change in the scope or schedule.
Software development is disciplined teamwork
In Scrum, development work takes place in 1–4 week iterations called Sprints. Each of these cycles begins with the selection of the business's top priority items from the Product Backlog in a Sprint Planning meeting.
Scrum development teams are cross-functional – all of the skill and expertise required is incorporated into the team, including functions such as specification, architectural design, user interface design, programming, testing, integration, and documentation. By the end of each Sprint, development teams produce an increment of the whole product that is reviewed together with the Product Owner and other stakeholders in a Sprint Review meeting.
Teams manage and coordinate their work during a Sprint with a Sprint Backlog. The Sprint Backlog is a team's daily evolving plan for accomplishing the tasks required to deliver the features taken from the Product Backlog. The team is jointly responsible for their work and results, and that all delivered features conform to the quality standards described by their Definition of Done.
Every day teams synchronize their work in a Daily Scrum meeting, sharing information relevant to the tasks at hand and coordinating their way forward. These meetings serve to spread knowledge and awareness about the challenges that the team members are facing, the progress they are making. All of this helps teams react and respond to problems in a timely manner.
Scrum supports continuous improvement
Transparency doesn't benefit just product development but organizational development, too. When work is done in short iterations, the organization can analyze its behavior and dynamics, and adapt accordingly.
Each Sprint concludes with a Sprint Retrospective focused on reviewing the Sprint's outcome from the perspective of working practices – what worked well and what could be improved. Through these regular moments of reflection, the organization can uncover more effective ways of working and close in on its potential performance.
Personally, I've seen the biggest gain from Scrum realize at the organizational scale when teams and individuals have started taking active responsibility over continuous improvement. In the best case, visible changes in productivity and work motivation show already within the first weeks.
The development teams and the Product Owner are supported by a Scrum Master. The Scrum Master's responsibility is to help the teams and their Product Owner succeed by supporting their continuous improvement, assisting them in finding ways to improve their performance, and by challenging and coaching the whole organization.
One of the greatest challenges with traditional product development has been the difficulty of observing the true progress of the product in development. Using Scrum, the state of the product is always known and the matters hindering progress are clearly visible. Scrum is an easily approachable model that cultivates critical thinking and prods everyone to adapt the ways of working to the context and situation at hand.
We've noticed that working in a Scrum team is extremely motivating because the team has clear objectives and authority over their own working practices. It should be remember, though, that succeeding with Scrum does call for talented and committed people.