Skip to content
Perspectivas e Iteraciones Entendiendo la IA: técnico, cotidiano y reflexiones.
← atrás

Dominando el Oficio: Habilidades Esenciales de un Ingeniero de Software Senior

31 de octubre de 2012 • 4 min de lectura

Dominando el Oficio: Habilidades Esenciales de un Ingeniero de Software Senior

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 usan patrones de diseño. Esta persona puede anticipar los cuellos de botella de rendimiento, pero sabe que no debe pre-optimizar. Esta persona aprovechará la programación asíncrona, colas, caché, logging, 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 y diseño orientado a objetos, esto no es absoluto ya que 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 es que pueden comunicar lo antes mencionado a sus pares.

¿Qué es la maestría? 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 internalicen una habilidad. Esto está escrito extensamente en el libro de Malcolm GladWell Outliers.

Algunos ejemplos en Outliers de Malcolm GladWell son:

Mozart su primer concierto a la temprana edad de 21 años. Lo cual al principio parece joven, pero había 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 durante 5 a 8 horas. Re-emergieron 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 había pasado casi la mitad de su joven vida programando. En 1975, solo tal vez 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. Mientras más repetición, más te vuelves consciente de las diferencias en cada repetición. Solo con esta perspicacia puedes mejorar.

Los títulos de la industria del software (Junior, Nivel Medio y Senior) son engañosos e inconsistentes de organización a organización. 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 por 5 años. Al trabajar con estas personas, muchas de ellas aún no habían comprendido la programación orientada a objetos, sin embargo eran considerados Desarrolladores Senior.

Debe haber una mejor manera 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 computadora. Proporciona una manera común y objetiva de medir el nivel de habilidad de un programador, que de otra manera se deja principalmente a la intuición.

Al observar a los ingenieros de software veo 4 niveles de habilidades: Luminaria, Senior, Nivel Medio y Junior.

Luminaria (10+ años) es alguien que ha dominado una habilidad y se ha propuesto mejorar su respectiva disciplina. 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 un fuerte entendimiento de patrones de diseño. Aprovechan la programación asíncrona, colas, caché, logging, seguridad y persistencia cuando es apropiado.

Es muy posible que un Senior nunca alcance Luminaria. Las Luminarias a menudo se encuentran hablando y escribiendo. Están tratando activamente de impactar su disciplina.

Nivel Medio (4 a 6 años, Nivel 2) es alguien que entiende la programación del día a día. Trabajan independientemente y crean soluciones robustas. Sin embargo, aún no han experimentado crear o mantener sistemas grandes o complejos. En general, los desarrolladores de Nivel Medio son excelentes con el desarrollo a nivel de componentes.

Junior (1 a 3 años, Nivel 1) es alguien que entiende los fundamentos de la programación. O tienen un título en ingeniería de software o ciencias de la computación o son autodidactas. Su código es continuamente revisado. Se les da orientación con respecto a algoritmos, mantenibilidad y estructura.

↑ Volver arriba

Autor: Chuck Conway se especializa en ingeniería de software e IA Generativa. Conéctate con él en redes sociales: X (@chuckconway) o visítalo en YouTube.