Sei sulla pagina 1di 14

Manifiesto por el Desarrollo gil de Software

Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A travs de este trabajo hemos aprendido a valorar: Individuos e interacciones sobre procesos y herramientas Software funcionando sobre documentacin extensiva Colaboracin con el cliente sobre negociacin contractual Respuesta ante el cambio sobre seguir un plan

Esto es, aunque valoramos los elementos de la derecha, valoramos ms los de la izquierda.

Principios del Manifiesto gil


Seguimos estos principios: 1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor. 2. Aceptamos que los requisitos cambien, incluso en etapas tardas del desarrollo. Los procesos giles aprovechan el cambio para proporcionar ventaja competitiva al cliente. 3. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo ms corto posible. 4. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto. 5. Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecucin del trabajo. 6. El mtodo ms eficiente y efectivo de comunicar informacin al equipo de desarrollo y entre sus miembros es la conversacin cara a cara. 7. El software funcionando es la medida principal de progreso. 8. Los procesos giles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida. 9. La atencin continua a la excelencia tcnica y al buen diseo mejora la Agilidad. 10. La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial. 11. Las mejores arquitecturas, requisitos y diseos emergen de equipos auto-organizados. 12. A intervalos regulares el equipo reflexiona sobre cmo ser ms efectivo para a continuacin ajustar y perfeccionar su comportamiento en consecuencia.

Qu es SCRUM
Scrum es un proceso en el que se aplican de manera regular un conjunto de mejores prcticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto. Estas prcticas se apoyan unas a otras y su seleccin tiene origen en un estudio de la manera de trabajar de equipos altamente productivos. En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum est especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovacin, la competitividad, la flexibilidad y la productividad son fundamentales. Scrum tambin se utiliza para resolver situaciones en que no se est entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable, cuando se necesita capacidad de reaccin ante la competencia, cuando la moral de los equipos es baja y la rotacin alta, cuando es necesario identificar y solucionar ineficiencias sistemticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de producto.

Beneficios de Scrum
Los principales beneficios que proporciona Scrum son:

Entrega mensual (o quincenal) de resultados (los requisitos ms prioritarios en ese momento, ya completados) lo cual proporciona las siguientes ventajas: o o o o o Gestin regular de las expectativas del cliente y basada en resultados tangibles. Resultados anticipados (time to market). Flexibilidad y adaptacin respecto a las necesidades del cliente, cambios en el mercado, etc. Gestin sistemtica del Retorno de Inversin (ROI). Mitigacin sistemtica de los riesgos del proyecto.

Productividad y calidad. Alineamiento entre el cliente y el equipo de desarrollo. Equipo motivado.

Fundamentos de Scrum
Scum se basa en: El desarrollo incremental de los requisitos del proyecto en bloques temporales cortos y fijos (iteraciones de un mes natural y hasta de dos semanas, si as se necesita). La priorizacin de los requisitos por valor para el cliente y coste de desarrollo en cada iteracin. El control emprico del proyecto. Por un lado, al final de cada iteracin se demuestra al cliente el resultado real obtenido, de manera que pueda tomar las decisiones necesarias en funcin de lo que observa y del contexto del proyecto en ese momento. Por otro lado, el equipo se sincroniza diariamente y realiza las adaptaciones necesarias. La potenciacin del equipo, que se compromete a entregar unos requisitos y para ello se le otorga la autoridad necesaria para organizar su trabajo. La sistematizacin de la colaboracin y la comunicacin tanto entre el equipo y como con el cliente. El timeboxing de las actividades del proyecto, para ayudar a la toma de decisiones y conseguir resultados.

Requisitos para poder utilizar Scrum


Los siguientes puntos son de especial importancia para la implantacin de una gestin gil de proyectos como Scrum: Cultura de empresa basada en trabajo en equipo, delegacin, creatividad y mejora continua. Compromiso del cliente en la direccin de los resultados del proyecto, gestin del ROI y disponibilidad para poder colaborar. Compromiso de la Direccin de la organizacin para resolver problemas endmicos y realizar cambios organizativos, formando equipos autogestionados y multidisciplinares y fomentando una cultura de gestin basada en la colaboracin y en la facilitacin llevada a cabo por lderes serviles.

Compromiso conjunto y colaboracin de los miembros del equipo. Relacin entre proveedor y cliente basada en ganar-ganar, colaboracin y transparencia. Facilidad para realizar cambios en el proyecto. Tamao de cada equipo entre 5 y 9 personas (con tcnicas de colaboracin entre equipos que trabajan en el mismo proyecto). Equipo trabajando en un mismo espacio comn para maximizar la comunicacin. Dedicacin del equipo a tiempo completo. Estabilidad de los miembros del equipo

El proceso
En Scrum un proyecto se ejecuta en bloques temporales cortos y fijos (iteraciones de un mes natural y hasta de dos semanas, si as se necesita). Cada iteracin tiene que proporcionar un resultado completo, un incremento de producto final que sea susceptible de ser entregado con el mnimo esfuerzo al cliente cuando lo solicite.

El proceso parte de la lista de objetivos/requisitos priorizada del producto, que acta como plan del proyecto. En esta lista el cliente prioriza los objetivos balanceando el valor que le aportan respecto a su coste y quedan repartidos en iteraciones y entregas. De manera regular el cliente

puede maximizar la utilidad de lo que se desarrolla y el retorno de inversin mediante la replanificacin de objetivos que realiza al inicio de cada iteracin. Las actividades que se llevan a cabo en Scrum son las siguientes: Planificacin de la iteracin El primer da de la iteracin se realiza la reunin de planificacin de la iteracin. Tiene dos partes: 1. Seleccin de requisitos (4 horas mximo). El cliente presenta al equipo la lista de requisitos priorizada del producto o proyecto. El equipo pregunta al cliente las dudas que surgen y selecciona los requisitos ms prioritarios que se compromete a completar en la iteracin, de manera que puedan ser entregados si el cliente lo solicita. 2. Planificacin de la iteracin (4 horas mximo). El equipo elabora la lista de tareas de la iteracin necesarias para desarrollar los requisitos a que se ha comprometido. La estimacin de esfuerzo se hace de manera conjunta y los miembros del equipo se autoasignan las tareas. Ejecucin de la iteracin Cada da el equipo realiza una reunin de sincronizacin (15 minutos mximo). Cada miembro del equipo inspecciona el trabajo que el resto est realizando (dependencias entre tareas, progreso hacia el objetivo de la iteracin, obstculos que pueden impedir este objetivo) para poder hacer las adaptaciones necesarias que permitan cumplir con el compromiso adquirido. En la reunin cada miembro del equipo responde a tres preguntas: Qu he hecho desde la ltima reunin de sincronizacin? Qu voy a hacer a partir de este momento? Qu impedimentos tengo o voy a tener?

Durante la iteracin el Facilitador se encarga de que el equipo pueda cumplir con su compromiso y de que no se merme su productividad. Elimina los obstculos que el equipo no puede resolver por s mismo. Protege al equipo de interrupciones externas que puedan afectar su compromiso o su productividad.

Inspeccin y adaptacin El ltimo da de la iteracin se realiza la reunin de revisin de la iteracin. Tiene dos partes:

1. Demostracin (4 horas mximo). El equipo presenta al cliente los requisitos completados en la iteracin, en forma de incremento de producto preparado para ser entregado con el mnimo esfuerzo. 2. Retrospectiva (4 horas mximo). El equipo analiza cmo ha sido su manera de trabajar y cules son los problemas que podran impedirle progresar adecuadamente, mejorando de manera continua su productividad. El Facilitador se encargar de ir eliminando los obstculos identificados.

Actividades
Planificacin de la iteracin (Sprint Planning) Ejecucin de la iteracin (Sprint) Reunin diaria de sincronizacin del equipo (Scrum Daily Meeting) Demostracin de los requisitos completados (Sprint Review) Retrospectiva (Sprint Retrospective) Replanificacin del proyecto

Responsabilidades
Cliente (Product Owner) Las responsabilidades del Cliente (que puede ser interno o externo a la organizacin) son: Ser el representante de todas las personas interesadas en los resultados del proyecto (internas o externas a la organizacin, promotores del proyecto y usuarios finales [idealmente tambin debera ser un usuario clave] o consumidores finales del producto) y actuar como interlocutor nico ante el equipo, con autoridad para tomar decisiones. Definir los objetivos del producto o proyecto. Dirigir los resultados del proyecto y maximizar su ROI. Es el propietario de la planificacin del proyecto: crea y mantiene la lista priorizada con los requisitos necesarios para cubrir los objetivos del producto o proyecto, conoce el valor que aportar cada requisito y calcula el ROI a partir del coste de cada requisito que le proporciona el equipo. Reparte los objetivos/requisitos en iteraciones y establece un calendario de entregas. Antes de iniciar cada iteracin replanifica el proyecto en funcin de los requisitos que aportan ms valor en ese momento, de los requisitos completados en la iteracin anterior y del contexto del proyecto en ese momento (demandas del mercado, movimientos de la competencia, etc.).

Colaborar con el equipo para planificar, revisar y dar detalle a los objetivos de cada iteracin:

Participar en la reunin de planificacin de iteracin, proponiendo los requisitos ms prioritarios a desarrollar, respondiendo a las dudas del equipo y detallando los requisitos que el equipo se comprometer a hacer. Estar disponible durante el curso de la iteracin para responder a las preguntas que puedan aparecer. No cambiar los requisitos que se estn desarrollando en una iteracin, una vez est iniciada. Participar en la reunin de demostracin de la iteracin, revisando los requisitos completados.

Facilitador (Scrum Master) Lidera al equipo llevando a cabo las siguientes responsabilidades: Velar por que todos los participantes del proyecto sigan las reglas y proceso de Scrum, encajndolas en la cultura de la organizacin, y guiar la colaboracin intraequipo y con el cliente de manera que las sinergias sean mximas. Esto implica: Asegurar que la lista de requisitos priorizada est preparada antes de la siguiente iteracin. Facilitar las reuniones de Scrum (planificacin de la iteracin, reuniones diarias de sincronizacin del equipo, demostracin, retrospectiva), de manera que sean productivas y consigan sus objetivos. Ensear al equipo a autogestionarse. No da respuestas, si no que gua al equipo con preguntas para que descubra por s mismo una solucin.

Quitar los impedimentos que el equipo tiene en su camino para conseguir el objetivo de cada iteracin (proporcionar un resultado til al cliente de la manera ms efectiva) y poder finalizar el proyecto con xito. Estos obstculos se identifican de manera sistemtica en las reuniones diarias de sincronizacin del equipo y en las reuniones de retrospectiva. Proteger y aislar al equipo de interrupciones externas durante la ejecucin de la iteracin (introduccin de nuevos requisitos, "secuestro" no previsto de un miembro del equipo, etc.). De esta manera, el equipo puede mantener su productividad y el compromiso que adquiri sobre los requisitos que completara en la iteracin [notar, sin embargo, que el equipo debe reservar tiempo para colaborar con al cliente en la preparacin de la lista de requisitos para la prxima iteracin].

Equipo (Team) Grupo de personas que de manera conjunta desarrollan el producto del proyecto. Tienen un objetivo comn, comparten la responsabilidad del trabajo que realizan (as como de su calidad) en cada iteracin y en el proyecto.

El tamao del equipo est entre 5 y 9 personas. Por debajo de 5 personas cualquier imprevisto o interrupcin sobre un miembro del equipo compromete seriamente el compromiso que han adquirido y, por tanto, el resultado que se va a entregar al cliente al finalizar la iteracin. Por encima de 9 personas, la comunicacin y colaboracin entre todos los miembros se hace ms difcil y se forma subgrupos (ver los requisitos de Scrum). De cualquier manera, se puede hacer Scrum con 3 personas y se ha utilizado en proyectos con 250 personas en varios equipos. Cuando es necesario que ms de un equipo trabaje de manera gil en un mismo proyecto, existen diferentes tcnicas que permiten esta colaboracin, desde el Scrum de Scrums hasta equipos de integracin que dedican parte de su tiempo a trabajar con los equipos de desarrollo, siempre completando incrementos de producto de manera regular. Es un equipo autoorganizado, que comparte informacin y cuyos miembros confan entre ellos. Realiza de manera conjunta las siguientes actividades: Seleccionar los requisitos que se compromete a completar en una iteracin, de forma que estn preparados para ser entregados al cliente. Estimar la complejidad de cada requisito en la lista de requisitos priorizada del producto o proyecto. En la reunin de planificacin de la iteracin decide cmo va a realizar su trabajo: Seleccionar los requisitos que pueden completar en cada iteracin, realizando al cliente las preguntas necesarias. Identificar todas las tareas necesarias para completar cada requisito. Estimar el esfuerzo necesario para realizar cada tarea. Cada miembro del equipo se autoasigna a las tareas.

Durante la iteracin, trabajar de manera conjunta para conseguir los objetivos de la iteracin. Cada especialista lidera el trabajo en su rea y el resto colaboran si es necesario para poder completar un requisito. Al finalizar la iteracin: Demostrar al cliente los requisitos completados en cada iteracin. Hacer una retrospectiva la final de cada iteracin para mejorar de forma continua su manera de trabajar.

El equipo es multidisciplinar: Los miembros del equipo tienen las habilidades necesarias para poder identificar y ejecutar todas las tareas que permiten proporcionar al cliente los requisitos comprometidos en la iteracin.

Tienen que depender lo mnimo de personas externas al equipo, de manera que el compromiso que adquieren en cada iteracin no se ponga en peligro. Se crea una sinergia que permite que el resultado sea ms rico al nutrirse de las diferentes experiencias, conocimientos y habilidades de todos. Colaboracin creativa.

Los miembros del equipo dedicarse al proyecto a tiempo completo para evitar daar su productividad por cambios de tareas en diferentes proyectos, para evitar interrupciones externas y as poder mantener el compromiso que adquieren en cada iteracin. Todos los miembros del equipo trabajan en la misma localizacin fsica, para poder maximizar la comunicacin entre ellos mediante conversaciones cara a cara, diagramas en pizarras blancas, etc. De esta manera se minimizan otros canales de comunicacin menos eficientes, que hacen que las tareas se transformen en un pasa pelota o que hacen perder el tiempo en el establecimiento de la comunicacin (como cuando se llama repetidas veces por telfono cuando la persona no est en su puesto). El equipo debe ser estable durante el proyecto, sus miembros deben cambiar lo mnimo posible, para poder aprovechar el esfuerzo que les ha costado construir sus relaciones interpersonales, engranarse y establecer su organizacin del trabajo.

Herramientas
Lista de requisitos priorizada (Product Backlog) La lista de objetivos/requisitos priorizada representa la visin y expectativas del cliente respecto a los objetivos y entregas del producto o proyecto. El cliente es el responsable de crear y gestionar la lista (con la ayuda del Facilitador y del equipo, quien proporciona el coste estimado de completar cada requisito). Dado que reflejar las expectativas del cliente, esta lista permite involucrarle en la direccin de los resultados del producto o proyecto. Contiene los objetivos/requisitos de alto nivel del producto o proyecto, que se suelen expresar en forma de historias de usuario. Para cada objetivo/requisito se indica el valor que aporta al cliente y el coste estimado de completarlo. La lista est priorizada balanceando el valor que cada requisito aporta al negocio frente al coste estimado que tiene su desarrollo, es decir, basndose en el Retorno de la Inversin (ROI). En la lista se indican las posibles iteraciones y las entregas (releases) esperadas por el cliente (los puntos en los cuales desea que se le entreguen los objetivos/requisitos completados hasta ese momento), en funcin de la velocidad de desarrollo del (los) equipo(s) que trabajar(n) en el proyecto. Es conveniente que el contenido de cada iteracin tenga una coherencia, de manera que se reduzca el esfuerzo de completar todos sus objetivos. La lista tambin tiene que considerar los riesgos del proyecto e incluir los requisitos o tareas necesarios para mitigarlos.

Uso de la lista Para medir la velocidad de desarrollo del equipo, ver una progresin constante y extrapolar la fecha de las entregas, es conveniente seguir las siguientes recomendaciones: Los requisitos deben tener un esfuerzo semejante para ser completados. La estimacin de un requisito no debe ser superior a 10 das (si las iteraciones son de 20 das laborables).

Cada requisito tiene asociado un factor de complejidad, que permite ajustar su coste estimado en funcin de la incertidumbre de la complejidad de su desarrollo en el momento de introducirlo en la lista. Este factor de coste se ir ajustando conforme las iteraciones avancen y el equipo conozca mejor el producto o proyecto, su contexto y su velocidad de desarrollo con las herramientas y tecnologas que utiliza. Si un requisito depende de otro, se coloca en algn punto por debajo del que depende. Si un requisito no se finaliza en una iteracin, se le vuelve a poner en alguna de las siguientes iteraciones, indicando el coste pendiente de desarrollo. El "origen" permite saber quin podra participar en la definicin de un objetivo/requisito y sera conveniente que estuviese presente en el momento de su demostracin.

Lista de tareas de la iteracin (Sprint Backlog) Lista de tareas que el equipo elabora en la reunin de planificacin de la iteracin (Sprint planning) como plan para completar los objetivos/requisitos seleccionados para la iteracin y que se compromete a demostrar al cliente al finalizar la iteracin, en forma de incremento de producto preparado para ser entregado. Esta lista permite ver las tareas donde el equipo est teniendo problemas y no avanza, con lo que le permite tomar decisiones al respecto. Para cada uno de los objetivos/requisitos se muestran sus tareas, el esfuerzo pendiente para finalizarlas y la autoasignacin que han hecho los miembros del equipo. Uso de la lista Los objetivos/requisitos estn ordenados por orden de prioridad para el cliente. Por ello, signos de falta de foco, problemas o impedimentos seran que se estn completando objetivos que no son los primeros de la lista, as como tener demasiados objetivos/requisitos en progreso simultneamente.

Si una tarea depende de otra, se coloca en algn punto por debajo de la que depende.

10

Las tareas deben estar identificadas de manera que tengan un coste semejante para ser completadas, entre 4 y 16 horas. Este tamao permitir: Que las tareas sean suficientemente pequeas como para poder detectar progreso o estancamiento de manera diaria. Que las tareas no sean muy pequeas, que sean suficientemente relevantes, no generen ruido ni microgestin. Medir la velocidad de desarrollo del equipo y extrapolar si es posible finalizarlas dentro de la iteracin.

El tablero de tareas (Scrum Taskboard) La lista de objetivos a completar en la iteracin (Product Backlog Items) se puede gestionar mediante un tabln de tareas (Scrum Taskboard). Al lado de cada objetivo se ponen las tareas necesarias para completarlo, en forma de post-its, y se van moviendo hacia la derecha para cambiarlas de estado (pendientes de iniciar, en progreso, hechas). Para cada miembro del equipo se puede utilizar adhesivos de colores ms pequeos sobre cada tarea, de manera que se pueda ver en qu tareas est trabajando cada cual. Imagen.. El equipo elabora esta lista de tareas en la segunda parte de la reunin de planificacin de la iteracin. La lista va evolucionando (nuevas tareas, cambios, estado, esfuerzo pendiente, ...) a medida que la iteracin avanza, especialmente durante la reunin diaria de sincronizacin. Este tabln o cuadro de mandos acta como radiador de informacin tanto para el equipo como para cualquier otra persona relacionada con el proyecto. Grficos de trabajo pendiente (Burndown Chart) Un grfico de trabajo pendiente a lo largo del tiempo muestra la velocidad a la que se est completando los objetivos/requisitos. Permite extrapolar si el Equipo podr completar el trabajo en el tiempo estimado. Se pueden utilizan los siguientes grficos de esfuerzo pendiente: Das pendientes para completar los requisitos del producto o proyecto (product burndown chart), realizado a partir de la lista de requisitos priorizada (Product Backlog). Horas pendientes para completar las tareas de la iteracin (sprint burndown chart), realizado a partir de la lista de tareas de la iteracin (Iteration Backlog).

Este tipo de grfico permite realizar diversas simulaciones: ver cmo se aplazan las fechas de entrega si se le aaden requisitos, ver cmo se avanzan si se le quitan requisitos o se aade otro equipo, etc.

11

Planificacin gil vs planificacin tradicional


La planificacin gil parte de la idea de planificar en funcin de objetivos de negocio en lugar de tareas (a diferencia de la planificacin tradicional), priorizando los que aportan ms valor, y esperando a dar detalle a objetivos y tareas conforme se va acercando el momento de construccin de estos objetivos, cuando la indeterminacin se va reduciendo, de manera que se amortiza el esfuerzo de planificar de manera detallada. Conceptos comunes El tringulo de hierro, como metfora de la relacin que existe entre los objetivos del proyecto (alcance), tiempo y coste, de manera que cualquier modificacin en el alguno de estos parmetros implica la variacin de otro. Los riesgos asociados y las acciones a realizar para mitigarlos. Hitos externos que van a condicionar entregas parciales, versiones o fases. Las dependencias funcionales y las dependencias e integraciones entre componentes tcnicos, las cuales introducen precedencias a considerar en la planificacin. La cohesin de los distintos trabajos que se van realizando, de manera que se ahorren esfuerzos por abordar determinados trabajos de manera conjunta.

Planificacin tradicional La planificacin tradicional toma como base el control predictivo de un PROYECTO, con lo que: Est basada en la identificacin inicial de las TAREAS necesarias para elaborar el producto (EDT o WBS), planteamiento que se va modificando (replanificando) segn el devenir de acontecimientos durante el proyecto. Realiza pocas entregas de producto durante el proyecto (normalmente realiza una nica entrega en su finalizacin), con lo que el feedback que se genera es tardo y, dado que se ha construido mucho producto sin haber verificado su adecuacin, los cambios que sean necesarios (si grandes y caros) pueden comprometer los plazos y el presupuesto del proyecto. A lo sumo realiza una nica retrospectiva (post-mortem) al finalizar el proyecto, con lo que las lecciones aprendidas ya no son aplicables en el propio proyecto.

12

Planificacin gil

La planificacin gil toma como base el control emprico de la construccin de producto (inspeccin y adaptacin), por lo cual: Plantea un faseado basado en OBJETIVOS DE PRODUCTO (desarrollo iterativo e incremental) priorizados balanceando beneficios de negocio respecto a sus costes de desarrollo. Realiza un faseado muy intenso (de 2 a 4 semanas) con demostraciones al cliente de ese incremento de producto, de manera que se facilita el realizar cambios [1] que consigan el mximo el alineamiento con sus expectativas y se cree un espacio natural para la replanificacin estratgica de los objetivos todava no abordados. Dispone de varios niveles de planificacin, dado que asume un horizonte de incertidumbre a partir del cual no tiene sentido planificar tareas detalladas: Nivel de estratgico: planificacin de objetivos de producto (Product Backlog). Nivel tctico: planificacin de tareas para la iteracin en curso, en la reunin de planificacin de iteracin. Nivel operativo: replanificaciones diarias de las tareas de la iteracin, como consecuencia de las reuniones diarias de sincronizacin.

13

Realiza retrospectivas durante todo el proyecto, de manera que se mejore la productividad y calidad dentro del propio proyecto. Hace partcipe al equipo en el proceso, tanto en la planificacin (de proyecto e iteraciones) como en la mejora del procedimiento de trabajo (retrospectivas), aadiendo como parmetro de calidad la satisfaccin del equipo, que se consigue mediante su participacin activa, de manera que su implicacin y motivacin revierta en el resultado del proyecto.

14

Potrebbero piacerti anche