Este fin de semana pasado, el 24 y 25 de noviembre tuvo lugar la edición de Codemotion Madrid 2017 y gracias a Autentia tuve la oportunidad de asistir a este evento que ya se ha consolidado como uno de los eventos de nuestro sector. Como ya adelantaron en la keynote inicial del evento “Codemotion es el lugar ideal para perderse charlas” ya que con nueve tracks en paralelo más otros tres de talleres, hay más de 150 charlas y resulta imposible asistir a todas a menos que tengas el don de la ubicuidad. Siempre tienes que elegir alguna en favor de otras por distintos criterios; a la que tienes pensado asistir ya está llena y tienes que elegir otra, a veces decides asistir a un track que no se graba para poder ver luego la grabación del que has dejado de asistir, propios intereses profesionales y personales, etc. Lo dicho los factores por los que finalmente eliges unas charlas u otras son muy variados.
Organización
Hay que felicitar a los organizadores, voluntarios y patrocinadores, está claro que sin una buena organización, una buena red de voluntarios y patrocinadores que permitan celebrar este tipo de eventos no sería posible reunir a más de 2000 asistentes, colaboración con más de 30 comunidades, y presentar más de 150 charlas.
La ubicación del evento fue en el campus de Montepríncipe de la Universidad CEU San Pablo. Aunque esto puede llegar a ser un problema por esta alejado de Madrid, la organización dio indicaciones claras de los accesos disponibles, transporte público, coche, y además puso un refuerzo con Shuttles desde Plaza de España. También se llegó a un acuerdo con Cabify en forma de descuento. En mi caso fuimos en coche particular y no tuvimos ningún tipo de problema.
Para aquellos que venían de fuera de Madrid la organización también llegó a acuerdos con Renfe y distintos hoteles para facilitar tanto el desplazamiento como la estancia de los asistentes.
Charlas
Me gustaría felicitar también a todos los ponentes. Hay que reconocer el mérito de simplemente presentarse y exponerse públicamente como ponente en este tipo de eventos y estar delante de tantas personas. Está claro que no todas las charlas son tan buenas como esperabas o se ajustan a tus expectativas, aunque siempre llevan un trabajo y nervios por parte del ponente que hay que agradecer.
A continuación os pongo algunos comentarios de las charlas a las que pude asistir:
- Node.js para javeros. Conoce a tu enemigo:
Como conclusión es que el mundo de la JVM y el mundo JS cada vez se acercan más y todos los argumentos que desde uno y otro lado se usan para criticar al otro están desapareciendo, flexibilidad vs rigidez, rendimiento, ciclo de vida, etc.
- Clean Architecture:
En esta charla, Alvaro García Loaisa nos ofrece un repaso rápido a las arquitecturas más conocidas desde que rompimos el monolito hacia el cliente-servidor, que aunque sin profundidad nos crea una idea clara de la evolución que hemos seguido, tratando arquitecturas modulares, MVC, microservicios, hexagonal e incluso modelos teóricos sin aplicación real a día de hoy como space-based architecture. Pese a que hubo ejemplos concretos, se quedó algo escaso en cuanto a detalle, debido en parte a lo extenso del contenido propuesto y a problemas técnicos al principio de la charla que provocaron la urgencia del ponente.
- Practical Spring Cloud:
De la mano de Álvaro Sánchez (@alvaro_sanchez). En mi opinión esta charla estuvo marcada por problemas técnicos que hay que tener en cuenta para mejorar en el futuro. Era una sala muy alargada y la pantalla de proyección del final no funcionó, así como el audio a la parte de atrás tampoco llegaba con nitidez. Esto unido a que se presentó código por pantalla (no adaptado en la slide, mostrando el IDE), creo que afectó a la impresión de bastante de los asistentes. Por lo que espero verla con más calma cuando se publique el video. Siempre sacas algo, como el repaso del stack de Spring por la nube y algo útil como un mecanismo de refrescar valores en caliente de los típicos @Value que suelen inyectarse al inicializar el bean, lo que no permite hacer esta práctica.
- Desarrollo y Despliegue Continuo con MicroServicios:
Laura Morillo-Velarde (@Laura_Morillo) nos contó su experiencia de primera mano de cómo pasaron su monolito a microservicios. Fue muy gráfico ver como mostraba los distintos problemas que se planteaban y la solución que habían adoptado. Eso les ha servido a ellos y que espera que pueda servir al resto, aunque cada uno tiene sus propios problema y debe. tomar sus propias decisiones. En su caso está claro que la combinación de Docker+Kubernetes ha sido clave …. Más algo que todos esperamos que hagan pronto OpenSource, ese maravilloso script que les permite gestionar las combinaciones para montar los entornos.
- Profiling de CPU en la JVM y Flame Graphs:
@jerolba Nos dejó claro la diferencia entre Profiling (puro) vs Sampling, siendo esto último en los que se basaba su trabajo. Nos presentó distintas herramientas para conseguir los datos a explotar desde los que montar los Flame Graphs, dependiendo del fabricante de la JVM, del API expuesto, de la herramienta utilizada (p.e. nativa del S.O) y cómo tras una transformación de los datos, nativos de la propia herramienta, al formato interpretado por Flame Graphs, poder obtener esos gráficos tan chulos… y lo más importante, a empezar a entenderlos, para que ya profundizando por tu cuenta y conociendo el contexto de tu aplicación, puedas exprimirlos.
- Construir una APP con AI nunca fue tan fácil:
Rubén (@pekewake) y David Chavarri (@dvdchavarri) inicialmente dieron una pequeña base teórica sobre AI, tipos de aprendizaje y redes neuronales para luego presentarnos algunos ejemplos de clasificación utilizando TensorFlow. Este campo es muy extenso y está claro que lo suyo fue mostrar rápidamente parte de las posibilidades que nos ofrece esta rama para que cada uno pueda profundizar por su cuenta.
- ¿Tienes un #bug? Tus tests unitarios no están bien planteados:
De la mano de José San Román (@jsral) vino esta charla apoyada en datos sobre cómo hay que construir el software de calidad, como considerar un test unitario, manteniendo la profundidad del mismo pequeña sin ser estrictos en que debe tener una profundidad de 1. El cómo plantear test unitarios para verificar comportamiento+colaboración. La utilización del patrón Builder para preparar el contexto de la prueba ayuda a la legibilidad de la misma y al mantenimiento posterior del test, porque sí, los tests también hay que mantenerlos. Y algo que realmente puede que en muchos equipos pase desapercibido, el concepto de testing va de entender el problema, de ahí la importancia de técnicas como TDD o BDD.
- Sobrevive al inframundo de los end-to-end:
La jornada del viernes la terminé con Gustavo Marín (@guumaster) contándonos su experiencia con tests end-to-end. Tomando como buena práctica enfocar los test de un modo declarativo en lugar de imperativo. Esto nos permite definir el test des un punto de vista más funcional, sirviendo como documentación, y al mismo tiempo el test no queda acoplado a la implementación lo que lo haría mucho más débil. También habló de buenas prácticas como el uso del PageObject o el uso de selectores evitando XPath.
PODCAST:
VÍDEO:
PODCAST:
VÍDEO:
PODCAST:
VÍDEO:
PODCAST:
VÍDEO:
Hasta aquí la primera parte del resumen.¡No os perdáis la continuación!
[…] el segundo día de Codemotion, el sábado. Podéis echar un ojo a las charlas del primer día en este enlace. Empezamos el repaso […]