Convocatoria de autores para el libro del AOC 2016

La semana pasada me informaron que mi postulación para el AOC había sido aceptada, con lo cual está confirmada mi participación en la conferencia.

La propuesta que envié como parte de mi postulación era para escribir un libro similar al del año pasado pero dando una vuelta de rosca sobre el contenido. El libro que escribimos (y publicamos) el año pasado era un compendio de experiencias.

Este año me gustaría que el libro sea un compendio de técnicas. Creo que existen en la actualidad diversas técnicas comúnmente utilizadas en el desarrollo de software que no están (hasta donde yo sé) formalmente documentadas en castellano. Me vienen a la mente técnicas como Impact Mapping y Mob-Programming. Al mismo tiempo creo que todo equipo luego de alcanzar cierto grado de «madurez» empieza a generar sus propias técnicas/prácticas/costumbres que bien pueden resultar de utilidad para la comunidad de practicantes. Me vienen a la mente el Delivery Map usábamos en Southworks y el ApplicationStatus que suelo utilizar en mis aplicaciones.

Por otro lado también quisiera hacer un cambio en la dinámica, me gustaría que este año lleguemos a la conferencia con todos los capítulos ya escritos, de manera que el tiempo dedicado en la conferencia sea para tareas de edición y revisión.

Con este artículo abro la convocatoria de autores para este segundo libro. Los interesados en sumarse a esta iniciativa por favor contactarse conmigo.

El desafio del Open Space

He tenido la oportunidad de participar de más de 20 Open Spaces de Agile, en diversas ciudades de Argentina, Latinoamética y Europa. Y si bien Open Space se ha convertido en mi formato favorito de conferencia, he observado un patrón que creo que le juega en contra. En todos los Open Spaces que he participado, he la gran mayoría de las sesiones han carecido de preparación previa, incluso en aquellos casos donde existía la posibilidad de proponer sesiones en forma previa a la conferencia. Esta «improvisación» (falta de preparación) a la hora de proponer sesiones, termina en muchos casos generando sesiones desordenadas o de «baja calidad». Insisto en que no creo que esto sea una limitante del formato, sino una característica (negativa a mi parecer) de cómo la comunidad Agile utiliza este formato.

@acyment viene insistiendo desde hace un tiempo en que la conferencia Latinoamericana de Métodos Ágiles sea 100% Open Space. Personalmente apoyo esta idea pero considero necesario darle una vuelta de rosca a la cuestión para intentar asegurar sesiones «de calidad». Como mencioné hace un tiempo, creo que el punto de partida es hacer el marketplace en forma anticipada con alguna herramienta web. Eso debería permitir que la gente proponga sus sesiones y también que reciba feedback de las mismas. Al mismo tiempo permite tener una idea general de los temas y oradores de la conferencia, lo cual suele ser muy importante para gente sin experiencia en Open Spaces.

La semana próxima tendremos la conferencia Ágiles Argentina 2015 en formato 100% Open Space y ya está disponible la plataforma para proponer sesiones asi que ahí vamos, a experimentar.

 

Cursos en la previa de Agiles 2015

Como de costumbre en la previa de Agiles 2015 habrá un conjunto de cursos organizados de forma independiente. En ese contexto estaré dictando en Montevideo mi Taller de Continuous Delivery y Prueba automatizada.

El términos generales el taller está divido en 2 partes. La primera enfocada en los conceptos centrales de la práctica de Continuous Delivery y un conjunto de técnicas y herramientas para su implementación que incluyen Jenkins, Puppet y Docker. La segunda se enfoca en la automatización de pruebas, lo cual constituye un punto fundamental en toda estrategia de Continuous Delivery. En esta segunda parte veremos herramientas tales como JUnit, Cucumber-JVM y FitNesse. Si bien el taller tiene una base conceptual independiente de toda tecnología, la parte práctica de automatización de pruebas se realiza con Java.

Los detalles de logística e inscripción están disponibles en la página de Evolución Ágil.

Prácticas DevOps: 3 repos por proyecto

Desde que empecé a trabajar fuerte con prácticas de DevOps, hace unos 2 o 3 años que todos mis proyectos tienen al menos 3 repositorios.

El primer repositorio es el que almacena el código fuente de la aplicación. En realidad dependiendo de la complejidad del proyecto, puede que haya más de un repositorio para el código fuente.

El segundo repositorio es el almacena la configuración de la aplicación. Este repositorio tiene típicamente un 1 branch por ambiente. Hay que destacar que estoy branches nunca se mezclan, sino que evolución a la par. Cuando la aplicación requiere de un nuevo parámetro de configuración, el mismo debe ser agregado simultáneamente a cada uno de los branches con el valor correspondiente para el ambiente asociado.

Finalmente el tercer repositorio es el que contiene los scripts de deploy. Dependiendo de la infraestructura del proyecto puede que sean simplemente scripts de bash, ansible, puppet o similar.

Premisas para reuniones de revisión

Quiero compartir algunos premisas básicas que utilizo intento utilizar en mis reuniones de revisión (iteration review).

Todo el equipo

En la review está presente todo el equipo, ya sea para llevarse halagos o críticas.

Ambiente limpio

La revisión no se realiza en un ambiente desarrollo sino en un ambiente de review/demo, el cual es un ambiente «limpio» y donde el producto queda disponible incluso después de finalizada la reunión para que el responsable de producto y los stakeholders puedan acceder a su gusto en cualquier momento ya sea para realizar demostraciones a terceros, pruebas exploratorias o simplemente para consulta.

La review no se mueve

La reunión de revisión se agenda al comienzo de la iteración y no se posterga por retrasos de parte del equipo de desarrollo. La reunión se realiza y se muestra lo que se tiene, si parte del compromiso no llegó a completarse, no importa, hay que dar la cara y decir que no se llegó. La reunión puede moverse si el responsable de producto o los stakeholders tienen un imprevisto, pero NO puede moverse por funcionalidades incompletas.

Dos tipos de Review

Continuando con la cuestión de la reunión de revisión, ayer hablaba con Charly Paez sobre dos tipos bastante distintos de reuniones de revisión las cuales a mi entender son consecuencia del nivel de participación del responsable de producto a lo largo de la iteración.

Caso de poca participación

En estos casos el contacto entre el equipo de desarrollo y el responsable de producto ocurre en (unos pocos) momentos muy puntuales a lo largo de la iteración: la reunión de planificación, algún mail de validación, alguna reunión de refinamiento y la reunión de revisión. El equipo de desarrollo trabaja en las funcionalidades y consulta  al responsable de producto pero recién presenta la funcionalidades terminadas en la reunión de revisión. Esto hace que la reunión de revisión sea una presentación del equipo de desarrollo hacia el responsable de producto. A veces esta reunión de revisión trae sorpresas y se extiende más de una hora.

Caso de mucha participación

En estos casos la interacción entre el responsable de producto y el equipo de desarrollo es mucho más frecuente y fluida. Al mismo tiempo el equipo desarrollo no espera al final de la iteración para mostrar/validar las funcionalidades desarrolladas. Sino que a medida que las funcionalidades van siendo desarrolladas/completadas el equipo las va validando con el responsable de producto. Más aún, el responsable de producto tiene una participación muy activa en las pruebas de aceptación. Esto que hace que el responsable de producto llegue a la reunión de revisión sabiendo de antemano con qué se va a encontrar y habiendo ya usado las funcionalidad que se va a presentar. En estos casos la reunión de revisión tiene un sentido distinto. Ya no tenemos al equipo presentando el producto al responsable de producto (pues este ya lo vio) sino que tenemos al responsable de producto presentando el producto al resto de los stakeholders.

Personalmente cuando puedo elegir, elijo sin dudas este segundo tipo de revisiones ya que cuando pude utilizarlo el resultado de nuestro trabajo tuvo muchísimo más impacto en la organización. En realidad no creo que el impacto sea consecuencia del tipo de revisión sino al contrario: el proyecto era de alto impacto, eso hizo que el responsable de producto tuviera un gran involucramiento en el proyecto y eso derivó una excelente interacción con el equipo de desarrollo y en reviews del segundo tipo.

Continuará…

(no me gustan los nombres que le puse a cada tipo de review, si alguien mejores propuestas, son bienvenidas)

XP2015: Day 5 Summary

This was the last day of the conference and it was dedicated to workshops (academic and industrial**). I started the day in the Refactoring (academic) workshop and after coffee break I switch to the Retrospectives (industrial) Workshop by Paulo Caroli which was one of the best sessions I attended in the whole conference. Paulo shared many techniques to plan/guide retrospectives, many of them are documented in his book Fun Retrospectives.

After the lunch it was the time to delivery my BDD Tutorial, a technical hands-on session where we reviewed the BDD technique and several implementation details with tools like Cucumber-JVM, Fitnesse and JBehave. Everything went as expected, no major issues with the technical stuff, all participant were able to run the Virtual machine I created for the tutorial. I am very happy with the results and I think I will plan to run it again in South America before the end of the year.

DSC04944

 

** academic workshop are basically presentation and discussions about formal research papers while industrial workshops are totally different, they are interactive sessions where the audience listen and do.

Agiles 2015: Diseño del proceso de selección de propuestas

Este año al igual que los años anteriores la conferencia contará con un conjunto de sesiones que surgirán de una convocatoria abierta (dicha convocatoria ya está en curso). Dado que tenemos una cantidad limitada de tiempo y espacio para sesiones, tenemos que seleccionar cierta cantidad de sesiones de entre todas las propuestas recibidas. Estimamos que tendremos espacio para entre 30 y 40 sesiones. Para elegir esas sesiones hemos definido un proceso de 3 etapas: revisión, evaluación y selección.

Etapa 1: revisión

En esta primera etapa un equipo de revisores surgidos de la comunidad, revisa las sesiones de forma objetiva, dando feedback sobre cuestiones concretas como ser:

  • La propuesta tiene faltas ortográficas
  • La propuesta está incompleta
  • La descripción es muy escueta y no queda claro el objetivo de la sesión
  • La propuesta no es consistente (se propone un workshop para 10 personas pero se plantea que los participante trabajen en 3 grupos de 5 personas )
  • La propuesta tiene errores conceptuales (técnicas para que el Scrum Master asigne a cada miembro del equipo las tareas en las que debe trabajar)

Con este feedback, cada autor debería poder mejorar su propuesta antes del cierre de la convocatoria.

Etapa 2: evaluación

Una vez cerrada la convocatoria, el equipo de revisores realiza una evaluación de las propuestas de cara a generar un ranking de propuestas. Cada propuesta es evaluada por varios pares de revisores pues en esta etapa todos los revisores trabajan de a pares.

Etapa 3: Selección

Una vez completada la evaluación hay que tomar las sesiones y ubicarlas en el programa de la conferencia. Esta no es un tarea trivial pues hay algunas restricciones adicionales como ser la diversidad: queremos tener sesiones sobre diversos temas y de oradores de diversos paises. Naturalmente estas restricciones adicionales implican que algunas sesiones queden fuera del programa a pesar de tener una muy buena evaluación (si las mejores 15 propuestas son sobre Scrum, es muy posible que varias de ellas queden fuera del programa para respetar la diversidad).Al final de esta etapa se cuenta con el programa completo de sesiones y cada autor sabe si su sesión ha sido o no aceptada.

XP2015: Day 4 Summary

As usual we started with the keynote, in this occasion by Brian Fitzgerald (Irish Software Engineering Research Centre). He talked about New directions for Software Development Process. He started with a summary of the evolution of software development process and after that he focused on the impact of Open Source movement and Crowd funding initiatives.

After the keynote I attended to the Lightning talks session where I found some interesting presentations performed by Brazilian folks (Paulo Caroli and Rafaela Fontana).

In the afternoon I attended to the testing track where I saw the most interesting sessions of the day: Llewellyn Falco talking about Getting Existing Code under Tests and Charlie Poole’ demo: From Test to Theories and back  again. Excellent speakers and very useful information.

The last session I attended was Pragmatic Architecture for Agile Teams by Janne Sinivirta, it was fine, nothing new for me but it was a useful summary of key points.

Finally at 5 PM it was the main conference closing (even when the next day there were some more workshops). As usual the closing included a retrospective activity, thanks to everyone and the announcement of the next year conference which will be held in Edinburgh.

xp_day_4

 

XP2015: Day 2 Summary

First of all I need to do a brief explanation of the conference layout. The main part of the conference takes place during Tuesday, Wednesday and Thursday. In addition to that, there are additional workshops on Monday and Friday.

So on Tuesday was the conference opening. As expected it started with the welcome by Maria Paasivaara (general chair). After that, Janne Järvinen offer a brief presentation of the Need for Speed program. A program in Finland that aims to join students and industry. Next there was the keynote by Linda Rising who talked about Continuous Retrospective. The keynote was fine, I wrote down some resources to check.

At the end of the keynote, every speaker of that day had 30 seconds to present his session and perform an invitation, good idea.

The next session I attended was Why we need architects by Rebecca Wirfs-Brock. It was interesting but nothing new for me, so in the middle I switched to the session by Nitor guys who perform a technical demo of their tool Willow which provides support for elastic cloud deployments. I really liked it.

In the afternoon I  attended to a Continuous Delivery session by Omenia guys, nice session. After that it was my first session: Continuous Delivery at Enterprise level with Jenkins and Octopush (the tool I developed with OLX guys). Everything went fine, the demo was successful but just in case I had prepared a short demonstration video. The slides are available here.

The next session I attended was a panel about Continuous Delivery. I stayed there just 15 minutes and I left the room because to my surprise the debate was very poor. I moved to another session about contracts by Antti Kirjavainen which was much better.

Finally we got to the best part of the day: the open space, yeah!!!! We had a marketplace to collect sessions for the three days. The facilitator was Charlie Poole and I liked his performance. After the marketplace we had like a cocktail and next to it the open space sessions started. We had 3 hours from 19.00 to 22.00 with up to 7 parallel sessions. For me the best session was the one I proposed: Programming practices. The goal was simple: share ideas/practices/tips among programmers. Four person joined the session: Daniel (a coach from Germany), Sebastian (a developer/trainer from Sweden), Wouter (a consultant from Holland) and Oller (a tech lead from Sweden). For me it was a great session, I really enjoyed it.

xp_day2_2
Session about contracts
xp_day2_3
Keynote by Linda Rising
City view from the conference center