Notas del workshop de TCR

Ayer por la tarde/noche en la oficinas de Grupo Esfera hicimos un mini-taller exploratorio de test && commit || revert. Fuimos 9 participantes, todos practicantes de TDD. Comenzamos la sesión con un poco de contexto:

  • El código va con tests. No se discute.
  • Los tests pueden hacerse a priori o a posteriori. Podemos debatirlo.
  • TDD implica Test a priori pero Test a priori no implica TDD. Es definición.

En términos formales hay dudas sobre los beneficios de TDD

There’s no convincing evidence that TDD consistently fares better than any other development method, at least those methods that are iterative.

What Do We (Really) Know about Test-Driven Development?
(2018) I. Karac and B. Turhan, in IEEE Software, vol. 35, no. 4, pp. 81-85, July/August 2018. doi: 10.1109/MS.2018.2801554

Algunos autores sugieren que los beneficios de TDD no se deben al hecho de escribir los tests a priori sino al hecho de trabajar en pequeños incrementos:

The claimed benefits of TDD may not be due to its distinctive test-first dynamic, but rather due to the fact that TDD-like processes encourage fine-grained, steady steps that improve focus and flow.

A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last?,
(2017) D. Fucci, H. Erdogmus, B. Turhan, M. Oivo and N. Juristo, in IEEE Transactions on Software Engineering, vol. 43, no. 7, pp. 597-614, 1 July 2017.doi: 10.1109/TSE.2016.2616877I.

Dicho todo nos propusimos probar la técnica TCR que propone trabajar en mini-incrementos. Pusimos entonces las manos en el teclado para resolver algunos ejercicios. Lamentablemente nos quedamos cortos de tiempo, pero acordemos agendar otro encuentro para seguir experimentando.

Les dejo un video del propio Beck haciendo un ejercicio al estilo TCR.

Finalmente les comparto aquí un video que hice mientras resolvía la Kata de Chopper que propuse hacer como primer ejercicio del workshop.

Agiles 2017, mis notas finales

Agiles 2017, mis notas finales

Han pasado ya algunos días desde el fin de la conferencia y me parece un buen momento para el análisis.

En primer lugar creo que se cumplió la alta expectativa que había en la previa. Es mi sensación personal y también lo que he percibido de mayoría de los asistentes con los que hablé.

Hay algunos puntos que me parece importante destacar en el análisis:

  • El formato 100% open space caminó bien, hubo una cantidad impresionante de sesiones con una gran variedad de temas. Al mismo tiempo creo que hubo una gran conformidad con este formato, o sea, casi todas las personas con las que hablé estaban conformes con este formato. Esto me hace pensar que en futuras ediciones es posible que se siga con un formato mayoritariamente Open Space.
  • El nivel de las sesiones (al menos de las que asistí yo) me pareció bien. No vi ninguna sesión que me deslumbrara, pero al mismo tiempo tampoco vi sesión desastrosas. De todas formas creo que es un punto que escapa al equipo de organización. O sea, más que insistir en que la gente prepare las sesiones y ofrecer algunas herramienta online para ir publicando propuestas por adelantado, no imago que se pueda hacer mucho más desde la organización. En línea con esto me pareció una lástima que no se usara el OpenCall, la plataforma que ideamos con Martin Salias y Fer Di Bartolo y que Fer desarrolla activamente.
  • No hubo sponsors. El tema sponsors es una cuestión que para algunos resulta controversial y por ello le voy a dedicar un artículo aparte.
  • El cierre de la conferencia fue a plena música y baile. Luego de algunos anuncios de cierre y «calentamiento» para el Agiles 2018 (Mexico), un grupo de percusión animó la retirada de los asistentes.
  • Hubo un espacio de venta de libros escritos por miembros de la comunidad. Esta iniciativa me pareció excelente para difundir conocimiento generado por la propia comunidad. Los coordinadores de este espacio fueron los organizadores del AOC y lo hicieron con dos objetivos: difusión y recaudación de fondos para el AOC.
  • Los problemas/inconvenientes que se fueron detectando a lo largo de la conferencia, se fueron arreglando con muy buen timing. Tres casos concretos fueron:
    • el día 1 se detectó que el marketplace se alargaba mucho, con lo cual al día siguiente se acortó el tiempo de presentación de las sesiones.
    • el día 1, el almuerzo fue medio caótico debido al gran volumen de gente, por ello al día siguiente se incorporó un food track adicional
    • el día 2, el sol pegó muy fuerte por la tarde, con lo cual al día siguiente se instalaron unos gazebos para proteger del sol

Un detalle no menor, en este espacio se están subiendo todas las fotos de la conferencia (de ahí saqué la foto que acompaña este post y que fue tomada por Dario Palminio).

Sinceramente creo que esta edición de Agiles ha marcado un hito en nuestra comunidad. Se hicieron varios experimentos en términos de organización, formato, etc y resultaron exitosos. Esto representa un desafió importante para las siguientes ediciones.

Mis felicitaciones infinitas para el equipo organizador de Agiles 2017. Gracias totales.

Agiles 2017, día 3

El último día la jornada comenzó un poco más tarde, no por planificación sino porque muchos de los asistentes salieron la noche anterior ;-).

En este caso la apertura de la jornada y la facilitación del marketplace estuvieron en manos de Guillo y Loreto.

La primer sesión que asistí fue la propuesta por Fred Madrigal «Háblame de tu dificultad y te diré qué libro leer«, el nombre de la sesión fue muy preciso, los participantes planteábamos inquietudes y entre todos recomendábamos libros que trataran sobre el tema en cuestión.

En el siguiente bloque no asistí a ninguna sesión, sino que me quedé al aire libre hablando con amigos que veo poco durante el año.

Ya por la tarde dimos una sesión con DiegoF sobre nuestro proyecto de investigación sobre prácticas ágiles. Aquí están las diapositivas utilizadas durante la sesión.

Junto a Diego con algunos de los asistentes a nuestra sesión

Ya en el último turno, estuve en la sesión de mi gran colega Angel Nuñez quien hablé sobre «DevOps en Banking«. Como de costumbre, fue una sesión excelente.

Alrededor de las 16.30 comenzó el cierre de la conferencia. El cierre consistió en una seguidilla de actividades entre las que se incluyó el anunció de Agiles 2018 en México.

Una vez concluida la conferencia, terminé la jornada compartiendo unos tragos con Fred, Sole, Mauro, Tomi y Andrés en el patio Bella Vista.

Con este post termino mi relato de Agiles 2017 pero dejo para otro post mis conclusiones generales sobre conferencia.

Agiles 2017, día 2

El día comenzó con una dinámica para «despertarnos» y algunos anuncios parroquiales. A continuación: marketplace. Si bien ya del día anterior habían quedado agendadas algunas sesiones, las mismas no eran suficientes para completar la agenda. Un detalle a destacar es que para evitar que el marketplace se estirara tanto como el día anterior, se decidió reducir el tiempo de presentación de cada sesión a 30 segundos, lo cual funcionó muy bien (#lessonLearned).

Una de las sesiones que había quedado agendada del día anterior, fue la de «Introducción a Extreme Programming» que hice a primera hora de la jornada. Al igual que en mi otra sesión, hubo mucha más gente al final que al inicio, tal vez unas 50 personas. Para la sesión utilicé las diapositivas de mi ya clásica sesión de ModernXP, los cuales están disponibles para descarga aquí.

Inicio de mi sesión de Extreme Programming

A continuación, asistí a la sesión de Lucho Salazar sobre Story Conversation Canvas, una herramienta en papel desarrollada por el propio Lucho para guiar las conversiones sobre User stories. La herramienta me pareció muy útil y como siempre la oratoria de Lucho… impecable.

Ya por la tarde, estuve en el coding dojo «TDD por Zombies» facilitado por Martín Salias y Edson Chavez. Como era de esperar fue excelente. Trabajamos sobre la famosa Mars Rover Kata y aunque no llegamos a completarla, las discusiones que se dieron estuvieron muy buenas.

Continuando con cuestiones técnicas, en el siguiente bloque asistí a la sesión de Diego Fontdevila «TDD al uso nostro» en la cual contó la forma en que están haciendo TDD con una visión de negocio. Me gustó el enfoque y me llevé como tarea revisar la herramienta Serenity BDD.

Sesión TDD al uso nostro

Finalmente, cerré el día con la sesión de Hernán Wilkinson: «OOP programming is not Dead: Objetos vs. Funcional». El principal punto de la sesión fue que la programación orientada a objetos y las programación funcional no son rivales sino complementarias. Concuerdo. Un detalle menor, el título de la sesión me pareció impreciso porque si bien se abordó lo prometido, la mayor parte de la sesión estuvo centrada en otras cuestiones.

La jornada cerró con una dinámica que no puedo describir porque me colgué en una charla en la zona del jardín.

Por la noche, compartí una muy agradable cena con Loreto, Mario Lucero, Javier Garzas, Monica, Patricio Montecinos y Héctor Mosquera.

Agiles 2017, día 1

Como de costumbre la conferencia comienza con la registración, la cual en algunos casos es caótica. Pero en esta ocasión me parece que fue muy fluida (al menos en mi caso). Los organizadores habían compartido un video explicando el procedimiento de registración que me parece fue una buena ayuda. Adicionalmente a ello el procedimiento tuvo un componente adaptativo novedoso pero que sería largo de describir aquí (ya le pedí a Sergio Pola del equipo de organizadores que escriba algo al respecto).

La apertura estuvo a cargo de Manuel y Paulina, quienes dieron la bienvenida y e hicieron anuncios generales. Un componente de color de la apertura fue la actuación de un grupo folklórico intercalada con una rimas/versos sobre agilidad de Agustín Villena.

Inicio del marketplace

Terminada la apertura tuvimos el marketplace, que se extendió más de un 1 hora debido a la gran cantidad de sesiones propuestas.

La primer sesión que participé fue «la clínica ágil» propuesta por Martin Alaimo en la cual se proponía juntar gente con inquietudes con gente que pueda evacuarlas. En ese contexto mantuve una charla con un colega que sufría presiones de micro management de parte de sus superiores. Ese tema fue el disparador de una serie de cuestiones colaterales muy interesantes sobre las que también charlamos.

Luego de eso participé de la sesión «Los 6 factores claves para equipos de alto rendimiento» presentada por Fabián Schwart. La sesión fue una presentación al estilo tradicional. Estuvo bien pero personalmente no me aportó mucho pues ya sentí que conocía la mayoría de cuestiones presentadas. Pero como la sesión estaba bien presentada, me quedé hasta el final.

Ya por la tarde estuve en la sesión propuesta por Juan y Alan: «Historia de Ágiles 20xx«, fue lindo recordar andanzas de los primeros Agiles, pero en un momento sentí que no me estaba aportando, entonces me fui a recorrer otras sesiones.

A continuación asistí a la sesión de Humberto Maturana (si si, el famoso escritor chileno). Lo curioso no fue la presencia de Maturana en la conferencia, sino que su espacio en la conferencia, fue un espacio más. O sea, no fue un keynote, nadie fue «obligado» a escucharlo porque en paralelo había varias sesiones más. De hecho, yo mismo decidí cambiar de sesión cuando sentí que lo presentado no me aportaba.

Sesión de Humberto Maturana

Ya en último turno de la jornada hice mi sesión «Patrones de infraestructura para Continuous Delivery» la cual fue una versión mejorada de la que hice tiempo atrás en la conferencia Agile 2017 de Orlando. La sesión arrancó con unas ~30 personas y gradualmente se fue sumando más gente. Creo que al finalizar la sesión había más de 60 personas. La sesión creo que salió muy bien y personalmente me gustó mucho haber podido hacerla al aire libre. Las diapositivas utilizadas durante mi sesión pueden descargarse aquí.

Participantes de mi sesión durante la dinámica de los pasos

 

 

Agiles 2017, día 0

Si bien la conferencia comienza el jueves, para los organizadores comenzó el miércoles, el día previo a la conferencia, el día cero, el día del montaje.

Llegué a Chile pasado el mediodía, visité las oficinas de un cliente y hacia el anochecer fui para el lugar de la conferencia a dar una mano. Allí me encontré a los organizadores realizando las tareas típicas de montaje: armado de bolsas, ubicación de carteles, logística de registración, etc, etc. Todo esto entre risas y buena onda.

Este Ágiles, el 2017, es el décimo. Si, ya pasaron casi 10 años desde aquella primera edición en el hotel Bauen de Buenos Aires. Sinceramente no recuerdo, en todos estos años, un Agiles que haya despertado tantas expectativas. Creo que estas expectativas se deben a un par de cuestiones:

  • Por primera vez el evento será completamente en formato Open Space
  • La cantidad estimada de asistentes ronda los 800, un nuevo record para la conferencia
  • El evento sea realizó sin sponsors comerciales (al menos hasta el momento, no ha habido en la página ninguna mención a sponsors)

Bueno, ya es hora de dormir, porque mañana la jornada inicia temprano.

Continuará…

Preparando mi sesión para Agiles 2017

Este año la Conferencia Latinoamericana de Métodos Ágiles será completamente en formato Open Space. Esto me parece excelente ya que cada cual puede proponer la sesión que guste dejando que sean los propios asistentes quienes decidan si la misma es de interés o no.

Yo soy de los que creen que aún cuando la conferencia sea Open Space, uno debe preparar las sesiones. Es por esto que hace desde hace un par de días estoy pensado en la sesión a proponer. Mi idea es hacer alguna de las siguientes sesiones (solo una):

  • Patrones de Infraestructura para Continuous Delivery, esta sesión la presenté en Agile2017@Orlando. Es una sesión en formato presentación tradicional con algunas demostraciones.
  • 7 prácticas concretas para iniciativas DevOps, esta es una sesión que nunca di como tal aunque el contenido de la misma es parte de mi taller de prácticas de DevOps. Sesión en formato presentación.
  • Modern Extreme Programming, esta es una sesión introductoria a extreme Programming uno de los métodos ágiles más populares.
  • DevOps, mitos y verdades de un nuevo paradigma, esta sesión la armé hace unos meses para la conferencie IEEE Week.
  • Introducción a la Investigación en Ingeniería de Software basada en evidencia,  dentro de este área de conocimiento se enmarca mi proyecto de investigación en UNTREF. La idea de esta sesión es explicar las técnicas y particularidades de esta rama de investigación. Creo que esta sesión puede ser interesante para aquellos que tengan ganas de hacer investigación en ingeniería de software y particularmente en cuestiones relacionadas a agile.

 

Agile 2017 Conference, day 4 & 5 notes

I started the day with the session «The pursuit of DevOps: 3 unique Microsoft journeys leading to a customer-focused path«, it was very interesting to hear real world experiences in first person.

Then I attended to the session «API Testing FUNdamentals» by JoEllen Carter and Dan Gilkerson. It was a hands-on session. Without any doubt it was the best session I attended in the whole conference.

In the afternoon I delivered my session «Infrastructure Patterns for Continuous Delivery«.

The day ended with the Conference Party at Pointe Orlando: drinks, food and live music!

The Friday was a short day, just the morning, in the first slot there were open space sessions and in the second: the closing keynote by Denise Jacobs. I can not say nothing about it because I didn’t attend because I was already on my way back home.

Estabilizando la velocidad

Durante las dos primeras iteraciones decidimos no puntuar las stories con un valor explícito de estimación. Simplemente a la hora de determinar el compromiso de la iteración utilizamos la tantas veces usada técnica de «estimación a ojo de buen cubero». Pero ya en la tercera iteración el cliente nos pidió que puntuáramos las todas las stories del backlog para poder hacer una proyección. Así que eso hicimos, repasamos todo el backlog haciendo una estimación de mano (una variante del famoso planning pocker).

Adicionalmente al comienzo de cada iteración, repasamos los valores asignados a cada story  y de considerarlo necesario los volvimos a estimar.

La semana pasada completamos la sexta iteración y por primera vez entregamos exactamente lo que habíamos comprometido. Hasta entonces siempre habíamos tenido un pequeño delta positivo o negativo.

Comprometido vs. Entregado

Como se puede apreciar en el gráfico precedente la cantidad de puntos entregados por el equipo ha ido en aumento desde la iteración 4. Parte de ese incremento se debe a que las iteraciones 4 y 5 tuvieron días feriados en los que no trabajamos y que hicieron que dichas iteraciones fueran más cortas en términos de días trabajados.

En este momento estamos trabajando en la iteración 7 y el tamaño del compromiso tomado es bastante mayor a las iteraciones anteriores (75 puntos). Esto se debe a que se sumo una nueva persona al equipo.

Al finalizar la iteración 8 saldremos a producción. Yo hubiera preferido salir antes, pero resulta que estamos reemplazando un producto existente y ha sido muy difícil hacer un recorte de funcionalidad que nos permita salir antes sin impactar negativamente en el negocio.

Continuará…

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.