El secreto de un ingeniero que vale su salario: la habilidad de convertir lo desconocido (Ambiguity) en algo que se puede hacer
(terriblesoftware.org)Puntos clave:
- La diferencia decisiva entre un ingeniero senior y uno de nivel intermedio es la capacidad de concretar problemas inciertos y ambiguos.
- El valor de un senior no proviene de la habilidad de programar en sí misma, sino de eliminar los riesgos del proyecto y convertirlos en un plan ejecutable.
- Las prácticas actuales de contratación (como las pruebas de algoritmos) no logran evaluar esta capacidad.
- El verdadero crecimiento empieza al practicar la definición clara del problema antes de escribir código.
Introducción: repensar la definición de un ingeniero senior
- Por lo general, un ingeniero senior se define mediante una lista de habilidades diversas, como diseño de arquitectura, comunicación y liderazgo.
- Sin embargo, si dejamos de lado el título, el salario y los años de experiencia, la única habilidad central que distingue a un ingeniero senior o superior es la "capacidad de reducir la ambigüedad".
- Todas las demás capacidades (como la ejecución técnica) son resultados derivados de esta habilidad central.
Desarrollo
1. Diferencia en la forma de resolver problemas: claridad vs. ambigüedad
- Ingeniero de nivel intermedio (Mid-level): logra excelentes resultados cuando recibe especificaciones claras (Spec) y restricciones definidas. Es hábil para resolver problemas bien definidos.
- Ingeniero senior: se diferencia cuando recibe requerimientos vagos y abstractos, como "hay que mejorar el rendimiento", "están aumentando las quejas de los usuarios" o "hay que considerar la escalabilidad".
- El senior no solo ejecuta un problema ambiguo, sino que lo analiza, lo descompone y lo transforma en tareas concretas.
2. El rol central del senior es eliminar el riesgo del proyecto
-
Frente a un problema grande y abstracto, el ingeniero senior reduce la incertidumbre con enfoques como los siguientes:
-
Hacer preguntas esenciales que otros no hacen.
-
Separar las señales importantes del ruido (Noise).
-
Decidir qué debe ejecutarse de inmediato y qué puede posponerse.
-
Este proceso reduce el riesgo del proyecto (De-risking) y organiza el estado de "no saber qué es" en "pequeños proyectos ejecutables y elementos que hay que eliminar".
-
Cuando un senior hace esto bien, el proyecto avanza con fluidez y desde fuera parece fácil, pero en realidad es el resultado de una enorme cantidad de "trabajo invisible" realizado de antemano.
3. Enfoques concretos para resolver la ambigüedad
- Antes de programar, el ingeniero senior plantea preguntas como estas para aclarar el problema:
- La esencia del problema: más allá de la solución que creemos querer, ¿cuál es el problema real de fondo que intentamos resolver?
- Definición del usuario: ¿el dolor de quién, exactamente, estamos tratando de resolver? (evitar la palabra amplia "usuario")
- Validación de supuestos: ¿qué supuestos incorrectos están ocultos en el plan actual?
- Evaluación de riesgo: ¿cuál es el peor escenario si nuestro juicio está equivocado?
4. Los límites del sistema de contratación y la mala selección de seniors
- La mayoría de las empresas contrata centrándose en listas de tecnologías o en la capacidad de resolver problemas algorítmicos (LeetCode).
- Ese enfoque no verifica la capacidad de convertir requerimientos de producto ambiguos en un plan ejecutable.
- Como resultado, se multiplican los ingenieros "senior solo de nombre": muy buenos programando, pero incapaces de avanzar ante especificaciones incompletas.
Conclusión: recomendaciones para crecer
- La arquitectura y la capacidad de comunicación también son importantes, pero solo generan valor después de que queda claro "qué hay que construir".
- La excelencia técnica sin haber reducido la ambigüedad no es más que "resolver con elegancia el problema equivocado".
- El criterio para saber si estás en nivel senior depende de si, al recibir una tarea abstracta, esperas a que alguien más la aclare o si tú mismo la vuelves lo bastante concreta para que el equipo pueda ejecutarla.
- Como esto no es un talento innato sino una habilidad que se practica, cuando recibas un ticket ambiguo debes empezar por entrenarte en concretar el problema, en vez de ponerte a programar de inmediato.
5 comentarios
Yo también creo que el proceso de evaluar a desarrolladores senior con una "prueba de código algorítmico" es... una limitación del sistema de contratación. Pienso que un desarrollador senior que realmente justifica su salario es alguien que se ha acercado a la esencia del problema, o que puede llegar a acercarse a ella.
Aprendo en este texto que depende de la perspectiva de cada quien. Según mi criterio, el estándar para distinguir a un ingeniero senior de uno de nivel medio es simplemente el alcance.
Concretar la ambigüedad es una aptitud básica de un ingeniero, y me parece que desde el nivel medio ya debería poder hacer esto para que el título de ingeniero le quede bien. Así que, para mí, este texto podría servir como criterio para diferenciar a un ingeniero de nivel medio de un ingeniero principiante (associate).
La excelencia técnica en un estado en el que no se ha podido definir claramente el problema
no es más que «resolver con elegancia el problema equivocado».
Una frase que de verdad da escalofríos
En una prueba para desarrollador senior, hasta una prueba de programación puede entenderse,
pero si ponen problemas de algoritmos, resulta demasiado absurdo (fue tan desconcertante que ni siquiera lo recuerdo)
1. La habilidad de hacer preguntas y el capital social (Social Capital)
2. Autonomía y gestión del riesgo (Autonomy & Risk)
3. Inflación de títulos y contradicciones estructurales en la contratación
4. Antigüedad (Tenure) simple vs. práctica deliberada
If), mientras que un senior asume y se prepara para qué pasaría si las condiciones cambian (What-if).5. Visión escéptica sobre el título de senior