Saturday, December 14, 2013

GDCR13 - Cáceres Edition

Tras días como estos llego a casa con unas inusitadas ganas de programar. Gracias a todos

 Reflexión







Reflexión

Una vez más me veo por Cáceres para una quedada tecnológica, creo que ya he ido más veces a Cáceres por estas cosas que en fiestas en la época universitaria…  qué mala es la edad.

No conté los asistentes pero rondábamos la veintena, a ver si salen los datos oficiales.

Los organizadores nos tenían preparado una sección de comida y unas samarretas.



Una nueva kata y gente nueva, esto significaba gente sin conocimientos de TDD, de hecho el número de gente que lo conocía era minoría pero después de unos cuántos eventos ya algunos controlan y se aprovecha mucho más el día, no quiero imaginarme un evento de este tipo hace un par de años. 

Éramos pocos y parió la Code Retreat...


Cosas Positivas

La organización, la gente de mobbeel @jearias @jlhuertas, han debido hacer un currazo pues no hubo ningún problema y todo el mundo se fué para casa contento. Los detalles con los asistentes y la preparación fué toda sobre ruedas ¡Enhorabuena!

Pudimos volver a disfrutar de @kinisoftware que desde que nos dejó para irse a la capital alguno no le habíamos vuelto a ver. Pude hablar poco con él pero también se agradece la visita de @civantoz.


Cosas Negativas

En cuanto al contexto del Code Retreat ningún problemas, lo único que no pudimos disfrutar es con las conexiones que tenía preparada la organización. A la hora concreta para la conexión con Barcelona, éstos recibieron la comida. Cuando la hicimos con Madrid se pudo hablar algo pero la conexión a Internet debía tener alguna falla pues el sonido y la imagen no es que fuera muy fluido. La organización tenía preparada otra conexión con América pero al final se descartó.

source: twitter @DarkRodry


Para compensar la vuelta de @kinisoftware puedo decir que se echó de menos a otro de los motores de las comunidades extremeñas y es que el señor @gogomca no pudo asistir al evento, creía que al final nos haría una visita o algo pero parece que no pudo ser.


1ª Iteracion (@javiernuber)

Javascript - Jasmine - Coda 2



En mi caso nunca me había acercado al problema del Juego de la Vida, así que opté por hacerlo en un contexto conocido. Me puse con Javier que no le importaba que decidiera lenguaje y entorno. Para él era la primera aproximación a TDD.

Empezamos la tarea, al ser la primera iteración del día pasa como siempre. Te cuesta unos minutinos poner en marcha la maquinaria. Menos mal que js/jasmine se prepara rápido y aún así las primeras horas de la mañana nos hizo alguna jugarreta.

Hicimos una aproximación haciendo uso de tablero con array de tamaño determinado, una solución muy básica que a lo largo de la mañana iría cambiando con cada pareja.


2ª Iteración (@javigarciasopi)

Javascript - Jasmine - Coda 2



Tras alguna que otra recomendación de los facilitadores con mi nuevo compañero cambiamos el enfoque dirigiéndonos a la clase Célula y los cambios de estado.

Para Javi también era la primera vez con TDD(tras una iteración con @robermorales), en este caso el escribía los test y yo el código, tuvimos algún comentario sobre la temprana refactorización que él veía, con los tests al final llegó la refactorización. Cómo nos pasa a todos las primeras veces con TDD, no podemos solventar todo el problema a la vez, todo en la vida se construye paso a paso.

Llegamos a tener una versión simple de la máquina de estados, este iteración me sirvió para la tercera.


3ª Iteración (@rrecheve)

Java - JUnit - Eclipse



Nos pusimos a la tarea con la restricción del Ping-Pong, de nuevo me pasa que alguien me escribe un test que parece hipermega complejo y se resuelve de la manera más sencilla, de hecho sin picar una línea de código. Estos tests que buscan una rápida resolución de un caso concreto del problema suelen inducir a que más adelante, para solventar el contrato, tengas que añadir un test que clarifique alguna desambiguación y hacer algo de refactoring para ordenar los tests y que tenga algo más de sentido.

En esta ocasión la Clase Cell nos quedó muy liviana y con toda la casuística posible. Enfrentarse al problema por diferentes aproximaciones, con nuevos puntos de vista y con compañeros distintos realmente estaba ayundando a acercarse cada vez más a una solución más beneficiosa.


4ª Iteración (@robermorales)

Ruby - Rspec - Kate




Tras tres iteraciones ya me encontraba más cómodo con el problema así que me fuí a experimentar un poco con el profe @robermorales y Ruby.

Rober tiene algo especial, llega un momento en que empieza a hacer "cleveradas" por doquier pero en vez de pararle los pies te dejas llevar para ver a donde lleva toda esa locura, todo parece tener un extraño halo de sentido común que al final suele acabar en algo poco claro, cierto es que con tiempo suele resolver el problema de forma magistral.

Nos enfocamos en resolver desde la perspectiva del Universo los casos concretos del problema, ya teníamos resuelto para una celda concreta, pero cuando fuimos a resolver el problema de manera genérica empezamos a meter código… mucho más del esperado y nos cogió la campana. Una pena pues andábamos cerca.


5ª Iteración (@robermorales) - Legacy Code

Ruby - Rspec - Sublime



Para esta iteración nos cambiamos de ordenadores para pillar código legado de otros compañeros, y otros se hicieron cargo del que nosotros dejamos en la 4ª Iteración. En nuestro caso nos encontramos una clase Cell prácticamente terminada, la completamos y nos pusimos con el entorno del Universo haciendo uso de esta Cell. Nos quedamos en la evolución de un tablero en su iteración. 

Al Nyan Cat que nos tenía preparado @oyabun apenas le dió tiempo de cantarnos unas breves maullidos.


No comments:

Post a Comment