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.
Contenido
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 juniors 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.
Personalmente, creo hay que evolucionar y reconvertirse. Pero claro, eso depende de lo que uno quiera para su carrera.
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… Read more »