No me renovaron el contrato de 4 días semanales. Hice pausa. En encontrar otro laburo tardé 5 meses. Duré sólo 3.
En casi 20 años, es primera vez que me echan, y que veo a la industria informática así.
Pasaron cosas: de la oficina al full-remote, al ‘no volvemos’, y después un.. [ok, híbrido] y los efectos de eso.
Lectores habituales del blog saben que logré una semana laboral de cuatro días. Fue lo más alto de la fantasía post-covid: una corpo accedió porque no conseguían a nadie con experiencia para guíarlos al encarar su primer proyecto con Elixir. Codeamos un data-pipeline (dato->proceso->información, el abc del rubro); la corpo sumó otro lenguaje piola y, de mientras, estando full remote, la gocé laburando entre España, Portugal y Argentina motivado por el viento, las olas y el asado mundialista.
Al año, el contrato no se renovó, y fijate lo iluso que fui, que alucinaba extenderlo hacia tres días semanales.!¡
Además, no sabés como la parí buscando laburo después (apuntaba a remoto, eludiendo microservicios rest). Y la comí. Fuerte. Está compliquetti. Sumale que ya de vuelta en Europa suben los gastos y se te acelera el drenaje de ahorros. Todo apuntando a no tocar el stash de satoshis. Laburé de mozo en casamientos y a todo esto, en mi cruzada por defender el cinturón del remote, me encuentro con empresas auto-dándose palmaditas en los hombros, diciendo ser anti-discriminación mientras te invitan a informarles a cuál etnia pertenecés.
LinkedIn está roto. Todo. Buscar ahí es una mierda. Consumir su timeline sin orden cronológico es subirte a la autopista del engagement loop. Y postularte por ahí te la baja cuando te canta el cardumen de colegas que ya se postularon.
En ese sentido, LinkedIn me parece un útil WhatsApp profesional.
Esta búsqueda intensiva me dejó data que quería compartir. Resulta que muchas empresas emplean una clase de software llamado Applicant Tracking Sytem, donde además del seguimiento de candidatos (histórico de contactos, comentarios, etc) el ATS suele ponerle una puntuación a tu curriculum. Entonces, lo que hacen es definir un umbral y dejar afuera los candidatos que no lo cruzaron. Una caca, pero entendible.
Para contra restar esto nacieron páginas como resumeworded.com (caras)1, que te indican dónde pulir tu CV para que rankee mejor y al mismo tiempo generar una mejor impresión en la persona que los filtra.
Todo me recuerda al capítulo Deep Learning de South Park donde los alumnos usan chatGPT para escribir sus ensayos y el profe los corrige, también, con AI.
Encontrar ofertas no está fácil. En mi caso, no soy fullstack ni frontend ni nada de lo que hoy se demande a chorrazos. Mis primeros dos años en Europa, cuando estaba en Múnich, para Java me llegaban de 3 a 5 ofertas semanales, pero hoy noto como si el conocimiento digital estuviera tomando forma de commodity: hay mucho servicio contratable en Argentina, Colombia, Irán, Tailandia, Nigeria o donde sea – se desvanecen las fronteras de competitividad.
Job Spec Farming
Dos de las tres páginas que más me sirvieron para sourcear puestos son Circular.io y Otta.com. La otra es google pero usando filtros varios como fechas de indexado y palabras “específicas entre comillas” hasta la incorporación de la etiqueta más efectiva de todas – resultados de un único sitio –. Es mega-útil. Y acá, para saber en cuáles buscar, tenés que fijarte a través de cuál ATS solés subir tu CV.
Aunque hay muchos, notarás son pocas las páginas que aglomeran la mayoría de las Job Descriptions. Te dejo las que más uso.
Metele que están bien indexados; a tal punto que llegué a encontrar JDs subidas por devs/testers del mismo sitio:
site:lever.co java "multithreaded" site:workable.com elixir remote site:greenhouse.io scala finance site:jobs.personio.com COSA site:smartrecruiters.com java core remote
Video Entrevistas
La primera entrevista es con HR. Sus dos intereses son ver si tu perfil encaja y buscar inconsistencias. A pesar de que mis últimos dos puestos fueron con Elixir, las dinámicas del mercado me forzaron a postularme a puestos de Java. Ahí me toco fabricar razonamientos más creíbles, así que atentos.
El rechazo más claro, fuera de requisitos de presencialidad o baja paga, fue porque no dediqué más de dos minutos a investigar qué hacía la empresa. Así que preparate para explicar con tus palabras a qué se dedican ellos.
Sino te hablaron del tema, está bueno preguntar sobre la situación financiera de la compañía – te profesionaliza.
¿Te echaron en tu último puesto? Yo siempre les conté la verdad. La startup que me contrató no consiguió su primer cliente tan pronto como esperaban. A mi y a otro colega que estaba hacía 12 meses nos echaron para cuidar los egresos del tesoro. En la reunión de despedida me dijeron que les gustaba mi trabajo, que a empecé lento, agarré velocidad pero necesitaban un expertise más adecuado, y que dejaban abierta la puerta a que me postule de nuevo el año próximo; cuando todo vaya mejor.
Esa fue la historia. Ningún entrevistador me puso una cara rara ni hizo más preguntas. Infiero que pasa seguido (de hecho en el mercado hay mucha oferta de devs que hasta hace poco estaban trabajando para startups que ya no existen más).
Technical Challenges
Sigo sintiendo desprecio por los puestos donde exigen pruebas cronometradas, pero cuando el mercado está duro2 cagaste.
De ser en algo estilo HackerRank, te van a penalizar cuando la ventana pierda el focus. A veces también te hacen poner la cámara. Ambas son hackeables si compartís escritorio a otra compu y usás google images para convertir screenshot a texto y luego pegarlo en chatGPT. Un monitor justo arriba de otro me pareció la opción más neutral. Y si usás lentes, fijate que reflejan. Entonces mejor sacartelos y aumentar la resolución.
Los ejercicios para codear en casa jamás me llevaron las “menos de N horas” que dijeron debería llevarme. Creo que hay un sesgo de parte de quienes definen cuanto tiempo debería llevarte, dado que conocen la solución de antemano.
El trabajo espero estará bueno si el challenge no es cronometrado, y si quienes evalúan buscan sentir el orgullo que te llevó a entregar algo bello. Después también tenés las sesiones de live coding, que fue donde más me rechazaron. Fui mejorando mis skills a base de puras reprobaciones. El mejor consejo que implementé fue relacionado hacia como comunicaba a quienes observaban mi escritorio remotamente. Hasta el día de hoy, a menos hayas hecho mucho pair programming, seguramente tu diálogo era púramente interno. Ahora no es más así. Cambió. Entonces, de estar en el asiento del conductor, tu deber es verbalizar preguntas y razonamientos a fin de exhibir tu proceso creativo. Incluso trabado o nervioso, le terminás ofreciendo a tu copiloto una serie de puntos de referencia desde los que te podrá ayudar en caso de ser necesario. Si te ponés en su lugar, uno tiende a ser bien intencionado, especialmente con quien pudiera llegar a ser compañero nuestro.
Behavioral Interview
Vas a trabajar con humanos. Por eso si la entrevista tiene este enfoque, busco dejar claro que entiendo bien cómo relacionarme con personas; sobre todo en un ámbito profesional.
Our communication methods are still incredibly primitive. pic.twitter.com/bTFecHw89f
— Jameson Lopp (@lopp) January 29, 2024
Primero parto de la base que gente es bien intencionada. En la calle tuve que ajustar este enfoque, pero en la vida profesional actúo así por defecto. Si alguien me comunica algo que yo interprete como un ataque, lo más probable es que no lo sea. Y si lo es, lo débil será la idea. Segundo, recontra valoro el feedback negativo. Es cierto aprendemos mejor a base del ‘positive reinforcement’ pero la ausencia de bucles de retroalimentación negativa no es sana. No creo sea posible eliminarla sin inclinar nuestra personalidad hacia la tiranía.
Siempre también repito la frase de Warren Buffet *Praise by name, criticize by category*
Tendencias de Mercado durante el 2024
Compiladores + Lenguajes
Chris Lattner es padre de LLVM y MLIR y es también quien lideró el desarrollo de Swift: el lenguaje que reemplazó a Objective-C en los productos de Apple (LLVM contribuyó a la creación de Rust). Si te interesa ahondar más te recomiendo su primera entrevista con Lex Fridman. Ahora Chris se está encofando en MOJO, un lenguaje para ‘combinar la usabilidad de Python con la performance de C’. Lo que hacen es transformar instrucciones escritas con la sintaxis de Python en IR (Intermediate Representations), que se volvieron estándares, habilitando que cada fabricante de hardware las traduzca a instrucciones nativas y así adaptar las IR para permitir optimizaciones específicas3– a uno o un conjunto de chips corriendo en paralelo (pensá en AI, CUDA, etc)
Data #tothemoon
La tasa de creación de datos es exponencial. Este cohete ya despegó. Mis últimos dos trabajos fueron en el ámbito de volúmenes masivos de datos. Eso me llevó a ver que existe la profesión de Data Engineer, donde te piden expertise variado en herramientas de ETL. La movida funciona así: programadores Web/App/Microservices facilitan la interacción de los usuarios con el mundo digital. Todo evento se almacena. Nos encontramos con terabytes de información en distintos formatos. Alguien debe indexar, filtrar y proveer información estructurada con el propósito de identificar comportamientos potencialmente valiosos. Este suministro facilita las consultas que producirán en el área de Data Science y/o ML.
WebApps
En el mundo de microservicios java la tendencia continúa hacia el palo de Spring Boot. Se pide mucho arquitectura Hexagonal (input y outputs son 100% a través de interfaces, ergo mayor separación en capas y desacople de protocolos de comunicación, sea protobuf, REST, Kafka/Msg. Broker/EventBus). Llegó, y para bien también, todo lo relacionado a EventSourcing/DDD/CQRS.
Lenguajes
A Scala lo noto demandado más que nada para Data Engineer/Scientist. Con mis 3 meses de experiencia en Scala me descartan para aplicaciones más complejas (lo asigno a recruiters que no ven los 16+ de seniority que traería a la cancha, aunque también les es fácil encontrar gente).
Lo que era software de relojería que antes se hacía en Java hoy parece hacerse en Rust (te piden seas mega-pro, así se paga) o en Go (me interesa, y dicen el salto es fácil).
El atractivo de Elixir fomentó un subidón de oferta de programadores. El lenguaje y su arquitectura basada en el sistema de actores me encanta. Está bueno también para incubar productos web quitándole mucha carga el frontend al utilizar el stack PETAL (Phoenix + Elixir + Tailwind + Alpine + LiveView)
ChatGPT + AI + LangChain
Todos hemos usado ChatGPT para analizar código. Me bocharon de una empresa donde el Chief Scientist es Kent Beck (el padre de TDD/Extreme Programming), pero me ayudó a ver más claro cómo se viene la integración de LangChain con TDD. Lo chistoso fue que estaban buscando un Elixir con LLM y me llamaron porque en mi CV figura LLVM (lo confundieron con LLM).
En caso que me toque agarrar un laburo cero entretenido especulo buscaría automatizar parte del tedio repetitivo con LangChain.
Situación Mercado 2024
Está revuelto. Noto desequilibrio entre oferta y demanda. Si no estás afiladísimo para el puesto al que te postulás, es probable que tomen a otro candidato que sí lo esté. Esto cambió. Antes si tenías un toque de experiencia, te tomaban siempre y cuando demuestres capacidad reflexiva.
Muchas startups cerraron. Consultoras clásicas de Argentina que antes publicaban 25 puestos hoy no publican ni 2. Tengo 4 amigos directos del palo de Marketing que están sin laburo –ni siquiera los llaman para entrevistas. Ahí seguro tengamos más suerte (me responderán 1 de cada 5 híbridos, menos si es full-remote)
En Europa el sueldo para alguien como yo (16+ exp, java, elixir, + scala 3meses) ronda entre €65-85k. Hubo inflación. Mi sugerencia es que cuidés tu puesto y evités estancarte – ya que estás cambiando tu tiempo por dinero, por lo menos llevate conocimiento nuevo.
Si tenés la chance, sumaría mechar sesiones de pair/mob programming + TDD. Son extenuantes, uno puede sentirse incómodo, y podés sentir que te quitan tiempo que usabas para boludear, pero es al revés.
NeoUtilidad Monetaria
Lectores habituales del blog saben que siempre recomendé TransferWise. El problema, según entiendo de Wise, es múltiple. Esto es así porque hacen una verificación doble. Primero te hacen el KnowYourCustomer, y después te piden le transfieras dinero a una cuenta a tu nombre, que ellos crean, desde otra cuenta que también esté a tu nombre. Esto es una limitación, más que nada si vivís en un país con controles de capital. Que no puedas hacer lo que quieras con tu dinero, debería impulsarte a cambiar esto.
Entonces, además de recomendarte Wise, te voy a pasar otro banco. En este caso el banco es de Wences Casares. Con este otro neobanco vas a poder darle Wise la huella que te pedían, la cual es requisito previo si querés abrir las borderless accounts que Wise ofrece, al alcance de un click. Ahora, antes de decirte cuál es este banco, permitime volver a la multiplicidad de problemas de Wise. Ellos, que arrancaron dos años después de la aparición de bitcoin, tuvieron que arreglar con el sistema bancario tradicional y aceptar que no integrarían tecnología blockchain. Eso los impulsó a innovar más rápido que los bancosaurios; y se expandieron gracias a ofrecer tasas de cambio posicionadas a la misma distancia entre las puntas compradora y vendora. El Spread. Algunos ya apoyaron esto que hago, escribir, si te interesa (ganamos los dos) registrate acá.
El otro banco, se llama Xapo. Está registrado en Gibraltar. Sus depositantes tienen la protección del sistema jurídico inglés, por un monto de hasta 100 mil £/libras/GBP. Podés también depositar tus satoshis –están protegidos por la misma garantía–, y para quien le interese, entiendo UK no comparte información financiera con Argentina por cuestiones históricos. Podés recibir USDT, USDC y programarte un esquema para comprar bitcoin haciendo Dollar Cost Average (la manera más astuta y boba de atesorar satoshis)
There are two types of Bitcoin analysts. pic.twitter.com/TLuLyellKF
— Jameson Lopp (@lopp) January 26, 2021
Hal Finney advocating DCA. pic.twitter.com/hFG1XEh4r4
— Lightning Ventures (@ltngventures) May 15, 2023
Mostrame tu apoyo,4 y registrate en Xapo como referido mío. Tanto en Wise como en Xapo te es más beneficioso registrarte como referido que de otro modo. Por último, Xapo es pago. Entiendo que uno prefiera no pagar los u$s150 al año. Lo re-entiendo. Pero Xapo permite pagar de manera mensual. Y me jugaría a que podés pagar un mes cosa de verificar tu cuenta de Wise. Dudas en los comentarios!
- creo que rondaba los 40 USD, y si la prorratean entre amigos, sugeriría que todos suban el CV manteniendo mismo nombre, y alterando el resto… que a mi me prestaron la cuenta y saltó la ficha
- mandibulea
- como SIMD
- Metafórico, nada de mariconadas