The BeCode Chronicles (día 2)
Ya ha llegado el segundo día en mi aventura con @beCodeMyFriend y parece que sigo vivo. El primer día ha servido para tomar el pulso a la situación, ahora parece que ya he calentado (un poco) y puedo empezar a participar más.
He empezado el día con @elmendalerenda haciendo un poco de pair-programming en DaChop para completar la funcionalidad con la que estaba trabajando. Como DaChop aún utiliza una versión anterior de Cuore.js me ha permitido comprobar algunos problemas que se producían, y que el equipo de BeCode había corregido para la versión que se presentó en la CAS2011. Además pude seguir viendo como se utiliza Cuore.js en una aplicación real, lo que me permite tener una visión más global de su funcionamiento, cuestión fundamental para poder empezar a cambiar cosas en el framework.
Tras tomar un café con @elmendalerenda esperando a que llegaran @eamodeorubio y @XaV1uzz, empezamos a trabajar en Cuore.js en el punto que lo habíamos dejado el día anterior. Ya habíamos creado el Directorio de Servicios y hoy completamos el Registro de Componentes, es muy interesante porque es una refactorización "muy sencilla" pero que añade mucha expresividad y desacopla la solución. Para resumirlo en pocas línea, lo que hemos hecho es hacer explícitos dos objetos que estaban modelados como arrays o mapas de Javascript, ¿y qué logramos con esto?, muy simple, que la responsabilidad de cada elemento esté encapsulada en el mismo y no en otro componente que crece para albergarlo todo. Por si te orientas mejor, aquí te dejo un dibujito ... pero te recomiendo que veas los cambios en el repositorio de GitHub por si no lo has hecho ya, que deberías.
Dado que la gente de BeCode estaba ocupada haciendo incubaciones y hablando con sus inversores, es increíble la cantidad de gente que pasa por sus oficinas al día, @eamodeorubio y yo continuamos por introducir el Registro y el Directorio que ya teníamos hecho, en el componente Página de Cuore.js. Fue una tarea un poco larga pero relativamente sencilla porque contábamos con los tests que ya estaban hechos, como las relaciones ahora son ligeramente distintas algunos tests fallaron y lo que hicimos fue revisarlos y verificar los nuevos comportamientos que debían tener. Quizás te interese echarle un vistazo a los siguientes ficheros en el repositorio de código, para ver como han evolucionado, con sus respectivos tests.
La famosa pizarra de tareas de BeCode, quizás la explique otro día :-D |
Tras tomar un café con @elmendalerenda esperando a que llegaran @eamodeorubio y @XaV1uzz, empezamos a trabajar en Cuore.js en el punto que lo habíamos dejado el día anterior. Ya habíamos creado el Directorio de Servicios y hoy completamos el Registro de Componentes, es muy interesante porque es una refactorización "muy sencilla" pero que añade mucha expresividad y desacopla la solución. Para resumirlo en pocas línea, lo que hemos hecho es hacer explícitos dos objetos que estaban modelados como arrays o mapas de Javascript, ¿y qué logramos con esto?, muy simple, que la responsabilidad de cada elemento esté encapsulada en el mismo y no en otro componente que crece para albergarlo todo. Por si te orientas mejor, aquí te dejo un dibujito ... pero te recomiendo que veas los cambios en el repositorio de GitHub por si no lo has hecho ya, que deberías.
No tengo ningún programa de modelado UML, yo solo uso lápiz y papel para estas cosas :-P |
- Cuore.Page.js (Cuore.Page.Spec.js)
- Cuore.Directory.js (si el de arriba se llama Cuore.Page.js y su test Cuore.Page.Spec.js, ¿cómo crees que será en este caso?, aplica la misma lógica la resto de ficheros)
- Cuore.Registry.js
- Cuore.Component.js
- Cuore.Renderer.js
El resto del día ha transcurrido con normalidad, pero hay una cosa que me ha sorprendido de este lugar y que demuestra su madurez. Aquí nadie revisa el trabajo de los demás, todo el mundo sabe lo que tiene que hacer y como para alcanzar el bien común. Si quieres te levantas y te vas un rato a la calle, si tienes cosas que hacer las haces sin necesidad de responder ante nadie, porque todo el mundo entrega su trabajo y colabora con los demás para que el equipo avance.
Por supuesto, a lo largo de un día en este lugar aprendes muchas más cosas y mi libreta siempre acaba con un montón de anotaciones, pero no se puede expresar todo en una sola entrada. Quizás de mi temporada salgan nuevos posts en el futuro, ¿quién sabe?.
Comentarios
Tampoco hay muchas más formas de representar este tipo de detalles de implementación en un papel de forma clara, lo mejor es verlo en el código.
Un saludo.