Publicaciones
Dominando el Oficio: Habilidades Esenciales de un Ingeniero de Software Senior
31 de octubre de 2012 • 4 min de lectura

Cuando escucho “Desarrollador Senior” pienso en alguien que ha dominado la programación. Pienso en una persona que puede diseñar, codificar y probar un sistema. Pueden hablar sobre arquitectura de sistemas o diseño de componentes. Entienden y utilizan patrones de diseño. Esta persona puede anticipar los cuellos de botella de rendimiento, pero sabe no pre-optimizar. Esta persona aprovechará la programación asincrónica, colas, almacenamiento en caché, registro, seguridad y persistencia cuando sea apropiado. Cuando se les pregunta, pueden dar una explicación detallada de su elección y los pros y contras. En la mayoría de los casos han dominado la programación orientada a objetos y el diseño, esto no es absoluto, otros lenguajes como javascript, F#, scheme son poderosos y no son orientados a objetos en esencia. Son expertos en gestión de riesgos y lo más importante de todo, pueden comunicar lo mencionado anteriormente a sus colegas.
¿Qué es el dominio? Existe una idea generalmente aceptada de que para dominar CUALQUIER habilidad se necesitan 10,000 horas de repetición para que el cuerpo y la mente humana comprendan e interioricen una habilidad. Esto está escrito en detalle en el libro Outliers de Malcolm Gladwell.
Algunos ejemplos en Outliers de Malcolm Gladwell son:
Mozart su primer concierto a la joven edad de 21 años. Lo que al principio parece joven, pero ha estado escribiendo música desde los 11 años.
The Beatles fueron inicialmente rechazados. Les dijeron que no tenían lo necesario y deberían considerar una línea de trabajo diferente. Pasaron 3 años en Alemania tocando aproximadamente 1200 veces en diferentes lugares, cada vez con una duración de 5 a 8 horas. Reaparecieron como The Beatles que conocemos y amamos hoy.
Y por último, Bill Gates a los 20 años abandonó Harvard para fundar Microsoft. Para algunos esto podría parecer tonto, pero considerando que a los 20 años había pasado casi la mitad de su joven vida programando. En 1975, solo quizás 50 personas en el mundo tenían la experiencia que él tenía. Su experiencia le dio la previsión para ver el futuro en Microsoft.
Peter Norvig también discute la regla de las 10,000 horas en su ensayo “Teach Yourself Programming in Ten Years”.
En el libro Mastery by George Leonard, se da gran detalle sobre cómo dominar una habilidad. Uno debe practicar la habilidad una y otra y otra vez. Cuanta más repetición, más consciente se vuelve de las diferencias en cada repetición. Solo con esta perspectiva puedes mejorar.
Los títulos de la industria del software (Junior, Mid-Level y Senior) son engañosos e inconsistentes de una organización a otra. He trabajado con empresas que definían a un Desarrollador Senior como alguien que tenía 5 años o más de experiencia. No hay mención a la calidad de la experiencia, solo que han estado sentados frente a una computadora durante 5 años. Al trabajar con estas personas, muchas de ellas aún no habían comprendido la programación orientada a objetos, pero se consideraban Desarrolladores Senior.
Debe haber una forma mejor y más objetiva de medir el conjunto de habilidades de un ingeniero de software. John Haugeland ha creado una matriz de habilidades para programadores de computadoras. Proporciona una forma común y objetiva de medir el nivel de habilidad de un programador, que de otro modo se deja principalmente a la intuición.
Al observar ingenieros de software, veo 4 niveles de habilidades: Luminary, Senior, Mid-Level y Junior.
Luminary (10+ años) es alguien que ha dominado una habilidad y se ha propuesto mejorar su disciplina respectiva. Algunos ejemplos incluyen: Ted Neward, Uncle Bob Martin, Donald Knuth, Oren Eini, Peter Norvig, Linus Torvalds. Esto puede cambiar dependiendo de tu conjunto de habilidades.
Senior (7 a 10+ años, Nivel 3) es alguien que ha pasado las últimas 10,000 horas programando en un género específico. Hay una comprensión sólida de los patrones de diseño. Aprovechan la programación asincrónica, colas, almacenamiento en caché, registro, seguridad y persistencia cuando sea apropiado.
Es muy posible que un Senior nunca alcance Luminary. Los Luminary a menudo se encuentran hablando y escribiendo. Están tratando activamente de impactar su disciplina.
Mid-Level (4 a 6 años, Nivel 2) es alguien que entiende la programación del día a día. Trabajan de forma independiente y crean soluciones robustas. Sin embargo, aún no han experimentado la creación o el mantenimiento de sistemas grandes o complejos. En general, los desarrolladores Mid-Level son excelentes con el desarrollo a nivel de componentes.
Junior (1 a 3 años, Nivel 1) es alguien que entiende los conceptos básicos de la programación. Tienen un título en ingeniería de software o informática o son autodidactas. Su código se revisa continuamente. Se proporciona orientación con respecto a algoritmos, mantenibilidad y estructura.
Autor: Chuck Conway es un Ingeniero de IA con casi 30 años de experiencia en ingeniería de software. Construye sistemas de IA prácticos—canalizaciones de contenido, agentes de infraestructura y herramientas que resuelven problemas reales—y comparte lo que está aprendiendo en el camino. Conéctate con él en redes sociales: X (@chuckconway) o visítalo en YouTube y en SubStack.