- Desacuerdos técnicosby Carlos MarinDos ingenieros senior, mismo nivel, sin jerarquía entre ellos. Uno quiere resolver el problema con un microservicio nuevo. El otro insiste en que un módulo dentro del monolito actual es suficiente y más simple. Ninguno está técnicamente “equivocado” — son dos trade-offs (intercambios) válidos con distintas prioridades. La conversación lleva cuarenta minutos, el tono empezó…
- Patrón CQRSby Carlos MarinEn el post de Event Sourcing vs CRUD mencionamos a CQRS como el complemento natural, sin desarrollarlo. Le toca su propio espacio, porque resuelve un problema muy común incluso en sistemas que no usan Event Sourcing en absoluto. Tenés un catálogo de productos. Las escrituras son poco frecuentes: un producto se actualiza una vez al…
- Mentoría Técnicaby Carlos MarinUn desarrollador junior de tu equipo está trabado con un bug hace dos horas. Se acerca a preguntarte. Tenés dos caminos: abrir su editor, arreglarlo vos en cinco minutos, y seguir con lo tuyo. O sentarte a su lado, hacer preguntas, y dejar que sea él quien llegue a la solución en veinte minutos. El…
- Feature Flagby Carlos MarinTu equipo pasó tres semanas construyendo un nuevo motor de búsqueda para el catálogo. El viernes está listo. ¿Lo despliegan y esperan que funcione perfecto para todos los usuarios al mismo tiempo, con el riesgo de que un bug afecte a toda la base de usuarios de un solo golpe? ¿O esperan al lunes con…
- Estimaciones de Softwareby Carlos Marin“¿Cuánto te toma esa tarea?” “Como tres días.” Terminó tomando dos semanas. Si esta escena te suena familiar, no estás solo — y probablemente no es porque seas mal estimando. Estimar software mal no es un defecto de carácter, es casi una constante universal de la profesión. ¿Por qué siempre nos equivocamos? El fenómeno tiene…
- Idempotency Keysby Carlos MarinUn cliente está en el checkout de tu tienda. Hace clic en “Pagar”. La conexión tarda un poco, no ve respuesta inmediata, y hace clic de nuevo. O peor: su app reintenta automáticamente tras un timeout, sin que el usuario haga nada. Resultado: dos cargos idénticos en su tarjeta por la misma orden. Ya mencionamos…
- Onboardingby Carlos MarinPrimer día. La persona nueva tiene sus credenciales… a medias. Nadie le explicó bien qué hace el equipo más allá del título del puesto. Le asignan una tarea “fácil para empezar” que en realidad requiere entender seis servicios distintos. A la hora de almuerzo, come sola porque nadie pensó en organizar algo. Para el viernes,…
- Patrón Builderby Carlos Marin¿Alguna vez llamaste a un constructor con ocho o diez parámetros y tuviste que contar con el dedo cuál posición correspondía a cuál campo? new HttpRequest(“GET”, url, null, null, true, 30, null, false, 3) — ¿cuál de esos booleanos era followRedirects y cuál era verifySSL? Sin abrir la definición de la clase, es imposible saberlo…
- Registro de decisiones de Arquitectura (ADRs)by Carlos Marin“¿Por qué usamos MongoDB acá si el resto del sistema es PostgreSQL?” Nadie en el equipo sabe la respuesta. La persona que tomó la decisión se fue de la empresa hace un año. Lo único que queda es el código, que no explica el porqué — solo el qué. Esta escena se repite en casi…
- Patrón Caché Distribuidoby Carlos MarinEn el post del Patrón Singleton vimos cómo cachear una lista de empleados dentro de una sola instancia de aplicación. Funciona perfecto — hasta que tu aplicación crece y ya no corre en una sola instancia, sino en diez, detrás de un balanceador de carga. Ahora cada instancia tiene su propio caché en memoria, desincronizado…
- Burnoutby Carlos MarinHace un tiempo hablamos del síndrome del impostor: esa voz que dice “no sé lo suficiente”. El burnout (agotamiento) es distinto y, en cierto modo, más peligroso: no es una voz que duda de tu capacidad, es el cuerpo y la mente diciendo “ya no puedo más” — a veces mucho antes de que la…
- Patrón Rate Limitby Carlos MarinPublicaste tu API pública. A la semana, un solo cliente — sin mala intención, probablemente un script mal configurado en un loop infinito — te está mandando 500 requests por segundo. Tu base de datos, diseñada para un tráfico mucho más razonable, empieza a responder lento. Y ese cliente sobrecargado está afectando a todos los…
- Reuniones 1:1by Carlos MarinEn el post sobre la transición de código a liderazgo mencioné las reuniones 1:1 (uno a uno) como uno de los hábitos clave de las primeras semanas. Prometí desarrollarlo aparte, y acá está: porque de todas las herramientas de un líder técnico, el 1:1 es probablemente la más subestimada — y la más fácil de…
- Patrón Outboxby Carlos MarinTu servicio de órdenes hace dos cosas cuando se crea una orden: guarda la orden en la base de datos, y publica un evento OrderCreated a Kafka para que el servicio de inventario y el de facturación se enteren. Código simple: ¿Qué pasa si el servidor se cae justo entre la línea 1 y la…
- Mensajes del commitby Carlos MarinSon las 11pm de un jueves, producción está fallando, y estás corriendo git log para entender qué cambió en las últimas semanas. Y ahí te encontrás con esto: Ninguno de esos mensajes te dice nada. No sabés qué se arregló, por qué, ni si ese “arreglo definitivo (creo)” tiene algo que ver con el bug…
- Patrón Bulkheadby Carlos MarinTu aplicación tiene un endpoint de checkout que llama a tres servicios: pagos, envíos y notificaciones. Un día, el servicio de notificaciones — el menos crítico de los tres, el que manda el correo de “tu orden fue recibida” — empieza a responder lento. Nada grave, pensarías. Pero a los cinco minutos, el checkout completo…
- Del código al liderazgoby Carlos MarinTe promovieron a tech lead (líder técnico). Felicidades. Ahora la pregunta incómoda: ¿alguien te explicó qué se supone que hagás? Para la mayoría, la respuesta es no. Un día sos la persona que más rápido resuelve tickets, y al siguiente estás en reuniones todo el día, tu equipo espera dirección, y esa sensación extraña aparece:…
- Cómo decir noby Carlos MarinViernes, 4:50pm. Llega el mensaje: “Necesitamos agregar este módulo al release del lunes. Es pequeño, ¿verdad que se puede?”. Vos sabés que no es pequeño. Sabés que “se puede” significa trabajar el fin de semana y entregar algo sin probar. Pero la palabra que sale de tu boca es: “Sí, claro, lo vemos”. Decir “no”…
- Síndrome del impostorby Carlos MarinEstás en una reunión técnica. Alguien menciona una tecnología que no conocés. Y en tu cabeza aparece esa voz: “En cualquier momento se van a dar cuenta de que no sé tanto como creen. Que llegué aquí de suerte.” Si esa voz te suena familiar, bienvenido al club. Es enorme. Ese fenómeno se conoce comúnmente…
- Feedback en code reviewby Carlos MarinEsto está mal, ¿por qué lo hiciste así?” — siete palabras que no enseñan nada y dejan a la otra persona a la defensiva por el resto del día. Dar buena retroalimentación técnica es una habilidad que se entrena, no un don. Seis técnicas para que tus code reviews construyan en lugar de destruir. 🧵