Muy buenas a tod@s, después de haber dormido bastantes horas aquí estoy para relatar la gran experiencia vivida ayer, 2 de Octubre, en Madrid, con la gente de @agilismo y Autentia de anfitriones y el gran @ecomba como "guía" de todo el #coderetreat.
Llegué un poco antes de la hora de comienzo y ya rondaban por allí @jmbeas, @ecomba y @alejandropgarci retocando los últimos detalles de la sala. Esa media hora fue para presentaciones, desvirtualizaciones, reencuentros, etc. Como ya dije en una entrevista que me hizo @ecomba (que a saber donde la cuelga xD) somos una familia, siempre nos juntamos los mismos y el ambiente es genial. Prometía ser un gran día. Cafelito, dulce y "al turrón" :D
- 9:30-10:30 Sesión de trabajo #1 (45 min + 15 min de retrospectiva)
Ya estábamos todos: @dvilchez, @alfredocasado, @albertovilches, @GermanDZ, @Laura_Morillo, @cavalle, @plagelao, @ialcazar, @rlaina, @amaliahern, @jacegu, @edufernandez, @jjballano, @semurat, @jmbeas, @XaV1uzz, @alejandropgarci y @ecomba :) (me faltan algunos en la lista pero no sé si tengo su twitter...)
Enrique se presentó e inició el día explicando cuál iba a ser la manera de trabajar y explicó la kata que íbamos a (intentar) resolver durante el #coderetreat,
"El Juego de la Vida" Algo había leído sobre ella pero ni la había practicado nunca ni nada, por tanto, me gustaba mucho más ese reto! :D Empecé la primera sesión con @ialcazar, un gran compañero de pair y tdd, e inventamos algo nuevo, el #tddhablado :D Eso sí, aprendí un montón con solo la primera iteración. Andábamos perdidos entre células, mundo, coordenadas, etc. Menos mal que @ecomba decidió no decir mucho cuando nos veía, seguro que le daban ganas de borrar todo el código... pero eso ya lo haría más tarde xD
Tras cada iteración se hacía retrospectiva, esa iba a ser la tónica del día. Enrique establecía
pomodoros de 45 minutos y, cuando su puñetera alarma sonaba, todos a borrar el código y a levantarse. Era un momento difícil para todos, dejar de teclear y borrar el código escrito que, creíamos, valía para algo, ... realmente difícil y creo que ninguno lo llego a superar en todo el día :)
En la primera retrospectiva se expuso como nos sentíamos con esta primera aproximación y nos preparamos para la siguiente. Cambio de parejas y volver a empezar. Para el baile elegí (o me eligió) @semurat ;)
- 10:30-11:30 Sesión de trabajo #2
Ahora ya conocíamos algo más la kata y nos enfocamos más, compartimos algunas experiencias de la primera iteración y nos pusimos al lío. Yo impuse mi criterio de usar un enumerado definido fuera de la clase y conseguí convencer a Jorge :D ¿Sirvió para algo? Supongo que no, pero que más da, nos lo pasamos genial! Además con ese "peazo de portable" que tiene, daba gusto ver el
STS :) Intentamos ambos otra aproximación diferente que en la primera iteración y estuvo bastante bien. Creo que eso fue lo que más me gusto, que cada iteración, entre la pareja, se ocurría una forma nueva de abordar el problema y enfrentarse a él. Imaginad la cantidad de ideas entre 12 o 13 parejas que estábamos a 6 iteraciones... brutal!
Y, de nuevo, acabó el pomodoro, retrospectiva, todos con ganas de codificar a tope y con sonrisas permanentes en la cara :D Para la próxima iteración, @ecomba, muy simpático él, nos "obligó" a desarrollar siguiendo TDD de una forma especial. Debíamos crear el test sabiendo lo que íbamos a probar, luego poner el assert que probaba justamente eso y escribir la lógica, dentro del propio método, que hacía pasarlo. Si, según se escribían métodos, se encontraba lógica común la teníamos que sacar/refactorizar a métodos dentro de la clase de test y, de forma muy justificada, a clases externas. Buff... lo que faltaba!
- 11:30-12:30 Sesión de trabajo #3
Esta vez me junté con @albertovilches, ese gran técnico de Groovy :D que, muy amablemente, me sugirió que no hiciéramos la kata en Groovy, que llevaba dos seguidas así xD Y yo, sin ningún problema, le dije que en Java sin problemas, tenía cada de pena y todo! Ahora teníamos que empezar a trabajar con el nuevo enfoque comentado por Enrique... pero ¿cómo? Alberto quería dejar de hacer cosas similares a las anteriores iteraciones y yo tenía una aproximación que me había surgido de la última retrospectiva... vaya desastre! :D estábamos totalmente atascados, yo no conseguía desarrollar mi idea ni explicarla para Alberto y, en ese momento, llegó @ecomba y nos dijo: "os voy a ayudar", seleccionó todo el código de test escrito hasta el momento y lo borró! ¿Estamos locos? :) Y nos guió en el primer test, luego nos dejó allí, solos y desvalidos, sin saber como seguir... Intentamos hacer cumplir las reglas de la kata y si, vale, todo muy verde y bonito, pero la lógica de negocio no estaba relacionada, nada podía fallar, etc... todo era un poco raro!
En la retrospectiva nos dimos cuenta que nos pasó a todos lo mismo, el estado general era "confuso"! Pero eso buscaba Enrique y, sobre todo, que nos diéramos cuenta de la importancia de saber lo que íbamos a probar y de los nombres (el "naming").
- 12:30-14:00 Descanso (comida fría y cafelito)
Ahora tocaba descanso pero antes tuvimos uno de los mejores momentos, una videoconferencia con
Corey Haine, el iniciador de esto de los
coderetreat, que va de un país a otro, guiando eventos de este tipo, compartiendo conocimiento y adquiriendo nuevos de la gente con la cuál coincide. De aplaudir que estuviera levantado a las 7 de la mañana para dedicarnos unas palabras y alegrarse de que en España hagamos cosas como estas (jodidos locos! :D). Un gran tipo con una gran filosofía. Thanks Corey! ;)
Y, a comer!
- 14:00-15:00 Sesión de trabajo #4
Siguiente iteración! Quería ponerme con alguien que no fuera a hacerlo en Java, mi intención era .Net o Ruby pero ni una ni la otra, me junté con @cavalle y la hicimos en Groovy y estuvo genial! Fue una kata bastante pensada, íbamos justificando cada paso y poco a poco. Me encantó pasar un rato con Luismi, del que tanto había oído hablar y aún no conocía. Estábamos en pleno apogeo cuando sonó el final del pomodoro... pero... ¿ya? Podría ser que hubiera pasado rápido pero había algo raro. Enrique había puesto "restricciones" extra para esta iteración, como no métodos de más de 4 líneas (creo) y no usar "if".
En la retrospectiva nadie lo decía hasta que se escuchó: "el pomodoro ha sido más corto", claro! Había sido de 20 minutos! La mitad que los anteriores xD La verdad que las restropectivas estaban fenomenal, todos aportábamos algo e íbamos formando nuevas ideas para la siguiente iteración. Sobre todo son de recordar las cosas dichas por @XaV1uzz :)
- 15:00-16:00 Sesión de trabajo #5
Penúltima iteración del día y allí iba yo con @jmbeas :) La hicimos en Groovy y, siguiendo las pautas como hasta ahora, fuimos paso a paso, con lógica de negocio dentro de cada test y luego refactorizando. Aunque no fue de las veces que más código escribí me dio la sensación que fue la vez que más avancé y más cerca estaba de "la posible solución". Me gustó hacer pair con José. Estuvimos muy enfocados en los nombres y en hacer que los test que parecían no tener nada en común fallaran y nos obligarán a avanzar o refactorizar. Si, aprendí una nueva forma de avanzar con TDD.
En la retrospectiva cada pareja expuso su último trabajo, José me dejó hablar a mi y para que lo haría xD ya se iba notando el cansancio en todos. Se votó en mayoría por una iteración más y, luego, habría una sorpresa, había que sortear una licencia de
JetBrains para
IntelliJ.
Para la última iteración, no sé quién lo propuso, creo que Xavi, volver a juntarnos con la primera pareja que tuvimos y, a partir de todas las cosas que habíamos ido adquiriendo, afrontáramos la kata. A Enrique le gustó la idea y, además, nos indicó hacerla siguiendo una aproximación diferente, la "temporal" basada en la evolución de las generaciones. Interesante...
- 16:00-17:00 Sesión de trabajo #6
Allí estábamos de nuevo Israel y yo. Menos mal que él sabía lo que estaba haciendo porque, yo, con eso de "temporal" estaba un poco perdido. Enseguida me metió en el partido y empecé a entender la aproximación. Otra vez la importancia del nombrado y saber que probábamos, pero había menos restricciones que antes y avanzamos bastante. Parecía una mejor forma de abordar la kata, centrándonos en las generaciones.
- 17:00-18:00 Retrospectiva y discusión
Y hasta aquí las iteraciones :) Había algunos que querían seguir pero la mayoría no podíamos más... que paliza mental! Ahora tocaba sortear la licencia de JetBrains. Para ello @ecomba propuso exponer la solución de la kata
StringCalculator (en este enlace está resuelta por Corey). Algunos valientes se presentaron al concurso: @jmbeas, @albertovilches, @alfredocasado y (que al final no lo hizo) @XaV1uzz. Fue algo muy divertido, sobre todo creo que sirvió para algo muy importante, no hay superestrellas. Me explico, era un evento con gente muy buena en la programación, cada uno con su técnica, su entorno o su lenguaje, pero conocidas en este entorno/familia. Poder ver como programan, como se enfrentan al TDD y como se encuentran con los mismos problemas que todos es algo que motiva y normaliza este tipo de actos. Creo que ayuda a que más gente se anima a "mostrarse" codificando en público. Mi punto a favor de resolver katas así, espero poder hacerlo en un futuro encuentro ;)
Al final nos dieron las 8 de la tarde y me tuve que ir pitando para la estación de autobuses, me quedé con ganas de charlas más tiempo con la gente, pero el día fue lo suficientemente completo para irme con una sonrisa y muchas ganas de hacer cosas que me ayuden a mejorar como profesional. Aunque estos actos puedan parecer un juego, que lo son porque nos divertimos, también tienen un fondo que pasa desapercibido, donde adquirimos puntos de vista, técnicas, ideas, etc que surgirán en el día a día, en el trabajo y, seguro, permitirán crear un código más limpio, robusto, mínimo,...
Puede que ahora seamos siempre los mismos, que vayamos pocos (relativamente) y que no tengamos mucho peso/voz en nuestro entorno laboral pero hablando con @rcanalesmora me contó una gran verdad: "estamos haciendo una pirámide". Ahora, nosotros, con estas cosas, estamos aportando palas de arena y piedras a esa construcción que, en algún momento, tendrá la suficiente altura para que se vea de lejos. En este momento que se vea, que levante interés, nuestras parcelas serán las más cercanas a la pirámide, estábamos desde el principio, y se recogerán los frutos de todo esto. ¿Dinero? No, ni mucho menos. Trabajamos por crear y mejorar un sector a medio/largo plazo, trabajamos para generar el sector del desarrollo software que queremos que exista en un futuro.
Gracias Autentia, gracias @agilismo, gracias @ecomba. Gracias a todo! :D
Muy buena crónica, veo que te acuerdas de los nombres de todos con los que estuviste haciendo pair programando ¡yo no!
A ver si la próxima vez que nos toque juntos tenemos suerte y trabajamos con unas "constraints" menos diabólicas. :)
Impresionante! Me hubiese encantando estar por allá! Espero poder escaparme en otras ocasiones. Sin duda, que poco a poco, estas cosas irán calando y extendiendose.
Saludos!
Muy buena crónica. Esta vez me ha sido imposible ir, pero la siguiente no faltaré.
Macho, ¡ que envidia ! Me hubiera gustado asistir pero me venía muy mal la fecha.
Me hubiera gustado ir, que me voy oxidando.
Por cierto, ¿alguien la hizo en javascript? La verdad es que no conocía el formato coderetreat y me ha sorprendido el que borrarárais el código entre iteración e iteración, aunque por otro lado es lógico.
Muy interesante lo de las "restricciones"
Añadir una conversación que tuve con Roberto Canales. Hablando sobre "los buenos y los malos" y como diferenciarlos me dijo "como saber dónde está la élite? La élite está aquí" señalando a todo el mundo que estábamos ayer. Es decir, la élite es y será todo el mundo que está, entre otras cosas, lo suficientemente loco para hacerse unos cientos de kms y/o madrugar y sábado por la mañana por el simple hecho de preocuparse por su profesión y querer mejorar día a día.
Muy buen artículo Kini. Creo que refleja el espíritu de lo que vivisteis allí.
Efectivamente, lo importante no es la aptitud sino la actitud. No sé si todo los asistentes eran pura "élite"... ni tampoco sé que significa eso exactamente pero, si se que es la gente con la que me gustaría trabajar todos los días :)
Muchas gracias a todos por vuestros comentarios!
Somos el fiel reflejo de motivación e interés por nuestra profesión, por mejorar y aportar a los clientes productos de mayor valor.
Espero muchos más eventos como este, con más gente, con más experiencias, con más TDD, con más todo!
Un saludo :)
Que bueno el articulo!!! Lo has escrito y descrito muy bien. Creo que el sabado por la noche todos los que asistimos al coderetreat estabamos igual, agotados pero con una sonrisa de oreja a oreja. Era la felicidad de haber disfrutado, aprendido y compartido TDD.
"estamos haciendo una pirámide"
encima de la piramide estara canales y tu debajo sosteniendola y cuando tengas unos pocos años mas, no hacen falta muchos mas, te echaran y pondran a otro
http://www.javahispano.org/contenidos.seopath.action?lang=es&path...
leete los comentarios sobre Autentia y la edad
A la persona que se ha identificado como "-" :
Considero que, siendo todos mayorcitos, estaría bien aportar una identificación más real suya. ¿Tiene miedo Autentia le deniegue trabajo algún día? Que hipocresía más grande sería esa por su parte... es lo único que entiendo por anónimo, que considere la posibilidad del desprestigio profesional pero, entonces, no entiendo en que mundo de mafia vive, el cuál, por supuesto, no es de las personas que intentamos hacer de esta profesión mejor. Personas para personas, claras y sinceras.
Después de haber leído el post que me indica sinceramente todavía no veo el gran revuelo que se ha levantado. Aclaro que se leer y, por tanto, he visto el tema de la edad. Mucha gente, entre las cuáles le incluyo, se lo ha ganado, no comparte la filosofía de Autentia y, confunde (sí, ha leído bien), confunde e ignora el motivo tras el cuál se sustenta esa "cláusula" de la edad. ¿Alguien se ha molestado en preguntar o investigar? Bien, si adquiere, aunque sea en pdf gratuito desde la red, el libro de Roberto Canales, el fundador de Autentia, entenderá, quizás, el objetivo de la empresa. Roberto, el cuál merece más respeto a mi entender, plantea una ecosistema de empresas creadas a partir de gente con edad media los treinta y largos años surgidos y formados en entornos como Autentia. ¿No me diga que ahora le empieza a encajar algo? Supongo que creía que buscan carne fresca para pagarles poco al estilo carnicas ¿no?
Sé lo que hablé con Roberto y el significado de la pirámide, sé la filosofía de Autentia y sus integrantes, sé lo que están aportando por mejorar la profesión y sus integrantes y, sinceramente, me gusta. Y, que conste, no trabajo para ellos ni tengo ningún tipo de reconocimiento por esto, no lo busco. Si usted sí, entonces, se ha equivocado de sitio y lugar para dejar su comentario. Lo primero, dar la cara, no es tan difícil, ya que yo elegí poner públicas mis crónicas/artículos, estaría bien un poco de lo mismo en los comentarios.
Esto es como todo, hay gente que le gusta y gente que no pero, por favor, una cosa es no "compartir ideas e impresiones" y, otra, "no respetar". Todos aprendemos de todos y podemos hacer evolucionar y enriquecer nuestros puntos de vista como profesionales. De un "anónimo" no puedo hacer eso, más bien, no quiero.
Un saludo :)
Uff ¿por qué la gente se preocupa tanto por los demás? Osea.. Mister "-" se preocupa por nosotros, para evitar que otros se aprovechen de nuestras buenas e inocentes voluntades.... Yo tengo una teoría respecto a esto y es la siguiente:
En España (porque en otros lados creo que ocurre muuuuucho menos esta situación) hay muchos que se preocupan así como acto reflejo, porque esperan que los demás se preocupen por ellos; ¿es esto malo? en principio no, pero si llegas al punto de "todos los demás se deberán preocupar por mi, entonces yo no necesito preocuparme por nada" ahí estás muerto!. Esta es mi opinión personal debido a que vengo de un país (Argentina) donde o te preocupas por ti mismo o nadie lo hará.
Tampoco entiendo que problema tiene Mr "-" con Autentia... que nos invita a un lugar para aprender, ser mejores y además nos invita café, comida y hasta unas cañas!!! y eso que yo (por tener casi 35, je!) no soy candidato a trabajar con ellos, es más, diría que es muy posible que sea competencia o incluso que seamos socios en algún proyecto, nunca se sabe.
Sean felices!!! es algo que nos permite el hecho de ser libres.
No voy a responder más, ya está off topic esto y no quiero generar más ruido sobre algo inútil.
tl;dr -> Don't feed the troll
Versión larga ->
Hacéis un montón de caso a un anónimo en internet, no? Quiero decir, la posible relevancia que puede tener un comentario anónimo en internet deriva exclusivamente del caso que le hagas. Porque por lo demás, es que ni plantea argumentos.
Así que... consejo clásico: ignóralo.
Y en cuanto a lo de JavaHispano... Meh, por desgracia, así es JavaHispano.
Ya lo sé Venkman, tienes toda la razón, supongo que como era mi primer troll me ha hecho especial ilusión xD
Gracias por el consejo ;)