Posts

  • Desacuerdos técnicos
    Dos 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 CQRS
    En 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écnica
    Un 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 Flag
    Tu 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 Software
    “¿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 Keys
    Un 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…
  • Onboarding
    Primer 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 Builder
    ¿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)
    “¿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é Distribuido
    En 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…
  • Burnout
    Hace 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 Limit
    Publicaste 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:1
    En 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 Outbox
    Tu 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 commit
    Son 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 Bulkhead
    Tu 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 liderazgo
    Te 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 no
    Viernes, 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 impostor
    Está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 review
    Esto 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. 🧵