Agiles Argentina 2014, sesiones dia 1

Comparto aquí algunas notas de las sesiones que participé.

Agilidad en empresas duras

La primer sesión que asistí fue propuesta por gente de INVAP, una empresa Argentina dedicada al desarrollo de satélites y reactores nucleares. El título de la sesión fue (aproximadamente) “Agilidad en empresas duras”.
La sesión fue facilitada por Tommy Christie y comenzó una breve introducción del contexto de la empresa y luego debatimos sobre la aplicabilidad de la agilidad en dicho contexto.
Durante el debate se  mencionaron los siguientes puntos:

  • Los métodos ágiles no son aplicables a todos los proyectos (algo que siempre digo pero no fui yo quien lo dijo esta vez ;-))
  • Más allá del punto anterior, hay prácticas puntuales del agilismo que pueden agregar valor aún no se adapte el agilismo en su totalidad

Calidad y Agilidad

Esta sesión fue facilitada por JuanJo Zapico (@JJZapico) y fue, en mi opinión, de las sesiones más interesantes del día. Juan comenzó contando un caso y luego se abrió el debate entre los más 20 participantes de la sesión que aportaron diversas experiencias por demás interesantes. Si bien el nombre de la sesión decía calidad, la realidad es el que el foco estuvo principalmente en testing. En un momento de la sesión pregunte quienes utilizaban pruebas automatizadas y me sorprendió que aproximadamente la mitad contestó afirmativamente.

Introducción a XP

Esta sesión la propuse yo como una sesión introductoria. Los asistentes ya estaba familiarizados con Scrum y por ello nos centramos en aquellos puntos en los que XP complementa lo propuesto por Scrum: prácticas de ingeniería.

Refinamiento de user stories

No recuerdo quien propuso esta sesión pero recuerdo que me gustó. Uno de los debates que se dieron durante la sesión fue al respecto del nivel de detalle de las stories y cuánto invertir en ello.

Fracasos

Esta sesión también la propuse yo, esta vez con la idea de debatir sobre los criterios de éxito de los proyectos y compartir experiencias no tan exitosas entre los asistentes. Comenzamos hablando sobre los parámetros tradicionales de éxito (tiempo, alcance y costo) y luego de compartir algunos casos fuimos replanteando esta visión a la luz de los métodos ágiles. Me gustó mucho cómo salió la sesión y me sorprendieron (para bien y para mal) algunas opinión que encontré entre los asistentes.

Mapa de herramientas

Esta sesión fue facilitada por otro de los muchachos de INVAP con la idea de compartir herramientas de soporte para el desarrollo. Si bien la sesión me gustó no saqué nada nuevo más allá de las ganas de experimentar con Mercurial.

Retrospectiva

Cerramos el día con una retrospectiva para intentar identificar puntos de mejora para el día siguiente. Se rescataron algunos puntos interesantes, mayormente relacionados a cuestiones operativas y de logística.

aa_2014_1

#ConstruccionDeSoftware, sobre el título y la tapa

Inicialmente titulamos al libro “Desarrollo ágil” e incluso lo presentamos a la editorial con ese nombre, pero siempre supimos que deberíamos sentarnos a repensarlo.

Llegado el momento de buscar el título definitivo comenzamos compartiendo propuestas por mail, luego hicimos una sesión de brainstorming y así llegamos a 5 títulos candidatos. Luego, con esos 5 títulos, hicimos una encuesta entre un grupo de colegas y de ahí salió el título final: Construcción de software: una mirada ágil.

Respecto de la tapa, la cuestión fue menos pensada (al menos entre los autores) y creo que en un punto, y sin haberlo planeado, quedó mucho mejor de lo esperado. Nuestra idea era simple: tener en la tapa una de las imágenes del libro y el nombre de los seis autores. A partir de ahí fue todo trabajo del equipo de diseño de la editorial. La imagen de tapa pertenece al capítulo 2, donde es utilizada para explicar la idea de desarrollo iterativo e incremental.

Personalmente lo que más me gusta de la tapa es el contraste del título con la imagen y su fiel reflejo del contenido del libro. La palabra Construcción en el título sugiere algo técnico, lo cual contrasta con la imagen que muestra una persona. Este mismo contraste está planteado a lo largo de todo el libro: la construcción de software como un proceso técnico pero llevado a cabo por un conjunto de personas y gobernado por las relaciones entre estas. En este sentido hay capítulos que tratan de cuestiones plenamente técnicas como integración continua y capítulos que tratan de cuestiones completamente humanas como la comunicación entre los miembros del equipo.

Y para coronar este contraste tenemos las primeras líneas del prólogo que gentilmente escribió Juan Gabardini:

—¿Y vos qué hacés, Juan? ¿Seguís trabajando con computadoras?

—Mmm… ahora trabajo más con personas que con computadoras.

Creo que ni habiéndolo planificado habría salido mejor.

tapa_una_mirada_agil

Se viene Agiles Argentina 2014

Viernes y Sábado de la semana próxima (26 y 27 de septiembre) se llevarán a cabo las Primeras Jornadas Nacionales de Metodologías Ágiles.

Si bien el evento se realiza en Buenos Aires, la idea es poder reunir gente de todo el territorio nacional y por ello es que los organizadores han provisto un mecanismo para brindar apoyo a los asistentes de otras ciudades.

Además del hito que representa este evento por ser las primeras Jornadas Nacionales sobre el tema en Argentina, hay algunas otras particularidades que lo destacan: el evento es totalmente gratuito, es 100% en formato Open Space y el catering es auto-organizado. Esto se traduce directamente en las siguientes cuestiones:

  • No hay agenda predefinida de sesiones, la agenda es definida al comienzo del evento por las personas presentes. Esto es lo que propone el formato Open Space y aunque pueda sonar raro, puedo dar fe que funciona de maravilla. He participado en unas 20 reuniones con este formato y todas ellas han salido muy bien. Adicionalmente, para este caso particular, hay un espacio online donde los asistentes pueden ir proponiendo de forma anticipada algunas sesiones que les gustaría ocurrieran.
  • El hecho de que el catering sea auto-organizado, reduce mucho el esfuerzo de organización al mismo tiempo que permite que en cierto modo todos los asistentes contribuyan a la organización. Es este caso la forma en que se está organizando el catering es mediante una planilla online donde cada asistente anota que se compromete a llevar.
  • Aunque el evento es de dos días, no es necesario ir los dos días enteros, uno puede elegir un sólo un día o un rato cada día.

Personalmente estoy muy entusiasmado con el evento, en este momento hay unas 18o registradas.
¡Ah! me olvidaba de decirlo: si bien el evento es gratuito es necesario registrarse.

¡Nos allá allá!

AA2014-Final1

 

 

Conferencistas de ASSE 2014

Las presentaciones de los conferencista de ASSE 2014 fueron de las mejores cosas del simposio.

El primer conferencista fue Esteban Feuerstein quien dio una charla introductoria sobre Big Data en la que mencionó las diversas iniciativas de la Fundación Sadosky y el Estado Nacional para impulsar esta temática. Entre estas iniciativas se cuentan diversas oportunidades para formación de profesionales en instituciones nacionales y del exterior.

El segundo conferencista fue Juan Gabardini quien habló sobre Testing en equipos Infectados de Tests. Si bien tengo trato frecuente con Juan e incluso hemos hablado sobre el tema testing en diversas ocasiones, me gustó mucho su presentación. Creo que ha logrado articular de manera muy sólida y consistente varias de las ideas que ha validado en su trabajo de campo.

El tercer conferencista fue Alvaro Ruiz de Mendarozqueta quien hizo una excelente presentación sobre Mejora continua utilizando métodos ágiles. La presentación incluyó interesantes datos estadísticos sobre la industria local del software y las certificaciones de calidad. Luego de presentar el contexto utilizando como base las mencionadas estadísticas, presentó algunos casos de mejora continua en los que trabajó aplicando métodos ágiles.

Los slides utilizados en estas presentaciones están disponibles para descarga aquí.

Libro en mano

El miércoles pasado nos entregaron los primeros ejemplares del libro.

fotos_libro

Esta semana terminaremos de ajustar algunos detalles formales con la editorial y esperamos que a más tardar el sábado próximo el libro se encuentre disponible para el público en librerías de la Ciudad de Buenos Aires.
También está en nuestros planes contar con un medio global de distribución, pero eso llevará un poco más de tiempo.

Desarrollador y facilitador, no way

Como ya comenté en un artículo anterior, desde hace un tiempo estoy trabajando en un proyecto Java, una tecnología que no domino plenamente.

El miércoles pasado participé de una retrospectiva de este proyecto que fue facilitada por Alan y que me dejó pensando un buen rato. Ocurre que durante la retrospectiva Alan hizo dos sugerencias puntuales que yo mismo he hecho a otros equipos en reiteradas ocasiones pero que curiosamente esta vez no las sugerí a mi propio equipo.

Todo el viaje de vuelta a casa me lo pasé analizando esta cuestión y finalmente llegué a una conclusión que me convenció: mi falta de pleno dominio de Java me obliga a poner demasiada energía en cuestiones técnicas, lo que me hace perder de vista algunas otras cuestiones.

Luego de pensarlo por un par de días y de consultarlo con algunos amigos me animo a arriesgar:

Para que un desarrollador pueda ocupar el rol de facilitador en su equipo es necesario que tenga un buen dominio de las cuestiones técnicas con las que debe trabajar cotidianamente.

(posiblemente esta afirmación no tenga aplicación universal, pero definitivamente aplica a mi)

Se viene el libro….

Hace un par de días entró en imprenta el libro de ingeniería de software que empecé a escribir hace unos dos años junto a un grupo de colegas de la Fiuba.

La idea era escribir un libro sobre métodos ágiles, luego de un par de charlas refinamos el objetivo y decidimos escribir un libro sobre métodos ágiles que cubriera el proceso completo de desarrollo de software.

Una de las motivaciones para escribir el libro fue que no existen en la actualidad (o al menos no han tenido mayor difusión) libros escritos en castellano sobre métodos ágiles que cubran el proceso de completo de desarrollo de software. Los libros existentes sobre esta temática escritos en castellano están enfocados en algún aspecto particular. Por ejemplo los libros de Martín Alaimo tienen un foco humano/de gestión, mientras que el libro de Carlos Blé está enfocado en TDD. Existe un libro que cubre en gran medida el proceso completo de desarrollo software llamado Scrum y XP desde las trincheras, pero es una traducción de una obra originalmente en inglés.

Al mismo tiempo, la motivación va más allá del idioma. Los métodos ágiles ponen un foco importante en las personas y en ese sentido creemos que la idiosincrasia latinoamericana merece un libro a medida escrito por latinoamericanos.

El libro, más allá de lo que el título pueda sugerir, es un libro de ingeniería de software. De hecho la mayoría de los contenidos son parte de la materia que dictamos con @pablitosuarez en UNQ.

Todos los autores somos docentes y también trabajamos en la industria, por ello creemos que el libro puede resultar muy útil como libro de texto para el dictado de una materia y para profesionales de la industria con intenciones de conocer y experimentar con métodos ágiles.

En los próximos días compartiré algunos detalles y curiosidades del libro, por el momento les dejo una de las imágenes del libro que más me gusta.

15.1

Desarrollo de software sin “métodos ágiles”

Algo que me ha llamado poderosamente la atención en los últimos años es encontrarme con gente que trabaja utilizando métodos ágiles y que sólo conoce de métodos ágiles. Cuando uno les pregunta como trabajaban antes de comenzar a utilizar métodos ágiles, en la mayoría de los casos indican que trabajaban totalmente ad-hoc o que utilizaban un proceso tipo cascada. Esto podría explicar en gran medida porque muchas veces se hace la comparación Agile Vs. Cascada como si no existiera nada más: hay gente no conoce nada más.

Pero existe algo más, de hecho existen muchas cosas más que son utilizadas con éxito en diversos contextos. Entre esas cosas uno podria citar el Proceso Unificado y el PSP por nombrar algunas. Al mismo tiempo hay una serie de prácticas muy asociadas a agile, pero que datan de mucho antes como ser versionamiento de código y la automatización de pruebas.

En relación a esta cuestión, con @dfontde, hemos enviado una propuesta de sesión a Agiles 2014 titulada “Hay buen desarrollo sin agilidad“.

Real-world TDD

El viernes pasado me tocó trabajar en una funcionalidad relativamente simple. Dada una aplicación de gestión de proyectos que tiene la capacidad de recibir mails (chiliproject) me pidieron que le agregue la capacidad de rutear los mails de entrada a uno u otro proyecto dependiendo de cierto algoritmo. Cuando estaba por empezar a desarrollarla pensé: “este es un excelente ejemplo para mostrar el uso de TDD en un contexto real”. Entonces abrí mi software de grabación y me puse trabajar. El resultado es este video que muestra cómo resolví parte del problema usando TDD. Espero lo disfruten.

Automatización de pruebas: principios, prácticas y herramientas

Finalmente, me hice un rato y mandé mi propuesta de sesión sobre este tema a Agiles 2014. Para quienes gusten darme feedback, pueden ver la propuesta completa en el sistema de call for papers de la conferencia.

Una cuestión que no está mencionada en la propuesta es qué fue lo que me llevó a proponer una sesión sobre este tema.

Como programador y sobre todo desde que me metí en el mundo Smalltalk, las pruebas unitarias automatizadas se volvieron un artefacto imprescindible en mi trabajo. Al ser Smalltalk un lenguaje de tipado dinámico no contaba con la (falsa) seguridad que proveen los compiladores en los lenguajes de tipado estático. Por esto me sentía obligado a escribir pruebas unitarias automatizadas para tener cierto nivel de seguridad de que no estaba rompiendo mi proyecto. Tiempo más tarde cuando comencé a trabajar en la implementación de la práctica de continuous delivery tomé conciencia de que con automatizar las pruebas unitarias y de componentes no era suficiente. Fue en ese momento que comencé a meterme gradualmente en las cuestiones de automatización de pruebas de aceptación de usuario. En ese sentido trabajé con Juan Gabardini en preparar un curso de automatización de pruebas y tiempo después comencé a trabajar con Pablo Tobia (alto tester) en el armado de una materia de testing que finalmente materializamos en el curso que dictamos en FIUBA. Al mismo tiempo para ganar más experiencia de campo logré meterme a trabajar como Software Engineer in Test en un proyecto de automatización de pruebas de un sistema de facturación. Todo esto me ayudó a ganar experiencia e incorporar muchísimo conocimiento sobre esta temática.

Como de costumbre, si la sesión es aceptada en Ágiles 2014, intentaré hacer una prueba previa en uno de los encuentros de la comunidad ágile@BsAs, mm, en realidad creo que la prueba lo voy a hacer igual más allá de que sesión sea aceptada en Agiles 2014 o no.