Mostrando las entradas con la etiqueta sprint 0. Mostrar todas las entradas
Mostrando las entradas con la etiqueta sprint 0. Mostrar todas las entradas

domingo, diciembre 18, 2016

Tan cerca, Tan lejos. Una Comparación entre el Agile Inception y el Acta de Constitución del Proyecto (Project Charter) del PMBok



Hola a todos
Desde hace un tiempo me debía a mí mismo y a ustedes la escritura de este post, pues en numerosas ocasiones durante los entrenamientos de Scrum o Gerencia de Ágil de Proyectos he hecho esta comparación, y es bueno dejarla plasmada para ayudar mejor a la ilustración de lo que quiero decir.

Los Dos Mundos, el Predictivo y el Ágil

Dentro de los 47 procesos de la gerencia de proyectos del PMBoK (versión 5) existe el primer proceso llamado “4.1 Desarrollar el Acta de Constitución del Proyecto” (este proceso pertenece a los procesos de inicio) que cuenta básicamente con los siguientes aspectos
·         Objetivo
o   “Es el proceso de desarrollar un documento que autoriza formalmente la existencia de un proyecto y confiere al director del proyecto la autoridad para asignar los recursos de la organización a las actividades del proyecto”(1)
·         Entradas
o   Enunciado del trabajo del proyecto
o   Caso de Negocio
o   Acuerdos
o   Factores ambientales de la empresa
o   Activos de los procesos de la organización
·         Herramientas y Técnicas
o   Juicio de Expertos
o   Técnicas de Facilitación(2)
·         Salidas
o   Acta de constitución del proyecto
Y sugiere documentar los siguientes aspectos (1):
·         El propósito o la justificación del proyecto,
·         Los objetivos medibles del proyecto y los criterios de éxito asociados,
·         Los requisitos de alto nivel,
·         Los supuestos y las restricciones,
·         La descripción de alto nivel del proyecto y sus límites,
·         Los riesgos de alto nivel,
·         El resumen del cronograma de hitos,
·         El resumen del presupuesto,
·         La lista de interesados,
·         Los requisitos de aprobación del proyecto (es decir, en qué consiste el éxito del proyecto, quién decide si el proyecto tiene éxito y quién firma la aprobación del proyecto),
·         El director del proyecto asignado, su responsabilidad y su nivel de autoridad
·         El nombre y el nivel de autoridad del patrocinador o de quienes autorizan el acta de constitución del proyecto.
Para mayor ilustración sugiero leer este articulo del PMI Colombia (Acta de Constitución del Proyecto) y este excelente ejemplo (Ejemplo Acta de inicio del Proyecto)
Ahora, si realizamos los talleres de Agile Inception (Inicio Ágil – en español) como los sugieren:
·         The Agile Samurai: How Agile Masters Deliver Great Software (Pragmatic Programmers) de Jonathan Rasmussone (clic aquí)
·         Inceptions. Starting a Software Project de Enrique Comba Riepenhausen (clic aquí)
Encontramos que sugieren en un taller de 2 a 3 días obtener lo siguiente
·         Quién está en el Salón o Taller
·         Las reglas de Juego del taller
·         Por qué estamos aquí (en este taller)
·         Crear el Elevator Pitch
·         Diseñar la caja de producto
·         Crear el Product Backlog Board(3)(4)
·         Crear la lista de No
·         Encontrar tu comunidad
·         Que te mantiene despierto en la noche
·         Muestra la solución
·         Darle una personalidad a la solución
·         Mostrar el flujo
·         Story Mapping (Plan de Releases)
·         Qué vamos a obtener (Restricciones, Prioridades, Beneficios)
·         Cuánto va a costar y cuánto nos va a tomar

Y si comparamos ambos
Realizando la comparación de ambos, se tienen muchas coincidencias:
Agile Inception
Acta de Constitución del Proyecto (PMBoK)
·         Quién está en el Salón o Taller
·         Las reglas de Juego del taller
·         Aplica parcialmente, no siempre es un taller.
·         Por qué estamos aquí (en este taller)
·         Crear el Elevator Pitch
·         El propósito o la justificación del proyecto,
·         Diseñar la caja de producto
·         Product Backlog Board
·         Los objetivos medibles del proyecto y los criterios de éxito asociados,
·         Los requisitos de alto nivel,
·         Los requisitos de aprobación del proyecto (es decir, en qué consiste el éxito del proyecto, quién decide si el proyecto tiene éxito y quién firma la aprobación del proyecto -  esta última parte no corresponde a un inception - ),
·         Crear la lista de No
·         Los supuestos y las restricciones,
·         La descripción de alto nivel del proyecto y sus límites,
·         Encontrar tu comunidad
·         La lista de interesados,
·         Que te mantiene despierto en la noche
·         Los riesgos de alto nivel
·         Muestra la solución
·         Darle una personalidad a la solución
·         Mostrar el flujo
·         La descripción de alto nivel del proyecto y sus límites,
·         Story Mapping (Plan de Releases)
·         El resumen del cronograma de hitos,
·         Que vamos a obtener (Restricciones, Prioridades)
·         Los supuestos y las restricciones,

·         Cuánto va a costar y cuánto nos va a tomar (estos valores son aproximados, nunca cerrados)
·         El resumen del presupuesto,
·         No aplica
·         El director del proyecto asignado, su responsabilidad y su nivel de autoridad
·         No aplica
·         El nombre y el nivel de autoridad del patrocinador o de quienes autorizan el acta de constitución del proyecto.


¿Entonces en dónde radica la diferencia?

En esencia, se observa que es lo mismo para ambos tipos de iniciativas (predictiva o ágil), aún más el PMBoK sugiere que sean talleres facilitados y no dudo que algunos gerentes de proyecto lo hagan así, pero lo que si es cierto es que en Agile es necesario (por no decir obligatorio) que sea un taller y que se maximice la comunicación cara a cara como lo sugiere el manifiesto ágil y sus principios (5) para garantizar el éxito de lo que se va a realizar.
Adicional en proyectos tradicionales (en los cuales la planeación predictiva es ideal):
-          Construcción de edificios
-          Construcción de puentes
-          Construcción de carreteras
-          Ampliaciones de fábricas
-          Construcción de barcos
Se hace hasta lo imposible por cerrar el alcance y no dejar lugar a la incertidumbre, pues el costo de los cambios es altísimo (¿o no creen que un dos nuevos carriles en la carretera o 2 pisos más en el edificio, fuera de afectarán gravemente los planes, cambiará el diseño de temas importantes?), cosa muy distinta en desarrollo ágil donde el software es más maleable y  donde somos tenemos una arquitectura base sobre la que podemos evolucionar.
Para cerrar esta pequeña comparación, les comparto esta tabla en donde presento las principales diferencias de ambos enfoques:

Agile Inception
Acta de Constitución del Proyecto (PMBoK)
Propósito principal

No es el objetivo del Inception, esto debe ser resuelto antes.
Autoriza formalmente la existencia de un proyecto
No tiene como objetivo entregar Autoridad.


confiere al director del proyecto la autoridad para asignar los recursos de la organización a las actividades del proyecto
Es un taller que permite a los interesados y al posible Product Owner(PO):
·         Entender la idea que se tiene a un nivel más profundo
·         Identificar las posibles dificultades del proyecto
·         Decidir si se continuará o no con el mismo
·         Proporciona al PO y a sus Interesados información suficiente para guiar al equipo de desarrollo en la construcción del producto
No corresponde a su objetivo primordial
Respecto al alcance
Se busca tener una primera versión u hoja de ruta sobre las cuales realizaremos la construcción del producto mínimo viable (MVP - http://www.lecciones-aprendidas.info/search/label/mvp ) y seguiremos creciendo incrementalmente hasta que construyamos el producto que requiere el negocio.
Se centra en esbozar el alcance va a detallar y gestionar en las siguientes grupos procesos de la gerencia de proyectos:
·         Planeación
·         Ejecución
·         seguimiento y control
·         y cierre
Transparencia
Esta información queda disponible al lado del equipo del proyecto para que sirva como radiador de información y le sirva para tomar decisiones
Muchas veces no es un taller, se comparte con el equipo y los interesados del proyecto, pero no se garantiza que todos la conozcan aunque se sugiere que todos la dominen.

Hasta acá esta corta comparación, los invito a profundizar en estos links
-          Sprint Cero o Agile Inception
-          Colección de entregables generados en un Inception

Bienvenidos sus comentarios y feedback.

Saludos Ágiles, 

Jorge Abad        


Notas, aclaraciones, referencias

1.       Guía de los Fundamentos para la Dirección de Proyectos. Guía del PMBoK Quinta Edición.
2.       Se enumeran entre varias posibles actividades: la tormenta de ideas, resolución de conflictos, gestión de reuniones para realizar la obtención de este entregable.
3.       Aunque no Corresponde a una propuesta de Agile Samurai o Inceptions, es ampliamente usado y recomendable para este proceso
4.       Ejemplos del Product Backlog Board - http://www.lecciones-aprendidas.info/search/label/product%20backlog%20board
5.       http://agilemanifesto.org/iso/es/principles.html - “Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.”,  “El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.”

domingo, julio 05, 2015

Leído y Recomendado: Diseño colaborativo: un proceso en dos etapas

Este post de Diego Fontdevila

Sobre del diseño colaborativo del software, en donde existe un momento divergente donde el equipo explora opciones y luego otro convergente donde elige la que le parece adecuada

https://diegofontdevila.wordpress.com/2015/07/01/diseno-colaborativo-un-proceso-en-dos-etapas/

Saludos ágiles
Jorge Abad

jueves, abril 17, 2014

Una versión inicial de Definition of Done (Definición de Hecho / Terminado / Realizado)

La  Definition of Done -  DoD - (Definición de Hecho / Terminado / Realizado) es el estándar de calidad que debe cumplir el equipo Scrum, es aquello que les garantiza que han cumplido lo que se han comprometido y que el "Incremento"  de funcionalidad es realmente "potencialmente entregable"

La mejor definición de "done" la leí de Alan Cyment:
 "ALGO ESTA HECHO CUANDO NO TENGO QUE VOLVER A PREOCUPARME DE ELLO"

Si el equipo de desarrollo o alguien del equipo siente que no esta totalmente hecho y ejemplo:

  • falta un despliegue
  • falta una validación
  • duda si se realizaron toda la documentación comprometida
  • o le da "susto" salir a producción con el desarrollo realizado (el incremento de software) por que sabe que tiene unos "pendientes" o cree que le van a reventar en producción muchos bugs
entonces no esta realmente "Done"

La DoD debe estar publica y disponible para el equipo, debe ser un acuerdo entre todos:
  • Product Owner
  • Teaam Developer
  • Scrum Master
Este acuerdo se realiza inicialmente en el sprint cero y se va revisando en cada sprint planning (como fruto de nuevas necesidades o resultado de las retrospectivas), Si hay cambios en la DoD,  es casi seguro que impliquen nuevas tareas en cada sprint.

Aunque el Team Developer (Equipo de Desarrollo) debe ser responsable de cumplir la DoD, el que debe velar por que se logre este compromiso es el Scrum Master.

A continuación les comparto una versión inicial que puede ser evolucionada, corregida, mejorada o aumentada por cada equipo Scrum:

DEFINICIÓN DE HECHO
  • Cada historia de usuario/funcionalidad este codificada, compilada, desplegada por el servidor de integración continúa.
  • Las historias de usuario/funcionalidades cumplan todos los criterios de aceptación acordados con calidad(QA), el Product Owner al inicio del sprint.
  • Las historias de usuario/ funcionalidades construidas no afecten a las funcionalidades ya entregadas, por lo que las pruebas de regresión deben ser satisfactorias.
  • Las funcionalidades/historias de usuario comprometidas funcionen en todos los ambientes comprometidos, ej:
    • Laboratorio
    • Pruebas
    • Preproducción
  • Las funcionalidades/historias de usuario cuentan con pruebas funcionales automatizadas y despues de correr estas el resultado es exitoso.
  • No se tienen advertencias en Rojo en la verificación de código del servidor de integración continua (Sonar) - en caso que estemos trabajando con Jenkins y Sonar - .
  • Las clases de negocio cuentan con pruebas unitarias que verifican su correcto funcionamiento.
  • El Código desarrollado se comentado y estandarizado.
  • Código en el repositorio de control de versiones.
  • El porcentaje de cobertura de pruebas unitarias al código es >= a un XX%
  • El porcentaje de cobertura de pruebas funcionales automatizadas a las funcionalidades/historias de usuario es >= a un XX%
  • Se genere y/o actualice la documentación comprometida para el Sprint
    • Documento de arquitectura
    • Documento de diseño
    • Manual de Usuario
    • Plan de pruebas
    • u otro documento del proceso de desarrollo que le agregue valor al proyecto o que contractualmente estemos comprometidos a entregar
  • [nuevo] Se cumpla con los requisitos no funcionales, por ejemplo:
    • Estándares gráficos
    • Estándares de usabilidad y UX
    • Navegadores y versión de los mismos sobre los que debe funcionar
    • Servidores de base de datos y de aplicaciones sobre los que funcionará
    • Tipo de servicios a emplear
    • etc.



jueves, septiembre 26, 2013

Scrum: Sobre el Sprint 0 (Sprint Cero) o Inception


En ninguna de las guías de scrum hablan sobre un Sprint 0 (cero) pero es de las recomendaciones que he recibido de quienes nos han hecho coach en scrum.

Este sprint realmente no tiene ítemes de producto, corresponde a todas las actividades preparatorias para poder comenzar a ejecutar el proyecto, dentro de este sprint se pueden realizar cualquiera  (o todas) de las actividades siguientes:


  • Definir los releases y plan del producto (se puede emplear una técnica como el user story mapping)
  • Definir la arquitectura base del producto sobre la cual se va a evolucionar.
  • Definir las pruebas a realizar
  • Definir los lineamientos gráficos del sistema (si aplica)
  • Realizar todas las instalaciones  en los diferentes ambientes (desarrollo, pruebas, pre-producción y producción)
    • IDEs
    • Servidores de aplicaciones
    • motores de bases de datos
    • Nota: Que todos los ambientes sean lo más similares entre sí posibles (sistemas operativos, versiones de productos, conectividad, etc)
  • Preparar y configurar los repositorios de control de versiones
  • Configurar los scripts para el servidor de integración continua de forma que logremos que una linea de codigo quede probado y desplegado en los respectivos ambientes
  • Escribir el 'hola mundo" que logre pasar por:
    • el repositorio del control de versiones
    • probado por las diferentes pruebas definidas
    • que en los diferentes servidores automáticamente quede:
      • código validado con reglas automáticas
      • compilado
      • probado
      • y desplegado en los diferentes ambientes
    • Nota:  Es como tender la carretera pavimentada para que las líneas de código pasen sin inconvenientes de inicio a fin.
  • Escribir las historias de usuario para el primer planning. Posiblemente mostrarlas al equipo para que realice un primer acercamiento.
  • Definir herramientas de gestión que utilizará el equipo
    • Kanban
    • Burndowns
    • hojas de cálculo
  • Definir la DoD (Defnition of Done( (Definición de Hecho/Realizado/Completado) para el proyecto
  • Definir los criterios de liberación del producto / liberación de releases
    • Aprobaciones
    • historias completadas
    • valor de negocio entregado
  • Definir como se calculará el ROI del proyecto y/o el éxito del mismo
  • Definir forma de puntuar las historias 
    • si con pivote funcional o,
    • pivote de días ideales
  • Definir estándares de codificación y documentación del código
  • Definir documentación a emplear y como se va a actualizar en el proyecto
  • Definir tamaño de los sprints

Suficientes tareas, ¿no cierto?



Unas recomendaciones:
  • Cree Historias de Usuario Técnicas asociadas a cada una de las tareas definidas, y recuerde ponerle criterios de aceptación, de manera que se verifique que puede cumplirlas
  • Realice estimaciones sobre las Historias de Usuario Técnicas, realice el "taskeo" (identifique las tareás)
  • No olvide a scrum para este sprint:
    • Defina la duración: Definir un timebox (tiempo definido fijo) para este sprint (consideraría 2 semanas suficientes, pero la casuística me impide afirmarlo categóricamente), con el objeto de no eternizarnos en la planeación y definición, cayendo en un antipatrón de la gerencia del proyectos llamado (parálisis por análisis  o en inglés Analysis Paralysis)
    • Realice el daily con todos los involucrados en este sprint
    • Si es el Scrum Master, realice la debida gestión de impedimentnos y si es team member por favor notifíquelos
    • Al final realicen review y retrospectiva, identifiquen las lecciones aprendidas y feliz comienzo del sprint 1.


Saludos ágiles y
hasta la próxima