roles-in-scrum: enhance product owner role
[ti-agile-manual/ti-agile-manual.git] / the-sprint.tex
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %%                                                                       %%
3 %% Copyright (C) 2013 Texas Instruments Incorporated - %%
4 %%                                                                       %%
5 %% Author: Felipe Balbi <>                                   %%
6 %%                                                                       %%
7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9 \chapter{The Sprint}
10 \label{chap:the-sprint}
12 \paragraph{}
13 The \textit{basic unit of development in Scrum}\cite{wikipediascrum} whose
14 duration is pre-defined. All sprints have the same duration, usually between
15 one week and one month.
17 \paragraph{}
18 In section \ref{sec:sprint-duration} we shall discuss about Sprint Duration and
19 what is Linux Core Product Development's accepted duration. In the following
20 section \ref{sec:scrum-process} we shall expose Scrum's development process and
21 discuss how to handle an iterative development model while developing Linux
22 Kernel code. Lastly, on section \ref{sec:sprint-burndown-charts} we will expose
23 the idea of Sprint Burndown Charts; what they are and how to use them.
25 \paragraph{}
26 By the end of this chapter, we should have enough grounds to discuss about how
27 to successfully break backlog entries into bite-sized pieces in chapter
28 \ref{chap:breaking-tasks-up}, how to come up with proper estimations in chapter
29 \ref{chap:estimating} and finally come up with our definition of done in
30 chapter \ref{chap:definition-of-done}.
32 \section{Sprint Duration}
33 \label{sec:sprint-duration}
35 \paragraph{}
36 Linux Core Product Development team will use sprint of 2 weeks with no
37 exceptions. This is the most usual choice for beginners in Agile practices and,
38 in particular, Scrum.
40 \paragraph{}
41 A 2-week sprint brings two clear benefits:
43 \begin{enumerate}
44         \item it's a short amount of time.\label{item:short-amount-of-time}
45         \item it's not as short as to cause too few story points to be taken
46                 in a given sprint.\label{item:not-too-short}
47 \end{enumerate}
49 \paragraph{}
50 Due to item \ref{item:short-amount-of-time}, risk management becomes easy. If
51 it turns out a particular sprint isn't successful, we're not loosing a
52 considerable amount of work --  only 2 weeks -- and we can easily fix that on
53 the next sprint.
55 \paragraph{}
56 \ref{item:not-too-short}, on the other hand, makes it easier to see progress.
57 Even though we are focussing on time-boxing our sprints and making them small
58 enough as to decrease risks, we can still have a considerable amount of new
59 features finished by the end of the sprint which, in turn, gives us the
60 oportunity of coming up with good demos.
62 \section{Scrum Process}
63 \label{sec:scrum-process}
65 \paragraph{}
66 Figure \ref{fig:scrum-process} shows Scrum's process. Note that development is
67 carried away as a loop.
69 \begin{figure}[ht]
70         \centering
71         \includegraphics[width=0.8\textwidth]{images/scrum-process.png}
72         \caption{Scrum Process}
73         \label{fig:scrum-process}
74 \end{figure}
76 \paragraph{}
77 There a few things to note here. First, when product backlog feeds sprint
78 backlogs, they become small, self-contained, estimated tasks which, can be
79 finished in the course of one day. This means that on each and every daily
80 scrum meeting, \textbf{ideally}, everybody should have an update. Clearly this
81 won't always be the case as problems arise.
83 \paragraph{}
84 Second, there are two loops that are carried over during a Scrum development
85 effort. The bigger loop is the sprint loop which, in our case, as we shall see,
86 will take 2 weeks. The smaller, and perhaps more important, loop is the daily
87 scrum.
89 \paragraph{}
90 The daily scrum -- that is, the daily 15 minutes meetings --, is of utmost
91 importance for the success of any Scrum development team. It gives developers
92 and managers visibility which hasn't been possible before. Such visibility
93 leads to roadblocks being solved much quicker which, in turn, leads to
94 development flowing smoothly towards the end product.
96 \paragraph{}
97 Third, after each Sprint there should be a \textbf{working} increment of the
98 software. The bold face in \textit{working} was purposeful. We can only deliver
99 working software inside of Scrum; or at least that will always be the target.
101 \paragraph{}
102 But how can anyone be sure that software is working before customer has access
103 to it ? The answer to that question lies in methodical and (hopefully)
104 automatic testing. Each task in Scrum should be tied to a companion testcase
105 proving that software fails before implementing that task and passes after the
106 fact.
108 \section{Sprint Burndown Charts}
109 \label{sec:sprint-burndown-charts}
111 \paragraph{}
112 The burndown chart is a simple way to visualize how current sprint is
113 developing. It shows, at any given time, how many hours and days are left for
114 this sprint.
116 \paragraph{}
117 By looking at older sprints, we can also extrapolate the data to generate
118 valuable statistics about the team. The \textit{Team Velocity} is one of such
119 statistics and it tells us how many Story Points (or engineering hours) are
120 completed per-sprint. That information allows ScrumMasters to estimate when the
121 entire project will be complete.
123 \paragraph{}
124 Figure \ref{fig:example-burndown-chart} below shows an example Sprint Burndown
125 Chart.
127 \begin{figure}[ht]
128         \centering
129         \pgfplotsset{width=12cm}
130         \pgfplotsset{grid style={dashed,lightgray}}
131         \begin{tikzpicture}
132                 \begin{axis}[xlabel=Days,ylabel=Effort (hours),grid=both]
133                         \addplot coordinates {
134                                 (1, 60)
135                                 (2, 51)
136                                 (3, 47)
137                                 (4, 40)
138                                 (5, 35)
139                                 (6, 22)
140                                 (7, 13)
141                                 (8, 8)
142                                 (9, 3)
143                                 (10, 0)
144                         };
145                 \end{axis}
146         \end{tikzpicture}
147         \caption{Example Sprint Burndown Chart}
148         \label{fig:example-burndown-chart}
149 \end{figure}
151 \paragraph{}
152 It's easy to see how we can extrapolate team velocity after we have more than
153 one Sprint Burndown Chart available.