/ agile

Desarrollo de Software Ágil en 10Pines

Después de 2 años de trabajo, a veces intenso y otros no tanto, quiero contarles que finalicé el libro. Lo llamé 'Desarrollo de Software Ágil en 10Pines'. Pueden encontrarlo en versiones web, .pdf, .mobi y .epub. Si son amantes del papel, pueden pasar por nuestras oficinas, donde disponemos de algunas copias.

Permítanme que les cuente el camino recorrido, desde que conocí las Metodologías Ágiles hasta este release. Conocí Agile en el 2003, cursando una Maestría en Ingeniería del Software en la UNSL. Claudio Ochoa, un ex-alumno que se encontraba realizando un Master en USA dio una clase. En ese momento me pareció que todo lo que dijo tenía sentido, pero no tenía experiencia laboral. Durante los años que siguieron, trabajé en la industria como programador, algunas veces utilizando Metodologías pesadas y en cascada y otras programando como cowboys, sin ningún tipo de proceso o ceremonia. No fue hasta el 2007 donde utilizamos eXtreme Programming para desarrollar un producto (que nunca vio la luz). Sin embargo, haber experimentado esa forma de trabajar me hizo dar cuenta de que esta era la manera en la que me gustaba trabajar. En iteraciones cortas, programando incrementos cortos para obtener feedback del product owner rápido, discutiendo continuamente sobre el diseño y realizando tests automatizados que ejercitaran continuamente el código. Desde ese momento no quise trabajar de otro modo. Coincidentemente, en ese momento conocí a Emilio Gutter, uno de los fundadores de 10Pines y a Matt Gelbwaks quien era coach ágil de USA. Con los 2 manteníamos largas charlas de agilidad. Mi siguiente trabajo fue con Matt, en San Francisco. Ese fue un periodo donde tuve la posibilidad de aprender muchísimo (el Silicon Valley es un lugar increíble para nosotros, los desarrolladores de software). Cuando volví me uní a 10Pines, que recién había nacido. Aquí tuvimos la posibilidad de co-crear nuestra Metodología, que por supuesto, tuvo sus bases en el movimiento ágil. Han sido 10 años súper intensos, donde aprendí muchísimo al lado de gente increíble. Esto es lo que he plasmado en estas páginas.  

El libro está estructurado secuencialmente, detallando las fases de nuestro proceso (que pueden ver en la ilustración) desde que comenzamos con el Product Discovery, pasando por el planeamiento hasta concluir en la fase de desarrollo del producto. Comentaré brevemente el contenido de cada uno de los capítulos:

Product Discovery: comenzamos procurando la comprensión de los problemas y necesidades de los usuarios así como la propuesta de valor. Realizar un buen Product Discovery nos permite compartir una visión, alinear y sentar las bases de una relación colaborativa. En este capítulo, Jorge Silva describe las ventajas de cursar esta etapa durante el proceso de preventa, en una sección llamada ‘Lean Sales Up’. Juan Carraro argumenta la importancia de la usabilidad y los puntos más importantes en el momento de realizar un test del área.

User stories & Backlog: Si queremos trabajar de manera iterativa e incremental, tendremos que partir nuestro trabajo en incrementos (que llamamos User Stories), visibles al usuario de negocios y que puedan construirse rápidamente. Ordenar estas stories en el Backlog nos permite acordar y visualizar prioridades.

Estimaciones: realizamos estimaciones relativas usando Story Points mediante Planning Poker. Dichas estimaciones resultan livianas (baja inversión de tiempo) y no representan compromisos, evitando así que surjan comportamientos disfuncionales.

Priorización. Priorizamos un experimento pequeño (MVP), que puede construirse rápidamente y con un costo bajo. Es un modo efectivo para reducir el riesgo y aumentar el valor. Usamos herramientas que permiten facilitar el proceso, como MoSCoW, Puntos de Valor y Buy a Feature, (presentado gracias a una colaboración de Germán Gaitán).

Planeamiento: Con la información obtenida hasta el momento, podemos trazar nuestro primer plan, que debe ser liviano, creíble y adaptable. Sus componentes principales son la visión (de negocios y tecnólogica), las User Stories priorizadas, el equipo y el schedule inicial. Usamos herramientas para medir y visualizar el progreso del trabajo, tales como Parking Lot, detallada por Gisela Decuzzi.

El Corazón de los Equipos Ágiles en 10Pines: ¿Qué tienen los equipos ágiles? ¿Qué podemos hacer para mejorar su funcionamiento? Al hablar sobre estos tópicos, me adentro en 10Pines, en cómo seleccionamos nuestras semillas y en cómo crear un ambiente dentro del que se procure trabajar bajo condiciones favorables. Exploro la importancia de nuestra gestión horizontal, de la visión y la comunicación en el desempeño efectivo de los equipos.

Desarrollo Iterativo e Incremental: El desarrollo ágil combina estas 2 estrategias, descriptas magistralmente en los posts de Jeff Patton y Alistair Cockburn. Para mantener el foco (reduciendo la complejidad) y obtener momentos de introspección y mejora, trabajamos en iteraciones de duración fija. Esto permite incrementar nuestro conocimiento y poder adaptarnos, impactando en el valor generado.

Excelencia Técnica: Desarrollamos software poniendo especial énfasis en la excelencia técnica. Mantenemos el costo de cambio bajo y pagamos la deuda técnica para incrementar nuestra funcionalidad sustentablemente y adaptarnos a los cambios externos. Hernán Wilkinson explica mediante un ejemplo cómo hacer Test Driven Development y Nicolás Paez detalla los resultados de una investigación sobre la adopción de prácticas ágiles y de gestión en latinoamérica.

Esta es la 1ra versión, el MVP. Por supuesto que me gustaría seguir iterándolo y, también, incrementándolo con nuevas secciones y colaboraciones de otros autores. Agradezco enormemente a 10Pines, por haberme dado el tiempo y especialmente a Cristian Boccia, quien me ayudó con la edición y a Emmanuel Schönfeld por las hermosas ilustraciones.