La Habilidad Blanda Que Hace Que Envíes Más Código Que Cualquier Framework
Resumen
La forma más rápida de frenar un equipo de desarrollo no es el mal código — es la mala comunicación. Aprendí esto a través de malentendidos dolorosos con mi propio CTO, al enviar código roto porque era demasiado orgulloso para preguntar, y al ver cómo el ego destruye la velocidad. Ya sea que estés haciendo vibe coding con Claude o pair programming con un humano, la habilidad que más importa es la que nadie enseña: comunícate con claridad, admite cuando te equivocas, y arréglalo rápido.
Necesito contarte sobre una pelea que tuve con mi CTO.
No fue una pelea a gritos — los ingenieros no hacemos eso. Hacemos algo peor. Nos quedamos callados. Nos ponemos pasivo-agresivos. Hacemos push de código que "técnicamente cumple con los requisitos" mientras hervimos por dentro porque los requisitos estaban mal. Escribimos mensajes de commit con un poquito de actitud extra. Decimos "como lo discutimos anteriormente" en Slack, que en lenguaje de ingeniero significa "te lo dije y tengo las pruebas."
He hecho todo esto. No estoy orgulloso. Pero te lo cuento porque si has estado en un entorno de ingeniería acelerado por más de seis meses, probablemente tú también lo has hecho. Y si no — dale tiempo.
Esto fue lo que pasó: yo tenía un enfoque técnico del que estaba seguro que era el correcto. Me metí de cabeza y lo construí. Tiempo significativo invertido. Entonces mi CTO regresa con una ráfaga de mensajes: "¿Por qué no hiciste esto? ¿Por qué SÍ hiciste esto? Me deberías haber dicho antes de hacer esto o aquello."
¿Mi primera reacción? Ponerme a la defensiva. ¡Mi enfoque era técnicamente correcto! ¡Mi código funcionaba!
Pero aquí está la cosa — él tenía el panorama completo. Había estado trabajando en este proyecto más tiempo que yo. Conocía el contexto que yo no tenía. Y cuando me alejé de mi ego y realmente escuché, me di cuenta: él tenía razón. No porque mi código estuviera mal, sino porque mi código no encajaba en la visión más grande que yo no había entendido completamente.
Ese momento de tragarme el orgullo y pensar "¿sabes qué? Él tiene razón" me enseñó más sobre ingeniería que cualquier libro técnico que haya leído.
La Habilidad Que Nadie Te Enseña
Los programas de ciencias de la computación te enseñan algoritmos, estructuras de datos y diseño de sistemas. Los bootcamps te enseñan React y cómo centrar un div. YouTube te enseña a construir un SaaS en un fin de semana. Nadie — y digo nadie — te enseña qué hacer cuando el código de tu compañero tumba producción y ambos se quedan mirando tratando de averiguar de quién es la culpa.
Nadie te enseña cómo decir "me equivoqué."
Nadie te enseña cómo escuchar "te equivocaste" sin que tu ego se prenda en llamas.
Nadie te enseña que la persona que puede hacer ambas cosas consistentemente es el ingeniero más valioso de cualquier equipo. No el que escribe el código más limpio. No el que sabe los comandos más oscuros de Vim. El que puede comunicarse con claridad, admitir errores rápidamente, y seguir entregando.
La Verdad Incómoda
En diez años de ingeniería, nunca he visto un proyecto fracasar por un problema técnico que no se pudiera resolver. He visto docenas fracasar por problemas de comunicación que nadie quería abordar. La tecnología nunca es el cuello de botella. Las personas sí.
Cuando La Cagas (Y Lo Vas a Hacer)
Déjame contarte sobre la vez que la cagué. No mi CTO — yo.
Estaba moviéndome rápido. Claude Code estaba rindiendo. Estaba entregando features como máquina. PRs volando, commits apilándose, velocidad por las nubes. Me sentía invencible. ¿Conoces esa sensación cuando la IA simplemente le está atinando y tú estás revisando código más rápido de lo que puedes leerlo?
Sí. Envié un bug. No uno pequeño. Uno de rompe-algo-visible-para-los-clientes.
Mi primer instinto — y soy honesto aquí porque creo que muchos ingenieros se van a identificar — fue buscar cómo enmarcarlo como "no fue del todo mi culpa." Tal vez los requisitos no estaban claros. Tal vez los tests debieron haberlo atrapado. Tal vez si el sprint se hubiera definido diferente...
¿Sabes qué? Tal vez todo eso era cierto. Pero nada de eso importaba. Lo que importaba era: yo lo envié, se rompió, y había que arreglarlo.
Esto es lo que debí haber hecho de inmediato (y lo que me he entrenado a hacer ahora):
El Protocolo de "La Cagué"
- Reconócelo. En voz alta. En público. No en un mensaje directo. En el canal del equipo. "Ey, introduje un bug en el flujo de pagos en el PR #247. Ya estoy en ello."
- No expliques. Aún no. A nadie le importa el por qué mientras la cosa está rota. Arregla primero, postmortem después.
- Revierte si puedes. Trágate el orgullo. ¿Ese hermoso PR en el que gastaste cuatro horas? Reviértelo. El código no tiene sentimientos. Tus usuarios sí.
- Arréglalo bien. Una vez que se apague el incendio, averigua qué realmente salió mal y arregla la causa raíz.
- Comparte lo que aprendiste. No como un mea culpa performativo, sino como un genuino "esto fue lo que pasó para que todos podamos evitarlo."
Línea de Tiempo de Respuesta a Bugs (Lo Que Hago Ahora)
───────────────────────────────────────────────────
0 min │ Noto el bug
1 min │ Publico en el canal del equipo: "Lo vi, ya estoy en ello"
5 min │ Evalúo: ¿puedo hacer hotfix o debería revertir?
10 min │ Revertir si hay duda (SIEMPRE revertir si hay duda)
15 min │ Confirmo que la reversión funcionó
30 min │ Empiezo con el arreglo apropiado
Luego │ Escribo qué pasó (sin culpas, solo hechos)
Lo que SOLÍA hacer:
0 min │ Noto el bug
0-45 min │ Entrar en pánico en silencio e intentar arreglarlo
│ antes de que alguien se dé cuenta
45 min │ Alguien se da cuenta
46 min │ Correr a explicar por qué no fue mi culpa
47 min │ Darme cuenta de que definitivamente fue mi culpa
48 min │ Arreglarlo mientras sudo
Nunca │ Hablar de eso de nuevo
La forma vieja es tentadora. La forma nueva es mejor. No solo éticamente — estratégicamente. Cuando reconoces errores rápido, construyes una reputación como alguien confiable incluso cuando las cosas salen mal. Y las cosas siempre salen mal.
El Arreglo Más Rápido Es la Reversión
Antes me resistía a revertir mi propio código. Se sentía como admitir la derrota. Ahora lo veo como la movida más segura que puedes hacer. "Envié algo roto, lo detecté, lo revertí, nadie fue afectado por más de 10 minutos, y tendré el arreglo apropiado al final del día." Eso no es debilidad. Eso es madurez de ingeniería.
Cuando Alguien Más La Caga
Ok, esta es la más difícil. Porque es fácil ser amable con tus propios errores (bueno, después de algo de práctica). Es mucho más difícil ser amable cuando el error de alguien más te está costando tiempo, energía, o sueño.
He estado en ambos lados de esto con mi CTO. Él ha tomado decisiones con las que no estuve de acuerdo. Algunas resultaron geniales — y tuve que tragarme mis palabras. Algunas no — y tuve que resistir las ganas de decir "te lo dije." (No siempre resistí. Estoy trabajando en ello.)
Esto es lo que he aprendido sobre estar del lado receptor del error de alguien más:
Dales la misma gracia que querrías para ti. Cuando la cagas, quieres comprensión, no un sermón. Así que cuando tu CTO, tu compañero de equipo, o tu dev junior envía algo roto, dales eso. "Oye, veo el problema. ¿Quieres que lo arreglemos juntos en pair?" es mil veces más productivo que "sabía que esto iba a pasar."
Separa la decisión de la persona. "Esa decisión de arquitectura no funcionó" es retroalimentación. "Siempre tomas malas decisiones de arquitectura" es un ataque. Lo primero lleva a mejorar. Lo segundo lleva a que alguien actualice su LinkedIn.
Ten la conversación, no el subtweet. Si no estás de acuerdo con una decisión, dilo directamente. A la persona. No en un comentario pasivo-agresivo en el code review. No en un hilo de Slack donde no los etiquetaron. No diciéndoles "bueno, en realidad..." en un standup. Ve y habla con ellos. Toma dos minutos y ahorra dos semanas de resentimiento.
Cómo los Ingenieros Realmente Se Comunican vs Cómo Deberían
──────────────────────────────────────────────────────
Lo que hacemos Lo que realmente funciona
────────────── ────────────────────────
Comentario pasivo-agresivo en PR → DM directo: "¿podemos hablar de esto?"
Desacuerdo silencioso → "Lo veo diferente, te explico por qué"
Construir en dirección opuesta → Llamada de 10 min para alinearse
ANTES de codear
"Como mencioné antes" → Realmente re-explicar con claridad
Esperar a que te den la razón → Comprometerse con la decisión del equipo
Ignorar el conflicto → Abordarlo mientras es pequeño
El Costo del Silencio
El bug más caro que he visto no estaba en el código. Fue un malentendido entre dos ingenieros que cada uno asumió que el otro entendía los requisitos. Ninguno preguntó. Ambos construyeron. Tres semanas de trabajo a la basura. ¡Tres semanas! Todo porque nadie dijo "oye, solo para asegurarnos de que estamos en la misma página..."
Comunicación en la Era del Código Asistido por IA
Esto es algo de lo que nadie está hablando lo suficiente: las herramientas de IA para código han hecho que las habilidades de comunicación sean más importantes, no menos.
Cuando estoy en Claude Code, puedo generar una feature completa en una hora que me habría tomado un día escribir manualmente. Eso es increíble. También es increíblemente peligroso — porque ahora puedo enviar requisitos mal entendidos a 10x de velocidad.
Piénsalo. Si malinterpreto lo que mi CTO quiere y estoy codeando manualmente, tal vez llegue al 30% antes de que detectemos la desconexión. Si estoy haciendo vibe coding con Claude, puede que envíe toda la feature, la despliegue, y la tenga corriendo en producción antes de que alguien se dé cuenta de que está resolviendo el problema equivocado.
La velocidad amplifica todo — incluyendo la mala comunicación.
La Lista de Verificación de Comunicación en la Era de la IA
Antes de empezar una feature ahora — especialmente cuando estoy a punto de soltar a Claude Code — paso por esto:
- ¿Realmente entiendo lo que estamos construyendo? No "creo que entiendo." ¿Puedo explicárselo de vuelta a la persona que lo pidió en una oración?
- ¿He confirmado mi entendimiento? Un mensaje de cinco segundos en Slack: "Solo para confirmar — queremos X que hace Y por la razón Z. ¿Correcto?"
- ¿Estoy tomando decisiones que deberían compartirse? Si estoy eligiendo entre dos enfoques, esa es una conversación de 30 segundos ahora o un refactor de 3 horas después.
- ¿Quién necesita saber que estoy trabajando en esto? Especialmente en un entorno acelerado, dos personas construyendo lo mismo pasa más seguido de lo que crees.
La Matriz de Comunicación-Velocidad
────────────────────────────────────────────
Código Manual Código Asistido por IA
───────────── ──────────────────────
Lento para codear Rápido para codear
Lento para malinterpretar Rápido para malinterpretar
Barato desalinearse CARO desalinearse
Tiempo para corregir El tiempo SE EVAPORA
Solución: Comunica MÁS mientras la velocidad aumenta
No menos. Más.
Tips Específicos para Flujos de Trabajo Asistidos por IA
Cuando uses Claude Code / Cursor / Codex:
-
Haz commits con mensajes claros. La IA no escribe tus mensajes de commit (bueno, puede, pero deberías revisarlos). Un mensaje de commit es una comunicación a tu yo del futuro y a tus compañeros de equipo. "arreglar cosas" no le sirve a nadie. "Arreglar idempotencia del webhook de pagos — cobros duplicados al reintentar en Stripe" le sirve a todos.
-
Las descripciones de los PR son tu voz. Cuando Claude escribe 400 líneas de código en 10 minutos, tu descripción del PR es la única forma en que tu reviewer sabe lo que pretendías. Escríbela para humanos. Explica el por qué, no solo el qué.
-
No dejes que la velocidad reemplace la comunicación. Me he cachado pensando "lo envío y explico después." Después nunca llega. O peor, después llega cuando alguien descubre que la feature no coincide con la especificación.
-
Señala la incertidumbre temprano. "No estoy 100% seguro de que esto sea lo que discutimos — ¿puedes echarle un ojo rápido antes de que siga avanzando?" cuesta 5 minutos. Enviar lo incorrecto y revertir cuesta un día.
La Regla de los 5 Minutos
Si estás a punto de pasar más de 30 minutos construyendo algo y tienes aunque sea un 10% de incertidumbre sobre los requisitos, detente y gasta 5 minutos confirmando. No puedo decirte cuántas veces esta regla me ha salvado. Bueno, en realidad sí puedo — es al menos una vez por semana. Eso son más de 50 días desperdiciados al año prevenidos por un hábito que toma 5 minutos.
Confianza vs Orgullo (Hay una Línea y La He Cruzado)
Déjame hacer una distinción que me tomó un tiempo vergonzosamente largo aprender:
Confianza es decir "creo que el enfoque A es mejor que el enfoque B, y esto es por qué."
Orgullo es negarte a cambiar al enfoque B cuando la evidencia muestra que estás equivocado.
La confianza es una feature. El orgullo es un bug. Y en un entorno acelerado, el orgullo es un bug caro porque mientras más tiempo te aferres a una decisión equivocada, más código se construye encima, y más dolorosa se vuelve la eventual reversión.
He estado en ambos lados de esto. He sido la persona defendiendo tercamente un enfoque que no estaba funcionando porque ya había invertido tiempo en él. (Falacia del costo hundido — sé cómo se llama, tengo un doctorado, y aun así caí en ella.) Y he visto a compañeros hacer lo mismo, demasiado orgullosos para decir "sabes qué, esto no está funcionando, intentemos por el otro lado."
Esto es lo que tragarse el orgullo realmente se ve en la práctica:
-
"Me equivoqué con la estrategia de caché. Tu enfoque es más simple y maneja mejor los casos extremos. Vamos con ese." — Esta oración toma 5 segundos en decirse y te gana más respeto que cualquier código ingenioso que escribas en tu vida.
-
"Pensé que esto tomaría dos días pero parece que van a ser cuatro. ¿Podemos re-definir el alcance?" — Esto no es fracaso. Esto es información. Tu equipo solo puede planificar alrededor de la realidad si compartes la realidad con ellos.
-
"No entiendo por qué lo estamos haciendo de esta manera. ¿Me puedes ayudar a ver qué me estoy perdiendo?" — Esta es la pregunta más poderosa en ingeniería y la que más le da miedo hacer a los ingenieros. Porque significa admitir que no sabes algo. Pero aquí está la cosa: todo el mundo ya sabe que no lo sabes todo. Pretender lo contrario no engaña a nadie — solo hace que confíen menos en ti.
Cómo Esto Realmente Te Beneficia
Sé lo que algunos están pensando. "Esto es muy blando. ¿Dónde está el código? Dame un patrón de diseño, no una sesión de terapia."
Justo. Aquí está el retorno de inversión, en términos de ingeniería:
Debugging Más Rápido
Cuando el equipo se comunica abiertamente, los bugs se encuentran más rápido. En vez de que una persona se quede mirando la pantalla por tres horas, alguien dice "ey, me topé con algo similar la semana pasada — revisa el webhook handler" y estás arreglado en 20 minutos. He visto equipos reducir su tiempo promedio de resolución a la mitad solo creando una cultura donde pedir ayuda no se ve como debilidad.
Menos Retrabajo
La mayor fuente de tiempo de ingeniería desperdiciado no es la deuda técnica. Es construir la cosa equivocada. Comunicación clara sobre requisitos, expectativas y restricciones previene el tipo de desperdicio más caro: hacer trabajo que se tira a la basura. Cada semana que no desperdicio reconstruyendo algo es una semana que paso construyendo algo nuevo.
Code Reviews Más Rápidos
Cuando escribes descripciones claras de PR, explicas tus decisiones, y señalas las partes de las que no estás seguro, los reviewers realmente pueden revisar en vez de hacer ingeniería inversa de tu intención. He visto tiempos de revisión de PR bajar de 2 días a 2 horas con solo... escribir mejores descripciones. Eso no es un cambio de proceso. Es un cambio de comunicación.
Seguridad Psicológica = Velocidad
Los equipos donde la gente se siente segura admitiendo errores, haciendo preguntas y estando en desacuerdo abiertamente son más rápidos. No porque sean "más amables" — porque no pierden tiempo en política, documentación para cubrirse las espaldas, y desacuerdos silenciosos que se pudren hasta convertirse en conflictos arquitectónicos en toda regla. El Proyecto Aristóteles de Google descubrió esto. Yo lo he vivido.
Mejor Colaboración con IA
Esta es meta, pero: las mismas habilidades de comunicación que te hacen mejor con humanos te hacen mejor haciendo prompts a la IA. Ser preciso sobre requisitos, explicar contexto, señalar restricciones — eso es literalmente ingeniería de prompts. Los ingenieros que se comunican bien con humanos escriben mejores prompts, obtienen mejor output de la IA, y entregan más rápido. Es la misma habilidad.
El Efecto Compuesto de la Buena Comunicación
──────────────────────────────────────────────
Semana 1: Requisitos claros → sin retrabajo +4 horas ahorradas
Semana 2: Resolución rápida de bugs por chat +3 horas ahorradas
Semana 3: Code reviews rápidos +5 horas ahorradas
Semana 4: Evité construir la feature equivocada +16 horas ahorradas
─────────────────────────────────────────────
Mes 1: ~28 horas ahorradas
Eso son 3.5 días de ingeniería. Por mes. Por persona.
Escala eso en un equipo de 5 y habrás ganado
un ingeniero fantasma que trabaja 17 días al mes
solo por hablar mejor entre ustedes.
La Conversación Que Ojalá Hubiera Tenido Antes
Déjame volver a mi CTO. Después de ese incidente donde me llamó la atención — los mensajes de "¿por qué no me dijiste?" — tuvimos una conversación real. No sobre la arquitectura. Sobre cómo trabajamos juntos.
Esto es lo que dije (más o menos):
Yo: "Tienes razón. Debí haber consultado antes de meterme de cabeza. Mi enfoque era técnicamente sólido, pero no tenía el panorama completo, y debí haber preguntado."
Él: "Y yo debería darte más contexto desde el inicio para que no estés adivinando."
Los dos: "Estamos en el mismo equipo. Actuemos como tal."
Esa conversación lo cambió todo. No porque dejamos de estar en desacuerdo — estamos en desacuerdo todo el tiempo. No estamos de acuerdo sobre arquitectura, prioridades, timelines, y ocasionalmente sobre si tabs o spaces es la respuesta correcta (son spaces, peléame). Pero ahora estamos en desacuerdo en voz alta. Estamos en desacuerdo en el momento, lo discutimos, tomamos una decisión, y seguimos adelante. No más meterse de cabeza sin alinearse. No más mensajes de commit pasivo-agresivos. No más tiempo desperdiciado.
También hicimos un pacto: si alguno de los dos está equivocado, lo dice. De inmediato. Sin ego. Sin "bueno técnicamente no me equivoqué sobre la cosa específica, me equivoqué sobre la cosa adyacente." Solo: "me equivoqué. Aquí está el arreglo." Y el trabajo del otro es decir "dale, gracias" y seguir adelante. No regodearse. No archivarlo como munición para después. Solo: "dale, gracias."
Suena simple. Es simple. También es la cosa más difícil que he hecho consistentemente en mi carrera, porque el ego es una droga potente y yo no soy inmune.
La Regla Que Hicimos
Si alguno de los dos se da cuenta de que está equivocado sobre algo — una decisión técnica, una llamada de prioridad, cualquier cosa — lo dice dentro de la hora. No mañana. No "cuando sea el momento adecuado." Dentro de la hora. Porque el costo de estar equivocado por una hora es casi nada. ¿El costo de estar equivocado por una semana porque eras demasiado orgulloso para hablar? Eso es dinero real, tiempo real, y daño real a la confianza.
Tips Prácticos (Porque Prometí Unos Útiles)
Bien, dije que iba a dar tips muy útiles. Aquí están. Tips dignos de pegar en un post-it en tu monitor:
1. Confirma antes de codear. Mensaje de cinco segundos: "Construyendo X que hace Y — ¿alineados?" Ahórrate un día.
2. Disiente en tiempo real, no en retrospectiva. Si crees que el enfoque está mal, dilo AHORA. No después de que falle. "Te lo dije" es la oración más inútil en ingeniería.
3. Revierte rápido, ego despacio. Si tu código rompe algo, revierte primero, arregla segundo, explica tercero. El orden importa.
4. Escribe descripciones de PR para humanos. Especialmente cuando la IA escribió el código. Tu reviewer no está revisando el código — está revisando tu juicio.
5. Di "no sé" más seguido. No es debilidad. Es el camino más rápido a la respuesta, porque alguien en tu equipo probablemente sí sabe.
6. Sepárate de tu código. Una crítica a tu PR no es una crítica a tu carácter. Sé que se siente así. No lo es. (Generalmente.)
7. Consulta antes de quedarte atorado. "Voy al 60% y no estoy seguro de esta parte" es útil. "Me pasé tres días en esto y todo está mal" es caro.
8. Cuando uses herramientas de IA, sobre-comunica la intención. Claude no sabe lo que tu equipo discutió en el standup. TÚ eres el puente entre la IA y el contexto del equipo. Documenta decisiones, comparte contexto, escríbelo.
9. Después de un conflicto, abórdalo. No una semana después. No "cuando las cosas se calmen." Hoy. Mientras más esperes, más grande se vuelve la historia en tu cabeza, y más difícil es decir "oye, sobre lo de hace rato..."
10. Asume buena intención. Después verifica. Tu CTO no está tratando de sabotearte. Tu compañero de equipo no está siendo difícil a propósito. Empieza desde esa suposición, y la mayoría de los conflictos se disuelven antes de empezar. Pero verifica — porque a veces SÍ hay problemas de proceso que necesitan abordarse, y confundir un problema sistémico con intención personal significa que ninguno se arregla.
El Punto
No estoy escribiendo esto porque ya lo tengo todo resuelto. Estoy escribiendo esto porque todavía lo estoy resolviendo. Cada semana me cacho cayendo en viejos patrones — quedarme callado cuando no estoy de acuerdo, ponerme a la defensiva cuando critican mi código, orgullo cuando debería ser flexible.
Pero esto es lo que sé con certeza: los ingenieros que más admiro no son los que escriben el código más brillante. Son los que se comunican con claridad, admiten errores con velocidad, y hacen que todos a su alrededor mejoren. Son los que pueden decir "me equivoqué" y decirlo en serio. Son los que pueden escuchar "te equivocaste" y aprender de ello.
En un mundo donde Claude Code puede escribir una feature en 10 minutos, el diferenciador ya no es la habilidad técnica. Es todo lo que rodea a la habilidad técnica. La comunicación. La colaboración. La humildad de saber que ser rápido no significa nada si eres rápido en la dirección equivocada.
Mi CTO y yo seguimos en desacuerdo regularmente. Probablemente siempre lo estaremos. Pero ahora estamos en desacuerdo como compañeros de equipo, no como rivales. Y nuestro equipo entrega más rápido por eso. No porque acordamos la arquitectura perfecta — porque acordamos el proceso perfecto: habla temprano, habla seguido, admite cuando te equivocas, y arréglalo antes de que se acumule.
Esa es la habilidad blanda que hace que envíes más código que cualquier framework. Y es la que realmente tienes que practicar, porque a diferencia de TypeScript o Kubernetes, ninguna herramienta de IA la va a aprender por ti.
¿Trabajas en un equipo acelerado y quieres hablar sobre construir una mejor cultura de ingeniería? Escríbeme. He cometido cada error de este artículo al menos dos veces, así que básicamente soy un experto en qué no hacer.
Frequently Asked Questions
No te pierdas nada
Artículos sobre IA, ingeniería y las lecciones que aprendo construyendo cosas. Sin spam, lo prometo.
Osvaldo Restrepo
Senior Full Stack AI & Software Engineer. Building production AI systems that solve real problems.