Por Tomer Sagi

Existen 3 elementos clave que hacen que un proyecto sea exitoso:

  1. El factor “Hecho”
  2. Un proceso de proyecto repetible
  3. Una herramienta simple de colaboración en línea para respaldar el factor “Hecho” y el proceso del proyecto

Recientemente, mientras trabajaba en un nuevo proyecto que presentaba los siguientes riesgos:

He adoptado el enfoque de recopilar requisitos utilizando métodos ágiles y he definido Historias de Usuario apropiadas. Luego, estimé las Historias de Usuario con el equipo y pude asignar ciertos esfuerzos y presupuestos a cada Historia de Usuario. Esto me proporcionó una visión más realista del esfuerzo y el presupuesto general del proyecto.

Me di cuenta rápidamente de que, para asegurarme de que el proyecto se entregue dentro del cronograma acordado y para mantener los gastos bajo control, debemos ser capaces de determinar y medir cuándo comenzamos y terminamos una funcionalidad.

El énfasis clave está en “medir”. Me di cuenta de que si podemos determinar cuándo “terminamos” algo, entonces podemos evaluar el esfuerzo invertido en esa funcionalidad y proyectarlo en las Historias de Usuario restantes. Esto es, en esencia, la premisa de la metodología ágil y, a veces, más específicamente Scrum.

Entonces, me embarqué en un viaje para determinar cuándo algo está “Hecho”. El factor “Hecho”.

1. El factor “Hecho”

Es esencial determinar cuándo se ha completado una pieza de trabajo. Algo está “hecho” cuando el cliente lo “aprueba”. Eso es simple. Pero la gran pregunta es, especialmente cuando me pongo en el lugar del cliente, ¿qué significa eso?

Bueno, significa algunas cosas clave:

Tomando lo anterior en el contexto del desarrollo de software, esto se traduce en una pregunta: ¿Qué “cosas” en el proyecto puede evaluar el cliente? ¿y cómo?

Entonces, en este proyecto en particular, tenemos las siguientes funciones:

Las “cosas” que el cliente puede evaluar son simplemente:

Los wireframes y el diseño son entregables tangibles que aparecen en la pantalla o en un trozo de papel. Pueden ser revisados y “aprobados” fácilmente por el cliente. El producto probado es más complejo. ¿Cómo puede el cliente “evaluar” y “aprobar” un producto probado? Para mí, esto significa que el cliente debe tener las herramientas o técnicas necesarias para poder evaluar y aprobar. Las herramientas pueden ser herramientas de prueba y las técnicas podrían incluir personas que tengan las habilidades para evaluar el producto recibido. La evaluación del producto recibido se realizaría en comparación con los entregables tangibles (requisitos, especificaciones, diseños, wireframes, etc.).

Ahora que sabemos cómo obtener el factor “Hecho”, ¿cómo lo integramos en el proceso del proyecto?

Utilizando métodos ágiles, podemos crear y repetir un proceso de entrega de principio a fin varias veces a lo largo del proyecto. Utilizando versiones e iteraciones, podemos desarrollar Historias de Usuario y pasar por todo el “proceso” y completarlas “hechas” de manera oportuna. Un “proceso repetible” es la clave para habilitar esta forma continua y efectiva de entregar y aprobar Historias de Usuario.

2. Proceso de proyecto repetible

Es esencial tener un proceso cristalino que se pueda seguir una y otra vez al pie de la letra y que proporcione resultados tangibles y precisos. Basado en las funciones mencionadas anteriormente, aquí hay un ejemplo de “Proceso Repetible”:

  1. Requisitos, casos de prueba y diseños
  2. Aclarar requisitos
  3. Desarrollar casos de prueba
  4. Desarrollar wireframes
  5. Revisar con el cliente (el concepto de “Profundidad de Iteración” garantizará que se realice un número fijo de iteraciones con el cliente)
  6. Revisar con el equipo (factibilidad de los wireframes)
  7. Aprobación por parte del cliente
  8. Desarrollar diseños
  9. Revisar con el cliente (número fijo de iteraciones)
  10. Revisar con el equipo (factibilidad de los diseños)
  11. Aprobación por parte del cliente
  12. Actualizar requisitos
  13. Actualizar casos de prueba
  14. Aprobación de requisitos
  15. Aprobación de casos de prueba (ya que podrían ser utilizados por el cliente para probar el producto también)
  16. Desarrollo
  17. Desarrollo de funcionalidad de backend
  18. Conversión de diseños en plantillas HTML/CSS
  19. Integración de diseños y código
  20. Pruebas unitarias e integradas
  21. Cerrar versión
  22. Pruebas funcionales y otras pruebas (entorno de preparación)
  23. Implementar en un entorno de preparación
  24. Comunicar la versión al equipo de pruebas
  25. Realizar pruebas en el entorno de preparación
  26. Corrección iterativa de errores
  27. Pruebas de UAT
  28. Implementar en un entorno de UAT
  29. Comunicar la versión al equipo de UAT (equipo del cliente)
  30. Pruebas de UAT (en comparación con los requisitos y/o casos de prueba)
  31. Corrección iterativa de errores
  32. Aprobación de la versión

Lo anterior es solo un ejemplo y algunos proyectos pueden diferir ligeramente o en gran medida según las necesidades de ese proyecto en particular.

3. Herramienta simple de colaboración en línea para respaldar el factor “Hecho” y el proceso del proyecto

Ahora solo necesitamos una herramienta simple de colaboración en línea para facilitar el factor “Hecho” y asegurar que el proceso repetible se establezca y se siga en cada iteración y versión. ¿Simple, verdad?

Tomer Sagi es un Gerente de Proyectos de TI Senior que ha estado gestionando proyectos de software utilizando metodologías RUP, Prince2 y ágiles durante los últimos 4 años. Ha introducido a las empresas en métodos y prácticas ágiles, incluyendo Scrum, Scrum-ban, Lean y TDD. “Chaos Dimention” es una consultoría de gestión de proyectos y una empresa de servicios profesionales con sede en Wellington, Nueva Zelanda. “tProject” es un blog de Tomer Sagi que recopila y comunica métodos y prácticas de gestión de proyectos prácticos y probados en el tiempo. Echa un vistazo en http://www.chaosdimention.com/.