tamm: add Darren as author
[ti-agile-manual/ti-agile-manual.git] / the-sprint.tex
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %%                                                                       %%
3 %% Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com %%
4 %%                                                                       %%
5 %% Author: Felipe Balbi <balbi@ti.com>                                   %%
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 a sprint duration of 2 weeks with
37 no exceptions. This is the most common choice for beginners in Agile practices
38 and, 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.  A 2 week duration also allows a reasonable response time
54 to changing priorities in the backlog such as customer issues.
56 \paragraph{}
57 Item \ref{item:not-too-short}, on the other hand, makes it easier to see
58 progress. Even though we are focussing on time-boxing our sprints and making
59 them small enough as to decrease risks, we can still have a considerable amount
60 of new features finished by the end of the sprint which, in turn, gives us the
61 opportunity of coming up with good demos.
63 \section{Scrum Process}
64 \label{sec:scrum-process}
66 \paragraph{}
67 Figure \ref{fig:scrum-process} shows Scrum's process. Note that development is
68 performed in a set of continuous feedback loops.
70 \begin{figure}[ht]
71         \centering
72         \includegraphics[width=0.8\textwidth]{images/scrum-process.png}
73         \caption{Scrum Process}
74         \label{fig:scrum-process}
75 \end{figure}
77 \paragraph{}
78 There a few things to note here. First, when product backlog feeds sprint
79 backlogs, they become small, self-contained, estimated tasks which, can be
80 finished in the course of one day. This means that on each and every daily
81 scrum meeting, \textbf{ideally}, everybody should have an update. Clearly this
82 won't always be the case as problems arise.
84 \paragraph{}
85 Second, there are two loops that are carried over during a Scrum development
86 effort. The bigger loop is the sprint loop which, in our case, as we shall see,
87 will take 2 weeks. The smaller, and perhaps more important, loop is the daily
88 scrum.
90 \paragraph{}
91 The daily scrum -- that is, the daily 15 minutes meetings --, is of utmost
92 importance for the success of any Scrum development team. It gives developers
93 and managers visibility which hasn't been possible before. Such visibility
94 leads to roadblocks being solved much quicker which, in turn, leads to
95 development flowing smoothly towards the end product.
97 \paragraph{}
98 Third, after each Sprint there should be a \textbf{working} increment of the
99 software. The bold face in \textit{working} was purposeful. We can only deliver
100 working software inside of Scrum; or at least that will always be the target.
102 \paragraph{}
103 But how can anyone be sure that software is working before customer has access
104 to it? The answer to that question lies in methodical and (hopefully)
105 automated testing. Each task in Scrum should be tied to a companion testcase
106 proving that software fails before implementing that task and passes after the
107 fact.
109 \section{Sprint Burndown Charts}
110 \label{sec:sprint-burndown-charts}
112 \paragraph{}
113 The burndown chart is a simple way to visualize how current sprint is
114 developing. It shows, at any given time, how many hours and days are left for
115 this sprint.
117 \paragraph{}
118 By looking at older sprints, we can also extrapolate the data to generate
119 valuable statistics about the team. The \textit{Team Velocity} is one of such
120 statistics and it tells us how many Story Points (or engineering hours) are
121 completed per-sprint. That information allows ScrumMasters to estimate when the
122 entire project will be complete.
124 \paragraph{}
125 Figure \ref{fig:example-burndown-chart} below shows an example Sprint Burndown
126 Chart.
128 \begin{figure}[ht]
129         \centering
130         \pgfplotsset{width=12cm}
131         \pgfplotsset{grid style={dashed,lightgray}}
132         \begin{tikzpicture}
133                 \begin{axis}[xlabel=Days,ylabel=Effort (hours),grid=both]
134                         \addplot coordinates {
135                                 (1, 60)
136                                 (2, 51)
137                                 (3, 47)
138                                 (4, 40)
139                                 (5, 35)
140                                 (6, 22)
141                                 (7, 13)
142                                 (8, 8)
143                                 (9, 3)
144                                 (10, 0)
145                         };
146                 \end{axis}
147         \end{tikzpicture}
148         \caption{Example Sprint Burndown Chart}
149         \label{fig:example-burndown-chart}
150 \end{figure}
152 \paragraph{}
153 It's easy to see how we can extrapolate team velocity after we have more than
154 one Sprint Burndown Chart available.