Una década trabajando en Irlanda en Desarrollo Software
Hoy hace diez años que me mudé a Dublín, a empezar un nuevo trabajo.

Photo by KML on Pexels.com
Han sido diez años de mucha actividad, y de gran desarrollo personal y profesional, con cuatro trabajos distintos. Además, coincide casi exactamente con “los años 2010s”. Algunos detalles
- Lógicamente, el inglés que tengo ahora no es el de hace diez años. Aunque me sorprende que siempre haya momentos que no entiendes, o frases que te lías. Esto es más ser quejica que otra cosa.
- He desarrollado todo este tiempo mayoritariamente en Python, que era mi objetivo inicial. Es un lenguaje que me sigue encantando, y además, no ha hecho más que crecer en esta década. En todo este tiempo, obviamente, he aprendido mucho sobre cómo usarlo. Mi código es mucho más pythónico ahora que antes.

- He sido relativamente activo en la comunidad local de Python, y he dado charlas tanto en reuniones mensuales como en las PyCons de estos años. Sólo falté a la última del año pasado (2019) por tener otro compromiso ese fin de semana.
- He aprendido muchísimo sobre temas como servicios web, escalabilidad, bases de datos (SQL y NoSQL), arquitectura de sistemas, microservicios, DevOps, monitorización, y mil más… Y no sólo tecnologías puras y duras, he tenido compañeros fabulosos de los que aprender cosas como gestión de conflicto, atención al cliente, cómo tratar otros desarrolladores, etc.
- Hablando de compañeros, he estado en equipos realmente internacionales. No sólo gente de toda Europa, sino de todo el mundo. Trabajé unos meses con un equipo en el que había componentes de los cinco continentes. Aprendes mucho y el mundo se hace un poco más pequeño, relacionas lugares remotos con gente que conoces.
- He trabajado en empresas que gestionaban millones de usuarios concurrentemente. El trabajo de preparación y gestión que hay detrás de eso es impresionante.

- ¡He escrito dos libros! De los que, además, estoy muy orgulloso del resultado: Python Automation Cookbook y Hands-On Docker for Microservices with Python

- Me pasé definitivamente al lado oscuro de usar Mac y productos Apple a principios de la década y hasta ahora… El que sean “Unix con un interfaz bonito” es maravilloso para el desarrollo.
- Revisando estos antiguos artículos sobre las cosas que uso para trabajar, es curioso que sigo usando prácticamente lo mismo. Ahora que tengo ya bastante práctica con Vim va a costar cambiarlo…
- He viajado bastante. Por trabajo y fuera de él. A muchos sitios como Canadá, Estados Unidos, Emiratos, Alemania, Italia, Portugal…. Y muchos sitios en España.
TECNOLOGÍAS
En términos de tecnologías, las dos que más me han marcado, en el sentido de ser una revolución en cómo trabajo, son tanto Git como los servicios web de Amazon (AWS), a principio de década y Docker/Kubernetes hacia el final.
- Git se ha convertido en el estándar de facto de control de versiones, en gran parte por el gran trabajo de GitHub.
- AWS es increíblemente relevante, y permite usar infraestructura (mayoritariamente, pero no limitado a, servidores en la nube y elementos asociados como espacio de almacenaje) de manera muy sencilla. Puedes montarte tu propio centro de datos con 50 servidores en una tarde, si quieres. Y al día siguiente desmontarlo. La contrapartida es que es carillo, un poco la diferencia entre pillar un taxi o comprar un coche. Además, la nomenclatura de todo es ignota y confusa. Es complicadísimo además saber a priori cuanto dinero va a costar nada.
- Docker permite trabajar con contenedores, que son pequeños procesos autocontenidos, fáciles de ejecutar de forma estándar. Aunque la idea inicial que tienes al usarlos es que son un tipo de máquina virtual ligera, pero la forma más precisa de verlos es como procesos que tienen un sistema de ficheros para ellos solos. El trabajar con contenedores simplifica muchos problemas tradicionales de despliegues en producción, donde el control del entorno es crucial (y siempre daba problemas de algún u otro tipo)
- Kubernetes es la evolución de los containers, facilitando el usar múltiples a la vez y coordinándolos entre sí. Es ahora mismo un tema candente y de moda. Kubernetes no es la única opción, pero sí la que está ganando más atención. Utilizando Kubernetes y contenedores se puede abstraer los servicios del hardware en el que se ejecutan, separando la gestión del cluster (una colección de servidores, físicos o virtuales que aportan los recursos) de los servicios que operan sobre ellos. Todo esto es posible hacerse configurándolo en ficheros, así que cambiar la infraestructura lógica (qué servicios están desplegados y cómo se conectan entre sí) se convierte en un problema de cambiar unos ficheros de configuración, en lugar de gestionar servidores directamente y conectarlos.
Todas estas tecnologías tienen su curva de aprendizaje y necesitan tiempo para realmente entenderlos.
La verdad sea dicha, estoy enormemente satisfecho con estos últimos diez años… ¡Vamos a por la siguiente década!