75 puntos por baeba 2025-12-24 | 5 comentarios | Compartir por WhatsApp

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

 
mhj5730 2025-12-30

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.

 
elbanic 2025-12-25

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).

 
mbh023 2025-12-24

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

 
bichi 2025-12-24

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)

 
baeba 2025-12-24
1. La habilidad de hacer preguntas y el capital social (Social Capital)
  • Ignorancia estratégica: Las preguntas de un senior no nacen de la ignorancia, sino que son un acto intencional para eliminar la incertidumbre. Una capacidad clave es hacer sin vergüenza preguntas básicas ("¿qué significa esta sigla?").
  • Uso del capital social: A diferencia de un junior, un senior ya tiene construido "capital social (confianza)", así que aunque haga "preguntas tontas" no será visto como alguien incapaz. Aprovechar eso para despejar la ambigüedad en una reunión es parte del rol de un senior.
  • Consideración del contexto político: Las preguntas directas pueden resultar amenazantes para managers que evitan la claridad. Por eso se requiere una gran habilidad política para elegir preguntas que sean seguras en ese contexto y, al mismo tiempo, hagan avanzar el proyecto.
2. Autonomía y gestión del riesgo (Autonomy & Risk)
  • Resolver problemas sin red de seguridad: La vara de un senior es poder abrirse paso (Plough through) y completar el trabajo por cuenta propia, incluso sin ayuda externa ni instrucciones claras.
  • Controlar el caos (Chaos): Más que buscar claridad absoluta, decide según la situación cuándo "detenerse" y cuándo "avanzar". En vez de esperar una spec perfecta, ejecuta y hace ship con supuestos razonables para reducir la confusión.
  • Asumir riesgos calculados: Toma decisiones técnicas audaces que un junior no podría tomar —como corregir en runtime código que no compila o lanzarse a un refactor grande— y se hace responsable del resultado.
3. Inflación de títulos y contradicciones estructurales en la contratación
  • Inflación de títulos (Title Inflation): Está muy extendida la práctica de ascender a senior a juniors que aún no están listos para cumplir métricas de desempeño. Eso genera una brecha entre el título y la capacidad real.
  • Límites del proceso de contratación: Las empresas contratan enfocándose solo en la capacidad de resolver problemas de algoritmos (LeetCode), en lugar de evaluar la habilidad de volver concretos requisitos ambiguos. Como resultado, se multiplica el perfil de "senior que no puede hacer nada si no hay spec".
  • Suplantación del rol de PM: Se da el fenómeno de que ingenieros senior terminan gastando tiempo en concretar una planificación incompleta (Half-baked spec) que dejó un PM flojo. Eso también refleja capacidad del ingeniero, pero a la vez evidencia ineficiencia organizacional.
4. Antigüedad (Tenure) simple vs. práctica deliberada
  • Diferencia cualitativa en la experiencia: Debe distinguirse claramente entre "10 años de crecimiento" y "repetir 10 veces 1 año de experiencia". Un verdadero senior se forma mediante práctica deliberada y retos fuera de su zona conocida.
  • If vs What-if: Un junior se enfoca en procesar las condiciones dadas (If), mientras que un senior asume y se prepara para qué pasaría si las condiciones cambian (What-if).
  • Definición de etapas de crecimiento: El criterio más común en la industria distingue entre "etapa con guía (Junior)" → "etapa de ejecución independiente (Regular)" → "etapa de guiar a otros (Senior)".
5. Visión escéptica sobre el título de senior
  • Simple nivel salarial (Pay Grade): Existe la opinión cínica de que el título de senior no es tanto un indicador de capacidad, sino apenas una clasificación administrativa creada por HR para fijar salarios.
  • Brecha entre empresas: La diferencia de capacidad y trato entre un senior de big tech (que resuelve alta ambigüedad y problemas de gran alcance) y un senior de una empresa común (simplemente alguien con mucha antigüedad) es enorme.