Métodos Ágiles
Métodos Ágiles
Métodos Ágiles
12
73
Mtodos giles-Scrum y XP
Workproducts-SprintBacklog
m
23
Workproducts-SprintBacklog
24
Dr. Ricardo Quintero
A B C D E LJ
W
E
J
1
Sprint Backlog
Task Description Origi Respon Status Hours of work remaining
2
nator sible
3
6 7 8 9 10 '
4
362 322 317 317 306 ;
5
Meet to discuss the goals and JM JM/SR Completed
20 10 0 0 0
6
Move Calculations out of TL AW Not Started
8 8 8 8
81
7
Get GEK Data
TN Completed
12 0 0 0
0
8 Analyse GEK Data - Title
GP In Progress 24
20
30 25 20
9
Analyse GEK Data - Parcel
TK Completed 12
12
12
12 12
1
0'
Define & build Database
BR/DS In Progress 80 80 75 60 S2
D.ty* Left in Sprint 15 113 1 10 1 8 1
/S' /sv
/\ 9
/
m/s/
Wlio Dotciiption
A
ToMl Elm.*t><l Hnmv 554 45
8
36
2
27
0
0
IKRIS Gulile -
SM Start on Study Variable chapter first ifraft 16 1G 16 15
SM Import chapter first draft 40 24 6 6
SW Enport chafier first cteft 24 24 24 6
Misc. Small Bi9*
JM FIX comedicn leak 40
JM 0*ete queries 0 8
JM Oekte analysis 8 8
TG Fix uai-off metsagirg bug 8 a
JM View pedigree for kndred column in a result set 2 2 2 2
AM Cerrnrd kindtd validation 8
Environment
TG Install CVS 16 16
TBO Move cod into CVS 40 40 40 41
TBD Mtms to JDK 1 4 8 8 8 8
Ddt.llulS
KH killing Orscte sesiion* a 8 8 ::
KH Ftnish 2 2C6 database patch 8 2
KH Make a 2 207 database patch 8 8 8 8
KH Figure out wtiy 461 indeies are created 4
Mtodos giles-Scrum y XP
13
j
Aspectos prcticos-Sprint Backlog
o Plantilla bsica propuesta. (Puede
ser un archivo compartido en la red)
o Ejemplo 1 en Excel,
o Ejemplo 2 en Excel,
o Ejemplo 3 en Excel,
o El SprintOmeter.
m
Aspectos prcticos-Sprint Backlog
de hombre pobre
1. Localiza un rea grande en pared sin
utilizar.
2. Toma una gran hoja de papel (2x2
m. o 3x2 m) y clocala en la pared.
Dr. Ricardo Quintero
Mtodos giles-Scrum y
XP
15
Dr. Ricardo Quintero
Aspectosprcticos-SprintBacklogde
hombre pobre"
3. Ahora dibuja las lneas y coloca las HU y Tareas:
Aspectosprcticos-SprintBacklogde
hombre pobre"
So.fl tul nobody
wrt Vi'crt: on any
mo<
MeruaNy ptol a r*n point ar>
iti bur*do*n vay ai fl' me
daly scrurr
$*j ral rotoi*
orijrg cu
V
NOT
CXCtO l
SMW $0Al
Offi Ffsl all o:lnity wandw h A-ay
st=rl - n
Ttmn IIIM IIIIH UfJ^kitjHlMinfjiiii tu OWM
m
28
CHECHEO OJT OONP. :0?
Sluf somebcd
01V.1r.30n day
Y
C^LWNCO ITEM*
NE
XT
Mtodos giles-Scrum y
XP
15
Dr. Ricardo Quintero
or
CHECHEO
OT
CHECHEO
OUT
TOO.
UtfUtfNEO ITEMS
Aspectosprcticos-SprintBacklogde
hombre pobre"
4. Despus de la primer junta Serum:
29
Aspectosprcticos-SprintBacklogde
hombre pobre"
4. Despus de algunos das:
OoME! :)
SPflNT OCAL: SETA-EADY eleuse!
II
NEXT
MTHOMU
M
t
o
d
o
s
g
il
e
s
-
S
c
r
u
m
y
X
P
15
Dr. Ricardo Quintero
30
Mtodos giles-Scrum y XP
17
Dr. Ricardo Quintero
m
Owe I SWT
CC
Aspectos prcticos-Sprint Backlog
de hombre pobre"
4. El diagrama de BurnDown:
SUNOOWN
70
ESTIMATEDUOSK^;CEMAlhlINQ.
(croey points)..
'
1
M
1 11
fi .
Auflusrl 2 3 4 sja 9 10 11 12|1516 17 IB 1S|
DATE
Aspectos prcticos-Sprint Backlog
de hombre pobre"
5. Monitoreando el proyecto (Scrum Master)
OUCH! Team is doing stuff in the wrong order. ar>d neglecting
EQthe top-pnonty items!
m
Mtodos giles-Scrum y XP 79
17
Dr. Ricardo Quintero
Workproducts-grficoSprintBacklog
o Grfico Sprint Backlog: es un resumen visual
de la estimacin de tiempo restante de las
tareas del Sprint Backlog.
o Es considerado el dato ms crtico del
proyecto.
o Recomendacin:
Colocar en la pared y actualizar diariamente una versin de
este Workproduct para la junta diaria de Serum.
AWorkproducts-grficoSprintBacklog
r
Sprint^
r
|
OayoMor*/
34
18
79
3
6
Mtodos giles-Scrum y XP
Workproducts-grficoSprintBacklog
35
Roles
Dr. Ricardo Quintero
Progress Notse que el
equipo hace un
ajuste en las
tareas del Sprint
actual cuando
restaban 619 horas
y se han percatado
que es mucho
trabajo y el Sprint
corre el riesgo de
no cumplirse
(remueven tareas)
snn
h 800
o
700
= 60D
o
500
LU
4UU
? yuu
i VIIII
* mn
cu
n
1
J2_
\
\
y25^1
*rW4
:0
Customer
Una persona responsable de
crear y priorizar el PB.
A partir del PB selecciona los
objetivos del siguiente Sprint.
Junto con los stakeholders.
revisa el sistema al finalizar el
Sprint.
Development
Trabaja en el Sprint Backlog
(iteracin).
Cada miembro es, solamente, un
"miembro del equipo (team
member).
Cu*toroer
J J
SerumT&tm J
Product Owntr
Other Management
50% desabollador, no slo
administrador.
Conoce y refuerza la visin y objetivos del
proyecto e iteracin.
Asegura que los valores y prcticas se sigan.
Media entre la administracin y el Serum
team.
Monitorea el avance y elimina
obstculos.
Conduce la reunin diaria de Serum. Conduce
la revisin del Sprint (demo).
Chic Kons
Todos los dems pueden
observar, pero no interferir o
hablar durante una iteracin
j
Serum Uatfer
Mtodos giles-Scrum y XP
19
Dr. Ricardo Quintero
r
I mplementacin
H
( valores)
-U-
Prcticas-una puede soportar mltiples disciplinas
Requisitos
Pruebas & Verificacin
/ Spnm j
Gestin del proyecto
Cticfcons I /f're Gain I and
Pqs I
Configuracin & Ambiente de
Gestin de Cambios
Dedonsi GtocfcGono|
In I Hour | -tOn | |
T
17
I
Core practices-Requisitos
o Pre-juego Planeacin y montaje:
Todos los stakeholder pueden contribuir para
crear una lista de caractersticas, UC, extensiones,
defectos, etc y registrar en el Product Backlog.
Se designa un Product Owner y las solicitudes
se hacen a travs del mismo.
En esta sesin se genera el trabajo para, al
menos, la primer iteracin.
Se identifica el Release Backlog, un
subconjunto del Product Backlog que definir al
siguiente producto operacional.
Mtodos giles-Scrum y XP 81
23
Dr. Ricardo Quintero
Corepractices-Requsitos
o Planeacin de Sprint:
Antes del inicio de cada Sprint se manejan dos juntas:
1) Los stakeholders refinan y re-priorizan el Product Backlog y
el Release Backlog para seleccionarlos objetivos de la
siguiente iteracin, dirigidos por valor del negocio o riesgo.
2) El Serum Team y el Product Owner se
renen para definir como lograr las tareas y crear el Sprint
Backlog (en unas 4 a 16 hrs). Si el esfuerzo estimado excede
los recursos, ocurre otro ciclo de planeacin.
Corepractices-Requsitos
o Planeacin de Sprint:
Conforme la iteracin procede, el Sprint Backlog se
actualiza, es comn que sea diario durante la parte
inicial de la iteracin, conforme nuevas tareas se
descubren.
Al paso del tiempo (y con experiencia), el equipo
mejora en la elaboracin del Sprint Backlog.
m
PlaneacindelSprint-Aspectosprcticos
o Es, quiz, el evento ms importante de Serum. Una mala
planeacin puede llevar al fracaso todo el Sprint. o
Resultados de la planeacin:
El objetivo del Sprint.
Una lista de los miembros del equipo y sus niveles de
compromiso.
El Sprint backlog.
Una fecha definida para el Sprint demo.
Una hora y lugar definidos para la junta diaria de Serum.
Mtodos giles-Scrum y XP 82
23
Dr. Ricardo Quintero
m
PlaneacindelSprint-Aspectosprcticos
o El Product Owner la debe atender. De no hacerlo, el
mtodo se ver seriamente comprometido en su xito, o El
tiempo del reunin debe respetar el principio de time-
boxing (al principio puede ser difcil e incluso no lograrse
una reunin satisfactoria, pero an as persiste, la prxima
reunin se vern presionados a dar resultados en el
tiempo estipulado).
m
Mtodos giles-Scrum y XP
24
Dr. Ricardo Quintero
Planeacin del Sprint-Aspectos
prcticos
o Agenda ejemplo (8:00 a 12:00 hrs)
8:00 a 8:30 - El Product Owner define el objetivo y sumariza el
Product Backlog. Se define lugar del Demo, hora y fecha.
8:30 a 10:00 - Estimaciones de tiempo de las HU, posibles
divisiones de las mismas. El Product Owner puede repriorizar las HU.
Se clarifican las HU. Se llenan todos los "Demos" de cada HU en el
PB.
10:00 a 11:00 - El equipo selecciona las HU a incluir en el Sprint.
Se calcula la velocidad del equipo.
11:00 a 12:00 - Se determina la hora y lugar de la junta diaria de
Serum. Se dividen las HU en Tareas.
Core practices-Requisitos
o Revisin de Sprint:
Al finalizar cada iteracin, hay una reunin de
revisin (max. 4 hrs) convocada por el Scrum
master. Participan el equipo, el Product Owner
y otros stakeholders.
Se muestra un demo del producto para
informar a los stakeholders de la funcin del
producto, diseo, fortalezas, debilidades,
esfuerzo del equipo y futuros puntos de
problema.
H
Corepractices-Requsitos
o Revisin de Sprint:
Se motiva al feedback" y a la lluvia de ideas sobre las
direcciones futuras, pero no se establecen
compromisos. En la siguiente reunin de Sprint
planning, los stakeholders y el equipo harn los
compromisos.
Mtodos giles-Scrum y XP 84
23
Dr. Ricardo Quintero
Prohibido presentaciones en Power Point. El
nfasis en la presentacin es en mostrar el
producto.
m
RevisindeSprint-Aspectosprcticos
o Asegrate de presentar claramente el objetivo
del Sprint. Si en la reunin hay gente que no sabe nada del producto,
da alguna explicacin, o Enfcate en presentar el producto, no
presentaciones en PowerPoint, o Procura que tu demo sea sobre
escenarios fciles y giles de presentar (ms que cuestiones estticas), o
Manten la demo a nivel de funcionalidad (el Qu?)y no tecnicismos (el
Cmo?), o Si es posible, trata que el auditorio pruebe el producto.
o No muestres arreglos o caractersticas pequeas. Enfcate en lo
importante.
4
Mtodos giles-Scrum y XP
24
Dr. Ricardo Quintero
Corepractices-ProjectManagement
o No agregar a una iteracin:
Durante una iteracin, la administracin no agrega
trabajo al equipo o individuos. Se busca un
"enfoque ininterrumpido".
En el raro caso de que algo tenga que
agregarse algo deber removerse.
Pero, antes de cada nueva iteracin el Product Owner
y la administracin tienen el derecho y la
responsabilidad de re-priorizar el Product Backlog e
indicar que hacer en la siguiente iteracin, de tal
forma que la requisicin de trabajo no exceda los
recursos.
I
Corepractices-ProjectManagement
o Cerdos y gallinas:
Durante la Serum meeting, slo el Serum Team puede
hablar (the Pigs). Los dems pueden atender a la
reunin, pero se mantienen en silencio (the chickens),
an el jefe.
Slo se les permite "feedback" para puntos de
explicacin relevante del negocio para el trabajo
del equipo.
"Huevos con jamn-Quin est involucrado y quien
comprometido? El cerdo o la gallina?"
Corepractices-ProjectManagement
o Serum Master firewall:
El Serum Master debe asegurarse de que el equipo no
sea interrumpido por solicitudes de trabajo de
terceros y de ocurrir, removerlas y manejarlas con
"inteligencia".
El Serum Master debe asegurarse de que el
mtodo de Serum se aplique, removiendo
obstculos, proveyendo recursos y tomando
decisiones.
Debe tomar la iniciativa cuando ve que las reuniones
no estn completando su trabajo o si el equipo no
est participando (hablando, por ej.)
Mtodos giles-Scrum y XP
24
Dr. Ricardo Quintero
I
Corepractices-ProjectManagement
Serum diario:
Cada da de trabajo en el mismo lugar y hora, se tiene
una reunin con los miembros del equipo (en crculo),
en el que se realizan las preguntas especiales Serum
para cada miembro: i) Qu hiciste desde el ltimo Serum?
2i Qu hars desde ahora y hasta el siguiente Serum?
3i Qu obstculos tienes para alcanzar los objetivos?
i) Alguna tarea a agregar al Sprint Baeklog? s) Haz aprendido
o decidido algo nuevo, de relevancia para alguno de los
miembros del equipo?
1
Corepractices-ProjectManagement
o Serum diario:
La reunin es mejor manejarla en crculo para
motivar a la brevedad.
En promedio 15 a 20 minutos para 7 a 10
personas. Reuniones ms largas pueden tenerse al
inicio de la iteracin.
Miembros que no son del equipo (chickens) estn
fuera del crculo.
Se maneja junto a un pizarrn en el cual las tareas
y obstculos se van escribiendo.
El Serum Master borra los obstculos slo cuando
han sido removidos
1
Corepractices-ProjectManagement
Serum diario:
Mtodos giles-Scrum y XP
24
Dr. Ricardo Quintero
Puede existir alguna forma de comunicacin
externa para miembros no presentes.
El Serum Master asegura que las reglas se sigan y
prepara el lugar para una reunin eficiente.
Debe empezar a la hora.
Ninguna otra discusin se permite que las 5
preguntas. El Serum Master tiene la autoridad de
reenfocar la discusin.
Si otros aspectos necesitan discusin, se pueden tener
reuniones secundarias inmediatamente despus del
Serum meeting con subconjuntos del Serum team.
1
Mtodos giles-Scrum y XP
27
Dr. Ricardo Quintero
Serum diario-Aspectos prcticos
o En el Sprint Backlog "de hombre pobre" cada miembro del
equipo puede actualizar el tiempo restante de cada tarea,
es muy importante que todos actualicen sus tareas. Si
esta tarea se deja slo al Serum Master, ser mucho
trabajo:
1
Serum diario-Aspectos prcticos
Qu hacer con los impuntuales? Puede pagar una
"multa" y usar luego el dinero para algn evento social
Qu hacer con los que no saben que hacer el da
actual"? Se les escucha (sin discutir) y luego se lleva a
todo el equipo al Sprint Backlog para que adecen o
agreguen nuevas tareas. Con el SB actualizado se les pide
a los "susodichos" que seleccionen lo que harn el da de
hoy. En ocasiones, si esto no funciona, el Serum Master
tendr que realizar coaching ms personal (incluso decidir
si vale la pena seguir con ese miembro o no en el equipo).
1
Core practices-Project Management
o Decisiones en 1 hora:
Los bloqueos reportados en el Serum Meeting y que
requieren decisin del Serum Master deben
decidirse, idealmente, inmediatamente o dentro de
1 hora.
Write
Write
Write
failing
failing
failing
2d test
test
3d
24 test , 34
Mtodos giles-Scrum y XP 89
28
Dr. Ricardo Quintero
Se promueve el valor de "Es mejor tomar malas
decisiones a no decidir. Las malas decisiones se
pueden revertir"
I
Core practices-Project Management
o Remocin de bloqueos en 1 da:
Los bloqueos reportados en el Serum Meeting
deben removerse idealmente antes de la siguiente
reunin.
1
Mtodos giles-Scrum y XP
29
Dr. Ricardo Quintero
Core practices-Project Management
o Equipos de 7:
Serum se puede escalar a proyectos
grandes, pero recomienda tener un
mximo de 7 miembros.
Proyectos ms grandes se manejan
como multi-equipo.
57
Core practices-Project Management
o Serum of Serums:
Se pueden manejar para multi-equipos reuniones de Serum
de Serums.
VA,YA
Mtodos giles-Scrum y XP
33
Dr. Ricardo Quintero
Core practices-Project Management
o Sprint:
El trabajo generalmente se organiza en
iteraciones de 30 das de calendario; cada una
llamada un Sprint.
Core practices-Project Management
o Equipos auto-dirigidos y auto- organizados:
Se empodera al equipo con autorizacin y recursos de
tal forma que caminen a su ritmo y resuelvan sus
problemas.
El Serum Master y la administracin proveen recursos y
remueven obstculos.
Es el reto ms fuerte para la adopcin de Serum.
m
Core practices-configuracin &
Ambiente de Gestin de Cambios
o Cuarto comn del proyecto:
Idealmente el equipo trabajo junto en un espacio
comn para el proyecto, en lugar de oficinas
separadas o cubculos.
Para otras actividades se pueden considerar los
espacios separados y privados.
Se han reportado casos de xito con equipos
Mtodos giles-Scrum y XP
31
Dr. Ricardo Quintero
geogrficamente dispersos que participan mediante
comunicacin virtual.
i
Core practices-configuracin &
Ambiente de Gestin de Cambios
o Construccin diaria:
Al menos una integracin diaria y una prueba
de regresin a todo lo largo del cdigo
verificado.
Ms adelante veremos la prctica de
Integracin Continua de XP que es an mejor.
1
Mtodos giles-Scrum y XP
32
Dr. Ricardo Quintero
ValoresquepromueveSerum
Compromiso:
Dado que el Serum Team se compromete a metas
definidas por iteracin y se le da la autonoma y
autoridad para decidir como alcanzarla.
Dado que la Administracin y el Serum Manager se
comprometen a no introducir nuevo trabajo, eliminar
obstculos y proveer recursos.
El Product Owner se compromete a definir y priorizar
el Product Backlog, guiar los objetivos por iteracin y
revisar y ofrecer "feedback" iteracin a iteracin.
ValoresquepromueveSerum
o Enfoque:
Dado que el Serum Team se enfoca en los
objetivos establecidos de la iteracin, sin
distracciones.
El Serum Master y la administracin se enfocan
en proveer recursos, remover obstculos y
evitar interrupciones al equipo con solicitudes
adicionales.
ValoresquepromueveSerum
o Apertura:
El Product Backlog est disponible para
visualizar el trabajo y las prioridades. Las
Daily Serums hacen visible el estado general de
los individuos y sus compromisos. La velocidad
del trabajo y su tendencia es visible con el
Backlog graph.
Mtodos giles-Scrum y XP
33
Dr. Ricardo Quintero
ValoresquepromueveSerum
Respeto:
Ms responsabilidad de equipo que "chivos expiatorios".
Los miembros del equipo se respetan por sus
debilidades y fortalezas y no por sus fallas en las
iteraciones.
El equipo completo (ms que el administrador), mediante
auto-organizacin y direccin, adopta la actitud de
resolver problemas "individuales" mediante la
exploracin grupal de soluciones dndole los recursos y
la autoridad para reaccionar a los retos (tal como traer
un experto consultor para compensar sus carencias de
expertise).
Valores que promueve Serum
o Coraje:
a La administracin tiene el coraje de planear y guiar
adaptativamente y confiar en el equipo evitando
decirles que tienen que hacer.
El equipo tiene el coraje de tomar la responsabilidad de
la auto-direccin y la auto-gestin.
Temas
o Clasificacin de Serum o Workproducts, roles y
prcticas
Errores comunes y malos entendidos
o No ser equipo auto-dirigido; los administradores o el Serum
Manager dirige u organiza el equipo, o No actualizar
diariamente el Sprint Backlog. o Agregar nuevo trabajo
individual o a la iteracin, o El Product Owner no se involucra
o no decide, o No hay Sprint Review. o Muchos masters.
o La documentacin es mala: no se habl de documentacin,
(Errores comunes, adopcin y
mezcla de procesos,
debilidades
fortalezas y
Mtodos giles-Scrum y XP 95
34
Dr. Ricardo Quintero
pero el principio ya se ha comentado -aquella que
agregue valor al proceso-.
Errores comunes y malos entendidos
o El diseo o la documentacin es mala: lo mismo
que la documentacin, o Serum meetings muy
largas o no enfocadas, o La iteracin no termina en
un producto parcial integrado y probado, o Cada
iteracin termina en un release de producto.
o Planeacin predictiva. Planeacin tipo PERT.
Mezcla de procesos: Scrum+UP
o Las prcticas de Serum son guales o
especializaciones de las prcticas de UP o son
adiciones consistentes.
o Aunque Serum no promueve orden en las
actividades, se puede aprovechar el orden de UP
para los Sprints.
o Cuando estudiemos XP veremos su mezcla con
Serum
Mtodos giles-Scrum y XP
Dr. Ricardo Quintero
Estrategias de adopcin
o En contraste a la recomendacin precautoria de UP (un
proyecto piloto), los creadores de Serum motivan a las
organizaciones para adoptarlo en su proyecto ms difcil y
crtico, o Esta recomendacin atrevida la sustentan en la
visin que tienen los creadores de que es una medicina
fuerte con una alta razn de xito.
Estrategiasdeadopcin
o Despus de que inicia el primer proyecto, pero no antes de
la segunda iteracin (es decir, cuando todas las prcticas
se han probado) administracin ajena al proyecto y
clientes potenciales se les puede invitar para observar los
Serum meetings, Sprint Planning y Sprint Reviews.
o Los proyectos de segunda generacin de Serum pueden
iniciar antes de complementar los primeros, aunque se
debe dar tiempo de madurar al primero (algunas 3
iteraciones). Los miembros del equipo del segundo
equipo se pueden beneficiar al atender alguna de las
reuniones del primer equipo.
Mtodos giles-Scrum y XP 97
34
Dr. Ricardo Quintero
Ejercicio
o Realizaremos un ejercicio de Serum, o
Se formaran 3 equipos (no ms de 7
integrantes),
o Este es el Product Backloq.
o Este es el ejercicio.
^Lecturasrecomendadas
o La biblia de Serum es: Agile Software
Development with Serum
Agile Software
Development with
Scrum
red
yellow
blue
red
yellow
blue
KenSchwaber MIkeBeedie
74
100
c. Cul es
EJERCICIO - Porqu estas estimaciones predictivas fallan?
LECTURA: A rational design process: How and Why to fake it
1) Lea la parte I.- THE SEARCH FOR THE PHILOSOPHER 'S STONE: WHY DO WE WANT
A RATIONAL DESIGN PROCESS? Conteste las siguientes preguntas:
a. Qu se entiende por una persona racional?
b. Porqu el proceso de desarrollo de software es
considerado irracional?
el propsito de los mtodos de desarrollo de software?
2) Lea la parte II.- WHY WILL A SOFTWARE DESIGN PROCESS ALWAYS BE AN
IDEALISATION? Identifique las 7 razones por las cuales el desarrollo de software es
considerado irracional. Escrbalas en una sola lnea:
b ________________________________________________________
c. ________________________________________________________________
d. _________________________________________________________________
e. ________________________________________________________________
f. _________________________________________________________________
g ------------------------------------------------------------------------------------
3) TAREA: En casa lea el resto del artculo. Escriba sus comentarios sobre el disfraz que es
necesario colocar a nuestro proceso de desarrollo de software.
101
1
A RATIONAL DESIGN PROCESS: HOW AND WHY TO
FAKE IT
David L. Parnas Computer Science Department University of Victoria Victoria BC V8W 2Y2 Canada and
Computer Scicnce and Systems Branch Naval Research Laboratory Washington DC 20375 USA
and
Paul C. Clements Computer Science and Systems Branch Naval Research Laboratory Washington DC 20375
USA
I. THE SEARCH FOR THE PHILOSOPHER S STONE: WHY DO WE
WANT A RATIONAL DESIGN PROCESS?
A perfectly rational person is one who always has a good reason for what he does. Each step taken can be shown
to be the best way to get to a well defined goal. Most of us like to think of ourselves as rational professionals.
However, to many observers, the usual process of designing software appears quite irrational. Programmers start
without a clear statement of desired behavior and implementation constraints. They make a long sequence of
design decisions with no clear statement of why they do things the way they do. Their rationale is rarely
explained. Many of us are not satisfied with such a design process. That is why there is research in software
design, programming methods, structured programming and related topics. Ideally, we would like to derive our
programs from a statement of requirements in the same sense that theorems are derived from axioms in a
published proof. All of the methodologies that can be considered "top down" are the result of our desire to have a
rational, systematic way of designing software. This paper brings a message with both bad news and good news.
The bad news is that, in our opinion, we will never find the philosopher's stone. We will never find a process that
allows us to design software in a perfectly rational way. The good news is that we can fake it. We can present our
system to others as if we had been rational designers and it pays to pretend do so during development and
maintenance.
II. WHY WILL A SOFTWARE DESIGN "PROCESS" ALWAYS BE AN
IDEALISATION?
We will never see a software project that proceeds in the "rational way. Some of the reasons are listed below:
(1) In most cases the people who commission the building of a software system do not know
exactly what they want and are unable to tell us all that they know.
(2) Even if we knew the requirements, there are many other facts that we need to know to
design the software. Many of the details only become known to us as we progress in the
implementation. Some of the things that we learn invalidate our design and we must
backtrack. Because we try to minimize lost work, the resulting design may be one that would
102
2
not result from a rational design process.
(3) Even if we knew all of the relevant facts before we started, experience shows that human
beings are unable to comprehend fully the plethora of details that must be taken into account
in order to design and build a correct system. The process of designing the software is one in
which we attempt to separate concerns so that we are working with a manageable amount of
information. However, until we have separated the concerns, we are bound to make errors.
(4) Even if we could master all of the detail needed, all but the most trivial projects are
subject to change for external reasons. Some of those changes may invalidate previous
design decisions. The resulting design is not one that would have been produced by a rational
design process.
(5) Human errors can only be avoided if one can avoid the use of humans. Even after the
concerns are separated, errors will be made.
(6) We are often burdened by preconceived design ideas, ideas that we invented, acquired
on related projects, or heard about in a class. Sometimes we undertake a project in order to
try out or use a favourite idea. Such ideas may not be derived from our requirements by a
rational process.
(7) Often we are encouraged, for economic reasons, to use software that was developed for
some other project. In other situations, we may be encouraged to share our software with
another ongoing project. The resulting software may not be the ideal software for either
project, i.e., not the software that we would develop based on its requirements alone, but it is
good enough and will save effort.
For all of these reasons, the picture of the software designer deriving his design in a rational, error-free, way from
a statement of requirements is quite unrealistic. No system has ever been developed in that way, and probably
none ever will. Even the small program developments shown in textbooks and papers are unreal. They have been
revised and polished until the author has shown us what he wishes he had done, not what actually did happen.
103
------------- y
para que lo que
______ adecuado.
_____ es lo ms
y
EJERCICIO - Timeboxing
LECTURA: Timeboxing for top team performance
1) Lea la INTRODUCCIN. Conteste las siguientes preguntas:
a. Segn el autor Cul es la definicin de un proyecto exitoso?
b. Complete:
Timebox: Define y establece un
despus se ajusta el ____________
se desea entregar se entregue en Esto asume que
importante y frecuentemente lo es. Hay otros aspectos a
considerar tambin:
.. Ms
adelante los revisaremos.
2) Lea la parte THE IRON TRIANGLE.
En un proyecto, los recursos suelen ser fijos. Lo que se puede manejar es lo
siguiente (defina):
a. Schedule: _________________________________________________________
b. Scope: ___________________________________________________________
c. Quality: __________________________________________________________
3) Se les llama el Tringulo de hierro por su relacin inmutable. El autor menciona dos
ejemplos de esta relacin. De acuerdo a su experiencia, proporcione un ejemplo ms:
EJEMPLO: _________________________________________________________________
Lea: THE LAST FEATURES y conteste: Cul es
la mejor estrategia de TimeBoxing?
4) Revise la Figura 2 The 90/90 Rule. De que forma timeboxing contribuye a que el 10%
de un sistema no nos tome el 90% del tiempo
disponible? _____________________________________________________________
5) Lea: THE RIGHT FEATURES. Conteste Como seleccionar las caractersticas que
primero se deben entregar en un
sistema? __________________________________________________________
104
6) Lea: INCREMENTAL RELEASES. Mencione los pasos que sigue la estrategia de Jim
McCarthy de Microsoft para entregas incrmentales: (gotta have=consigue tener; should
have= debera tener; nice to have=sera bueno tener)
a. ______________________________________________________________
b ____________________________________________________
c. _____________________________________________________________
d . ____________________________________________________________
e. ________________________________________________________________
f. ________________________________________________________________
7) Lea: STOP APOLOG1ZING Cul fue la enseanza que Bill Gunther le ense al
autor cuando era un joven ingeniero de Sistemas de
IBM? __________________________________________________________________
Cul es tu opinin al respecto?
105
Timeboxing For Top Team Performance
by
Rick Zahniser
Whats your definition of a successful software project? How about this:
A successful software project delivers a quality product on time, within budget.
Time is always a factor in software development, and developers are always complaining about it.
They didnt give us enough time.
They didnt let us estimate; they just told us when it was due.
We had to skip most of the system testing in order to deliver on time.
Timeboxing grabs that problem by the horns and wrestles it to the ground. (Forgive me Im from Colorado!) We set
an end time - that is, a timebox - and then adjust our scope so that we deliver what we can within the time allotted.
This presumes that the schedule is the most important aspect of the project, and frequently it is. Now there are other
aspects, including resources, development skill, scope and quality. Lets look at these aspects realistically, with an eye
to managing them so that we look good!
The Iron Triangle
On a given project, resources are usually fixed; and unless you believe in the Mongolian Horde Approach (hire a
hundred people and hope some of them are good) the best team is a small one. Once youve put that team together,
youve established their capability, at least in the short run. Now you have three aspects to manage, as shown in
Figure 1.
Schedule: The time when the software product is due.
Timeboxing for Top Team Performance Pgina 1 de 5
http://www.belizenorth.com/articlesATIMEBOX.htm 22/06/2005
Scope: The functions and features delivered in the software product.
Quality: The absence of defects in the product.
I call these three The Iron Triangle because they have an immutable relationship. For example:
1. If we increase the scope, the schedule must grow, or the quality must decline.
2. If we shorten the schedule, we must decrease the scope or deliver with more defects.
The best timeboxing strategy holds quality constant and reduces scope to meet a schedule. Reducing scope flies in the
face of what I call The Worlds Greatest Program syndrome -- the tendency on the part of developers to put every
great feature into the first release, even if it causes us to be late. (Roland Racko calls this creeping or galloping
elegance.) The customer always wants those features; they just dont understand how much it will cost them. Id like
to acquaint you with the facts, so you can feel good about leaving some features out when youre approaching the
end of your timebox.
The last features
Those latest and greatest features cost more than you expect, and heres why. Remember the 90:90 rule:
The first 90% of a system takes 90% of the time:
The last 10% takes the other 90% of the time!
That sounds like a joke, but Figure 2 shows why its true. As we approach 100% complete, our progress slows down
drastically. This is because were making tough decisions in the face of uncertainty. Moreover, theyre not very good
decisions. We will probably have to make many of them over again, when we have more information. This last 10%
also accounts for much of the arguing and fighting that goes on in a project. Timeboxing forces us to forgo these last
features, but it also lets us avoid most of the conflict that goes with them.
Paretos Law - the old 80:20 rule - gives us another justification for procrastinating on those last features. In the
systems world, it predicts that:
20% of the system will give us 80% of the payback.
Now, in reality, this 20% only applies to a particular set of users. If we have a diverse set of users, we will have to
106
give each group a different 20%, but its reasonable to expect that we can please the vast majority of our users with 80-
90% of the features. Sooner or later, were going to deliver those last features, but not right now!
The right features
Making Paretos Law work for you may sound like magic, but there actually is a systematic way of finding out what
features you should deliver first. Ask your customers to rank the features they want. You can do this most easily in a
group meeting of customers and developers.
Write each feature on a Post-it, put these on a whiteboard, and have the group rank them (1 is high, 10 is low.). Then
ask your developers to estimate how difficult each feature will be to implement (1 is easy, 10 is hard) and multiply these
two to give you a priority weight for each feature. On the whiteboard, build a matrix like the one Ive shown in Figure 3.
It will show you, the team and the customers which features you should implement first and which you might postpone.
(Quality practitioners will recognize this process as a part of QFD or Quality Function Deployment.)
Incremental Releases
This whole process of managing features is the best way to stage incremental releases of a software product. Jim
McCarthy, Program Manager for Microsoft C++ products, asserts that you can build customer confidence through a
series of timely releases, which delivers a steady stream of new features. To do this, he says you have to get into a
stable state, and be ready to ship at any time.
Heres a strategy for delivering that first release:
1. Define your features.
2. Prioritize them.
3. Define three subsets:
Gotta have
Should have
Nice to have
3. Build the gotta have subset as a prototype. Define a timebox, start prototyping, and deliver what you have when
Timeboxing for Top Team Performance Pgina 1 de 5
http://www.belizenorth.com/articlesATIMEBOX.htm 22/06/2005
you run out of time. (Since its a prototype, you wont have trouble explaining why it looks incomplete.)
4. Use this early experience with the prototype to define timeboxes for your first incremental release.
5. Stay within your timeboxes, delivering the features you have ready, on time.
Maintaining Quality
If youre in a stable state, you have a much better chance of controlling quality. A couple of basic metrics will
demonstrate stability and dramatically improve your ability to deliver a quality product as you reach the end of a
timebox. You need Defects Discovered, and Defects Corrected for each time period (days or weeks.) Figure 4 is a graph
of these two measures; you can also derive (and graph) other important measures such as Defects Remaining and Mean
Time to Repair.
Who does this defect tracking and graphing? According to McCarthy, Microsoft has a ratio of one Quality Assurance
(QA) person for every two developers on the team. This graph is a great way for QA to highlight the coordination
between these two factions on your team.
You can timebox anything
So far, weve been talking about timeboxing for product delivery. As I began studying the literature on timeboxing (see
sidebar) I realized that I had been doing a form of timeboxing for over a decade. Training companies frequently have a
set format for their courses; for example, all of their courses may be four days long. To build a course, you start with an
overall four-day timebox, and break that down into smaller timeboxes to fit within breaks and lunches. That realization
led me to try timeboxing in our methodology experiments at CASELab. We put every activity into a one-to two-hour
timebox and gave the participants an opportunity to expand the box a little but not more than 20%.
We found that you can timebox any development activity, from requirements definition, to system design, to
Timeboxing for Top Team Performance Pgina 3 de 5
http://www.belizenorth.com/articles/TIMEBOX.htm 22/06/2005
Schedule
107
paper prototyping your screens. You define a time interval, and work within it. When you run out of time, you stop,
and move on. Of course, you have to be reasonable; you can't do ten days of coding in a two-day timebox; but you
actually might able to build a prototype in three days. You won't know until you try.
Stop apologizing!
Early in my career, as a young IBM Systems Engineer, I was working on a SPOOLing package with Bill Gunther, an old
software hand from Northrop Corporation. I suggested that, for some good reasons, we might be able to slip the
package we were working on a couple of weeks from its scheduled delivery date.
"NO!! he said, vehemently. People won't remember why we were late; they will only remember that we were
late.
Thats still true; it's all too easy to get a reputation for always being late. If schedule is important in your software
shop, you CAN be on time, if youll simply manage the iron triangle properly. And timeboxing is a good way to do
that.
## Go to top Go to sidebar
FIGURES
Schedule
Timeboxing for Top Team Performance Pgina 3 de 5
http://www.belizenorth.com/articles/TIMEBOX.htm 22/06/2005
Figure 3. Feature Priority Matrix
Feature Customer
Rank
Delivery
Cost
Priority
Capture existing file 3 4 12
Create new records 1 1 1
Allocate new space interactively 5 9 45
Validate keys interactively 2 2 4
Validate all fields interactively 6 6 36
Recreate file from backup 3 4 12
Update file from journal 8 7 56
Modify existing records 1 3 3
Find record by primary key 1 2 2
Find record by secondary key 2 6 12
... etc...
Timeboxing for Top Team Performance Pgina 1 de 5
http://www.belizenorth.com/articlesATIMEBOX.htm 22/06/2005
109
Sidebar
Want to Learn More About Timeboxing?
The term timebox was first used by Scott Shultz of DuPont, as a key component of Rapid Iterative Production
Prototyping (RIPP), a predecessor of RAD, which Shultz developed in the early 80s. James Kerr and Richard Hunter
interview him in Inside RAD: How to build fully functional computer systems in 90 days or less. (McGraw- Hill, 1994,
pp. 14-16.)
In Rapid Application Development, James Martin calls timeboxing a variant of RAD and devotes an entire chapter to
it.(Prentice-Hall, 1991, Chapter 11.)
Without using the word timeboxing, Tom Gilb provides a cogent discussion of Deadline pressure: how to beat it
in Principles of Software Engineering Management (Addison-Wesley, 1988, Chapter 17.)
For more on QFD, see The Customer-Driven Company: Managerial Perspectives on QFD by William Eureka and Nancy
Ryan (American Supplier Institute, 1988.)
For an interesting discussion of creeping or galloping elegance, and incremental delivery, see Roland Rackos Object
Lessons: Joseph and the CD-ROM of Many Colors (Software Development, September 1994.)
Jim McCarthy is a frequent speaker at Software Development and other national conferences. His talk 21 Rules of
Thumb for Delivering Quality Software on Time is a classic, available on tape from Conference Copy, Inc. 717-775-
0580. (Session 04, Conf. #698D)
Finally, Pascal Zacharys Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at
Microsoft (Free Press, 1994) is must reading for any one who needs to understand the realities of the Iron Triangle.
(Its also a GREAT read!)
About the Author. [Updated:] When this was written, Rick Zahniser was the founder & chairman of CASELab, a
startup which specialized in coaching software teams to world-class performance. In 1999, he decided to watch the
Turn of the Century from Belize, Central America. You can meet him and chat with him on his website
http://belizenorth.com.
Copyright, CASElab, 1995. All rights reserved.
Go to top
1
S 9 ID 11 12 13 H IS 16 17 1S 19
Figure 4. Defects found vs. Defects fixed.
111
7
Agile Processes
The weather-cock on the church spire, though made of iron, would soon be broken by the storm-
wind if it did not understand the noble art of turning to every wind.
-- Heinrich Heine
Many of us have lived through the nightmare of a project with no process to guide it. The lack of a
process leads to unpredictability, repeated error, and wasted effort. Customers are disappointed by
slipping schedules, growing budgets, and poor quality. Developers are disheartened by working ever
longer hours to produce ever poorer software.
Once we have experienced such a fiasco, we become afraid of repeating the experience. A
common response to fear is to create a process that we believe eliminates what we are afraid of. We
are afraid that
The project will produce the wrong product.
The project will produce a product of inferior quality.
The project will be late.
We'll have to work 80 hour weeks.
Well have to break commitments.
We wont be having fun.
Our fears motivate us to create a process that constrains our activities and demands certain
outputs and artifacts. We draw these constraints and outputs from past experience, choosing things
that appeared to work well in previous projects. Our hope is that they will work again, and take
away our fears.
Chapter: 8
112
But projects are not so simple that a few constraints and artifacts can reliably prevent error. As
errors continue to be made, vve diagnose those errors and put in place even more constraints and
outputs in order to prevent those errors in the future. After many projects we may find ourselves
overloaded with a huge cumbersome process that greatly impedes our ability to get projects done.
A big cumbersome process can create the very problems that it is designed to prevent. It can
slow the team to the extent that schedules slip and budgets bloat. It can reduce responsiveness of the
team to the point that they are always creating the wrong product. Unfortunately this leads many
teams to believe that they dont have enough process. So, in a kind of runaway process inflation, they
make their process ever larger.
Runaway process inflation is a good description of the state of affairs of the software industry
circa 2000 A.D. Though there were still many teams operating without a process. The adoption of
very large heavyweight processes was rapidly growing; especially in large corporations.
The Agile Alliance
In early 2001, motivated by the observation that software teams in many corporations were stuck in a
quagmire of ever increasing process, a group of industry experts met to outline the values and
principles that would allow software teams to develop quickly and respond to change. They called
themselves the Agile Alliance. Over two days they worked to create a statement of values. The result
was the manifesto of the Agile Alliance. Over the next three months they continued to work together
to create the principles of agility.
The Manifesto: a statement of agile values
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
- Individuals and interactions over processes and tools - - Working software over
comprehensive documentation - - Customer collaboration over contract negotiation ~
- Responding to change over following a plan -
That is, while there is value in the items on the
right, we value the items on the left more.
Chapter: 12
113
Alistair Cockburn
Kent Beck Ward
Cunningham Andrew
Hunt Robert C.
Martin
Mike Beedle Arie van Bennekum
Martin Fowler James Grenning
Ron Jeffries Jon Kern
Steve Mellor Ken Schwaber
Jim Highsmith
Brian Marick
Jeff Sutherland
Dave Thomas
Individuals and interactions over processes and tools. People are the most important ingredient of
success. A good process will not save the project from failure if the team doesnt have strong players; but
a bad process can make even the strongest of players ineffective. Even a group of strong players can fail
badly if they dont work as a team.
A strong player is not necessarily an ace programmer. A strong player may be an average
programmer, but someone who works well with others. Working well with others, communicating and
interacting, is more important that raw programming talent. A team of average programmers who
communicate well are more likely to succeed than a group of superstars who fail to interact as a team.
The right tools can be very important to success. Compilers, IDEs, source code control systems, etc.,
are all vital to the proper functioning of a team of developers. However, tools can be overemphasized. An
overabundance of big unwieldy tools is just as bad as a lack of tools.
My advice is to start small. Dont assume youve outgrown a tool until you tried it and found you
cant use it. Instead of buying the top of the line, mega-expensive, source code control system, find a free
one and use it until you can demonstrate that youve outgrown it. Before you buy team licenses for the
best of all CASE tools, use white boards and graph paper until you can unambiguously show that you
need more. Before you commit to the top-shelf behemoth database system, try flat files. Dont assume
that bigger and better tools will automatically help you do better. Often they hinder more than they help.
Remember, building the team is more important that building the environment. Many teams and
managers make the mistake of building the environment first and expecting the team to gel automatically.
Instead, work to create the team, and then let the team configure the environment on the basis of need.
Working software over comprehensive documentation. Software without documentation is a disaster.
Code is not the ideal medium for communicating the rationale and structure of a system. Rather, the team
needs to produce human readable documents that describe the system, and the rationale for their design
decisions.
However, too much documentation is worse than too little. Huge software documents take a great
deal of time to produce, and even more time to keep in sync with the code. If they are not kept in sync,
then they turn into huge lies, and become a significant source of misdirection.
I have no problem with a short rationale and structure document that the team produces and keeps
in sync from month to month. But I want that document to be short and
9 Chapter :
114
salient. It should discuss the overall design rationale, and only the highest level structures in the system.
If all we have is a short rationale and structure document, how do we train new team members about
the system? We work closely with them. We transfer our knowledge to them by sitting next to them and
helping them. We make them part of the team through close training and interaction.
The two documents that are the best at transferring information to new team members, are the code
and the team. The code does not lie about what it does. It may be hard to extract rationale and intent from
the code; but the code is the only unambiguous source of information. The team holds the ever-changing
roadmap of the system in their heads. There is no way to put that roadmap down on paper and transfer it
to others that is faster and more efficient than interaction with the team.
Many teams have gotten hung up in pursuit of documentation instead of software. This is often a
fatal flaw. There is a simple rule that prevents it:
Produce no document unless its need is immediate and significant.
Customer collaboration over contract negotiation. Software cannot be ordered like a commodity.
You cannot write a description of the software you want and then have someone develop it on a fixed
schedule for a fixed price. Time and time again, attempts to treat software projects in this manner have
failed. Sometimes the failures are spectacular.
It is tempting for the managers of a company to tell their development staff what their needs are, and
then expect that staff to go away for awhile and return with a system that satisfies their needs. But this
mode of operation leads to poor quality and failure.
Successful projects involve customer feedback on a regular and frequent basis. Rather than
depending upon a contract, or a statement of work, the customer of the software works closely with the
development team, providing frequent feedback on their efforts.
A contract that specifies the requirements, schedule, and cost of a project is fundamentally flawed. In
most cases the terms it specifies become meaningless long before the project is complete. The best
contracts are those that govern the way the development team and the customer will work together.
As an example of a successful contract, in 1994 I negotiated a contract for a large, multi-year, half-
million-line, project. We, the development team, were paid a relatively low monthly rate. Large payouts
were made to us when we delivered certain large blocks of functionality. Those blocks were not specified
in detail by the contract. Rather the contract stated that the payout would be made for a block when the
block passed the customer's acceptance test. The details of those acceptance tests were not specified in the
contract.
During the course of this project we worked very closely with the customer. We released the
software to him almost every Friday. By Monday of Tuesday of the following week he would have a list
of changes for us to put into the software. We would prioritize those changes together, and then schedule
them into subsequent weeks. The customer
11 Chapter : :
115
worked so closely with us that acceptance tests were never an issue. He knew when a block of
functionality satisfied his needs because he watched it evolve from week to week.
The requirements for this project were in a constant state of flux. Major changes were not
uncommon. There were whole blocks of functionality that were removed, and others that were inserted.
And yet the contract, and the project, survived and succeeded. The key to this success was the intense
collaboration with the customer; and a contract that governed that collaboration rather than trying to
specify the details of scope and schedule for a fixed cost.
Responding to change over following a plan. It is the ability to respond to change that often
determines the success or failure of a software project. When we build plans, we need to make sure that
our plans are flexible and ready to adapt to changes in the business and technology.
The course of a software project cannot be predicted far into the future. There are too many
variables to account for. We simply aren't very good at estimating the cost of a large project. The
business environment that the software must serve is likely to change during the course of development.
It is difficult to write reliable requirements. Customers are likely to alter the requirements once they see
the system start to function.
It is tempting for novice managers to create a nice PERT or Ghant chart of the whole project, and
tape it to the wall. They may feel that this chart gives them control over the project. They can track the
individual tasks and cross them off the chart as they are completed. They can compare the actual dates
with the planned dates on the chart and react to any discrepancies.
But what really happens is that the structure of the chart degrades. As the team gains knowledge
about the system, and as the customer gains knowledge about their needs, certain tasks on the chart will
become unnecessary. Other tasks will be discovered and will need to be added. In short, the plan will
undergo changes in shape, not just changes in dates.
A better planning strategy is to make detailed plans for the next few weeks, very rough plans for the
next few months, and extremely crude plans beyond that. We should know the tasks we will be working
on for the next few weeks. We should roughly know the requirements we will be working on for the next
few months. And we should have a only a vague idea what the system will do after a year.
This decreasing resolution of the plan means that we are only investing in a detailed plan for those
tasks that are immediate. Once the detailed plan is made, it is hard to change since the team will have a
lot of momentum and commitment. But since that plan only governs a few weeks worth of time the rest
of the plan remains flexible. The lower resolution parts of the plan can be changed with relative ease.
Principles
The above values inspired the following twelve principles. These principles are the characteristics that
differentiate an agile process.
Our highest priority is to satisfy the customer through early and continuous delivery of valuable
software.
The MIT Sloan Management Review published an analysis of software development practices that
help companies build high quality products
1
. The article found a number of practices that had a
significant impact upon the quality of the final system. One was a strong correlation between
1 Product-Development Practices Thai Work: How Internet Companies Build Software . MIT Sloan Management Review. Winter 2001. Reprint
number 4226
116
13 Chapter: :
quality, and the early delivery of a partially functioning system. The article reported that the less
functional the initial delivery, the higher the quality in the final delivery.
Another finding of this article was a strong correlation between final quality and frequent deliveries
of increasing functionality. The more frequent the deliveries, the higher the final quality.
An agile process is one that delivers early and often. We strive to deliver a rudimentary system
within the first few weeks of the start of the project. And we strive thereafter to continue to deliver
systems of increasing functionality every few weeks.
Customers may choose to put these systems into production if they think they are functional
enough. Or they may choose simply to review the existing functionality and report on changes
they want made.
Welcome changing requirements, even late in development. Agile processes harness change for the
customer's competitive advantage.
This is a statement of attitude. The participants in an agile process are not afraid of change. They
view changes to the requirements as good things, because they mean that the team has learned more
about what it will take to satisfy the market.
An agile team works very hard to keep the structure of their software flexible, so that when
requirements change, the impact to the system is minimal. Later in this book we will learn the
principles of object oriented design that help us to maintain this kind of flexibility.
Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter time scale.
We deliver working software. And we delivery it early and often. We are not content with
delivering bundles of documents, or plans. We don't count those as true deliveries. Our eye is on
the goal of delivering software that satisfies the customers needs.
Business people and developers must work together daily throughout the project.
In order for a project to be agile, there must be significant and frequent interaction between the
customers, developers, and stakeholders. An agile project is not like a fire-and-forget weapon. An
agile project must be continuously guided.
Build projects around motivated individuals. Give them the environment and support they need, and
trust them to get the job done.
An agile project is one in which people are considered the most important factor of success. All other
factors, process, environment, management, etc., are considered to be second order effects, and are
subject to change if they are having an adverse effect upon the people.
For example, if the office environment is an obstacle to the team, the office environment changes. If
certain process steps are an obstacle to the team, the process steps change.
The most efficient and effective method of conveying information to and within a development team is
face-to-face conversation.
In an agile project, people talk to each other. The primary mode of communication is conversation.
Documents may be created, but there is no attempt to capture all project information in writing. An
agile project team does not demand written specs, written plans, or written designs. They may create
them if they perceive an immediate and significant need, but they are not the default. The default is
conversation.
Chapter: 12
117
Working software is the primary measure of progress.
Agile projects measure their progress by measuring the amount of software that is working. They don't
measure their progress in terms of the phase that they are in, or by the volume of documentation that
has been produced, or by the amount of infrastructure code they have created. They are 30% done
when 30% of the necessary functionality is working.
Agile processes promote sustainable development. The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
An agile project is not run like a 50 yard dash; it is run like a marathon. The team does not take off at
full speed and try to maintain that speed for the duration. Rather they run at a fast, but sustainable,
pace.
Running too fast leads to burnout, shortcuts, and debacle. Agile teams pace themselves. They dont
allow themselves to get too tired. They dont borrow tomorrows energy to get a bit more done today.
They work at a rate that allows them to maintain the highest quality standards for the duration of the
project.
Continuous attention to technical excellence and good design enhances agility.
High quality is the key to high speed. The way to go fast is to keep the software as clean and robust
as possible. Thus, all agile team-members are committed to producing only the highest quality code
they can. They do not make messes and then tell themselves they'll clean it up when they have more
time. If they make a mess, they clean it up before they finish for the day.
Simplicitythe art of maximizing the amount of work not doneis essential.
Agile teams do not try to build the grand system in the sky. Rather they always take the simplest
path that is consistent with their goals. They dont anticipate tomorrows problems and try to defend
against them today. Rather they do the simplest and highest quality work today, confident that it will
be easy to change if and when tomorrows problems arise.
The best architectures, requirements, and designs emerge from self-organizing teams.
An agile team is a self organizing team. Responsibilities are not handed to individual team members
from the outside. Rather, responsibilities are communicated to the team as a whole, and the team
determines the best way to fulfill them.
Agile team members work together on all aspects of the project. Each is allowed input into the
whole. No single team member is responsible for the architecture, or the requirements, or the tests,
etc. The team shares those responsibilities and each team member has influence over them.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior
accordingly.
An agile team continually adjusts its organization, rules, conventions, relationships, etc. An agile
team knows that its environment is continuously changing, and knows that they must change with
that environment to remain agile.
Conclusion
The professional goal of every software engineer, and every development team, is to deliver the highest
possible value to our employers and customers. And yet, our projects fail, or fail to deliver value, at a
dismaying rate. Though well intentioned, the upward spiral of process inflation is culpable for at least
118
13 Chapter: :
some of this failure. The principles and values of agile software development were formed as a way to
help teams break the cycle of process inflation, and to focus on simple techniques for reaching their
goals.
1
02/11/2009
118
Product Backlog para un Sprint de 59 minutos
Este backlog posee un nmero de items a considerar para completar un
Sprint (iteracin).
El equipo puede decidir, junto con el Product Owner (el instructor), cual es el
tema u objetivo del Sprint.
El Product Owner decidir el orden de prioridad de los items.
El equipo deber enfocarse en no ms de 5 items para el demo del Sprint.
Se har algo creativo (comercial, folleto, stand, poster).
Backlog para turismo espacial-Marte visita la
Tierra
Crear la portada, marca y/o logo
Definir los tpicos mayores para el turismo marciano.
Describir el tour "El Arte en Europa".
Describir un tour basado en el folklore.
Esquematizar una expedicin a las 7 maravillas del mundo antiguo".
Definir los mensajes de waming" (gravedad, oxgeno, etc.)
Sugerir opciones de vestuario.
Explicar las opciones de viaje hacia/desde Marte.
Describir un tour "Deportes humanos".
Esquematizar la poltica de devoluciones.
Sugerir servicios relacionados.
Definir los medios de publicacin.
Definir una campaa de 12 meses.
Establecer la forma de obtener ms informacin.
Definir los precios de los tours.