XPConf 2016: algunas cosas para importar en Latam

Quiero compartir algunas actividades que viví en la conferencia y que podría resultar interesante tenerlas presentes para la conferencia latinoamericana Agiles.

Cena previa: la noche previa al inicio de la conferencia los organizadores realizaron reservas en diversos restaurantes cercanos al centro de conferencias para que los asistentes fueran a cenar en grupo con la intención de conocer a otros participantes. Cada uno debía pagar su cena, pero el hecho de que la organización hubiera hecho las reservas posibilitó que los lugares estuvieran preparados para atender mesas de 10 comensales.

Catering continuo: durante los 3 días que duró la conferencia hubo catering continuo, o sea, uno podia salir en medio de una sesión y ponerse a comer, no hacía falta esperar al break. Había breaks de 30 minutos a horarios predeterminados, pero el catering no estaba limitado a esos breaks, sino que estaba todo el día. Al mismo tiempo el catering estaba organizado en 4 espacios:

  • 1 espacio donde se servia café, té, agua y dulces
  • 3 espacios donde se servia comida salada que incluía: hamburguesas de distinto tipo, papas fritas, tartas, pizza, arroz, woks y pastas entre otros

Actividades «before office»: todas las mañanas antes de desayuno (7 AM) había sesiones de yoga, running y lean coffee.

Actividades «after office»: todos los días luego de la conferencia había actividades de networking: una degustación de whisky, juegos con premios de los sponsors, fiesta en el castillo, etc.

Open Space en paralelo: el market place del open space junto con la primera tanda de sesiones se hizo en el «after office» del primer día. Luego, el resto de las sesiones del open space tuvo lugar durante los días 2 y 3 a la par de las sesiones predefinidas del programa.

Si bien algunas de estas actividades puede que ya no sean factibles para la edición de Agiles este año, hay otras que me parece que perfectamente podrían realizarse.

xp_party

XPConf 2016: Day 3 summary

The day started with a keynote by Professor Lionel Briand who talked about «Documented requirements are not useless after all». He presented really interesting stuff based on concrete study cases. I liked it.

After the keynote I joined the session «Working effectively with legacy Test» by Nat Pryce and Duncan McGregor. The session started with a short introduction by Nat and then we started reviewing test code shared by the participants. While sharing the code we analysed and proposed different possible refactors. I like the dynamics of the session.

Next I jumped to the session «Bourne Again, Bootstrap a testing framework in BASH» where Rob Westgeest coded a «xunit-like» tool in BASH to test BASH scripts. It was simple great! I loved the session and it gave me lot of ideas.

In the afternoon I followed Woody Zuill to his session «No Estimates», I was already familiar with the topic but I wanted to see how Woody presented it. I really liked his approach and I enjoyed the session.

The last session of the day (and the conference) was a Keynote by Steve Freeman and Nat Pryce.

The closing of the conference was in charge of Seb Rose who was the host of the conference.

In the next post I will share some highlights of the conference beyond the «formal stuff».

XPConf 2016: Day 2, our workshop

We were a bit worried because we didn’t know how many people would attend our workshop. The conference agenda for that day was full of interesting sessions and attending to our full-day workshop would imply missing all those sessions.

To our surprise we started the session with ~15 participants! After the ice-breaker activity we shared the full set of activities we had plan for the session and asked the participants to vote them, so we can concentrate in those more interesting for the audience. After voting, the final plan was not very different to what had prepared.

During the morning we presented our vision of XP «new practices» and drilled into one of them: Infrastructure as Code. These two topics generated some interesting discussion.

Before taking a break we checked with the audience how to continue. At that point some people left the session, but about the half decided to complete the workshop. So after a 30 minutes break we we jumped into Continuous Delivery, we reviewed the main concepts and we did a demo.

The next topic was User Story Mapping which only one of the participants knew about. We presented the technique and then we put it in practice.

The latest topic was Specification by Example, we explained the technique and put it in practice using Cucumber-JVM and working a «enterprise-like» application we built for the occasion. We work on a set of stories identified in the Story Mapping. For each of them we provided a ser of rules and asked the participants to work in pairs to write examples, validate them with US and them implement them.

As usual, at the end we asked for participant to rank the workshop and we get 4.3 out of 5 which for us was great! Here are some quotes form participants:

I really appreciated seeing Story Mapping and BDD in action –  especially the continuity between the two because they used the same example project.

 

Certainly a lot of valuable things covered and I learned a lot.

 

Definitely worth attending!

Here are some pictures and here is the slide deck we used (it does not have much information and because of that we are writing an booklet some participants can drill down in the different topics)

DSC05746

DSC05747

DSC05748

 

 

XPConf 2016: Day 1 summary

The journey started with a very interesting keynote by Elizabeth Hendrickson who shared how they at doing XP at scale in Pivotal Labs.

After that I went to the session Symbiotic Design Practices by Michael Feathers.

In the afternoon I attended the session Example Mapping by the Cucumber guys. The session was very interactive and I really liked the approach proposed by Matt and Steve (the guys in charge of the session). I will share my info about this session in a future post.

My next session was a Panel where some «agile rock starts» discussed about the Agile Hype. The session was fine but at a certain point I felt it was not adding value to me, so I left the room and went into the hall to do some networking.

At 6 PM I joined the Open Space Marketplace where I proposed a Smalltalk Introductory session for that same day.

At the 7 PM there was a nice Whisky Tasting activity and right after that I went back to the open space to join a session about Mutation testing. Next to it, was my Smalltalk session. Seven guys joined the session and we did a walkthrough over Pharo Smalltalk that took about one hour. By the end of the session it was almost 10 and I went to my room to review some stuff for the workshop I had to run the next day.

DSC05744
Elisabeth Hendrickson’s Keynote
DSC05745
Example Mapping Session

About our Modern XP tutorial @ XPConf 2016

Today we (@dfontde and me) will held this workshop that is focused on a set of practices we consider have take the main stage in software development over the last couple of years.

During morning we will review the foundations of XP and we will share a backlog creation technique called User Story Mapping.

In the afternoon we will continue with Infrastructure as Code, BDD, DevOps and Continuous Delivery. For this second part we will work with Java, Cucumber, Jenkins and Ansible.

Even when the workshop is full-day we invite xpconf participant to join either in the morning or in the afternoon. We think the workshop is great resource for those just starting with agile and also for those that are already practicing it but that would like to get familiar with the mentioned practices.

The workshop is based on our Software Engineer course at UNTreF University and we have already run it a couple of times with very good results.

XPConf 2016: Pre-conference (day 0)

Day 0 is DONE. There was a set of pre-conference workshops. I attended to «Software Faster» full-day workshop facilitated by Dan North.  Another workshops I considered before making my mind were: Mob Programming (Woody Zuill) and Exploratory Testing (Elisabeth Hendrickson).

The workshop was useful, the main takeaways points for me were:

  • some techniques to deal with legacy code
  • a set of activities to experiment in my classes at the university
  • a list of reading

After the workshop there was an ice-breaker activity sponsored by Head Resourcing with some drinks & snacks and finally we had the «Dinner with an agile stranger» sponsored by Headforwards.

DSC05743
Software Faster Workshop by Dan North

 

Tablero Integrado de Equipo

Me uní a mi equipo cuando este ya llevaba varios meses trabajando en el proyecto. Una práctica que me sorprendió es que todo el código de la aplicación pasa por una revisión de pares utilizando merge-requests. Personalmente prefiero el pair-programming a las revisiones de código pero ese es tema de otro post. El punto aquí es que esta forma de trabajo nos lleva a que frecuentemente se nos acumulen merge-request esperando a ser revisados y retrasando el flujo de entrega. Al mismo tiempo ocurre que el autor del merge-request no puede dar por cerrada la story y para no estar ocioso comienza a trabajar en una nueva story aumentando así el work in progress (wip). Punto aparte.

El fin de semana estaba leyendo el capítulo de Visual Management de @SolePinter y de repente se me ocurrió que si tuviéramos esta información bien presente al alcance de la mano eso podría ser un buen primer paso para la solución del problema. Como el equipo está distribuido, el tablero físico no iba a funcionar así que aprovechando que hacía rato que no programaba Ruby me senté y me dí el gusto de programar un tablero digital que muestra en una misma pantalla la cantidad de merge-request activos en todos nuestros repositorios, la cantidad de tareas en curso en nuestro backlog (consultando Trello) y algunas otras cosillas. Además de consultar la información tiene cierta lógica para actuar de semáforo, pintando de rojo o verde cada indicar dependiendo de cierto límites pre-configurados.

tid_v1

Si vemos que esto funciona es posible que siga agregando funcionalidades al tablero y en una de esas tal vez lo comparta para que lo usen otros equipos.

Nuevo libro: Herramientas Ágiles

Durante el AOC 2016 repetimos la experiencia del AOC 2015 y escribimos un libro y es justamente ese segundo libro el que ahora está disponible.

El primer libro trató sobre relatos de experiencias del uso del métodos ágiles. Este segundo libro trata sobre técnicas, lo cual me parece en cierto modo una camino natural: primero uno hace, experimenta, luego a partir de la experiencia repetida, generaliza dando origen a técnicas aplicables distintos contextos.

El libro está disponible en forma totalmente gratuita en diversos formatos digitales en la plataforma GitBook y también está disponible en forma físico en la plataforma Hesiodo (el formato físico no es gratuito).

¡Mis felicitaciones y agradecimientos a todos los autores por sumarse a esta iniciativa y lograr este nuevo entregable!

herramientas_agiles

Hacia un esquema de entrega continua

Cuando me uní al proyecto el equipo venia trabajando con un esquema ágil «clásico» pero con algunas particularidades:

  • Iteraciones time-boxed de 2 semanas
  • Congelamiento y regresión/estabilización los últimos dias de la iteración
  • Pruebas unitarias automatizadas
  • Regresión manual
  • Release al final de la iteración

Esta forma de trabajo ocasionaba de vez en cuando que se llegara al final de iteración con funcionalidades «inestables» porque no se llegaba a tiempo a completar la regresión/estabilización. Personalmente ya me había cruzado con este tipo de situaciones en el pasado y por ello en una retrospectiva propuse al equipo hacer un experimento en la siguiente iteración: tomar una user story, implementarla, testearla y releasearla apenas se la termine sin esperar al final de la iteración. De esta forma:

  • El flujo de entrega sería más frecuente bajando la ansidad de cliente
  • Obtendríamos feedback más temprano del usuario
  • El esfuerzo de estabilización estaría distribuido a lo largo de toda la iteración (y posiblemente sería menor en términos generales)
  • Se evitaría el incremento del WIP (work in progress) ya que las user stories completas no quedarían esperando al final de la iteración para su release.

Cuando hice esta propuesta algunos miembros del equipo me miraron con cierta desconfianza pero a pesar de eso todos estuvimos de acuerdo en hacer el experimento.

Continuará…