Integración de prácticas para lanzamiento de proyectos de software

Por Pablo Lischinsky, @pablolis

Palabras clave

Acta de proyecto, visión del producto, empoderamiento de equipos, alineamiento, gestión de producto.

Intención

Para dar inicio a un proyecto de desarrollo de software (o relanzar uno en marcha), existen varias técnicas que aportan valor. Sin embargo, es conveniente combinarlas para tener una mejor visión compartida del proyecto y preparar adecuadamente al equipo de delivery (más que desarrollo) y demás participantes e interesados en el desafío a enfrentar

Motivación

En una empresa de desarrollo de software surgió la necesidad de relanzar un proyecto relacionado a un producto core en el área de gestión, específicamente liquidación de haberes. Se trataba de un producto legacy con más de 10 años en el mercado que evolucionó en distintas direcciones a necesidad de cada cliente. Al plantearse relanzar el producto con versiones web más modernas y una versión mobile, fue necesario re-delinear el alcance y la visión del proyecto. No había un equipo unificado ni de soporte ni de desarrollo, había pocas personas con conocimiento profundo del producto y había poca documentación del mismo.

Descripción

Cuando se inicia un proyecto es conveniente que el Product Owner o Agile Product Manager, junto al equipo de delivery, la gerencia y otros involucrados como clientes y responsables financieros, creen y mantengan actualizada la visión, el propósito, la hoja de ruta y el alcance del producto, es decir, contextualizar el mismo. El objetivo es mantener al equipo alineado y con foco para evitar malentendidos y retrabajo, buscando siempre la esencia: la simplicidad inherente en cada proceso o sistema que aporta mayor valor al negocio.

Técnicas y herramientas

Las técnicas Agile Inception Deck [Rasmusson 2010a] y [Rasmusson 2010b] y User Story Mapping [Patton 2014] y [Buonamico 2013], fueron desarrolladas para aplicarse en este contexto de lanzamiento de proyectos de software.

Agile Inception Deck

Consiste en diez actividades de alto nivel realizadas en forma de taller participativo para intentar contextualizar el proyecto:

  • Cinco para crear y consensuar una visión de alto nivel:

    • Preguntar por qué estamos aquí.

    • Crear un elevator pitch.

    • Diseñar una caja de producto.

    • Crear la lista de los NO.

    • Conocer a los vecinos.

  • Cinco para consensuar cómo llevarlo a tierra:

    • Muestra la solución.

    • Qué te quita el sueño en la noche.

    • Determina su tamaño.

    • Lo que va a dar.

    • Qué se va a tomar.

User Story Mapping

Es una herramienta que permite generar una representación visual de un sistema completo. Ofrece una vista general de todas las funcionalidades que lo componen. Permite identificar y planificar Releases cortando en rebanadas (slicing) y visualizando cómo se distribuyen las funcionalidades de acuerdo a las diferentes áreas del sistema.

También puede verse como una forma de reorganizar el Product Backlog en dos dimensiones, una dimensión para el tiempo y otra dimensión para las funcionalidades.

Actividades a realizar:

  • Identificar los procesos de negocio, su desglose en actividades y secuencia.

  • Identificar los usuarios y las actividades que realizan.

  • Identificar las funcionalidades del software a construir.

  • Representarlos visualmente como un mapa con notas autoadhesivas.

  • Priorizar las actividades por valor de negocio,

  • Agruparlas en Releases.

La idea es descubrir juntos el contexto del proyecto realizando estas actividades en forma de taller: es una búsqueda activa de todos los involucrados, para evitar cometer errores en la toma de decisiones basadas en asunciones falsas.

Otras técnicas

Sin embargo, es conveniente combinarlas con otras técnicas, como por ejemplo, el Product Vision Board [Pichler 2013] y [Hiromoto 2013] y otras actividades de planificación y preparación, ver [Larsen 2013], para tener una mejor visión y para mejor preparar al equipo de delivery y demás interesados.

¿Cómo hacerlo?

Planificar y preparar reuniones de trabajo con todos los involucrados, incluyendo al equipo de delivery, al promotor del proyecto, a los analistas de negocio, soporte y otros interesados. No descuidar los detalles: espacio adecuado (amplio, luminoso, silencioso), materiales, refrigerios, sin interrupciones, etc.

Desarrollar juntos las distintas actividades relacionadas a establecer un acta del proyecto (agile chartering), todo esto en forma de talleres para apoyar el lanzamiento del proyecto (liftoff). ¡Aquí hay mucho espacio para la facilitación, participación con creatividad y diversión! ¡La idea es crear y compartir conocimiento mediante el ensayo y el error!

¿Qué se logra?

Algunos logros con estas actividades de lanzamiento de proyectos son:

  • Que los involucrados se conozcan y den a conocer al grupo su experiencia, destrezas y expectativas. Si los participantes no se conocen es recomendable utilizar dinámicas para romper el hielo y ayudar a crear un ambiente de trabajo en equipo.

  • Que todos los involucrados participen en crear una visión compartida del producto y una hoja de ruta del mismo, usando una o varias de las técnicas mencionadas:

    • Una Agile Inception Deck.

    • Un tablero de Visión del Producto.

    • Un User Story Mapping que da origen a un plan de entregas y a una primera versión de alto nivel del backlog.

  • Se fortalece al equipo y se crea un mayor sentido de propósito y empoderamiento.

  • Se definen los roles y las responsabilidades.

  • Se establecen acuerdos de trabajo, tales como canales de comunicación y almacenamiento de la documentación, frecuencia y lugar de las reuniones y ceremonias, horario de trabajo, herramientas a utilizar, etc.

  • Se aclaran los recursos requeridos y asignados al proyecto.

  • Se estudian las dependencias con otros proyectos.

  • Se analizan y priorizan los riesgos y se establece una estrategia para irlas despejando en el tiempo.

  • Se crea documentación mínima, preferiblemente usando técnicas de facilitación gráfica, que estará visible para todos los interesados y que servirá para el proceso de inserción de nuevos miembros al equipo (onboarding).

  • Se nivelan las destrezas de los miembros del equipo en aspectos de metodológicos tales como principios y valores del agilismo y del proceso a utilizar, por ejemplo Scrum.

  • Se definen y programan otros talleres para nivelar o desarrollar otras competencias técnicas.

  • Se comienza a crear un ambiente de alta colaboración, transparencia, compromiso y seguridad.

  • ¡Celebrar juntos el trabajo realizado!

Resumen

Algunas de las actividades propuestas pueden solaparse y en una primera impresión, confundir a quienes las usan. Sin embargo, ayudan a reforzar el aprendizaje y el entendimiento compartido, así como a validar distintos aspectos del proyecto desde diferentes puntos de vista.

Las herramientas a utilizar dependen también del contexto de negocio y de la etapa en que se encuentra el producto dentro de su ciclo de vida.

Estas actividades de lanzamiento aportan valor también para aquellos proyectos en ejecución: en contextos complejos e inciertos (como lo son casi todos los proyectos de software) de vez en cuando es necesario hacer un alto para reflexionar y responderse: ¿quiénes somos? ¿qué hemos hecho?, ¿dónde estamos hoy?, ¿hacia dónde vamos?, ¿cuáles son los desafíos, restricciones, riesgos y oportunidades?

[Larsen 2013] nos provee una visión más amplia y de cierta forma integradora que la que provee cada herramienta por separado, centrada en el equipo de delivery y demás involucrados y que nos ayuda a responder, de forma activa, estas interrogantes.