Modern Extreme Programming Workshop Rehearsal

Last Wednesday we did a rehearsal of this workshop at Kleer.  We had 14 participants with different levels of experience in XP.  In general terms everything went as expected and we get very useful feedback.

We also got a very good qualification from the participant who ranked the workshop with 4.6 out of  5.

Next stop: XpConf @ Edimburgh

modernxpkleer modernxpkleer2 modernxpkleer3

Anuncios

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.

Preparing my session for XPConf @ Edinburgh

My session proposal for the Extreme Programming Conference was accepted so now I must practice to ensure a clean delivery.xp2016logo

The session is based on my Software Engineering course at UNTreF but I need to perform some modifications in order to delivery it in 6 hours.

The session is called “Modern Extreme Programming Workshop” and it is focused on how Extreme Programming practices have evolved and how they are being used by (some) development teams nowadays. The session is hands-on so the participant we will have the chance to apply XP practices while working in a “real world” Java application. Among the practices we will cover Behaviour-Driven Development, Mob Programming, and Continuous Delivery. Regarding tools and technologies, we will work with Java, Gradle, Cucumber, Jenkins and Ansible.

To practice before the conference I will run this workshop in Buenos Aires (but in English). If you are interested in participating just fill this form (programming experience required).

Clase en el posgrado de la UCA

La semana pasada dicté una clase sobre Extreme Programming en el contexto de la especialización en Ingeniería de Software de la UCA. Más concretamente la clase fue en el contexto de la materia Métodos de desarrollo de Software que dicta Andrés Diaz Pace.

Previamente Mariano Tugnarelli había dado una introducción a los métodos ágiles y Scrum. Lo cual preparó el contexto para meternos con XP.

El grupo de alumnos resultó ser bastante heterogéneo, varios de ellos trabajando activamente en el sector de software, algunos electrónicos, algunos graduados recientemente y otros hace ya bastante, en su mayoría Argentinos, pero también varios extranjeros. Muy poco con conocimientos de métodos ágiles.

Inicialmente hicimos una actividad de mitos y verdades la cual nos sirvió de disparador para ir entrando en varias conceptuales.

Algunos recursos interesante relacionados a los que vimos en la clase:

agiles_uca

Workshop de Extreme Programming, segunda edición

Hace un tiempo escribí sobre el workshop de Extreme Programming que dicté en conjunto con mi colega Carlos Peix. Luego de haber incorporado el feedback de los asistentes, agendamos para hacer una segunda edición a mediados de Septiembre, concretamente 23 y 24 de septiembre.

A diferencia de la edición anterior, esta vez el workshop será abierto al público en general, pero con una restricción: gente de perfil técnico. Esto se debe a que el curso está enfocado en cuestiones técnicas, con lo cual esperamos que sea gente que pasa parte de su día programando. Asimismo se espera que los asistentes esten familiarizados con métodos ágiles, en particular con Scrum. El curso está planteando como una continuación del curso CSD, con lo cual cualquier persona que haya tomado dicho curso está en condiciones de tomar este curso. Pero ojo, el CSD no es un requisito, el requisito es, como mencioné previamente, estar familiarizado con Scrum y métodos ágiles en general.

tools2-xpwDado que el curso es muy técnico y con una alta carga práctica, los asistentes deberán asistir con sus computadoras y previo al curso deberán resolver una prueba de técnica. Dicha prueba consiste en implementar una user story muy muy simple, pero que obligará a los asistentes a hacer el setup del ambiente que utilizarán en el curso.

Durante el curso utilizaremos un rico conjunto de herramientas que incluye: Git, Ruby, Jenkins, Bootstrap, Heroku y Padrino, entre otras. Para simplificar el setup del ambiente de trabajo hemos preparado detallados instructivos muy fáciles de seguir y para aquellos no quieran invertir tiempo en esto, también hemos preparado una máquina virtual con el ambiente ya listo. tools-xpw

No es necesario que los asistentes conozcan todas estas herramientas, pues el foco no del curso no está en las herramientas sino en los conceptos y prácticas. Por ello, desde el punto de vista técnico, basta con que los asistentes sepan programar utilizando el paradigma orientado a objetos.

El curso está estructurado como una simulación de un proyecto de desarrollo de una aplicación tipo “enterprise” que utiliza base de datos e interactúa con otros sistemas como Twitter, Gmail, etc.

Este curso permite a los asistentes conocer y entender las prácticas de Extreme Programming a partir de su puesta en práctica en un contexto típico de una aplicación enterprise, utilizando varias herramientas muy difundidas en la actualidad.

Para más detalles y consultas pueden consultar la página de registración del curso.

tools3-xpwAplicación de ejemplo utilizada durante el curso

Workshop de Extreme Programming

Los últimos días he estado ausente porque estuve trabajando en la preparación y el dictado de un workshop de Extreme Programming junto a mi colega @carlospeix.

Como era la primera vez que lo dictábamos, hicimos una invitación cerrada a algunos conocidos y ex-alumnos que gentilmente aceptaron ser nuestros “conejillos de indias”.

El workshop salió un poco distinto a como lo habíamos planeado, pero a pesar de eso quedamos muy contentos con el resultado y los alumnos también se manifestaron positivamente.

Estimamos volver a dictarlo hacia mediados/fines de septiembre, pero de forma abierta al público.

xpw