drapergiggs.com

make software great again

Gettin' f*cking paid
14 de febrero de 2022

Gettin' f*cking paid

Bueno, esto es un rant sobre algo que me ha pasado recientemente. Pero como todo rant, puede ser divertido, instructivo e increíblemente parcial.

Llevo esperando cobrar desde el 15 de enero. Sí, llevo un mes de retraso esperando a cobrar el mes de enero. Cambiaron a la persona de contabilidad en la empresa para la que trabajo y todos los externos (freelance fuera de US) hemos tenido problemas al cobrar, aunque nadie falta por cobrar salvo yo. Todo el problema viene de que la nueva contable (freelance también) ha decidido cambiar la facturación a Bill.com y automatizar todo el proceso en lugar de hacerlo manualmente como lo hacía en el anterior contable. A mí me gustaba la idea pero es que todo ha salido mal.

Normalmente, en mi mundo del último año y medio, alrededor del 15 de cada mes yo emitía una factura y el 20 o así un mensajito en Slack me avisaban que me habían hecho la transferencia y el 24 aparecía en mi cuenta. No big deal. A veces era el 24, otras veces el 22 y otras veces el 27. Era orientativo pero llegaba. No había mucho delay.

En diciembre, nuestro querido contable decidió que quería un cambio de aires y a final de año dejó la empresa. Nuestro CEO decidió que era buena idea contratar a un freelance ya que no era un trabajo para tener a alguien full time, y bueno, probablemente fuera así y fuese lo mejor, así que no problem por nuestra parte, a tope con todo, adelante muchachos y a cobrar todo el mundo.

Ya a finales de enero, una compañera y yo comentamos que estábamos a veintipico y no sabíamos nada de nuestros sueldos. Avisamos y lo siguiente que sé es que el viernes 28 a las mil de la noche me llega un email de Bill.com (la plataforma para automatizar procesos de pago de nóminas) para que confirme mis datos y así puedan pagarme. Completo mis datos y me olvido, pensando que ya estaba todo hecho.

La siguiente semana nos preguntan si sabemos algo sobre nuestro sueldo, avisamos que no sabemos nada y cuando intentamos contactar con la contable, le cuesta contestar (porque es freelance y obviamente no va a estar full time con un cliente) y no conseguimos saber nada. Resulta que los datos estaban incorrectos (los de la empresa en Bill.com) y tenemos que volver a completar el formulario. Sin embargo, nos da de alta como ciudadanos estadounidenses y, claro, el proceso de introducción de datos es de repente un alta en Bill.com que no puedo completar porque no tengo número de teléfono móvil estadounidense. Mi compañera, que si que tiene número, me comenta que más tarde en el proceso te piden seguridad social y más cosas así que aun con número de teléfono no se puede completar. Intercambio de correos mediante, al final ponemos en copia al CTO, al CEO, gente de management y básicamente la mitad de la empresa para que el viernes 4 nos llegue el mail que nos había llegado una semana antes con el "completa tus datos para seguir suscrito a la VIDA pago mediante" y lo completamos y nos confirman que está el dinero en camino.

La siguiente semana me la tomo tranquilo. Sé que las transferencias internacionales tardan. Mucho. Si la transferencia desde Bill.com se hizo, digamos, a las 5 de la tarde, es probable que hasta el jueves siguiente no llegue el dinero, así que espero pacientemente hasta que el miércoles ya estoy genuinamente nervioso. El jueves empiezo a contactar con mi banco y consigo saber que en este lado nadie sabe nada de esa transferencia. Me compro un número estadounidense en Hushed y, efectivamente, el proceso es un proceso trampa, miento en muchos datos como seguridad social, dirección y demás hasta llegar a los datos para cobrar, en los que ya me da palo mentir por si fueran a usarlos para hacer la transferencia en teoría en curso, bueno, que me piden una cuenta estadounidense que no tengo.

En mi banco me comentan que pueden abrir una incidencia pero que necesitan más datos. Al pedir esos datos a la contable y al CEO, la contable contacta con Bill.com y resulta que Bill.com ha cancelado la transferencia porque no puede contactar con mi banco. Una semana después. Sin avisar a absolutamente nadie y solo cuando nuestra contable ha contactado con soporte de Bill.com. Ejeincreíble. Al final, la transferencia será manual esta vez y ya veremos como lo hacemos en un futuro.

He de decir que esto lo vi venir hace tiempo. Recibir dinero desde fuera de europa es una mierda. Tarda, los husos horarios son una mierda, las vacaciones no las controla nadie, el cambio de moneda no lo controlas y las comisiones son importantes. Cada nómina me llega con un 5%-7% menos de lo que debería llegar así que el camino es abrir una cuenta en US o una plataforma como Wise que permitan abrir cuentas en dólares estadounidenses. Por el momento, he aprendido varias cosas.

Los estadounidenses suelen ser bastante serios con las personas que quieren mantener. He de decir que no han dejado de preocuparse y manteniendo contacto conmigo y pidiéndome perdón y al final es la primera vez que trabajan con externos y esto al final es un tema de contabilidad que ellos no controlan. Ok, por esa parte bien. Por otro lado, creo que no ha habido buena comunicación con contabilidad. Este proceso no se puede empezar cuando tienes que hacer los ingresos de las nóminas/facturas de proveedores, sino un par de semanas antes o después, y tienes que saber que si no funciona tienes que tener un plan B porque tus proveedores pueden ser menos idiotas asertivos que yo y pueden dejar de prestarte servicio si a los 3 días no han recibido el pago.

Por otro lado: Bill.com tiene un departamento de atención al cliente inexistente. Abrí un ticket al que me respondieron días después avisándome que no podían hacer nada por mi y que probara a gritarles a los de mi empresa. Entiendo que no pueden estar en todas pero es un servicio bastante crítico para muchas personas y está dirigido a operar con trabajadores internacionalmente, quizá estaría bien tener gente a un horario diferente a 5AM-5PM PST. La comunicación de la incidencia fue inexistente y si no llega a abrir un ticket la contable no nos enteramos de nada.

En cualquier caso, todo esto me ha hecho replantearme la forma en la que trabajo con clientes internacionales y en la que recibo los pagos. Es probable que una cuenta en dólares sea la respuesta para ponérselo fácil a ellos y agilizar las cosas. Muchos me dicen que "ese trabajo es de la empresa que te paga" pero es que, oh honey, puede ser que no hayas mandado una factura para saber lo que hay que llegar a hacer para cobrar una maldita factura como autónomo. Podría seguir echando balones fuera y a lo mejor en abril empiezo a cobrar. Si la pro-actividad no la pongo yo es probable que nadie la ponga por mí y es probable que tenga que comer arroz durante meses a la espera de una transferencia que parece estar maldita.

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
¿Se puede trabajar como ingeniero informático solo por el dinero?
17 de enero de 2022

¿Se puede trabajar como ingeniero informático solo por el dinero?

Respuesta corta: si. Respuesta larga:

La ingeniería del software es un trabajo. Como en cualquier trabajo se trabaja ocho horas, tienes tus vacaciones pagadas acorde a tu convenio, tus horas establecidas y tienes unos compañeros determinados. Yo entiendo que trabajar como ingeniero no es diferente a trabajar en cualquier otro sitio. Vendes tu mano de obra por X dinero e intentas desarrollar tu trabajo como mejor puedes. Hay días buenos, hay días malos y hay días grises. Pero es un trabajo.

Cuando llega la hora: recoges, apagas el ordenador y te vas tan tranquilo a pillar el siguiente metro que sino no te da tiempo a ir al Carrefour. Luego descansas y al día siguiente la misma cantinela hasta que llega el fin de semana. No es diferente a ningún otro trabajo y no se le debe exigir a nadie más que hacer su propio trabajo. Por desgracia, me he encontrado con personas (muy motivadas) que quieren hacer creer que no es así.

La programación es un trabajo complejo, como podría serlo cocinar en un restaurante o cuidar a personas mayores. Requiere un set de herramientas sociales y técnicas limitado y se compone esencialmente de realizar trabajo repetitivo acorde a ciertos patrones y siguiendo unas pautas pero teniendo la capacidad para improvisar cuando haya alguna movida que se sale de lo normal. Ni más ni menos.

Como en cualquier trabajo hay gente que está de manera vocacional y gente que está porque es un trabajo cómodo, está bien pagado, hay buenas perspectivas de futuro y no parece que vaya a haber escasez de demanda laboral a medio plazo. Se conoce gente nueva, se aprende, se resuelven problemas complejos y difíciles, encuentras un ambiente dinámico pero, como en todo sector, en ocasiones te encuentras a gente que quiere convertir este trabajo en algo especial.

No es esta una disertación sobre lo difícil que es programar o ser buen ingeniero (ni de puta coña) sino simplemente un aviso a aquellas personas que desde fuera (o acercándose porque quieren dedicarse a esto) ven a los ingenieros como personas ultra motivadas y volcadas con todo lo que rodea a la profesión.

No te tiene que apasionar programar para ser un gran ingeniero, en todo caso no lo tienes que odiar. Es decir, la ingeniería informática se basa, principalmente, en resolver problemas y construir soluciones. Siempre, por el resto de nuestros días, nos dedicamos a eso, pero no porque no te guste hacer puzzles en tu tiempo libre dejas de hacerlo si te pagan 400€ al día. Si odias hacer puzzles es probable que tengas tus reticencias a hacerlo 8 horas al día durante 35 años, pero si no es así sigue siendo una buena opción laboral. En mi opinión hay que entender que un profesional no vocacional siempre puede ser un gran profesional.

Abrazar la programación con pasión y dedicarse en cuerpo y alma a ello está bien, es un bonus track, algo que seguramente te enseñe y te ayude a mejorar, pero no es algo imprescindible. Primero: porque no todo el mundo lo necesita, segundo: no es este un mundo en el que podamos dedicarle 2h extra al día a aprender nuevas tecnologías, nuevos patrones de diseño, ir a cursos, eventos o desarrollar side projects. Exigir cualquiera de estas cosas es bastante clasista y no determina la capacidad o profesionalidad de nadie.

De verdad, es que cansa un poco eh.

@shanselman #stitch with @pgt__ ♬ original sound - Scott Hanselman

Si un ingeniero es mal ingeniero no es por problemas de vocación o dedicación extra, sino por muchos otros factores y problemas que hay que analizar. Igualmente, que un ingeniero esté turbo motivado y quiera hacer mil cosas y probar mil tecnologías y tener mil años de experiencia laboral tampoco lo convierte automáticamente en un buen ingeniero. Abracemos a todo el que se acerque a la profesión, ya sea por vocación, dinero, pasión o porque le gusten resolver puzzles por 400$ al día.

Foto: Kaur Kristjan on Unsplash

Leave a comment