You are on page 1of 56

SCRUM A Pattern Language for Hyperproductive Software Development

Design Patterns Summer 2002 Syracuse University Srinivasa Neerudu Vivekananthan Murugesan

SCRUM - Design Pattern

Software Development
Do we have a fixed set of rules for Software Development?
Linear Sequential Model Waterfall Model Prototyping Model Spiral Model Iterative Model CMM [Capability Maturity Model]

SCRUM - Design Pattern

Waterfall Model

SCRUM - Design Pattern

Spiral Model

SCRUM - Design Pattern

SCRUM

SCRUM - Design Pattern

Comparison

SCRUM - Design Pattern

Incorrect Assumptions
Repeatable/Defined Problem:
There is a step or steps to capture requirements. BUT Systems have different applications, different environment, different end users, etc.

SCRUM - Design Pattern

Incorrect Assumptions(2)
Repeatable/Defined Solution:
System Architecture can be fully specified. BUT In reality, it is evolved partly because of missing or changing requirements and partly because of creative process involved.

SCRUM - Design Pattern

Incorrect Assumptions(3)
Repeatable/Defined Developers:
All developers have same capability. BUT In reality, it varies widely so that a process that works for one developer may not work for another one.

SCRUM - Design Pattern

Incorrect Assumptions(4)
Repeatable/Defined Organizational Environment:
Schedule, Client Behavior, Priority (Quality Vs Price Vs Manpower) remain constant. BUT In reality, they are highly subjective and very hard to define.
SCRUM - Design Pattern 10

Solution
SCRUM
It offers a collection of empirical techniques that assume existence of uncertainties but provide practical and specific techniques to tame them. Iterative, Incremental and Adaptive Software Development Model

SCRUM - Design Pattern

11

How does SCRUM work?

SCRUM Master

Sprint

Backlog

SCRUM
Meetings

Demo After Sprint

SCRUM - Design Pattern

12

How does SCRUM work? (2)


Sprint:
A period of approximately 30 days in which an agreed amount of work will be performed to create a deliverable.

SCRUMs goal is to deliver as much quality software as possible within a series (three to eight) of Sprints

SCRUM - Design Pattern

13

How does SCRUM work? (3)


Each stage in the Development Cycle (Requirements, Analysis, Design, Evolution, Delivery) is mapped to a Sprint or Series of Sprints. Unlike conventional way, there is no predefined process within a Sprint

SCRUM - Design Pattern

14

How does SCRUM work? (4)


SCRUM Meetings drive the completion of the allocated activities Each sprint operates on a number of work items called Backlog No more items are externally added into the Backlog within a Sprint, where as derived work items can be added.

SCRUM - Design Pattern

15

How does SCRUM work? (5)


SCRUM Meetings are held daily to determine the following
Items completed since the last SCRUM Meeting Issues or Blocks that need to be resolved [SCRUM Master is responsible] Tasks to be done before the next Meeting

SCRUM - Design Pattern

16

How does SCRUM work? (6)


Demonstration after Sprint is for:
Show the customer whats going on Give the developer a sense of accomplishment Integrate and test a reasonable portion of the software being developed Ensure real progress in development

SCRUM - Design Pattern

17

SCRUM Patterns
Sprint Backlog SCRUM Meeting

SCRUM - Design Pattern

18

Sprint - Context
You are a software developer or a coach managing a software development team where there is a high percentage of discovery, creativity, or testing involved You are building or expanding systems, which allow partitioning of work, with clean interfacing, components, or objects

SCRUM - Design Pattern

19

Sprint - Problem
You want to balance the needs of
developers to work undisturbed management and the customers to see the real progress AS WELL AS control the direction of software development progress.

SCRUM - Design Pattern

20

Sprint - Forces
Developers need to work undisturbed and need support of logistics. Management and users need to be convinced about real progress. Often, by the time systems are delivered they are obsolete and may require major changes. The problem is the inputs are collected in the start of the project but they undergo changes as the working model is used.
SCRUM - Design Pattern 21

Sprint Forces (2)


Because development process involves many uncertainties, it is impossible to make a complete, detailed specification, plan or schedule Some problems are even difficult to describe without a notion of the solution. Experimentation, feedback and creativity are required towards the same.
SCRUM - Design Pattern 22

Solution
Divide the project in Sprints A Sprint is a period of approximately 30 Days. Each Sprint takes a pre-allocated amount of work from the Backlog The work assigned is by priority and by approximation of what can be accomplished during the Sprints length

SCRUM - Design Pattern

23

Solution (2)
During the sprint no items are added to the allocated spring Backlog. External additions are only added to the global Backlog, but blocks resulting from the sprint can be added to the allocated Spring Backlog A Sprint ends with a demonstration of added new functionality

SCRUM - Design Pattern

24

Solution (3)
Sprint results in a visible and usable deliverable that is shown to the users at the demonstration. An increment can be either intermediate or shippable The Goal of a Sprint is to complete as much quality software as possible and to ensure real progress.

SCRUM - Design Pattern

25

Rationale [Fundamental reasons; the basis]


Development Process is fast and steady as no items are added to the backlog externally The ability to choose a process per Sprint is empowering and enables adaptation to changing circumstances Sprints are short; therefore the problem of completing a Sprint is much simpler than that of completing a project

SCRUM - Design Pattern

26

Rationale (2)
Developers get feedback frequently [after every Sprint] and therefore feel their success [and failure] without compromising the whole project Project Status is visible since the sprint produces working code

SCRUM - Design Pattern

27

Resulting Context
High degree of involvement by the participants through Demos and the prioritizing of the Backlog With SCRUM we get a large amount of post-planning flexibility (for both customer and developer). Difficulties in grouping backlog for a Sprint may indicate that priorities are not clear to management or to the customer.

SCRUM - Design Pattern

28

Backlog
Context(from: sprint).
You are connected to a software project or any other project that is chaotic in nature that need information on what to do next.

SCRUM - Design Pattern

29

Backlog contd.
Problem: What is the best way to organize the work to be done next and at any stage of the project?

SCRUM - Design Pattern

30

Backlog contd.
Forces:
Project plans captured in pert and Gantt charts often try to capture the tasks to be done in advance. They often fail in their implementations, as they lack flexibility. Not having a repository of tasks in any shape or form simply translates into project failure.

SCRUM - Design Pattern

31

Backlog contd.
Solution:
Use backlog to organize the work of a SCRUM team. The backlog is a prioritized list. Backlog is the work to be performed and evolves into product

SCRUM - Design Pattern

32

Solution (2)
Sources of Backlog list:
Product Marketing. Sales. Technology. Development. Customer support.

SCRUM - Design Pattern

33

Solution (3)
The product manager or product marketing manager prioritizes work and is responsible for meeting the product vision. SCRUM teams focus on highest priority Backlogs. The team decomposes the selected Backlog into tasks.

SCRUM - Design Pattern

34

Resulting Context
Project work is identified dynamically and prioritized according to:
The customers needs What the team can do

SCRUM - Design Pattern

35

SCRUM Meetings
Context (From: Backlog).
You are a software developer or a coach managing a software development team where there is high percentage of discovery, creativity, or testing involved. Activities such as scientific research, innovation, invention, architecture, engineering and a myriad of other business situations may also exhibit this behavior.

SCRUM - Design Pattern

36

Context (2)
You may be a Knowledge worker, an engineer, a writer,a research scientist, or an artist, or a coach or manager who is overseeing the activities of a team in these environments.

SCRUM - Design Pattern

37

Problem
What is the best way to control an empirical and unpredictable process such as software development, scientific research, artist projects, or innovative designs where its hard to define the artifacts to be produced and the processes to achieve them?

SCRUM - Design Pattern

38

Forces
Estimation:
Accurate estimation for activities involving discovery, creativity or testing is difficult. Estimation is important. One must be able to determine what are the future tasks within some time horizon and prepare resources in advance.

SCRUM - Design Pattern

39

Forces(2)
These uncertainties come in at least five flavors:
Requirements are not well understood. Architectural dependencies are not easy to understand and are constantly changing. Unforeseen challenges with the technology exist. Ambiguity in the solutions and related efforts to overcome challenges. Bugs in software that are hard to resolve.
SCRUM - Design Pattern 40

Planning
Planning and reprioritizing takes time. Involving knowledge workers in the time planning meeting also decreases productivity. No amount of planning in chaotic system may reduce uncertainties.

SCRUM - Design Pattern

41

Planning (2)
Detailed plans are huge and hard to follow. Cost of verifying the correctness of a huge plan is also a costly exercise. No planning can increase uncertainties among the team members and lower the morale.

SCRUM - Design Pattern

42

Tracking
Too much monitoring wastes time and suffocates the developers. Does not increase the certainty of the indicators because of the chaotic nature of the system. Too much data is meaningless. No monitoring leads to blocks and possible idle time between assignments

SCRUM - Design Pattern

43

Solution
SCRUM Meetings(~15 mins) are held and three questions are asked by each participant:
Q1. What have you worked on since the last SCRUM Meeting?
The SCRUM Master logs the tasks that have been completed and those that are still undone

SCRUM - Design Pattern

44

Solution (2)
Q2. What blocks, if any have you found in performing your tasks in the last 24hrs?
SCRUM Master logs all blocks and later finds a way to resolve the blocks.

Q3. What will you be working on in the next 24 hours?


The SCRUM Master helps the team members choose the appropriate tasks.

SCRUM - Design Pattern

45

SCRUM Meeting
Typically take place at same time and same place. Serve to build a strong culture. Schedule task for developers and everybody else involved in the task. Allow knowledge workers to accomplish mid-term goals.

SCRUM - Design Pattern

46

Rationale
Its easy to over-or-under-estimate, which leads to either idle developer time or delays in the completion of an assignment. Frequent sampling of the project status is good. Constant reprioritization of tasks offer an adaptive mechanism for sampling.

SCRUM - Design Pattern

47

Rationale (2)
SCRUM Meetings help in creation of an anticipating culture:
They increase the overall sense of urgency They promote the sharing of knowledge They encourage dense communications They facilitate honesty among developers since everyone has to give a daily status.

SCRUM - Design Pattern

48

Rationale (3) (Systems Dynamics)


From the Systems Dynamics point of view, software developed has a scheduling problem because the nature of programming assignments is rather probabilistic. Estimates are hard to come by because:
Inexperienced developers, managers, and architects are involved in making the estimates. There are typically interlocking architectural dependencies that are hard to manage.

SCRUM - Design Pattern

49

Contd.
There are unknown or poorly documented requirements. There are unforeseen technical challenges.

In that sense SCRUM Meeting acts like a thermometer that constantly samples the teams temperature.

SCRUM - Design Pattern

50

Known Uses
At Nike Securities in Chicago to run all their projects At Elementrix Technologies And many similar examples are quoted in the book.

SCRUM - Design Pattern

51

Resulting Context
The application of this pattern leads to
Highly visible projects status Highly visible individual productivity Less time wasted because of blocks Less time wasted because of waiting for someone else. Increased team socialization.

SCRUM - Design Pattern

52

Conclusion
SCRUM is a knowledge creating process with a high level of information sharing during the whole cycle and work progress. Its application also generates a strong culture with well-defined roles and relationships, with meaningful and transcending rituals.
SCRUM - Design Pattern 53

Contd.
The key to SCRUM is:
Pinning the date of completion for production or release. Prioritizing functionalities Identifying available resources Decision about the architecture

SCRUM - Design Pattern

54

References
PLOP4 Book http://jeffsutherland.com/oopsla/schwap ub.pdf Related to PERT and Gantt
http://studentweb.tulane.edu/~mtruill/devpert.html

SCRUM - Design Pattern

55

Thank You

You might also like