X

El seniority en la carrera de programador: de junior a senior

En esta entrada me voy a detener en el famoso seniority de la carrera de programador. Si no sabés de qué hablo, el seniority es algo así como los diferentes escalafones por los que pasa un programador a lo largo de su carrera.

El seniority implica la capacidad que un programador tiene sobre una tecnología y la experiencia que tiene en general al programar y manejarse en un área de desarrollo.

Además, en un entorno corporativo, el seniority establece el rango salarial que percibirá el programador.

Los tres seniorities son: junior, semi-senior y senior. Veamos las características de cada uno de estos perfiles.

Programador junior

El programador junior es el que recién comienza a desempeñarse como programador hasta que logra desarrollarse con determinada autonomía.

A nivel técnico, un programador junior tiene que saber programar. No es que comienza sin saber nada. Sin embargo, sus conocimientos no son demasiado profundos. Carece de experiencia práctica a la hora de encarar la resolución de problemas. A veces comete errores fácilmente y en ocasiones produce más bugs de los que resuelve.

El programador junior requiere bastante supervisión de otros programadores. No sólo en materia técnica sino también en cuanto a cómo manejarse en cuanto a procesos internos de gestión de proyectos.

Su participación en diseño y análisis es escasa y puede tener poco o nulo contacto con clientes.

En cuanto a tiempos, algunos creen que se necesitan unos dos años para dejar de ser junior. Pero esto es relativo. Algunas personas pueden pasar rápido esta etapa, mientras que otros lo son el resto de sus carreras.

Programador semi-senior

El programador semi-senior es el siguiente nivel del seniority de la carrera de programador. Se ubica entre el programador junior y el senior.

Un programador semi-senior dispone de suficiente dominio técnico y de procesos como para desempeñarse por cuenta propia, sin tanta supervisión.

A nivel técnico, ya no comete errores graves y puede resolver la mayoría de los problemas que se le plantean. Sin embargo, puede requerir asistencia en la resolución de algunos problemas puntuales.

Un programador con este perfil debe tener dominio de al menos una tecnología en particular. Su participación en diseño y análisis no es mucha pero a veces puede aportar ideas importantes, teniendo en cuenta que es quizás el programador que más en contacto está con el código.

El contacto con los clientes depende de la organización en la que trabaje, aunque generalmente un programador semi-senior está más capacitado para manejarse directamente con clientes.

Con respecto a los tiempos, tampoco hay nada claro. Depende mucho del programador y del lugar donde trabaje.

Programador senior

El programador senior es el que tiene dominio absoluto de una tecnología o un conjunto de tecnologías. Pero lo más importante es que tiene un bagaje de años que le permite resolver todo tipo de problemas técnicos.

Un programador senior, además, está capacitado para participar en el proceso de análisis de requerimientos y en decisiones de arquitectura y diseño.

Por supuesto, es el programador que más autonomía tiene para desempeñarse, el que más rápido trabaja y el que mejor calidad de código produce.

Otro rol que cumple el programador senior es el de guiar y formar a los programadores junior y semi-senior. Especialmente a los junior que recién comienzan.

Un programador senior también debería estar más capacitado para interactuar directamente con los clientes. Pero esto, como menciono en otros aspectos, depende mucho del lugar donde trabaje.

¿Se puede ser senior en una tecnología pero junior en otra?

La duda que se suele generar es si el seniority está ligado a una tecnología. En realidad no es así.

Si un programador tiene 15 años de experiencia con una tecnología y comienza a aprender otra, no será un junior de ninguna manera. Se supone que con la experiencia y capacidad que tiene, logrará asimilar rápidamente los conocimientos necesarios para aprender a programar en esta nueva tecnología.

Quizás no logre ser un senior, pero podríamos decir que en poco tiempo se podría convertir en semi-senior. Todo esto, siempre vinculado a lo técnico puntualmente.

Lo importante es que, en general, el seniority se asocia a la experiencia acumulada de un programador, más que al dominio específico de una tecnología. Y esto es así porque en el fondo, todos los lenguajes de programación son más o menos parecidos.

Por ende, muchas veces los problemas que aparecen son genéricos y un programador senior puede, gracias a su experiencia, resolver un problema en una tecnología que apenas conoce.

¿Qué hay más allá de estos escalafones?

Dependiendo de la organización puede haber líderes técnicos, líderes de proyectos y directores de proyecto. A su vez, hay algunos rangos técnicos como analistas.

Pero hay que entender que todos estos puestos son ocupados a su vez por programadores. Se supone que cuando uno alcanza un seniority determinado, debe avanzar a esos escalafones superiores, asumiendo responsabilidades que en gran medida están más lejos del código y más cerca de la gestión de proyectos y del trato con clientes.

A algunos programadores les aterra esto y prefieren seguir escribiendo código tranquilos.

Personalmente creo hay que evolucionar y reconvertirse. Pero claro, eso depende de lo que uno quiera para su carrera.

Categorías: Programación
Alejandro De Luca: Soy programador web freelancer y blogger. Desde hace más de 6 años me desempeño de forma independiente. Reúno en este espacio experiencias y pensamientos sobre el modo de vida freelancer.

Ver comentarios (2)

  • Hola Alejandro, ¿Es necesario tener una carrera universitaria para llegar a un nivel SR, lo empleadores toman en cuenta ésto, o solo en las habilidades?

    • Hola, Manuel.
      No es para nada necesario en tanto puedas resolver los problemas técnicos que se presentan. Yo no lo tuve este tiempo (aunque sí tuve formación universitaria hasta tercer/cuarto año de ingeniería). Para llegar a senior es cuestión de programar mucho, sumar horas y horas de escribir y leer código (y refactorizar). A esto te recomiendo que le sumes el estudio de la teoría por tu cuenta.

      Sí te diría que hay ciertos conceptos de algoritmia y estructuras de datos que son importantes dominar y que se suelen enseñar en las universidades. Pero de todos modos es algo que podés aprender por tu cuenta y que probablemente no apliques de forma cotidiana.

      De todos modos, siempre todo suma. Si está en tus posibilidades estudiar una carrera, adelante. Yo mismo estoy buscando alternativas para terminar mi carrera universitaria. Eso te puede ayudar a futuro también para proyectarte en puestos más alejados del código y más cercanos a otras áreas de gestión.

      Espero haberte orientado.
      Saludos