sábado, 20 de diciembre de 2008

Técnicas para retrospectivas (resumen del libro Agile Retrospectives)

En las implementaciones de Scrum en las que participé, siempre usamos Keep/Change o alguna variante, para guiar nuestras retrospectivas.

Después de 4 o 5 sprints, cuando los problemas más obvios y fáciles están solucionados, las reuniones de retrospectiva empezaron a ser menos productivas. No siempre por la misma razón. A veces teníamos problemas difíciles de resolver, que siempre nos afectaban, pero a los que no le encontrábamos la forma de solucionarlos; en otros casos, surgían muchos temas para mejorar, los anotábamos pero con tantos temas, no poníamos foco, y muchos de ellos volvían a aparecer en la próxima reunión, y en otros casos, nos parecía que no había mejoras posibles.

En todos los casos, el empuje inicial disminuyó o se perdió.

Hace unos meses leí el libro “Agile Retrospectives”, de Esther Derby y Diana Larsen, que me dio muchas buenas ideas para mejorar las reuniones. Organicé actividades de retrospectiva incluyendo estas técnicas con algunos de los equipos con los que trabajo, incluso como retrospectiva de la materia con los alumnos de la facultad, donde fue la 2da mejor clase en la votación de los alumnos (la primera fue un Open Space). Creo que la mejor forma de aprender lastécnicas es probándolas, viendo que funciona en cada situación.

Pero es bueno tener una referencia rápida de todas las técnicas para, cuando uno está planeando una reunión, poder decidir cuales aplicar y cuanto tiempo llevará. Para eso hice un resumen de técnicas para retrospectivas es español, disponible libremente, gracias al permiso de las autoras.

Espero que les sirva y que me indiquen como mejorarlo (teniendo en cuenta que este resumen no reemplaza la lectura del libro).


jueves, 11 de diciembre de 2008

Herramientas para testing en PHP

Cuando organizamos el curso de Testing con Lucas Campos, una de las dudas que teníamos era si un curso corto e introductorio serviría. Con muchos temas por tratar, debíamos restringir el número de herramientas tratadas, y necesariamente muchas serían sólo nombradas.

Nos pareció que quizás esto era un valor en sí mismo. Dar una visión de muy alto nivel de lo que considerábamos podría ser un entorno de trabajo infectado por la calidad y el testing.

Con alegría vemos que a varios de los asistentes este enfoque les sirvió para
elegir qué batallas pelear, en dónde hacer hincapié como primer experimento de mejora.

¡Pero Gabriel Maffia y Norberto Bezi, de HRSmart, dieron algunos pasos más!
En paralelo con el curso, fueron investigando, probando e implementando estas herramientas, que no fueron tratadas en el curso (Gabriel hablando):

  • Continuous Integration: phpUnderControl que es básicamente un wrapper para CruiseControl que cambia el Look & Feel y te permite administrar los proyectos que tengas en el servidor de integración continua (agregar un proyecto, quitarlo, habilitar/deshabilitar tareas) con una serie de scripts.
  • Unit Testing: PHPUnit implementa el framework de xUnit en PHP (no es el único, pero es el mejor y se integra con phpUnderControl). Hace también toda la parte de Coverage y Project Mess Detection (PMD).
  • Análisis de Código: Usamos PHPCodeSniffer para revisar que se cumplan las coding guidelines.
  • Documentación: Usamos Doxygen para hacer la documentación. Existe también PHPDoc pero no es tan completo como Doxygen, que genera diagramas de clase, colaboración y llamadas.
  • Otra herramienta que todavía no probamos (y no doy fe que funcione :) ), pero que vale la pena investigar para Análisis de Dependencias: PHP_Depend
  • Hay dos herramientas que si bien nosotros no las usamos esta bueno nombrar: Xinc es un servidor de integración continua escrito integramente en PHP y Phing que es un project builder como ant, pero escrito en PHP (es el que usa Xinc para correr sus tareas).

Por no mencionar que Norberto está trabajando en FIT para PHP...

viernes, 5 de diciembre de 2008

Open Space @ FIUBA

Hicimos nuestra primera experiencia con el formato de eventos Open Space.

Gracias a todos los que vinieron y hicieron el evento.

Cómo nos preparamos
Aprender: leyendo material de Open Space Word, el sitio "oficial", y sobre todo del sitio de Lisa Heft, que es muy claro. Hay además algunos videos interesantes en YouTube, hay uno de Owen. En particular me gustaron uno de Jim Wade y otro de Stephen Silha.
Y tips desde la experiencia, que me pasó Xavier Quesada Allue.

Lugar: después de buscar en la facultad, decidimos las aulas no están pensadas para este tipo de actividad, por lo que lo mejor que podíamos hacer era crear nosotros mismos el espacio abierto. Tomamos nuestra aula de siempre, y redefinimos el espacio. Sacamos más de la mitad de los bancos, y dejamos ocho, para ser usados en las formas más parecidas a círculos que pudimos.
Usamos el pisarrón como mercado y agenda.
El espacio del mercado fue suficientemente grande, aunque uno se puede preguntar si el verlo "lleno" no detuvo la creación de ideas. El primer día eramos 6 y se produjeron casi la misma cantidad de ideas que el jueves con 12 personas.

Materiales: para las sesiones usamos papel A4, con cinta de enmascarar, lo que hacía más fácil la escritura y lectura. Descartamos los sticky note, porque son muy chicos y obligan a acercarse mucho, pero por otro lado, quedó la duda con el espacio disponible para el mercado.
Con respecto al trabajo de cada grupo, a falta de rotafolio (flip chart), y para bajar costos, usamos papel de envoltorio, pegado con cinta a la pared. Funcionó bien.

Dinámica: Por restricciones en el horario de la materia, hicimos el ejercicio en dos días consecutivos de 2 hs cada uno. En ambos casos, hubo muchos que llegaron más tarde lo que dificultó un poco la dinámica. Cada día sólo pudimos realizar una sesión, por lo que no se aprovechó al máximo la dinámica entre grupos y sesiones. Lisa Heft recomienda un mínimo de medio día.

Invitación: uno de los objetivos del evento era aprender entre todos a organizar un evento con Open Space Technology, pero buscamos un tema de interés común para realizar la invitación. La consigna fue:
¿Podemos implementamos algunos de los temas dados en la materia en nuestro día a día laboral? ¿Cómo?

Resultados
Se realizaron 5 sesiones, cada una de aproximadamente 90 min. De dos de ellas se realizó un resumen en un documento, el resto tienen resúmenes registrados en las fotos.
Al final de cada día, cada grupo comentó los resultados.
Algo llamativo, es que en 3 de las 5 sesiones, a pesar de iniciar de consignas diferentes, se habló mucho de la organización de tiempo personal.

Esta actividad tuvo los mayores puntajes en la encuesta de fin de curso, comparado con las otras 20 clases. Nota: hay que considerar que participó la mitad de los alumnos, con un proceso de autoselección, y por ser la última clase, está fresca en la memoria.


Ricardo pasó algunas fotos, y les dejo las que yo saqué abajo.

martes, 2 de diciembre de 2008

Inscripción reunión mensual (Ágiles@BsAs?)

Hola
Aún no tenemos nombre, pero no por eso nos detenemos!


El 1er encuentro mensual de la comunidad ágil en Buenos Aires se llevará a cabo el próximo 9 de Diciembre a las 19hs en Microsoft (Bouchard 710 4to piso). La idea para el primer encuentro es ver y debatir entre todos el video del panel de cierre de Ágiles 2008.

La agenda es:

19:00-20:00: Video panel de cierre Ágiles 2008
20:00-21:00: Debate
21:00-21:15: Decisión sobre tema a tratar en próximo encuentro



domingo, 30 de noviembre de 2008

Improvisación y Scrum

Hace unos meses estuve como co-trainer de Alan Cyment, en un curso de Scrum. Los asistentes pertenecían a una empresa que genera contenido multimedia que se publica en la Web. Los equipos son multidisciplinarios, e incluyen personas con skills en desarrollo de software, diseño gráfico, periodistas, expertos en video y comerciales. Una duda que surgió es si se puede ser creativo e innovador en un ambiente con limitaciones temporales, como cuando se aplican las reglas de Scrum. De la interesante discusión que siguió, Alan recomendó (y me prestó) el libro Free Play, de Stephen Nachmanovitch, que tiene una versión en castellano editada por Paidós.
Es un libro interesante, que recomiendo. Tiene muchas referencias a temas que no conozco: Tao, Zen, Judeo-Cristianismo y mitología griega, además de muchas citas a poetas y músicos. Pero eso no impide que la lectura sea amena, y que se puedan entender las ideas sin haber leído a William Blake, T.S. Elliot, Rimbaud, …
La alineación con ideas que se utilizan en Scrum es notoria. Van algunos ejemplos:
• La práctica: para poder improvisar es imprescindible tener dominio total de la técnica (por ejemplo el instrumento musical). Sólo cuando conocemos la técnica al punto de poder desentendernos y olvidarnos de ella, estamos en condiciones de crear improvisando, sin los planes y correcciones de una composición.
• El juego: Hay que disfrutar de lo que se hace, llegar a un estado lúdico. En este estado nos sumergimos en la actividad de una manera tal que se pierde la distinción entre lo que hacemos y nuestro yo. En el juego nos liberamos de preconceptos y podemos experimentar.
• El poder de los límites: es la referencia que surgió en la conversación que comenté al principio del post. La libertad absoluta no siempre buena para la creación. El tener límites nos obliga a focalizarnos y ser más creativos. A veces los límites son externos, a veces son autoimpuestos. Un ejemplo del libro son las improvisaciones de 1 minuto. Obvia correlación con el concepto de timeboxing.
• El poder de los errores: si experimentamos, estamos expuestos a tener errores. Pero los errores son una forma importante de aprendizaje y punto de partida para los próximos experimentos.
• El espectro que juzga: la idea de calidad es muy importante, pero si nos juzgamos de forma negativa, inhibidora, previa a tener sobre lo cual juzgar, llegamos a un bloqueo. En ese estado, nada es lo suficientemente bueno. Este espectro también aparece como miedo sobre la recepción que tendrá nuestro producto y trabajo. Puede originarse en un entorno negativo, pero finalmente somos nosotros los que permitimos que nos afecte.

En resumen, un libro para leer y releer. Ver también Artful Making

martes, 25 de noviembre de 2008

Randori con Python

Ayer facilité mi primer Randori, que fue con Python. Éramos un grupo de 7 personas con una máquina, proyector y pizarrón, en la Facultad de Ingeniería de la UBA.

Seguimos en forma aproximada las reglas de Coding Dojo

La diferencia fue que cambiamos de par cada vez que el par cumplía un ciclo: nuevo test, código, refactorear, commit
En las reglas originales, se disponen de 5 min timeboxed.

Esto les dio más tiempo a las personas que por alguna causa tardaban más (desconocimiento del lenguaje o las herramientas) pero se complicó cuando empezamos a tener suficiente cantidad de código como para que el refactoring no sea trivial. En ese caso, las discusiones sobre diseños, al no tener timebox, se eternizaron.

Otro problema que se presentó es con los casos de personas que vienen del mismo lugar, se conocen bien y están acostumbradas a trabajar de a pares entre ellos. La tendencia es a hablar entre ellos y olvidarse del resto de la audiencia. Un tema a mejorar.

Repetimos la semana que viene y les comento como sale.

Resultados de Ágiles 2008

Preparamos un documento con un resumen de los resultados de Ágiles 2008. Está sólo en inglés por ahora. Si aparecen voluntarios, se traducirá a español y portugués.

Pero el documento pierde una parte importante de los resultados. La creación de la comunidad.

Uno de los objetivos de Ágiles 2008 era conocernos y a partir de ese conocimiento, ver si teníamos masa crítica como para mantener una dinámica más intensa de aprendizaje e intercambio de ideas.
En este sentido, el objetivo está complido más allá de nuestras expectativas. Les comento algunos casos.

Reuniones mensuales en Bs As
La primera se realizará el 9 de diciembre, y se repetirá mensualmente, los segundos martes. Será con registración, y ya tiene sede definida: Microsoft Argentina.

Ciclo de conferencias Agile Open
  • 6 y 7 de Marzo: Agile Open Buenos Aires
  • 17 y 18 de Abril: Agile Open Córdoba
  • Mayo: Tandil/Mar del Plata
  • Mayo-Junio: Lima

Ágiles 2009
En diciembre se definirá la ciudad sede

Otros
AgileDay 2008 Chile

Muy importante también es la idea de acercar comunidades, como fue el caso de la participación de
Juan José (JuanJo) Cukier y Matt Gelbwaks en Ágiles 2008 y el foco puesto en SEGPLA 2008 y la reunión del SPIN Argentina de Noviembre