Scrum is much more a way of thinking about the process of software product development, than it is a particular set of practices. Within a broad framework, the team is responsible for its own processes in order to realize the business value of the product.
This section describes basic motivations and reasons for using Scrum and Agile and some foundational principles.
Scrum and Agile software development implements the principles of Lean software development at the local team level. Lean thinking extends the benefit across the enterprise. Together, this creates a framework that:
- Enables the team to discover what the customer needs and to deliver value quickly and repeatedly
- Empowers the team to remove impediments that are in the way of delivering value quickly
- Encourages continuous refinement of the approach being used to deliver more value
- Optimizes the flow of value delivery across the enterprise
The primary characteristics of Lean-Agile thinking include:
- Building software in iterations
- A product backlog that is prioritized to deliver the most business value
- Cross-functional teams where people use their combined skills to get work done, using a facilitator
- High-bandwidth communication as much as possible
- Daily Stand-up meetings for the whole team
- Simple visual controls at the work site to report progress and issues
- Risk mitigation: addressing issues, impediments, and dependencies early
- Continuous process improvement and best practices
Reasons for using Scrum and Agile
||Here is how Scrum and Agile addresses the need
|Realize Business value quickly
||The Business prioritizes work to increase revenue/benefit, to increase market position and to increase feedback (and reduce risk).
The product team is a partner in the value stream.
|Gain clarity on customer needs
||Work on aspects of features about which customers are clear.
Use short iterations to increase feedback and grow knowledge.
Minimize speculation; let the design evolve with experience over time. This reduces the tendency to over-design and minimizes complexity.
|Manage projects better
||Metrics are reported using simple visual controls (also known as “information radiators”), with an intense focus on value creation, current work, and reducing impediments.
Radiators are managed locally and are visible.
Work is planned and re-planned based on current knowledge. This works becaue the planning horizon is short.
Testing is central to development. The goals of testing are to ensure high-quality code at each iteration, find bugs, discover root-cause issues that lead to defects, and create acceptance tests for each feature and each story.
Short deadlines and close contact with the customer ensure a constant sense of urgency without panic. The Product Manager is rarely surprised.
||Short feedback cycles and close contact with the customer results in frequent quick wins.
Catching mistakes early allows more time to deliver value.
Teams and individuals gain a greater sense of accomplishment, progress, and purpose.
Twelve foundational principles of Agile and Scrum
Here are the twelve foundational principles that, together, make Scrum and Agile work.
|Satisfy the customer
||The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
A product backlog is prioritized to realize the most Business value.
||Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
||Deliver working software frequently, according to how quickly the customer can consume it.
Risk mitigation: address issues, impediments, and dependencies early. This helps to mitigate risk.
|Whole team, daily
||The Business and developers must work together daily throughout the project
||Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
|High bandwidth communication
||Face-to-face conversation is the most efficient and effective method of conveying information to and within a development team.
As much as possible, use cross-functional teams where people use their skills to get work done, using a facilitator.
Use simple visual controls at the work site to report progress and issues
|Measure of success
||Working software is the primary measure of progress.
||The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
||Continuous attention to technical excellence and good design enhances agility.
||Practicing the art of doing just enough and no more than is necessary.
Minimizing the amount of work not done.
||The best architectures, requirements, and designs emerge from self-organizing teams.
||At regular intervals, the team reflects on how to become more effective and then adjusts its processes and behaviors to do this.
The team owns their processes. They apply their local knowledge and experience to improve what they do to deliver quality product.