Me dijeron que me faltaba profundidad. Tenían razón.

learningmedium

javaconcurrenciabackendcarrera

Quise saber dónde estaba parado. Le pedí un code review honesto a un amigo desarrollador y el feedback fue preciso: buen código, buenos tests, pero sin profundidad en concurrencia y sistemas distribuidos. Así empecé a entender de verdad cómo funciona la ejecución concurrente en Java.

Problema

En algún momento quise saber dónde estaba parado de verdad. No con métricas ni con cursos — sino con alguien que pudiera mirar mi código y decirme algo honesto. Le pedí a un amigo desarrollador un code review sin filtro. El feedback fue preciso: buenos fundamentos, buen testing, buen código. Pero te falta profundidad en concurrencia y sistemas distribuidos. No fue duro. Fue exacto. Y me hizo ver algo que estaba ignorando: era cómodo resolviendo problemas conocidos, pero no estaba preparado para sistemas que escalan bajo carga real.

Solución

Arranqué por lo más básico que no entendía de verdad: CompletableFuture, ejecución asincrónica, diferencia real entre sync y async, cómo evitar bloqueos innecesarios. El cambio de mentalidad fue pasar de 'escribo código que corre' a 'escribo código que escala'. El trade-off clave: un código bloqueante es más fácil de escribir y debuggear, pero un código no-bloqueante escala mejor bajo carga. Aplicando esto en un endpoint de pricing, corrí en paralelo el servicio de usuarios, el checkeo de stock y el cálculo del precio con CompletableFuture.allOf(). Antes: 600ms ejecutando uno tras otro. Después: ~200ms porque los tres van en paralelo. La latencia total es la del más lento, no la suma de todos.

Aprendizaje

Ahora cuando escribo código pienso distinto: ¿qué thread ejecuta esto? ¿bloquea? ¿qué pasa con 500 requests simultáneos? No tengo todo resuelto. Todavía estoy aprendiendo patrones como retry, circuit breaker y timeouts. Pero pasé de usar herramientas a entenderlas.

TL;DR

Quise saber dónde estaba parado y pedí un code review honesto. El resultado: buen código sin profundidad en concurrencia. Empecé a estudiar CompletableFuture y ejecución asincrónica, y me encontré con un error de fondo: confundía 'funciona' con 'escala'. Ese cambio de mentalidad es lo que más me cambió.