Diferencias entre programadores Junior, Semi Senior y Senior


¿Cuáles son las principales diferencias entre un programador junior, un semi senior y un senior?

Durante las últimas semanas recibí algunas consultas sobre este tema, lo que me motivó a escribir este artículo.

No es un tema de simple respuesta. Incluso buscando en Google no se encuentran respuestas maravillosas sobre el asunto.

Lo que sucede en realidad es que las diferencias entre los distintos “niveles” dependen de las necesidades y la cultura de cada organización y de cada equipo. En distintos entornos lo que diferencia a un senior de un junior puede variar.
En algunas organizaciones la diferencia solo está dada por la cantidad de años de experiencia laboral que la persona tenga, en otros casos depende del grado de conocimiento técnico y en otros está asociado a la capacidad de la persona de gestionar proactivamente su trabajo.

Lo que no tiene cuestionamientos es que se trata de una temática sumamente sensible. Habitualmente la remuneración del ingeniero de software se asocia a su nivel de seniority, así que seré lo más cuidadoso posible al presentar mis reflexiones al respecto.

En este artículo comparto algunos de los criterios que pueden ayudar a definir el nivel de seniority de una persona. Cada uno de los indicadores puede tener más o menos importancia de acuerdo a cada organización (al final del artículo incluiré una encuesta para conocer tu opinión).

Si el lector es el Gerente del equipo, le aconsejo que asigne una ponderación a cada uno de los indicadores antes de aplicarlos.
Si en cambio es un programador, mi sugerencia es que apunte a dominar todos y cada uno de los aspectos aprovechando las oportunidades que se le presenten para su desarrollo.
Si el lector es el Gerente de Recursos Humanos, mi consejo es que desarrolle un plan de carrera claro para que cada integrante de la empresa sepa qué aspectos debe desarrollar para poder aspirar al siguiente nivel de responsabilidades (y salarial, por supuesto).

Experiencia laboral

Cantidad de años de experiencia laboral en informática.
No cuentan los trabajos prácticos realizados durante sus estudios. Tampoco suma si la persona trabajó 2 años atendiendo una agencia de viajes.

Junior: Menos de 2 años de experiencia.
Semi Senior: De 2 a 6 años de experiencia.
Senior: Más de 6 años de experiencia.

Conocimientos técnicos

Principalmente referido a las herramientas, tecnologías, lenguajes de programación, paradigmas de programación, base de datos, arquitecturas, etc. que deba utilizar para cumplir sus labores.

Junior: Para desempeñarse suele requerir acompañamiento. El código que genera puede presentar mayor cantidad de bugs de lo esperado. Probablemente no maneja todas las herramientas que se necesitan para la tarea.
Semi Senior: Técnicamente autosuficiente. Puede desarrollar funcionalidades más complejas y ejecutar proyectos de mayor envergadura. Pero no es un crack y todavía comete errores “evitables”.
Senior: Es referente técnico dentro del equipo. Su conocimiento le permite colaborar en definiciones arquitectónicas y desarrollar los proyectos más desafiantes. Su código funciona, es bueno y fácil de mantener.

Conocimientos funcionales

Relacionado a los procesos, metodologías, estándares, circuitos requeridos para cumplir sus labores.

Junior: Para desempeñarse suele requerir cierto nivel de acompañamiento. No conoce todos los procesos, ni los estándares. No es experto en los temas propios del negocio.
Semi Senior: Maneja los circuitos lo suficiente como para desempeñarse. Respeta los estándares y metodologías. Conoce buena parte de los procesos del negocio.
Senior: Ayuda a definir procesos, metodologías, estándares y circuitos. Por supuesto cumple los existentes.

Proactividad

Indicando si la persona espera a que le asignen sus tarea o si por el contrario toma una actitud de mayor iniciativa.

Junior: Necesita que frecuentemente le definan su trabajo. Está a la espera del siguiente pedido. Cuando tiene tiempo libre no sabe con qué seguir. Depende de otros para avanzar con sus tareas.
Semi Senior: Se preocupa por aprovechar mejor su tiempo. Pide nuevas asignaciones cuando tiene tiempo disponible y es autosuficiente para llevar adelante una gran parte de sus tareas.
Senior: No solamente recibe requerimientos, sino que los busca y genera. En muchas oportunidades es él quien le genera asignaciones nuevas a su superior.

Seguimiento requerido

Atención que requiere de su superior inmediato.

Junior: Requiere seguimiento diario a nivel detallado.
Semi Senior: Requiere seguimiento semanal y a nivel general.
Senior: Proactivamente reporta el estado y avance de sus tareas.

Indicadores de productividad

Indicadores varios relacionados con el trabajo que realiza

Junior: Calidad: Baja/Media  -  Productividad: Baja/Media  -  Innovación: Poca o Nula
Semi Senior: Calidad: Media  -  Productividad: Media  -  Innovación: Poca
Senior: Calidad: Alta  -  Productividad: Alta  -  Innovación: Alta

Cumplimiento de fechas

Cumplimiento de las fechas de entrega pautadas. Se aplica a las tareas de análisis, desarrollos, documentación, reporting, etc.

Junior: La mayoría de las veces no cumple con sus estimaciones.
Semi Senior: A veces cumple, a veces no.
Senior: Siempre cumple. Cuando surge un desvío (inevitablemente) lo informa adecuadamente y con anticipación.

Respuesta bajo presión

Referido a situaciones extremas… no a la corrida semanal para cumplir con la fecha de entrega del siguiente release en producción.

Junior: Le pueden pasar alguna de las siguientes cosas:
- Se bloquea
- Se angustia
- Se confunde
- Se estresa
El resultado de su trabajo en una situación de presión no es bueno.

Semi Senior: Le pueden pasar alguna de las siguientes cosas:
- Se enoja
- Se defiende
- Se distancia (se borra)
- Se resigna
El resultado de su trabajo en una situación de presión a pesar de todo, es bueno.

Senior: Le pueden pasar alguna de las siguientes cosas:
- Se entusiasma
- Se compromete
- Se hace cargo
- Se inspira
El resultado de su trabajo en una situación de presión puede llegar a ser asombroso.

Relación interpersonal

(Gracias a Javier Scavino por mencionar este aspecto).

Más allá de los conocimientos y capacidades de una persona, la habilidad de comunicarse con su entorno es fundamental para su desarrollo profesional.

Junior: Puede tener dificultades para transmitir sus ideas con claridad. No logra arribar a conclusiones concretables. No siempre sabe interactuar con otras personas de forma colaborativa y profesional.
Semi Senior: Se hace entender pero no logra ganarse la simpatía ni despierta la vocación de sus colaboradores para acompañarlo en sus sugerencias. Se permite escuchar otros puntos de vista pero sigue intentando que sean sus ideas (buenas y malas) las que prevalecen.
Senior: Es bueno comunicando, pero principalmente escuchando. Puede participar en desiciones de alto nivel y colaborar si es necesario en actividades más operativas privilegiando el resultado y la calidad de las relaciones por sobre su autoría en las ideas.

Vale la pena mencionar que la misma persona puede tener características de Senior en un aspecto y de Junior en otro.

Me interesaría saber cuáles de estos criterios te parecen los más importantes a la hora de determinar el nivel de seniority de un desarrollador. En la siguiente encuesta podrás marcar hasta 3 opciones.

¿Cuáles le parece que son los 3 criterios más importantes para diferenciar programadores Sr, SSr y Jr?

Ver Resultados

Loading ... Loading ...
  1. #1 by Gabriel Sosa on 11 Septiembre 2008 - 12:03

    muy buen articulo!

  2. #2 by dsalama on 21 Octubre 2008 - 15:58

    Gracias Gaby!

  3. #3 by Martín Dominguez on 7 Noviembre 2008 - 14:53

    Diego, me parece un artículo muy interesante. No estoy de acuerdo con gran parte y la verdad se me ocurren innumerables ejemplos donde se refutan puntos que vos exponés. Sin embargo no puedo hacer de ésto una discusión conceptual/teórica ya que carezco de tal base para poder emitir un juicio de valor. En mi caso particular, creo que la diferencia radical está en la curva de aprendizaje que pueda tener una persona. Aquí no aplica el conocimiento de herramientas, la experiencia previa en un área funcional, lenguaje de programación, etc. Si un recurso por joven (y junior) que sea tiene la capacidad de adquirir elevados conocimientos en tiempos mínimos puede ser como programador el mejor de los senior del mercado.Creo que el seniority como medida no es determinística y solo se aplica para determinar precios de referencia en el mercado. ¿Que sucedería con prestigiosos seniors a los que se les evaluara su coeficiente intelectual y su capacidad en habilidades blandas tales como comunicación gestual o trato interpersonal?. Te aseguro que mas de un empleador se llevaría una sorpresa. Un fuerte abrazo. Martín

  4. #4 by dsalama on 7 Noviembre 2008 - 16:16

    Hola Martín! Muchas gracias por tu comentario.

    Comprendo tu opinión y creo que estamos más de acuerdo de lo que parece.

    También opino que la curva de aprendizaje es fundamental para definir la evolución de una persona, pero considero que un programador Junior con la máxima capacidad de aprendizaje sigue siendo Junior… la diferencia es que probablemente en 6 meses ya puede ser considerado Semi Senior y en otros 6 meses como Senior.
    Mientras tanto a otra persona puede tomarle 5 años recorrer el mismo camino.

    Esto no contradice ninguno de los puntos mencionados. Es más, la antigüedad en el puesto o los años de experiencia no son lo que yo personalmente más valore al momento de evaluar el nivel de un desarrollador. Para mi, la capacidad de trabajar en equipo y de comunicarse con otras personas es más importante.

    Yo no se si llegaría a evaluar el coeficiente intelectual de un prestigioso Senior :-) pero sin duda para mi las habilidades blandas son fundamentales.

    Nuevamente gracias por el comentario, y completá la encuesta al final del artículo para ver qué opinan otros lectores.
    Abrazo!

  5. #5 by Fernando D. Frezzotti on 10 Noviembre 2008 - 8:41

    Hola Diego, me pareció muy bueno el artículo y me gustó la forma de encarar las diferentes áreas sobre las cuales se puede evaluar a un recurso. Me parece una forma de poner en claro diferentes tipos o formas de evaluar a un recurso y dependerá en cada cultura empresarial como se distribuyen las ponderaciones.

    Abrazo!

  6. #6 by dsalama on 10 Noviembre 2008 - 8:44

    Gracias Fernando por el mensaje.
    Veo que captaste la idea que quería transmitir :-)
    Abrazo.

  7. #7 by Federico Martinez on 21 Noviembre 2008 - 15:34

    Hola diego, ya que hablaste parte del tema, me gustaria que pudieras publicar una lista de cuanto es lo que gana cada uno de estos tipos de programadores a nivel internacional, como por ejemplo: cuanto gana un programador Senior en USA y cuanto gana en España, y asi por el estilo, creo que eso seria de mucha ayuda a muchos programadores que conozco y que no se saben valorar bien en el mercado globalizado en el que estamos actualmente.

    Saludos desde Mexico!

  8. #8 by Federico Martinez on 21 Noviembre 2008 - 15:38

    El post anterior tiene su razon de ser, la principal es que como aqui en mexico (no se si en los demas paises sea asi) la mayoria de las empresas contrata programadores por medio de compañias de outsourcing. Y que pasa con esto, pues resulta que ellos se traen gente de otras ciudades las cuales no saben nada de sueldos y aceptan lo que sea que se les de, abaratando mucho el mercado, lo cual nos impacta a los programadores que ya tenemos experiencia, y haciendo que el esfuerzo de haber estudiado esta profesion ya no se pague con justicia. Despues cuando se dan cuenta de lo que realmente valen ya es demasiado tarde por que ya malbarataron el mercado.

  9. #9 by dsalama on 25 Noviembre 2008 - 9:12

    Hola Federico.

    Te entiendo y supongo que lo mismo pasa en la mayoría de los países.
    También debe pasar con otras profesiones.

    Para ver información sobre sueldos se pueden utilizar algunos sitios como ser:
    http://www.salary.com
    http://www.indeed.com

    Puntualmente para México creo que lo mejor es que consultes esta página:
    http://www.cuantocobro.com/listado/tecnologias-de-la-informacion/mexico.php

    Saludos.
    Diego.

  10. #10 by Javier Scavino on 16 Diciembre 2008 - 9:57

    Excelente artículo, los puntos que planteas todos aportan bastante claridad al momento de tener que pensar (como programador) donde estoy parado y como evaluador que puedo esperar de cada uno.
    Si me parece que falta un punto mas que es la relación interpersonal de estos con el entorno, hemos visto muy altos niveles de Seniority , pero que en lo interpersonal en la relación con el otro (pares y superiores) los catalogaría como juniors.

    Quizás esta pueda ser la escala a nivel Comunicación Interpersonal

    Junior : No transmite claramente sus ideas por más brillantes que estas parezcan y por más conocimiento del negocio, no logra cerrar o arribar a una conclusión. Su relación con el entorno es débil y siempre quiere demostrar que tiene la razón.

    Semi-Senior: Comprende el negocio, tiene buenas ideas pero su comunicación es pobre y desestructurada y suele perderse la idea en el transcurso de ella. Su relación con el entorno es mas proactiva y se permite escuchar diversos puntos de vista, aunque sigue pensando que el tiene razón.

    Senior: Comunica, entiende el negocio y participa activamente en las decisiones de alto nivel, en el entorno es tomado como referente y sabiendo que tiene razón da el lugar a que otros opinen diferente permitiéndose el caso de modificar su postura si las diferentes opiniones lo justifican.

    Bueno, Diego, muy buen blog
    Saludos

  11. #11 by dsalama on 22 Diciembre 2008 - 10:17

    Hola Javier.
    Gracias por el comentario… tenés razón!
    Había olvidado incluir uno de los aspectos más importantes: madurez, profesionalismo y sentido común a la hora de relacionarse con otras personas.

    Lo voy a agregar en el artículo principal para que quede más completo.
    Gracias.

  12. #12 by Maxi on 26 Febrero 2009 - 23:51

    Muchas gracias, muy buen articulo, justamente hoy me preguntaron que señority tenia y no sabia bien que decirle, ahora tampoco lo se bien, ya que en algunos me concidero semi senior y en otros mas senior, pero por lo menos ahora tengo una idea mas clara.
    El articulo es muy completo, felicitaciones.

  13. #13 by Matias Marquez on 24 Marzo 2009 - 19:17

    Diego,

    Muchas gracias por el articulo, me resulto de mucha utilidad. Estoy tratando de armar un plan de carrera dentro de la empresa donde trabajo y me ayudo a aclarar ciertos puntos sobre los cuales no estaba seguro como tratarlos.

    Saludos.

  14. #14 by Alejandro Romero on 27 Marzo 2009 - 23:05

    Hace tiempo que buscaba referencias a este asunto del seniority. Creo que los conceptos explicados, se podrian extrapolar a otras areas de ingenieria, como la electromecanica. Soy de argentina y no lograba encontrar algun articulo que me orientara acerca de este tema y aunque se ha redactado especificamente para una especialidad, he podido reflexionar desde mi especialidad y encontre varios puntos en comun facilmente adaptables, a saber, seguimiento, proactividad, respuesta bajo presion, etc. Saludos.

  15. #15 by Esteban on 1 Abril 2009 - 23:49

    Hola. gracias por los datos que hay en esta página, es muy claro. Yo soy de santa fe y aquí se solicita en los avisos pedidos de programadores de estos 3 Junior semi y Senior, pero les hago una pregunta mia que puede sonarles a mucha ignorancia y no tengo problema en reconocerla.
    Para qué les sirve a una empresa un programador Junior habiendo Senior? o semi? son acaso ayudantes tipo peones o aprendices?
    o son necesesarios para integrar un equipo de trabajo en el que se necesita cantidades de programadores?

  16. #16 by Marcelo on 30 Abril 2009 - 14:30

    Diego…Excelente análisis!!!

  17. #17 by TheDonKillumiinati on 7 Junio 2009 - 2:01

    Muy buen post, me ayudo a comprender esas definiciones.

  18. #18 by superfav on 7 Julio 2009 - 13:59

    ¿Es lo mismo 6 años de experiencia que seis experiencias de un año?
    ¿Dónde está la educación formal? Que de jaquercitos, talkitechs y astronautas está lleno. Programadores muy pocos, tendiendo a cero.

  19. #19 by Lench on 22 Julio 2009 - 0:19

    excelente, gracias!!!

  20. #20 by cfpmx on 23 Agosto 2009 - 17:08

    Excelente, lo que andaba buscando y muy completo, y ¿Cuáles son las referencias?

  21. #21 by dsalama on 24 Agosto 2009 - 9:47

    Hola, gracias por el comentario. No hay referencias puntuales, es producto de mi experiencia y punto de vista personal.

  22. #22 by SEBASTIAN MAIOCCO on 11 Septiembre 2009 - 1:16

    Son mentiras de las empresas, nunca llegas a ser un Senior, siempre te falta algo y es motivo para bajarte el sueldo. 8 años es la vida de una herramienta, 6 años necesitas para ser Senior…cuando sale una herramienta despues de 2 años se comienza a implementar por lo que si sumas 6+2… tus conocimientos estan desactualizados y debes comenzar desde cero con otra herramienta… o sos muy joven, o sos muy viejo pero es claro que el conejo corre a la zanahoria con una caña de pezcar y nunca soy nadie… el sistema es asi, senior podes llegar a gozarlo 1 o 2 años y luego sos junior de nuevo (con mucha suerte).

  23. #23 by dsalama on 11 Septiembre 2009 - 17:12

    Hola Sebastián.

    Entiendo lo que decís, pero permitime que no esté del todo de acuerdo con tu opinión.
    Es verdad que si uno se refiere a la maestría sobre un lenguaje de desarrollo en particular cuando finalmente lo lográs, aparece algo nuevo.
    Sin embargo yo no creo que el seniority esté dado por el conocimiento de una herramienta o un lenguaje de programación puntual.

    Un programador senior en C++, por ejemplo, con muy poco esfuerzo logra el mismo nivel de dominio de otro lenguaje de programación en unos pocos meses.

    Además, el conocimiento específico es solo uno de los aspectos que te pueden definir como junior o senior.
    Tu actitud ante los desafíos, la capacidad de trabajar en equipo, la facilidad para abstraerte, ver más allá de lo evidente, interpretar los requerimientos que se hacen y los que no se hacen… todo eso aporta a tu perfil profesional más incluso que conocer PHP o Java o .Net o lo que sea.

    Así que no desesperes.
    Estar en sistemas es hermoso. Algunas empresas mienten, pero otras no :-)
    Mirá más allá de los lenguajes de programación, intentando nutrir tu experiencia profesional desde los otros aspectos que cuentan y buscá empresas que valoren al profesional que hay por detrás de los conocimientos técnicos específicos.

    Esa es mi humilde opinión.
    Saludos,
    Diego.

  24. #24 by José on 11 Octubre 2009 - 9:31

    He definido la duda q tenia, y tengo un concepto mas claro del tema.
    Gracias por el articulo es educativo .

  25. #25 by Juan on 18 Octubre 2009 - 22:41

    Y yo qué soy?
    Por un lado no tildo los casilleros de las listas de tecnologías que piden en los avisos: Java con Struts, Hibernate, etc, hasta 10 ó 12 acrónimos. Son cosas que conozco conceptualmente pero no tengo fluidez para codear.
    Por otra parte tengo una experiencia formidable en eso de hacer sistemas. Los sistemas que hice (casi) siempre fueron muy exitosos, por diseño y por implementación tendiente a la perfección.
    Y por otro lado más (cuántos lados hay?) no quiero ser manager: me gusta hacer las cosas yo, o estar con las manos en la masa piloteando teams cohesivos y pequeños desde adentro, dando coaching, con una misión.
    Los managers de ahora no valorizan mi experiencia, creo que por que puedo resolver problemas que ellos no saben que existen, problemas que no son de tecnología pura.
    La tecnología me encanta, pero mi foco está en el diseño de interfases de usuario (UI) de alta usabilidad, desde la concepción: “usable por diseño” es lo que estoy desarrollando.
    Puedo funcionar como analista funcional, y recientemente en una maniobra brillante salvé un cliente al detectar el core de su sitio aplicación web, que había sido omitido de la oferta. Les pareció que yo tenía en cuenta a los usuarios axcesivamente.
    Estoy trabajando pero quiero moverme. Me vendo como experto en usabilidad y encuentro que practicamente no hay demanda. Eso se hacerlo muy bien por que siempre lo hice y por que además desde 1998 estudio el tema, todos los días. Doy charlas sobre el tema y al público le gustan.
    Hace poco me ofrecí en una empresa que está buscando eso, funcionales con orientación usabilidad. No quisieron ni verme por que soy muy viejo.
    Es rara la industria de la TI por que de alguna manera valoriza la inexperiencia.
    Tal vez yo mismo, cuando tomaba gente, buscaba estudiantes para poderlos modelar a mi manera de trabajar, que en aquellas épocas era exótica. Por ejemplo código mantenible, bien documentado con comentarios y nombres significativos, estructurado e indentado, todos los chiches.
    Leyendo los Standish CHAOS Reports es obvio que esta manera de operar desperdicia billones de dólares al año, no era así hace unas décadas cuando los poryectos no tenían una taza de fracaso tan escandalosa.
    Espero una oportunidad de demostrar cómo puedo hacer que un proyecto sea notablemente exitoso, como hice siempre, décadas inventando software y vendiéndolo a empresas como XEROX, AMSA, IBM, Techint, you name it.
    Siento que no hay problemas de sistemas que no pueda resolver, excepto esa preferencia por los trainees que está resultando en una escalada de costos improductivos, como por ejemplo la burbuja de la internet.

  26. #26 by show de humor on 21 Octubre 2009 - 12:31

    Buenisimo el post.

    Gracias por compartir y divulgar.

  27. #27 by CrC on 10 Noviembre 2009 - 8:33

    Felicidades por el artículo. Lo pongo en favoritos por si algún día me asalta alguna duda.

  28. #28 by laom32 on 8 Enero 2010 - 0:39

    Muy buen articulo, tambien lo agregue a mis favoritos! xD
    Yo tambien tengo la misma pregunta que esteban…
    copy and paste! jeje xD
    Para qué les sirve a una empresa un programador Junior habiendo Senior? o semi? son acaso ayudantes tipo peones o aprendices?
    o son necesesarios para integrar un equipo de trabajo en el que se necesitan cantidades de programadores?

    Espero y nos puedas dar una opinión tuya, gracias!

  29. #29 by dsalama on 8 Enero 2010 - 12:08

    Gracias por tu comentario.
    Yo entiendo que lo mismo sucede en otros rubros.

    Por ejemplo, en un diario no todos los periodistas tienen 10 años de experiencia en la profesión. También se contratan personas que acaban de terminar su universidad, para que se vayan formando, aprendiendo y con el tiempo ganen seniority.

    También podemos pensar en jugadores jóvenes que se integran a equipos de fútbol, o ayudantes de cátedra en una facultad, médicos residentes en un hospital, abogados en un estudio legal, etc…

    Para mi en estructuras medianas y grandes, es sano que haya un balance.
    Los programadores junior de hoy que más se destaquen, serán seniors en unos años, y aquellos que en la actualidad ya son seniors, aspirarán a liderar proyectos.
    Si las personas no van evolucionando en sus profesiones, el equipo se estanca.

(No será publicado)