Semanas 418, 419, 420 y 421

Pues nada… por segunda vez consecutiva se acumula una retro de 4 semanas. No era consciente de ello hasta que me he puesto ahora a consultar cuál fue la última. Además de andar muy centrado trabajando con mis socios de Coding Stones y las cosas del día a día: bodas varias, viajes relámpago, preparar propuestas para call for papers, votar… estas semanas se me han vuelto a pasar volando.

Precisamente del proyecto de desarrollo que estamos haciendo los Coding Stones (Conecta), extraje una pequeña gema de ruby DNI Faker para generar DNIs/NIEs fake para testing y/o generar datos de prueba válidos.

Aunque últimamente estoy dedicando más tiempo a leer que a practicar, también estuve repasando muy por encima un par de katas de programación, pero me quedé con las ganas de ir al Friday Dojo en la que íbamos a trabajar la Gilded Rose.

Otros años estas semanas de principios de verano el tema leads ya pegaba un poco de bajón, pero parece que este no está siendo así, han llegado algunas cosas bastante interesantes que veremos si fructifican. Por el momento lo ha hecho uno de los proyectos que teníamos como posible desde hacía varias semanas en Coding Stones, una aplicación móvil muy interesante en la que van a trabajar Gualis y Javi después de Agosto.

En cuanto a lo que he estado estas semanas:

  • En Conecta estuve haciendo (casi) de todo. Tanto backend como frontend y la comunicación con el cliente. Me tocó investigar alguno de los servicios de Azure y algún otro servicio de terceros con los que nos hemos ido integrando, hicimos revisiones de código, algún que otro refactor, y ya empiezo sentirme más cómodo con Angular2. Además en este par de iteraciones hemos sacado bastantes historias de usuario y, por lo visto en las demos, el cliente está bastante contento con lo que estamos haciendo tanto en calidad como con la metodología que llevamos trabajando con ellos.
  • Estuve haciendo algunas mejoras en Outreach Tool, tanto en lo relacionado con la tienda online como en la trazabilidad de los productos descargados.
  • Tras la actualización del backend de DNDzgz a versiones más actuales de node (pasando algunas cosas a ES2015) por parte de gimenete, yo dediqué un tiempo a trabajar en añadir el servicio de cercanías. Ya dejé hecho buena parte del trabajo hecho (scraping de renfe, etc), hay que ver cómo queremos explotar esa información y rematar el trabajo.
  • Le dediqué algunos ratos Mosica, que últimamente me está dando problemas a raíz de la agenda del Ayuntamiento de Zaragoza, tuve un par de problemas técnicos con el formato de datos y ahora con el bajón de publicación de eventos (estoy dando vueltas a cómo solventar esto). Además dejé medio hecho el soporte a traer/incrustar videos (youtube, vimeo…) y todos sus metadatos para en algún momento empezar a usarlos en las páginas de conciertos.

Buena semana.

Semanas 414, 415, 416 y 417

Casi un mes, nada menos que 4 semanas sin retro semanal, ahí es nada. La verdad que con tanto tiempo me ha costado tratar de recopilar lo hecho y resumirlo, han pasado muchas cosas en lo profesional y personal: Saraos, entrenamientos, celebraciones, no-celebraciones, partidos, cosas del día a día, algún viaje relámpago… hasta he sacado tiempo para hacerme cuenta en un servicio web de puretas que yo me sé. Pero bueno, en el acumulado ha ido bien la cosa :).

En estas semanas tuvimos por ahí en medio un Friday Dojo de Refactoring (que seguiremos este viernes). Nos sirvió como despedida del que ha sido el local de Hispalinux durante un porrón de años. Un local en el que han habido gran cantidad y variedad de eventos organizados por diferentes comunidades locales. He tenido que buscarlo, se inauguró en local nada menos que en 2006 y, aunque a temporadas ha estado algo parado, se le ha sacado mucho partido; pero bueno, seguiremos montando cosas en otros locales y espacios que nos cedan, eso seguro.

Con los CodingStones nos siguen saliendo cosas. Hemos cerrado con una Startup una colaboración a medio camino del mentoring y la consultoría, por el momento haremos una primera visita con algunas actividades y si todo va bien la colaboración se alargará en el tiempo. Mientras que por otro lado hemos trabajado con un par de posibles clientes para ver si encajamos para echarles una mano después del verano. Son 2 proyectos de temáticas muy diferentes, uno sobre trata movilidad y geolocalización mientras el otro combina arduinos y visualización de datos, ambos son relativamente pequeños y nos resultan muy atractivos.

Y aparte de algún side-project que se llevó algunos ratos de mi tiempo, estos fueron a grosso modo las cosas en las que trabajé:

  • En Outreach Tool estuve haciendo arreglos menores con vistas a algunos eventos de presentación de la metodología y la herramienta que da soporte. Ahora mismo la herramienta sigue siendo una hoja de cálculo bastante técnica que os podéis descargar cualquiera. Yo llevo un tiempo dándole vueltas a ver cómo podemos pasarlo a una aplicación web, mientras mis compañeros lo están rodando y van captando feedback.
  • Con los CodingStones hemos estado trabajando a tope en Conecta. Durante estas iteraciones hemos conseguido fortalecer una relación de confianza con el cliente, aportando cosas tanto en lo puramente técnico como en la visión de producto. Quizás no vayamos lo rápido que nos gustaría implementando funcionalidades, pero hemos puesto un estándar bastante alto en la calidad de lo que hacemos, tanto a nivel de código como de producto y por el momento vemos que el cliente lo percibe y valora. Como equipo también vemos que vamos mejorando poco a poco, el que tengamos todos una visión muy acorde con los valores y principios del Extremme Programming en mi opinión está facilitándolo mucho. Estamos sacando puntos de mejora muy interesantes en cada retrospectiva y revisión de código, incluso nos vamos inventado algunos artefactos un tanto locos para resolver ciertos escenarios que por el momento nos resuelven la papeleta.
  • También he ido dedicando algunos ratos a Mosica. En la parte de contenidos el mes de Mayo ha sido desastroso, no he dedicado apenas esfuerzo a ello. Mientras en la de desarrollo, he ido resolviendo algún problemilla que ha ido surgiendo, pero nada de los planes de evolución que tengo previstos hacer en algún momento.

Buena semana.

Semanas 412 y 413

Y aquí viene otra retro quincenal, que la semana pasada no me apetecía nada hacerla. No tengo nada en especial que destacar fuera de lo puramente profesional ya que, más que nada la segunda, se me hicieron un poco cuesta arriba.

En este par de semanas redirigí algunos leads que me llegaron a otros freelances que creo que les encajaba mejor. Ahora ando muy centrado con los CodingStones, y si no nos encajan los muevo entre gente de confianza y conocidos.

Precisamente con los CodingStones tuvimos un hangout con un posible cliente para plantear una colaboración que está a medio camino entre el mentoring y la consultoría. De primeras tiene buena pinta, parece que les podemos ayudar bastante, pero aún tenemos que concretar.

Y con lo que he estado estas 2 semanas ha sido:

  • Trabajar en pequeños cambios en Outreach Tool. Principalmente detalles de copy y tratando de dejar algunas cosas más finas. Además estudiando algunas cosas nuevas que queremos soportar en la web.
  • Continué dando soporte a Maubic en un par de sus microservicios, están en la última fase de proyecto y ando haciendo alguna cosita puntual para descargarles de trabajo.
  • Conecta fue el proyecto donde más trabajé, en el que andamos trabajando todos los CodingStones. Me centré en temas de backend, documentar el API que fuimos desarrollando, reuniones de coordinación con el cliente, etc. Y como grupo hicimos una demo de fin de iteración que salió bastante bien, tuvimos retrospectivas, facturaciones… Vamos, que estamos ya a bastante buen ritmo de trabajo y creo que estamos sacando una calidad a nivel de código y producto más que interesante.

Buena semana.

Semanas 410 y 411

Y ahí viene otro nuevo pack de 2 semanas, a lo tonto voy a tener que renombrar la categoría a retro quincenal :P.

La primera semana de estas, se me juntaron muchas cosas en un par de días: cierre del trimestre, reuniones de varias horas, tener que terminar cosas para una demo y un lanzamiento a producción. Vamos, que tocaron unas cuantas noches de Beer Driven Development, una de las especialidades de la casa… lo malo que bajo presión apetece bastante menos.

El resto de la semana ya pude ir a un ritmo más sostenible y dedicarme a temas relacionados con la organización de la 3ª edición del Startup Open Space. A nivel organizativo creo que se nota que llevamos cierto rodaje y fue bastante fino: se repartió mejor el trabajo entre los organizadores y nadie se quemó al nivel de los años anteriores, tuvimos fruta y pastas a cascoporro todo el día, el catering estuvo bastante bien… y respondimos rápido a un problemón con las salas de etopia que íbamos a utilizar, tuvimos que improvisar y los asistentes casi ni se percataron (aunque algunos organizadores nos quedáramos sin la primera sesión por reorganizar todo). A nivel de contenidos creo que estuvo bastante bien, pero es un Open Space, así que eso es responsabilidad de las 100 personas que asistimos.

Supongo que tarde o temprano aparecerán más fotos, por el momento hay un álbum de Jesús Cuadra, otros andaban por ahí echando fotos. Además de los amigos de ¿Qué pasa co! que también iban grabando, a ver si sacan algo para su videoblog.

Al siguiente fin de semana me pasé por el hackathon Space Apps, al no poder estar mucho tiempo sólo pude echar una mano muy por encima a un par de equipos. Pude ver el buen ambiente que había y me volvió a picar el gusanillo de asistir a alguno en calidad de participante, que llevo ya bastante tiempo sin hacerlo.

Y en cuanto a proyectos en marcha:

  • Estuve dando soporte en algunas cosas al proyecto con Maubic, implementando algunos cambios en un par de microservicios.
  • Tras una semana de re-organización, nos pusimos a tope con el proyecto que nos han contratado a Coding Stones. Poco a poco se va notando que estamos engrasando la maquinaria, aunque esperamos que tal y como van pasando las semanas seguimos mejorando como equipo y mientras seguimos avanzando con el proyecto. Seguramente unos y otros vayamos escribiendo sobre lo que estamos haciendo.
  • Lanzamos la nueva web de Outreach Tool. También tocó implementar algunos cambios a nivel de programación para soportar algunas necesidades que fueron surgiendo. Todavía quedan bastantes mejoras en el tintero que vamos a ir haciendo poco a poco.

Buena semana.

Semanas 407, 408 y 409

Casi hacemos el mes sin retro, que no tenía claro si esta semana terminaría sacando un rato para hacerlo. Como se puede imaginar, ha dado de mucho tantos días, incluida una semana santa menos fructífera de lo que me había planteado tener.

Algunas cosas que han pasado: He seguido trabajando en diferentes cosas para el (inminente) Startup Open Space de este año, he confirmado que voy a estar echando una mano como mentor a los equipos participantes en el hackathon Space Apps de Zaragoza, he ido a un puñado de conciertos, estuve en la charla sobre integraciones y chatbots del FridayDojo, he vuelto a entrenar, estuvimos de mudanza de oficinas para el estudio, mis futboles… Y al final se me ha juntado bastante estrés la última semana y pico.

A destacar que desde Coding Stones empezamos a trabajar nuestro primer proyecto de cierta entidad, y ya hicimos la primera iteración.

Más cosas:

  • En Bichomanía cambiamos el proveedor de mailing transaccional. Aparte encontramos algún problemilla con algunos cambios para hacer despliegues que dejamos medio resueltos, pero aún queda un fleco que no va fino.
  • Quise implementar la posibilidad de traer videos de diferentes proveedores para Mosica. Pero se quedó a medias por problemas con las gemas de ruby probadas. Sí pude hacer algunos arreglos de maquetación con vistas a mejorar el SEO.
  • Estuvimos trabajando en la maquetación del rediseño de Outreach Tool con Jesús (compañero de Coding Stones). Yo además estuve implementando cambios en la pasarela de pagos y revisando las secciones de la web y contenidos. Queda bastante por mejorar, pero ya dejamos la base del rediseño montada.
  • Con la gente de Maubic estuve trabajando en cambios en diferentes microservicios. Cosas muy de detalle de negocio, así que no se puede comentar demasiado sobre ello y tampoco creo que resulte especialmente interesante.

He comprimido bastante esta retro, que sigo con bastantes líos, pero esos ya los explico en la siguiente.

Buena semana.

Semana 406

La típica pereza post-vacacional durante la semana pasada mezclado con cierto acumulo de trabajo que me hizo andar un poco a idas y venidas, sin ser lo efectivo que me hubiera gustado. Además dediqué algunos ratos a trabajar en el Startup Open Space 2016, entre otras cosas tuve que dejar listo el vestibule para proponer sesiones.

Al final entre unas cosas y otras tuve que descartar ir a un par de saraos que habían durante la semana, no da tiempo a hacer todo lo que a uno le gustaría.

Esta semana me tocó estar centrado en 3 proyectos, y tener que dejar aparcadas algunas tareas que tengo pendientes desde hace algunas semanas en otros proyectos más pequeñas:

  • Mi colaboración con la gente de Maubic se llevó casi todo el foco de mi semana, ya que se acercan fechas importantes para el proyecto y necesitaban que diera algo más de dedicación. Estuve trabajando en un par de servicios diferentes nuevos.
  • Con Coding Stones tuvimos la reunión de arranque con un cliente, así que definitivamente empezaremos a trabajar tras la semana santa. Tengo muchísimas ganas de empezar a desarrollar con mis compañeros.
  • Tuvimos una reunión acerca de OutreachTool para plantear colaboraciones con algunos interesados en consultoría. Por mi parte también estuve con algunas cosillas del rediseño.

Buena (mini)semana.

Semanas 404 y 405

Ya estamos, casi como de costumbre, haciendo retro quincenal otra vez. Esta vez mi excusa es haber estado una semana de vacaciones, o de medio vacaciones, ya que la excusa de mis vacaciones era ir a Londres para asistir como voluntario a uno de los eventos sobre software más importantes de europa como es la QCon London. Y como era mi primera vez ahí quise aprovechar también para hacer bastante turismo y ver a algunos amigos del mundillo que andan por tierras británicas.

No sé si podré sacar un rato para escribir sobre el evento, ya que quiero volver a ver algunos videos de charlas de las que me perdí algunas partes por el trabajo como voluntario, pero intentaré hacerlo en algún momento.

La semana anterior, además de trabajar aún sin total normalidad (por andar todavía algo pachucho), saqué tiempo el viernes para ir al Friday Dojo sobre Jenkins. Además andamos en mitad de mudanza del estudio, aunque por ahora mi aportación ha sido muy poco y son mis compañeros los que se están haciendo cargo de casi todo.

Mientras que sobre proyectos:

  • En OutreachTool estuve implementando cambios y añadidos en la tienda, además estuve actualizando algunas gemas.
  • Con Coding Stones estuvimos revisando lo que un cliente nos ha pasado para empezar a trabajar en la definición de historias de usuario, vimos que tenemos bastante trabajo respecto a esto.
  • Hice algunas mejoras en Mosica para ver si le conseguimos gustar un poquito más a google, además resolví un bug con la generación de algunos ics que daban problemas.
  • Con Maubic estuvimos trabajando en un servicio nuevo, además de dando soporte y haciendo mejoras en otro de ellos; estas semanas me toca pisar un poco el acelerador con ellos. También perdí algo de tiempo en dejar listas algunas cosas en un jenkins.

Buena semana.

Semanas 402 y 403

De nuevo resumen de 2 semanas. La segunda me la he pegado prácticamente KO por un trancazo bastante gordo que no me ha dejado avanzar lo que me hubiera gustado, incluso tuve que dejar aparcada temporalmente alguna cosa hasta nueva orden.

Y es que aún ando bastante renqueante tras tantos días con fiebre, así que he dejado bastante escueta la retro:

  • Con Maubic estuve principalmente dándoles soporte en temas de backend y dedicando tiempo para la resolución de algunos problemas que fueron surgiendo.
  • Estuve a varios flancos con OutreachTool, tanto a nivel de desarrollo como de coordinación. Ya hay buena parte del rediseño hecho y hay que empezar a integrarlo en la web.
  • Tuvimos reunión de puesta al día de Bichomanía para alinear visiones. Además me tocó hacer algún pequeño arreglo.
  • A Mosica le dediqué un poquito de tiempo para hacer un par de cambios chorras. También aproveché para empezar a probar una herramienta de analítica de usuarios.
  • Con los CodingStones estuvimos haciendo trabajo de definición y revisando algunas cosas hechas por el equipo. Además, a falta de las formalidades, parece que a no mucho tardar vamos a trabajar por fin en un proyecto de cierta entidad.

Buena semana.

Page Objects con PHPUnit y Webdriver

A finales del año pasado me llegó la posibilidad de colaboración a modo de consultoría con Funidelia, un comercio electrónico de disfraces. Un comercio electrónico que además va como un tiro, por cierto.

Me contactaron para echarles una mano para empezar con el testing funcional (o de sistema, o end-to-end, o…). Ya que al parecer intentaron en el pasado ponerse con ello pero, como ocurre en muchas ocasiones, el día a día de una startup no permite que el equipo técnico pueda focalizarse en ello.

Así que tras una reunión inicial y alguna otra conversación teníamos claro que mi papel era sentar unas bases sobre las que ellos pudieran seguir.

¿Cuáles eran esas bases?:

  • Implementar casos los tests automáticos para la parte más crítica del negocio: los diferentes puntos dentro del proceso de compra.
  • Saber cuanto antes cuando se rompe un test. Así que se pueda lanzar correctamente desde un servidor de integración continua (que en su caso era un jenkins) sobre entornos de desarrollo.
  • Además del entorno de desarrollo que pudieran lanzar contra entornos de staging, o incluso producción. Teniendo en cuenta que la misma base de código del comercio electrónico se ejecuta en diferentes instancias y configuraciones (por país).
  • También se debían lanzar los tests con diferentes navegadores, es crítico que funcione correctamente con todos lo navegadores mayoritarios.
  • El lenguaje de programación a utilizar iba a ser PHP, ya que es el utilizado por el equipo.

Una cosa que estuvimos hablando fue el que los tests sólo cubrirían los escenarios optimistas del proceso de compra, esto es cuando se supone que al usuario todo le va bien y termina con su compra de disfraces hecha. No sólo para lo que yo iba a hacer, si no también para cuando el equipo siguiera evolucionando las baterías de tests. Al final son tests lentos, frágiles y mantenerlos tiene bastante coste, pero luego volvemos a ello.

Las herramientas:

Hacía mucho que no programaba en PHP y no estoy para nada al día de sus novedades, pero para esto estábamos de acuerdo que no creíamos que iba a ser un gran problema.

Aunque no estuviera muy al día sí tenía referencias de cosas como composer para gestionar las dependencias y era el punto de partida.

En cuanto al framework de testing se me pasó un momento por la cabeza el cacharrear con behat, pero como al final iban a ser tests sólo para los programadores me parecía añadir una indirección que no aportaba nada; así que tiramos a lo seguro con PHPUnit, que ir con algún framewrk xUnit es ir sobre seguro.

Para el lanzamiento de acciones de navegador también tenía claro la elección con Selenium Webdriver y el cliente PHP implementado por la gente de facebook.

Mientras para que para el soporte de ejecución frente a diferentes entornos, monté algo de código a medida para poder cargar configuraciones de ficheros json a partir de un parámetro enviado al comando de ejecución de la batería de tests.

Page Objects:

Y ya respecto a los propios tests, como escribía algo más arriba, los funcionales suelen ser considerados frágiles y lentos.

Decimos lentos para el contexto de que no nos sirven para dar feedback rápido de si algún cambio que hayamos introducido en el código ha roto algo, si los intentas usar para ello serán una tortura para tu flow. Si a alguno no le suena la Pirámide de Test siempre puede informarse de ello en la web de Fowler.

Pirámide de Test

Y decimos frágiles principalmente porque cualquier cambio de maquetación html por pequeño que sea puede romper el test: un texto, un class, un id… Así que, salvo que la UI no evolucione, suelen resultar caros de mantener frente a otros tipos de tests.

Una forma de abaratar bastante el mantenimiento de esos tests es el uso Page Objects. De modo que para cada página (aunque también podríamos tener Page Objects de elementos comunes, como quizás un menú de navegación) que queremos que participe en los tests abstraeremos sus detalles de implementación para utilizarlo como un objeto en cada caso de test, reduciendo de esta manera la duplicidad de código y mejorando la legibilidad de los propios tests.

En los Page Objects expondremos tanto métodos que crean/llevan a otros Page Objects como otros que lanzarán acciones para que sean ejecutadas en el navegador (un click, completar un formulario…) y de los que opcionalmente esperaremos algo en el retorno.

Además en mi caso implemento los Page Objects con la responsabilidad de los asserts en el propio Page Object. Ahí decido lo mucho o poco que quiero acoplarlo a la maquetación exponiéndolo como un assert con un lenguaje más de negocio. Esto lo comento porque al implementar Page Objects existen 2 vertientes ligeramente diferentes: incluir los asserts o proveer un modo para que el test sea el responsable de cómo se le hacen los asserts y así separar responsabilidades. El propio resumen final que enlazo, por lo general, desaconseja lo asserts en estos objetos; aunque a mi por el momento no me ha resultado problemático el hacerlo y se adapta más a mi gusto.

Y ya desde un punto de vista más práctico y sin meterme en detalle, este es como quedaría test de añadir un producto al carro de la compra:

Como se puede ver en el código, se mantiene encapsulado entre esos objetos. Podría cambiar completamente la maquetación de la UI y tendríamos que cambiar sólo la implementación de los Page Objects (que no es poco). Otro tema es que, por razones de diseño o negocio cambiara la lógica de navegación, claro.

Semanas 400 y 401

Un par de semanas algo duras estas 2 últimas, se han juntado algunos temas que las han puesto bastante cuesta arriba. No me vendrían mal unas vacaciones de las de verdad, no.

Desde Cachirulo Valley empezamos a coordinarnos y a trabajar en el próximo Startup Open Space. Además yo estuve presentando el colectivo y el evento en formato elevator pitch en el Startup Europe Week que se celebró en Zaragoza.

Algo a destacar de estas semanas es que hemos anunciado lo último en lo que llevo un par de meses embarcado, los Coding Stones (la web es temporal, pero había que lanzar algo ya). Una marca bajo la que estamos varias personas que llevamos bastante tiempo en esto del desarrollo de software y que queremos trabajar juntos, además que estamos convencidos de que aportamos más valor a nuestros clientes en conjunto que contratados individualmente.

Estuve en la presentación de Españopoly en Zaragoza. Y luego estuvimos tomando algo por ahí con David y Eva, buena gente de la Fundación Civio.

Para acabar esta última semana, este fin de semana me dio por extraer un pequeño plugin de JQuery para galería de fotos desde el proyecto de Alchups.

Estas semanas también tocó gestionar algún que otro lead, y hacer una primera reunión para conocer con mayor profundidad el proyecto de uno de ellos, además:

  • Dejamos listos algunos cambios en Bichomanía, principalmente relacionados con la arquitectura de información de la home.
  • Para Maubic estuve a temas variados. Los que me llevaron más tiempo fue dejar configurado un Jenkins listo para lanzar las builds de todos los proyectos, y montar un servicio de logging centralizado para los diferentes servicios.
  • Tuvimos la reunión de arranque para el proyectito con Refinery.
  • A Outreach Tool estuve dedicándole algunos ratos, además de hacer algo de soporte y coordinación.

Buena semana.