Iago Lastra, autor del libro Frontend Testing

¡Hola Iago! ¿Quien eres y a qué te dedicas?

Hola! Me llamo Iago Lastra Rodríguez y soy programador frontend. 

Gallego viviendo en Barcelona, soy de esos pocos que trabajaban en remoto antes del coronavirus! Actualmente trabajo para una empresa de San Francisco que se llama Apto Payments.

¿Cómo fueron tus comienzos en el mundo de la programación?

Realmente no es una gran historia, empecé a estudiar la carrera porque me gustaban los videojuegos y con el tiempo le fuí cogiendo el gusto a  la programación porque tuve la gran suerte de conocer a un compañero de carrera más mayor que me insistía para intercambiar clases de informática por clases de guitarra… 

Me hizo ver que había un mundo más allá de la carrera y las consultoras, me enseñó temas de arquitectura, me hizo crearme una cuenta en GitHub, hacíamos cursos por nuestra cuenta, íbamos a hackatones…al final acababa programando por diversión!

Al principio quería quedarme a trabajar como investigador en el departamento de IA de la universidad pero empezaba la crisis y las perspectivas económicas no eran muy buenas así que en cuanto me ofrecieron trabajar como programador decidí probar suerte.

Empecé haciendo apps Android, luego trabajé en consultoría con .NET, hice cosas con Python/Django, y al final descubrí javascript y la web y me pareció divertidísimo!

¿Qué es lo que más te gusta y motiva de tu trabajo?

Yo diría que es gratificante, poco a poco ves resultados, ves que haces cosas que funcionan y que la gente utiliza!

Yo venía de investigar algoritmos paralelos para procesar grandes cantidades de datos, estaba semanas pegandome con una consola en modo texto obteniendo resultados incorrectos!

Pasar de la oscuridad de los kernels de CUDA a poner botones en un WebView fue una liberación! En una tarde tenía una pantalla de una App funcionando!

Además, ser programador es uno de los pocos trabajos donde una persona casi sin recursos puede cambiar el mundo. WhatsApp la empezó un ucraniano que estaba sin un duro. ¿Te imaginas el mundo sin WhatsApp? O Tinder, puede parecer una frivolidad pero en realidad unos amigos de LA han cambiado la forma de relacionarnos en todo el mundo, es un poder que se tiene en pocos trabajos.

Hablemos de Frontend Testing, ¿por qué otro libro sobre testing?

Siendo 100% sincero empezó como una serie de notas personales que se me fueron de las manos, con el tiempo pensé ¿por qué no compartirlo? Aprovechando la cuarentena lo ordené un poco y le llamé libro, pero aún hay mucho que mejorar.

Creo que es importante concienciar a la gente de hacer las cosas lo mejor posible. Los programadores tenemos mucho poder y de la misma forma que podemos cambiar el mundo para bien podemos meter la pata hasta el fondo. Hasta donde yo se los tests son una herramienta que nos ayuda a desarrollar un software de mejor calidad y sin embargo apenas había información en español sobre el tema, te animo a buscar “libros testing frontend” en google...

Portada del libro Frontend Testing, por Iago Lastra

¿A quién va dirigido el libro?

A cualquiera que pueda estar interesado en el tema pero principalmente a gente que está empezando a hacer tests. En realidad es super introductorio, la idea es sembrar la semilla, el resto se puede encontrar en internet.

¿Qué son los tests automáticos y que ventajas nos aportan?

Yo diría que un test es un proceso que permite obtener información acerca de un sistema.

Por lo que un test automático es un proceso que nos permite obtener información acerca de si nuestro software funciona correctamente.

Lo bueno es que esta información la puedes obtener en milésimas de segundo por lo que mientras programas puedes saber en tiempo real si has introducido un bug.

Su principal ventaja es la verificación, pero también sirven de documentación y nos pueden ayudar a diseñar y escribir mejor software.

¿Qué tipos de tests hay y cuando es recomendable usar cada uno de ellos?

Personalmente me gusta mucho la clasificación que hace Miško Hevery en esta entrada del blog de testing de google.

En resumen propone 3 tipos de tests: pequeños medianos y grandes. 

Los tests pequeños son rápidos y se utilizan para probar la lógica del código. 

Una vez has probado que la lógica de cada una de las piezas del código es adecuada hay que probar que esas piezas colaboran entre sí de forma correcta para realizar algún tipo de función y para eso se usan los tests medianos.

Por último aunque el código esté bien, siempre puedes reventar todo si cloudfront está mal configurado o si te olvidas de renovar un certificado por lo que es necesario algún tipo de test grande que pruebe todo de principio a fin.

¿Qué criterios debe cumplir para tí una buena batería de tests?

Que prueben el comportamiento esperado del software. Siempre le digo a la gente que tiene que probar lo mismo que probaría manualmente.

También veo que la gente se obsesiona con la cobertura y se olvida de los “casos de uso”. Para mi es más importante cubrir los casos de uso que la cobertura.

¿Por qué te has centrado en el frontend? ¿Qué tiene de especial?

Me centré en el frontend porque soy programador frontend! La peculiaridad es que, cómo dice el tío Bob, la web es un detalle de implementación. ¿Cómo probar un detalle que ni debería tener lógica? ¿Cómo probar una vista? Al principio era una pesadilla pero ahora mismo las herramientas están tan avanzadas que da gusto.

Creo que la principal diferencia es que hay que pensar desde el punto de vista de un usuario navegando la web/app. ¿Qué cosas puede hacer y que va a pasar en cada caso?

¿Cómo ha evolucionado el ecosistema de testing en los últimos años?

Pués a un ritmo brutal, por eso me gusta el frontend.

¿Cual es tu stack de testing favorito?

Parece que jest / testing library / cypress se han consolidado como un estándar en los últimos meses al menos en la comunidad de React, tengo pendiente ver cómo están las cosas en Angular y Vue.

¿Qué consejos le darías a alguien que NO está escribiendo tests y quiera empezar?

Piensa en cómo programas ahora ¿Cómo sabes que algo funciona? La mayoría de la gente prueba “cositas” a mano poniendo logs, abriendo el navegador y haciendo clic en botones… se trata de automatizar ese proceso! Se que puede resultar tedioso aprender a escribir tests, sobre todo si la base de código es antigua pero una vez aprendes no hay vuelta atrás, realmente vale la pena. Si no le ves la utilidad es que estás haciendo algo mal. Ah, y no dejes los tests para el final!

¿Como fué el proceso de autopublicar tu propio libro?

Es gracioso porque como buen (mal) informático perdí más tiempo con las herramientas que con el contenido.

Como ya dije todo esto empezó con una serie de notas personales que escribía en markdown usando una herramienta que se llama Typora que permite exportar a epub y PDF además hasta tenía un tema propio que desarrolle para el máster.

El problema es que typora utiliza pandoc detrás de las cámaras para generar los PDFs, y a su vez los custom themes escritos en .CSS y utilizan wkhtmltopdf para generar una web aplicar los estilos, y exportar un PDF. E caso es que creo que casi me vuelvo loco para configurarlo bien con sus márgenes y sus espacios, así que acabé utilizando LeanPub, que por cierto es TERRIBLE. En cuanto tenga tiempo voy a intentar sacar una plataforma alternativa!

¿En algún momento pensaste en escribirlo en Inglés?

Si, pero me llevaría siglos. El gran plan es: primero publicarlo en digital, después y a partir del feedback de los lectores mejorarlo hasta acabar publicando una edición física, y finalmente puede que traducirlo. ¿Quién sabe?

¿Cuales son los libros, recursos, o personas que te han ayudado a convertirte en el profesional que eres hoy?

Todo lo que escribe Robert C Martin (de software!) me parece muy acertado, también Fowler, Kent Beck o más recientemente Kent C Dodds.

Tengo una entrada en mi blog con libros que recomiendo a cualquier programador. Creo que debería actualizarla y añadir Frontend Testing.

¿Qué te gusta hacer para desconectar?

Patinar, tocar la guitarra, surfear, hacer snowboard y por supuesto programar! También estoy estudiando cositas de biología que siempre he sido un paleto en ese tema, me flipa la idea de comparar el proceso de transcripción del ADN con el funcionamiento de las máquinas de Turing!  

¿Cómo te ves dentro de 5 años?

No hay plan, seguir tirando y ver qué nos depara la vida. Creo que me gustaría hacer un doctorado.

¿Cómo y dónde podemos contactar contigo?

Tengo un blog que retomaré y para el resto en twitter.

Muchas gracias Iago 🙇‍♂️

Otras entrevistas interesantes

¿Quieres más? ¡Aquí tienes más entrevistas que te podrían interesar!

Vanessa Medina, FrontEnd Software Engineer en eDreams y co-fundadora de FrontFest

Escribió sus primeros GOTOs en un Amstrad CPC464. Comenzó siendo sysadmin, hasta que descubrió el desarrollo frontend. Trabaja en eDreams, organiza FrontFest, da charlas...

Oriol Barcelona, software engineer en Dynatrace

Escribió su primer programa antes de los 15 años y le apasiona su profesión. En Dynatrace, lidera un equipo de 4 personas, encargado de construir una UI para sus sistemas de persistencia.

Manuel Montenegro, software engineer en Personio

Manolo es Malagueño. Descubrió la programación en quinto de primaria. Hoy, su trabajo ayuda a que los empleados de los clientes de Personio cobren las nóminas a final de mes.
Suscribirme

¡Suscríbete!

Más de 900 desarrolladores/as reciben ya nuestras ofertas y contenidos para estar al día de cómo está el mercado y aprender de los mejores profesionales. Y tú, ¿te lo vas a perder?

¿Qué quieres que te enviemos?