eXtreme Programming Moderno: ¿de qué estamos hablando?

Muchas cosas han cambiado desde la publicación del libro de Extreme Programming Explained de Ken Beck que estableció las bases de XP. Sucesivas publicaciones han ido actualizando las prácticas de XP. En ese sentido me ha resultado muy interesante el libro de James Shore y Shane Warden, The Art of Agile Development el cual más allá de su nombre es básicamente un libro de XP. Pero así y todo este libro es de 2007, casi 10 años han pasado y la forma en que trabajan los equipos de XP se ha visto modificada principalmente a partir de la incorporación de nuevas prácticas dando origen a lo que llamo Modern Extreme Programming (si, son consciente, el nombre no es bueno).

Más concretamente cuando hablo de Modern XP me refiero a la forma en que trabajan actualmente (hoy, 2016) muchos equipos que utilizan XP. Aquí me parece importante destacar que en general no he visto equipos explícitamente preocupados por aplicar XP (como si los he visto por aplicar Scrum) sino que en general la preocupación pasa por entregar valor y calidad y en ese sentido simplemente utilizan la mayoría de las prácticas de XP por el simple hecho de que les funcionan. Más aún, he visto equipos haciendo XP sin saber que lo están haciendo. En este sentido veo un conjunto de «nuevas» prácticas claramente establecidas y otro conjunto de prácticas «experimentales» menos establecidas, o no probadas o incluso descartadas por algunos equipos.

Prácticas establecidas

Visual Story Mapping (VSM) es un técnica para creación de backlog popularizada por Jeff Patton. VSM es una actividad realizada típicamente al comienzo del proyecto, en etapa de definición/pre-venta y cuyo output es un artefacto concreto: «un mapa». Este mapa permite visualizar fácilmente actores, flujos de negocio y funcionalidades/user stories. Creo que el gran valor de esta actividad radica no solo el mapa resultante sino en las discusión que se disparan durante su realización.

Specification by Example (SBE) también conocida como Behaviour-Driven Development (BDD) es un enfoque colaborativo para la definición de requerimientos usando ejemplos concretos de uso en lugar de especificaciones abstractas/genéricas. Algunas de las herramientas que han ayudado a popularizar esta técnica son Cucumber, JBehave y SpecFlow.

Infrastructure as Code (IAC) describir la infraestructura con código nos permite generar nuevos ambientes on-demand y así acelerar diversas tareas del proceso de desarrollo. Al mismo tiempo es posible aplicar ciertas prácticas comunes del desarrollo como versionado y prueba automatizada. En los últimos años han aparecido herramientas como Puppet, Chef y Ansible que han posibilitado esta práctica y han potenciado su difusión.

Continuous Delivery (CD) es la capacidad de entregar software funcionando en manos del usuario de una forma segura, rápida y sostenible. La entrega frecuente ha estado entre las prácticas fundacionales de agile desde un comienzo pero CD va más allá, llevando al extremo la frecuencia a partir de un foco importante en la automatización. Es común encontrar equipos haciendo CD y realizando varias entregas en un mismo día.

Prácticas experimentales

#NoEstimates es un enfoque de trabajo que propone no realizar estimaciones de user stories lo cual impacta directamente en el Planning game. Si bien hay una iniciativa con popularidad creciente alrededor de #NoEstimates, creo que su uso no está lo suficientemente extendido como para considerarla una práctica del nuevo XP.

Test-Driven Infrastructure surge a partir de la práctica de Infraestructura as Code y pretende llevar la práctica de TDD al mundo de la infraestructura. Personalmente he intentando utilizarla y no me convenció, creo que me trajo más inconvenientes que soluciones. Tampoco conozco en forma directa equipos que la estén utilizando, pero la menciono pues he leído y escuchado al respecto en algunos encuentros de la comunidad.

Continuous Deployment es una práctica es un paso más allá de Continuous Delivery y tiene que ver con ir a producción en forma automática. Típicamente en Continuous Deployment el paso final para ir a producción se dispara en forma manual a partir de una decisión de negocio. Cuando hablamos de continuous deployment la decisión de negocio ya está tomada: cuando algo se termina va directo a producción con lo cual se elimina el trigger manual.

Mob Programming es en cierto modo la idea de Pair-Programming llevada al extremo: todo el código, se escribe todo el tiempo en una única máquina con todo el equipo trabajando junto. El hecho de trabajar todo el equipo en una máquina en ciertos momentos del proyecto es algo que he visto en muchos equipos y yo muchas veces lo hago, sobre todo al comienzo de los proyectos. Pero hacerlo con todo el equipo todo el tiempo es algo que no he visto, aunque los impulsores de este movimiento han reportado interesantes resultados.

Alta expectativa para el AOC 2016

Pasado mañana larga el AOC 2016 y personalmente creo que hay una gran expectativa. En los últimos días he hablado con varias personas que asistirán a la conferencia y he notado un entusiasmo similar al mío. Estas sensaciones están justificadas por diversas cuestiones:

El escenario es simplemente in-cre-i-ble, el evento se llevará a cabo en un complejo a en las cercanias del Lago Escondido.

La experiencia de vivir tres días completamente inmersivos con 100 personas ávidas de compartir, aprender y pasarla bien no es algo que se pueda hacer muy frecuentemente.

El contenido incluirá cuestiones tan diversas (y ¿extravagantes?) como un Workshop de Astronomía observacional, una sesión sobre Bitcoin, un Coaching Kata de Guitarra y un Taller de fotografía nocturna. Por otro lado habrá también algunas sesiones más «conservadoras» como Prototipos con Arduino, Iteration Review: la reunión olvidada y Visual Management.

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.

Iniciativa de Software Craftsmanship en Buenos Aires

El movimiento de Software Craftsmanship (SC) surgió hace un par de años y al igual que ocurre con el movimiento ágil cuesta poner una fecha «de fundación». Si bien el manifiesto de Software Craftsmanship data de 2009, algunas publicaciones al respecto son bastante anteriores: Software Craftsmanship: The new Imperative (2001) y The Pragmatic Programmer (1999).

El movimiento de SC ha tenido un gran crecimiento en los últimos años y varias conferencias han potenciado su difusión. Entre estas conferencias destaca sin duda SoCraTes (Software Craftsmanship and Testing Conference) la cual desde 2010 se ha replicado en distintos países (Alemania, UK, Bélgica, Francia, España)

En paralelo con el crecimiento de este movimiento han surgido también algunas críticas/debates que han sido muy resumidos por Martin Fowler en su artículo Craftsmanship and the Crevasse.

Hasta donde tengo conocimiento no existe hoy por hoy en Buenos Aires un espacio comunitario que trate sobre este movimiento. Al mismo tiempo dada la cercanía de este tema con agile, creo que podría ser interesante reflotar los encuentros mensuales de Agiles@BuenosAires para hacer algunas actividades de Software Craftsmanship. Manos a la obra.

Continuará…

 

Mi propuesta para el AOC 2016

Según el procedimiento de inscripción, tengo que responder 3 preguntas, asi que aquí voy.

¿Qué puedo aportar yo al evento?

Quiero aportar un entregable, algo concreto que trascienda los 3 días de conferencia y a los participantes de la misma. En concreto quisiera generar otro libro repitiendo y reutilizando la experiencia del libro Experiencias Ágiles que escribimos en el AOC anterior. No tengo del todo claro cuál sería el contenido de este libro, de mínima podría ser un conjunto de experiencias igual que el libro anterior, pero creo que tal vez podríamos generar algo un poco más rico como por ejemplo un catálogo de técnicas. Independientemente del tema, me gustaría llegar al evento con el contenido bastante avanzado para asi intentar cerrarlo durante el evento y evitar así una carga de trabajo post-evento. Si mi postulación es seleccionada imagino empezar a trabajar en enero. Creo que en primer lugar haría una convocatoria de autores y luego en conjunto con los que decidan participar deberíamos definir la cuestión del contenido.

¿Qué espero recibir del evento?

Espero encontrarme con otros practicantes para compartir experiencias en el desarrollo de software y también momentos de esparcimiento.

¿Quien soy?

Soy NicoPaez, un Ingeniero de Software formado en la Universidad de Buenos Aires. Practico basquet, me gusta escribir y jugar al TEG. Soy docente universitario y trabajo en la industria del software formalmente desde hace unos 15 años.

Agile Open Camp 2016: abierta la inscripción

La semana pasada se anunció la apertura de las inscripciones para el AOC 2016. Resulta que este año el procedimiento de inscripción tiene algunas particularidades.

A diferencia de otros eventos el AOC tiene un límite «duro» de asistentes pues es un evento 3 x 24,  o sea son 3 días completos donde todos  los participantes se alojan en un mismo lugar y comparten espacios las 24 horas. En la primera edición hubo mucha gente que quedó fuera por falta de vacantes. Si bien para esta segunda edición se contará con una mayor cantidad de vacantes también se espera una mayor cantidad de interesados en participar debido a gran repercusión que tuvo la primera edición. Es por esto que el grupo organizador ha decido experimentar con un sistema de inscripción alternativo al simple «orden de llegada» utilizado en la primera edición. El mecanismo a utilizar está explicado en este breve video de Tommy, unos de los miembros fundadores del evento.

En forma resumida la idea es: cada interesado en participar debe postularse indicando porque le interesa participar y que tiene para aportar. Luego cada uno de los 3 fundadores del evento revisa las postulaciones y selecciona 2. Los seleccionados se inscriben en el evento comprando su entrada y tienen derecho a elegir otros dos postulantes cada uno. El proceso se repite hasta completar la cantidad de vacantes disponibles.

Personalmente me gusta la idea de que las entradas se repartan en base a cierto criterio de «aporte de valor» en lugar de el simple orden de llegada. Veremos que tal sale, por mi parte ya me voy poniendo a escribir mi postulación.

 

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.

 

Reflexiones sobre el programa de Agiles 2015

La conferencia ha terminado y en mi opinión ha estado muy bien. Al igual que en los últimos años, el programa estuvo compuesto por 3 tipos de sesiones: keynotes (sesiones plenarias), sesiones de open space y sesiones seleccionadas del call for papers. Es en estas últimas que voy a centrar este artículo.

Desde el punto de vista del contenido de las sesiones creo que hemos tenido una mejora de calidad respecto a años anteriores. Obviamente esto es una opinión completamente subjetiva basada en mi percepción personal y en comentarios de personas con las que hablé (tener presente que mi subjetividad puede ser muy alta pues yo mismo estuve involucrado en la selección de sesiones ;-)). 

Al mismo tiempo ocurre que el proceso de selección de sesiones utilizado en esta ocasión requirió mucho más esfuerzo que en años anteriores. La duda que aún tengo es si ese esfuerzo adicional efectivamente se tradujo en un mejora proporcional de la calidad de las sesiones. Me pregunto: ¿hay alguna forma de mejorar la calidad de las sesiones sin invertir tanto esfuerzo en proceso de selección?

Mi sensación es que no hay garantías sobre la calidad de las sesiones y al mismo tiempo creo que cualquier proceso de selección siempre tendrá una carga de subjetividad que terminará generando algunas disconformidades. En este sentido el gran desafío radica en maximizar la calidad disminuyendo las disconformidades. Y no olvidemos que la calidad también es una propiedad subjetiva, ¡ja!.

Durante la conferencia hubo algunos espacios de discusión sobre esta cuestión en los que Alan insistió en ir hacia un formato de conferencia completamente Open Space. Esta idea me gusta por el hecho de que disminuye drásticamente el esfuerzo que debe hacer el equipo organizador en la selección de sesiones (pues todas las propuestas son automáticamente aceptadas), pero al mismo tiempo me parece que aún nos falta cierta maduración en el uso del formato Open Space, o sea, como comunidad hemos realizado muchas conferencias con formato Open Space pero a pesar de ello muchas de las sesiones presentadas en nuestros Open Spaces parecen muy improvisadas y carentes de preparación, dos cuestiones que en la mayoría de los casos perjudican la calidad. Hablamos también sobre posibles estrategias para evitar la improvisación extrema/general. El camino parece ser que las sesiones sean propuestas de forma previa y que la propia comunidad pueda dar feedback de forma temprana. Esto es algo que se ha probado en algunos casos y ha reportado buenos resultados. Pero curiosamente lo probamos en Argentina y a mi parecer no funcionó pues hubo propuestas presentadas sobre las que nadie dio feedback y también propuestas presentadas cuyo autor ni siquiera asistió a la conferencia. De todas formas creo que tenemos que experimentar. La duda que me surge es si ese lugar de experimentación debe ser la conferencia latinoamericana o alguna otra conferencia local.

Continuará…

Agiles 2015: octava edición, ¿alguien lo imaginaba?

Hace un tiempo haciendo limpieza de mi casilla de correo encontré un mail de @jgabardini invitandome a participar de la organización de lo que fue Agiles 2008.

agiles_2008

Con gran gusto acepté la invitación, un par de meses después la iniciativa se materializó y tuvimos la primera edición de la Conferencia Latinoamericana de Método Ágiles: Ágiles 2008.

Desde entonces la conferencia se ha realizado todos los años de forma ininterrumpida en distintos países de la región: Argentina, Brasil, Perú, y Colombia. Este año le toca a Uruguay y por eso estoy escribiendo este artículo sentado en un bar de Montevideo ubicado en el barrio «Ciudad Vieja».

Ya desde la previa, esta edición se destaca por dos hecho inéditos:

  • la mitad de los participantes de la conferencia son extranjeros (históricamente la cantidad de extranjeros no ha superado el 40%)
  • las entradas se agotaron semanas antes de la conferencia (de hecho estoy casi seguro que nunca antes se habían agotado).

El evento comienza en un par de horas, gran parte de los participantes ya están en la ciudad y la ansiedad va en ascenso.

Me pregunto: ¿alguno de los miembros del equipo organizador de Ágiles 2008 se imaginaba que llegaríamos hasta aquí? Yo sinceramente no.