lunes, 13 de septiembre de 2010

2do Code Retreat

El Evento

El viernes 10/09 realizamos el Segundo Code Retreat en Buenos Aires, en las instalaciones del MUG (Microsoft User Group).

Queremos antes que nada agradecer a los que nos ayudaron a organizar este Retreat, particularmente a Juan Gabardini, referente de la comunidad ágil de Argentina (recomendamos su blog softwareagil.blogspot.com), a Martin Salias (de Southworks ), a Carlos Peix y especialmente a Oscar Turquet del MUG.

La experiencia fue muy satisfactoria, y en esta oportunidad tuvimos el aporte de la vision de gente con mucha experiencia como Carlos Peix, Martin Alaimo (de Kleer) o como Juan (Gabardini) que proviene del sector de Testing.

La lista de Asistentes al Retreat fue :

  • Carlos Meschini
  • Carlos Peix
  • Martin Alaimo
  • Matias Blanch
  • Carlos Pantelides
  • Fernando Claverino
  • Nicolas Bases
  • Juan Gabardini
  • Victor Jorge Paredes
  • Gonzalo Amestoy
  • Jose Vidal

Conclusiones del Retreat

En general la mecanica del Retreat funcionó, encarando el problema a resolver cada vez desde cero, borrando el codigo entre iteraciones y cambiando de compañero de Pair Programming. Falto quizás una iteración más para hacer mas aceitada la mecánica pero la hora y el día en particular no daba para mucho mas.

El tema de hacerlo un viernes ayuda y complica a la vez, porque hay gente que no puede salir de sus trabajos y por otro lado esta el cansacio de la semana, pero en general hubo muy buena onda y energia como para completar 3 iteraciones completas, con una retrospectiva final que se extendio por casi 40 minutos.

Uno de los puntos en que coincidieron todos los participantes, tratando de hacer TDD, es la dificultad para incrementar la funcionalidad de los tests de a pequeños pasos. En general los dos o tres primeros tests "triviales" salen mas o menos bien, simples y en pequeños pasos, pero cuando hay que avanzar en un test que permita introducir funcionalidad no-trivial en general se escribe un test con un salto demasiado grande lo cual dificulta luego el desarrollo.

Justamente otro de los temas que salieron fue la relación entre facilidad de testing y buen diseño del código. Es decir, si se dificulta testear algo muchas veces es porque hay problemas con el diseño del modelo de la solución.

A veces cuesta mantener los tests de unidad porque no prestamos la suficiente atención a la calidad del código de los mismos, ya que es código fuente se deben tener todos los cuidados y aplicar todos los principios y buenas prácticas como con el código de la aplicación principal, sino su mantenimiento se convierte en una pesadilla. Por ejemplo, si un tests prueba más o menos lo mismo que otro se deben eliminar porque la duplicación es uno de los Code Smells que más problema trae a la mantenibilidad del código.

Entre las cuestiones "negativas" que de alguna manera son causadas por la dinámica del Retreat se mencionó que la presión de avanzar en la solución del problema muchas veces hacia que uno le prestara poca atención a la etapa de Refactoring.

En TDD, despues de hacer el test, y de hacer lo necesario para pasar, cuando los tests funcionan (La barra esta toda en "verde") se debe evaluar el diseño del código para ver si es necesario refactorizar. Este punto quedaba de lado muchas veces causados por la "presión" de la duración de la iteración.

Otro punto "flojo" es que en general no se hizo Pair Programming respetando tajantemente los roles de "Conductor" y "Navegante". Es decir estaban ambos integrantes muy compenetrados en los detalles más chicos del código y el que no tecleaba no funcionaba como "navegante", mirando todo desde un punto de vista más alejado, previniendo de posibles desviaciones (como fue esta de no evaluar si correspondia aplicar Refactoring).

Ademas de C# y Java, hubo algunos participantes que utilizaron Ruby y RSpec. Invitamos a los que estuvieron trabajando con estas herramientas a que nos cuenten sus impresiones.

Finalmente, queremos volver a agradecer a todos los involucrados, por su buena onda, su energia y sus ganas. Sabemos que es un esfuerzo significativo dedicarse a aprender uno mismo, con el objetivo de mejorar profesionalmente, pero vale la pena. Tambien decirles que ya nos estamos poniendo a pensar en futuros encuentros. Hasta la proxima!

7 comentarios:

  1. Gracias a los organizadores!
    Fue una muy buena experiencia, y me permitió entender mejor mis puntos a mejorar. Me aprendí muchísimo trabajando con distintas personas.
    Creo que es un ejercicio muy recomendable para cualquier equipo que quiera incorporar TDD/Pair entre sus prácticas.
    Y gracias por hacerlo un viernes! :D

    Juan

    ResponderEliminar
  2. Voy de nuevo...

    Muy bueno el retreat! Me aportó una visión alternativa de TDD y me dejó pensando bastante.

    También aproveché la oportunidad para acercarme a C# luego de unos años. (Gracias Fer Claverino por el Pairing ahí)

    El desafío, los facilitadores y las charlas de café: excelentes!

    100% que estaré en el próximo!

    Martín.

    ResponderEliminar
  3. Es mi segundo code retreat. Creo que me estoy haciendo fanático del juego de la vida de Conway (http://es.wikipedia.org/wiki/Juego_de_la_vida).

    Creo que la experiencia te permite formar el hábito y entender TDD de un modo increiblemente rápido e intenso.

    Fue una tarde muy agradable.

    ResponderEliminar
  4. Hola gente,

    Gracias por organizar el evento nuevamente. Esto de programar en pares con gente que no lo haces habitualmente me parece genial, porque te aporta otros puntos de vista sobre la programación, cómo encarar un problema, etc.

    En mi caso aproveche p/incursionar un poco en ruby y rspec sin tener mucha idea y la verdad que está muy bueno el ejercicio p/aprender un nuevo lenguaje.

    Muy buena la dinámica y la onda que le ponen todos.

    saludos!

    ResponderEliminar
  5. Gracias Juan, es cierto lo que decis, como primer punto el Retreat es excelente para capacitación, adonde todos, incluso los mas experimentados aprenden.

    Gracias Martin, Matias, Fer por lo que comentan. Coincido con lo de TDD, es una de las mejores manera que hay para por lo menos "degustarlo". Con una presentacion teórica se escapa en general el sentido que se obtiene al "meter manos en la masa" (estoy muy metaforico, jaja).

    Algo importante que comentan Martin y Fernando, lo he visto en varios posts de otros Retreats del mundo: Es una herramienta muy valiosa para aprender (bueno, digamos "conocer") nuevos lenguajes. En mi caso me sirvio para refrescar C#.

    Saludos a todos!.

    ResponderEliminar
  6. A mi me parecio muy buena la experiencia, y me ofrezco para ayudar en lo que sea necesario para el próximo.
    Por el lado organizativo me pareció que estuvimos más cómodos que en el 1er. Code Retreat ya que el espacio fue mayor y el lugar esta más pensado para este tipo de eventos.(gracias MUG!!!) Inclusive si se resolviera el tema de conseguir más mesas podríamos armar el próximo code retreat con mayor capacidad.
    Me parece que entre tres y cuatro iteraciones es un número óptimo para ver los conceptos (el primer CR me parecio largo) y eso permitiría hacerlo en medio día, lo que nos lleva al tema de horarios. A mi entender el día laborable no favorecio la asistencia, a pesar del reclamo popular, quizas un sábado empezando entre las 10 y las 11hs sea un mejor horario. Para la próxima convocatoria podríamos dejar el horario y fecha sujeto a la decisión de los participantes mediante una encuesta
    Gracias nuevamente a los organizadores por el esfuerzo.

    Saludos, Claudio.

    ResponderEliminar
  7. Gracias por comentar Claudio. Es bueno lo que comentas, y si, el lugar estuvo muy bien!. Y la cantidad minima de iteraciones, yo estaria mas inclinado por 4, quizas ese es el numero magico.
    Lo de cuando hacerlo es un tema que tenemos que seguir puliendo, quisimos probar un dia de semana pero quizas es mejor el sabado. La proxima veremos y estas anotado como primer organizador!
    Saludos!
    JP

    ResponderEliminar