Professional Documents
Culture Documents
Dos siglas asociadas con la programacin extrema son YAGNI ("no vas a
necesitarlo") y DTSTTCPW ("haz lo ms simple que posiblemente podra
funcionar"). En otras palabras, un principio de programacin extrema es
minimizar el nmero de caractersticas; No hay necesidad de construir un
producto que haga ms de lo que el cliente realmente necesita.
La programacin extrema es uno de una serie de nuevos paradigmas que se
denominan colectivamente procesos giles. Diecisiete desarrolladores de
software (ms tarde denominados Agile Alliance) se reunieron en una estacin
de esqu de Utah durante dos das en febrero de 2001 y produjeron el
Manifiesto para el Desarrollo Agile de Software [Beck et al., 2001]. Muchos de
los participantes haban sido autores de sus propias metodologas de desarrollo
de software, incluyendo Extreme Programming [Beck, 2000], Crystal [Cockburn,
2001] y Scrum [Schwaber, 2001]. En consecuencia, la Agile Alliance no
prescribi un modelo de ciclo de vida especfico, sino que estableci un grupo
de principios subyacentes que eran comunes a sus enfoques individuales para
el desarrollo de software.
Los procesos giles se han utilizado con xito en una serie de proyectos de
pequea escala. Sin embargo, los procesos giles an no se han utilizado
ampliamente para determinar si este enfoque cumplir con sus promesas
iniciales. Adems, incluso si los procesos giles resultan buenos para los
productos de software a pequea escala, eso no significa necesariamente que
puedan utilizarse para productos de software de mediano o gran escala, como
se explicar a continuacin.
Para apreciar por qu muchos profesionales del software han expresado sus
dudas sobre los procesos giles en el contexto de los productos de software
medianos y especialmente a gran escala [Reifer, Maurer y Erdogmus, 2003],
considrese la siguiente analoga por Grady Booch [2000]. Cualquiera puede
martillar con xito juntos algunos tablones para construir una casita de perro,
pero sera temerario construir una casa de tres dormitorios sin planes
detallados. Adems, las habilidades en plomera, cableado y techos son
necesarias para construir una casa de tres dormitorios, y las inspecciones son
esenciales. (Es decir, ser capaz de construir productos de software a pequea
escala no significa necesariamente que uno tiene las habilidades para la
construccin de productos de software de mediana escala.) Adems, el hecho
de que un rascacielos tenga la altura de 1000 casetas no significa que uno
pueda Construir un rascacielos apilando 1000 casetas en la parte superior de la
otra. En otras palabras, la construccin de productos de software a gran escala
requiere habilidades an ms especializadas y sofisticadas que las necesarias
para combinar productos de software a pequea escala.
Two acronyms now associated with extreme programming are YAGNI (you
arent gonna need it) and DTSTTCPW (do the simplest thing that could
possibly work). In other words, a principle of extreme programming is to
minimize the number of features; there is no need to build a product that does
any more than what the client actually needs.
Extreme programming is one of a number of new paradigms that are
collectively referred to as agile processes. Seventeen software developers
(later dubbed the Agile Alliance) met at a Utah ski resort for two days in
February 2001 and produced the Manifesto for Agile Software Development
[Beck et al., 2001]. Many of the participants had previously authored their
own software development methodologies, including Extreme Programming
[Beck, 2000], Crystal [ Cockburn, 2001], and Scrum [Schwaber, 2001] .
Consequently, the Agile Alliance did not prescribe a specific life-cycle model,
but rather laid out a group of underlying principles that were common to their
individual approaches to software development.
Agile processes are characterized by considerably less emphasis on analysis
and design than in almost all other modern life-cycle models. Implementation
starts much earlier in the life cycle, because working software is considered
more important than detailed documentation. Responsiveness to changes in
requirements is another major goal of agile processes, and so is the
importance of collaborating with the client.
One of the principles in the Manifestois to deliver working software
frequently, ideally every 2 or 3 weeks. One way of achieving this is to use
timeboxing [Jalote, Palit, Kurien, and Peethamber, 2004] , which has been used
for many years as a time management technique. A specific amount of time is
set aside for a task, and the team members then do the best job they can
during that time. Within the context of agile processes, typically 3 weeks are
set aside for each iteration. On the one hand, it gives the client confidence to
know that a new version with additional functionality will arrive every 3
weeks. On the other hand, the developers know that they will have 3 weeks
(but no more) to deliver a new iteration without client interference of any
kind; once the client has chosen the work for an iteration, it cannot be
changed or increased. However, if it is impossible to complete the entire task
in the timebox, the work may be reduced (descoped). In other words, agile
processes demand fixed time, not fixed features.
Another common feature of agile processes is to have a short meeting at a
regular time each day. All team members have to attend the meeting. Making
all the participants stand in a circle, rather than sit around a table, helps to
ensure that the meeting lasts no more than the stipulated 15 minutes. Each
team member in turn answers five questions:
1. What have I done since yesterdays meeting?
2. What am I working on today?
3. What problems are preventing me from achieving this?
4. What have we forgotten?
5. What did I learn that I would like to share with the team?
The aim of the stand-up meeting is to raise problems, not solve them;
solutions are found at follow-up meetings, preferably held directly after the
stand-up meeting. Like time-boxing, stand-up meetings are a successful
management technique now utilized within the context of agile processes.
Both timeboxed iterations and stand-up meetings are instances of two basic
principles that underlie all agile methods: communication, and satisfying the
clients needs as quickly as possible.