drapergiggs.com

make software great again

Trabajar en remoto casi me mata y acabó salvándome la vida
27 de febrero de 2022

Trabajar en remoto casi me mata y acabó salvándome la vida

Gante, una ciudad preciosa.

En octubre de 2017 comencé a trabajar en remoto. En un principio no teníamos oficina, y aquello de vernos a través del recién estrenado Microsoft Teams no parecía del todo serio. Hablábamos mucho de coworkings, oficinas o cómo convencer a dirección de ponernos un piso en el centro. Quedábamos de vez en cuando, nos tomábamos alguna cerveza, nos quejábamos... pero en seguida vimos que aquello eran todo ventajas.

Desde no tener que levantarte a las 7 menos algo hasta poder llevar a los niños al colegio como hacía un compañero, trabajar en remoto nos ofreció infinidad de posibilidades para tener más tiempo libre, conciliar más y, porqué no, aprender a hacer pan mientras trabajas. Me acostumbré en seguida y perfeccioné el manejo de la harina de fuerza.

Cuando llevaba ya unos meses en esa dinámica, empecé a estar cansado de estar en casa. Mi pareja llegaba tarde y, al contrario que a mi que me apetecía salir a la calle, desconectar, pasear, ver gente y entender que la vida seguía, ella prefería quedarse en casa tranquila después de un día de mierda viendo alguna serie o jugando al Tomb Raider. No era de extrañar, yo unos meses antes estaba en el mismo punto.

La falta de una sensación real de desconexión se apoderó de mi. La oficina era mi casa y mi casa era la oficina. Durante unos meses sufrimos un estrés bastante alto: jornadas largas, presión, desarrollos a medio terminar, integraciones con canales oficiales del estado... recuerdo parar en ciertos momentos para hacer pan y realmente no pensar en nada. Ni reuniones, ni code reviews ni programar... simplemente amasar y no pensar. Necesitaba salir.

Me apunté al gym, empecé a bajar a la calle a mediodía, me iba a trabajar a una cafetería, daba paseos por la mañana... intentaba hacer todo lo que fuera posible por salir de casa y mantener la dinámica laboral a la vez. Además se acercaba verano y las vacaciones nos ponían en un aprieto. Pasado lo peor, pude descansar y sentir un poco esa desconexión que la masa de pan no lograba darme.

Tras las vacaciones de verano volví mejor. La desconexión (esta vez de verdad) me hizo más resiliente a quedarme 12h en casa al día. El gym y demás eran la metadona que me mantenían encerrado todos los días negándome la necesidad de una oficina, de pedir algo más de vacaciones, o unos días libres. Todo parecía mantenerse con pinzas hasta que, simplemente, peté.

Puede que fuese una acumulación de varios factores. Teníamos un estrés terrible, tuve problemas con mi familia, problemas con personas cercanas y por aquella época por desgracia también falleció un conocido. Comencé a no dormir bien. Si a estar en casa más de 8 horas le sumas estar hecho una mierda por no haber descansado ni tres horas, aquello era una tortura. Al poco tiempo empecé a tener ataques de pánico por las noches. Dejaba de trabajar y mi organismo explotaba como si no hubiese salida posible. Me imaginaba todo tipo de escenarios que acaban con mi inevitable, rápida y repentina muerte.

Recuerdo que llegó el punto en el que solo podía dormirme cuando, literalmente, me daba igual estar sufriendo un ataque al corazón con tal de descansar de una vez.

Acudí al médico y me recetó antidepresivos y un tranquilizante. Empecé a tomarlos regularmente y dejé de sentir nada. Simultáneamente me fui a trabajar a la oficina de mi pareja: me hicieron un hueco en su oficina y pude salir de casa. Aquello me liberó un poco. Conocer gente, intercambiar un "hola" y un café después de comer fue un soplo de aire fresco. Comencé a ir a terapia, me apunté a tenis y encontré un coworking.

Meses después dejé de tomar medicación. Comencé el duro, arduo y no siempre bonito camino del autodescubrimiento. Entendí que hay muchos factores que pueden provocar ansiedad y que no puedes controlarlos, solo identificarlos y saber que están ahí, acechándote. No puedes controlar la ansiedad, pero puedes aprender a detectarla y saber que es ansiedad. Hablé con un amigo de la diferencia entre el estrés real y la ansiedad. Connoisseur de la ansiedad.

Llegó un momento en el que estar en casa trabajando en remoto durante ocho horas solo era insostenible. La ansiedad que me provocaba estar solo allí pensando que me podía estar dando un ataque al corazón me impedía vivir con sosiego y tranquilidad, vivir en términos generales. El pensamiento cíclico que genera me impedía ver todas las cuestiones subyacentes que lo provocaban.

Trabajar en remoto, solo, durante meses, sin casi tener contacto con nadie, me provocó una cascada de crisis de ansiedad que cambiaron muchos aspectos de mi vida y muchos aspectos de mi. Puede que sin esa cascada ahora mismo no estaría aquí hablando abiertamente de ello. A día de hoy sigo yendo a terapia, sigo teniendo ansiedad, sigo con ese trabajo personal que empecé hace ya más de tres años al llamar a la que aun hoy es mi terapeuta, pero la diferencia es que puedo trabajar en remoto, solo y puedo dormir por las noches. Tengo mecanismos para tener una calidad de vida mejor. Sin todo este trabajo, no sé que habría sido de mi durante la cuarentena sin este proceso.

Trabajar en remoto casi me mata pero, en cierto modo, me salvó la vida.

Leave a comment
Navaja suiza para el caos
3 de febrero de 2022

Navaja suiza para el caos

Tengo un trauma con SQL.

Un trauma profundo, con raíces que van más allá de la conocida canción y ahondan en la nula inmutabilidad de los datos o las insuficientes y casi inservibles backups. Me explico. Durante dos años estuve trabajando en una empresa en la que tuvimos que construir todo desde cero. Desde la infraestructura en la nube hasta cuentas de Microsoft para vendedores, desarrolladores y en general todo el staff. Durante los primeros meses profundicé en los fundamentos de creación de una infraestructura en cloud tratando preguntas como "¿Es mejor un entorno con AppServices o una infraestructura híbrida con clusters y Kubernetes?" o "¿qué pasa si hay cae un meteorito y una región entera de Azure deja de funcionar?". Preguntas, literalmente, de pausa para el café.

El problema es cuando empiezas a darte cuenta de que todo tiene que estar replicado, por dos, tres o cuatro, que necesitas tener una resiliencia a los fallos casi absoluta, empiezas a pensar en tener despliegues en los 3 major providers de internet (con AWS, GCloud y Azure) por si fallase el proveedor principal y, al día siguiente, haces un UPSERT a mano de treinta mil filas en producción que has editado a mano con tus habilidades de Sublime Text y el editor con cursor múltiple.

Muchos diréis been there done that, pero la diferencia entre el mundo ideal y el mundo real era tan abismal que al principio me daba pánico. Recuerdo desde eso hasta hacer ingeniería inversa a un software propietario solo para ver qué bug tenía y no tener que acudir a soporte y pagar más. Esperar 16h despierto para terminar una migración de un servicio on premises a cloud que venía en un HDD por mensajería urgente. También escribir, como decía, scripts de SQL de decenas de miles de líneas que mi pobre Mac apenas podía procesar. Le daba a "Select all ocurrences" (Command + Ctrl + G en Mac) al principio de la primera linea y esa selección podía tardar unos 30s. Luego, cada edición, desplazamiento o deleción eran otros 30s. Trabajando con datos masivos a mano. Era increíblemente peligroso, e increíblemente adictivo.

Una vez le perdí el miedo a aquella metodología de trabajo, realizar upserts a mano se convierte en tu día a día. Los datos estaban regu y había que hacer muchísimas operaciones a mano que hasta aquel momento realizaba el antiguo departamento de IT que se componía de un solo informático que se había dedicado a hacer aquellas tareas durante todos esos años. Cuando algo salía mal, salía muy muy mal. Una inserción mal: facturas generándose con número aleatorios. Por ejemplo, para reconciliar los datos teníamos que mantener las ids anteriores para poder movernos entre números de facturas erróneos y poder hacer una auditoría a posteriori para Hacienda. Había tablas con 4 ids repetidos que empezaban a ser todos iguales y de repente había saltos, porque, claro, las plataformas estaban hechas en terrible spaghetti code en PHP que no había quién manejara o viera cómo las operaciones concurrentes funcionaban y se saltaban IDs porque, claro, no había ni PKs o FKs en la DB. Había tensión en cada operación por ver si todo acabaría bien.

Cuando empezamos a desarrollar código nuevo tomando como base el código existente, muchas cosas no terminaban de funcionar bien. Había que ir rápido y no había tiempo para requisitos, funcionalidades o testing. Simplemente code fast deploy faster y que sea lo que NaN quiera. Todo aquello solo hizo que hubiese que tratar muchos datos erróneos en muy poco tiempo y asegurarnos de que no se estaba liando más la cosa. Teníamos controles manuales con un innumerable repositorio de cláusulas SQL que revisaban si todo estaba ok o no y que había que ejecutar a mano e ir ampliando y mejorando.

A los pocos meses desarrollé una forma de trabajo más adaptada a este mundo. Me cambié a Windows con BOOTCAMP y me instalé HeidiSQL que tenía decenas de funcionalidades para hacer magia negra. Cada vez que había que arreglar algo que no estaba bien en una bases de datos de producción, me guardaba una copia de seguridad de producción, digamos db_prod_20181123, la desplegaba de nuevo a mano (de verdad, gracias por tanto Heidi SQL) y trabajaba con esos datos, intentando ver cómo resolver el problema existente. A veces tocaba hacerlo con SQL Server, así que me tocaba trabajar con SQL Server Management Studio y hacer un poco de lo mismo. Tras el despliegue, la copia de seguridad no servía para nada, pero yo tenía que mantenerla por si pasase algo. De hecho, cuando aplicaba los cambios que había probado en la nueva DB réplica realizaba otra copia de seguridad antes de ejecutar las cláusulas SQL, digamos, db_prod_20181123_1453, y cruzaba los dedos para que no la tuviese que restaurar en lugar de la db_prod y volver a ver cómo resolver el problema de otra manera.

Cuando todo aquello se acabó, volví a la calma de "los datos no se tocan", y así he seguido hasta ahora. Toda esta historia ni tiene que ver con que esté volviendo a hacer UPSERT de decenas de miles de lineas en una db en prod, sino que me está tocando construir algunas piezas de una migración con Entity Framework a mano. Aunque no sea lo mismo, ha resucitado los fantasmas de trabajar en el data chaos. Durante aquella época aprendí a manejar muy bien los UPSERT, cursores múltiples, Sublime Text, Heidi SQL, SSMS y en general desarrollé una navaja suiza para el caos que espero no tener que utilizar nunca. Aun algún compañero, cuando comparto pantalla y edito con VS Code me pregunta "oye, un día nos tienes que enseñar cómo manejas tan bien los cursores múltiples". En ese momento miro al vacío durante unos segundos y recuerdos los gritos, las bombas, el vietcong sobre nosotros, el napalm y ahogo un grito de desesperación en un Sure, whatever.

via GIPHY

Photo by Peter Herrmann on Unsplash

Leave a comment