¿Madurez profesional en TI, qué separa a un Junior de un Senior?

Tiempo de lectura: 5 minutos
¿Madurez profesional en TI, qué separa a un Junior de un Senior?

Cuando hablamos de profesionales de tecnología, la eterna discusión que se suele tener es en qué momento se pasa de un nivel al otro, o cuantos niveles hay, qué implica estar en uno o el otro.

Niveles en ingeniería. ¿Dónde estoy?

Lo principal que hay que aclarar es que de forma general podríamos decir que cada empresa tiene su propia definición de lo que es un senior de acuerdo a su escala interna, además de que muchas veces tienen sus propios niveles, algunos sistemas por ejemplo manejan:

  • Ingenieros: L1, L2, L3, L4, L5
  • Trainee, Junior, Mid Level, Senior
  • Engineer I, Entry Level, Mid Level, Senior Engineer, Staff Engineer, Principal Engineer
  • Software Engineer, Senior Engineer, Staff Engineer, Principal Engineer, Distinguished Engineer / Fellow

Unos suenan más rimbombantes que otros, pero al final sólo quieren representar una cosa, el nivel de madurez como ingeniero de software que se puede medir por su capacidad para resolver problemas de forma autónoma, poder de análisis, pensamiento crítico, entendimiento de las herramientas de tecnología, conocimiento de diseño de sistemas, etc.

Lo primero que me interesa aclarar es que es un proceso, no se puede pasar de forma acelerada de un nivel inicial a uno de Senior sin haber experimentado y conocido diferentes problemáticas.

Aquí sin entrar en polémica hay muchas discusiones en torno a quienes se han desarrollado como autodidactas y quienes pasaron por una carrera profesional en alguna universidad o instituto. Al final realmente el resultado va a depender de cada uno.

He conocido ingenieros graduados de universidad y que sabían muy poco, así como autodidactas que le podían ganar al mejor de la clase de cualquier institución educativa.

Conocimientos por nivel

Para hacer más simple la comprensión, de forma general esto es lo que representa cada uno de los niveles.

Junior

  • Necesita supervisión
  • Tiene conocimientos básicos de software y hardware.
  • Maneja al menos un lenguaje de programación.
  • Participa en la planificación inicial del proyecto.
  • Trabaja en funciones y herramientas internas de software.

Mid Level

  • Capaz de realizar tareas técnicas con menos supervisión.
  • Entiende claramente el proceso de desarrollo, incluyendo análisis, desarrollo, implementación, etc.
  • Puede configurar un ambiente de desarrollo por sí mismo.
  • Identifica errores al hacer análisis de código, puede participar en peer reviews.
  • Puede implementar pruebas unitarias simples.

Senior

  • Puede supervisar y dirigir a un grupo de desarrolladores
  • Es capaz de entender el alcance de un proyecto, planificar y estimar el nivel de esfuerzo.
  • Es un mentor para desarrolladores junior y mid level.
  • Se encarga de las revisiones de código de sus compañeros.
  • Mejora la estructura y la calidad del código.

¿Qué aprender para avanzar en mi carrera?

Si bien hay cosas que sólo la experiencia nos puede dar, hay otras cosas que tienen un camino de crecimiento profesional bastante claro, de hecho es hacia allá donde muchas empresas buscan crear sus niveles de ingeniería, para poder saber cómo orientarlos y cómo debería ir avanzando dentro de ese camino.

Sin complicar mucho la explicación, algunas de las cosas que necesitas poder tener para pasar a un nivel más alto:

  • Diseño de sistemas
  • Análisis de complejidad de un algoritmo (Big-O)
  • Consideraciones de Escalabilidad
  • Herramientas de mejora de rendimiento

Lo primero que probablemente algunos vayan a decir es: y qué lenguaje debo aprender? o tengo que ser experto en un lenguaje de programación para ser senior?

La respuesta es: Te contratan por tu capacidad de resolución de problemas, no por un lenguaje en específico, o un cartón en la pared.

Con el paso del tiempo sí puedes convertirte en "experto" en un área o en una tecnología, pero no es un requisito previo para ser "Senior", sino la experiencia profesional y lo que al menos personalmente considero más importante es tener claros los conceptos base.

En una de las empresas en las que he trabajado me dijeron: lo que buscamos únicamente es buenos ingenieros, lo demás sé que lo podrán aprender (asumiendo que lo primero es cierto, que sean buenos ingenieros). Y es cierto, teniendo buenas bases el resto viene fácilmente.

Y con tener buenas bases me refiero a cosas como:

  • Conocer bien el manejo de estructuras de datos y algoritmos
  • Si es para web, conocer ingeniería web a profundidad
  • Entender el manejo de SCM (Software Configuration Management) y control de versiones
  • Entender patrones de diseño.
  • Conocer los principios de código limpio y cómo desarrollar algo que sea mantenible en el tiempo.

Todos estos conceptos son aplicables a cualquier espectro, ya sea con alguna tecnología en específico o un rol de un área en particular, ya sea front, como back end.

Pero no es un tema simplemente de tiempo, de decir en 3, 5 o 10 años seré senior, sino también de exponerse a más situaciones donde haya que aprender más y poner en práctica esas cosas.

En mi historia en particular eso se lo debo a haber sido muy curioso, pero además al haber trabajado mucho tiempo en agencias de desarrollo, nos veíamos obligados a conocer muchos escenarios y situaciones diferentes.

Seniority vs Especialización

Sólo para finalizar lo que se tiende a confundir y nombraba anteriormente es el ser alguien especializado en una herramienta, framework, lenguaje o similar.

Por ejemplo si llevo 5 años trabajando con React y me he especializado en desarrollar aplicaciones headless, ¿Soy un Senior en React? En teoría, es muy probable, pero no es garantía, porque va a depender del tipo de experiencias que se haya tenido durante ese tiempo.

Algunas preguntas que se me cruzan por la cabeza como para responder:

  • ¿Conoces a profundidad la herramienta / framework / lenguaje?
  • Eres capaz de tomar decisiones sobre el diseño arquitectónico de una aplicación basada en esa tecnología.
  • ¿Sabes cuáles son los problemas comunes y soluciones dentro de ese tipo de desarrollos?
  • Tienes claras las ventajas de implementar algo usando esa herramienta versus cualquier otra, o simplemente sin utilizarla?

Quizá no sean las preguntas perfectas, pero si puedes responder eso sin dificultad, entonces sí, eres un senior especializado en esa herramienta o lenguaje específico.

Tags: Software Engineering |Recruitment
Iván Campaña
Escrito por Iván Campaña
Informático, Emprendedor, Desarrollador y Curioso a tiempo completo.