Sunteți pe pagina 1din 6

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 el tema.

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, podría asignar una ponderación a cada uno de los
indicadores antes de aplicarlos.
Si en cambio es un programador, mi sugerencia es que intente dominar todos 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 ayude a comunicar
dentro de la compañía cuáles son los aspectos que más se valoran.

Experiencia laboral
Cantidad de años de experiencia laboral en informática.
No cuentan los trabajos prácticos realizados ni trabajos dentro de otras actividades.

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 e inspira a otros…
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
decisiones 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?

 Experiencia laboral
 Conocimientos técnicos
 Conocimientos funcionales
 Proactividad
 Seguimiento requerido
 Indicadores de productividad
 Cumplimiento de fechas
 Respuesta bajo presión
 Otros (aclararlos mediante un Comentario)

http://www.diegosalama.com/2008/09/03/diferencias-entre-programadores-junior-semi-senior-
y-senior/

¿Cuantos tipos de programadores existen y cuál es el mejor?


Si te doy las definiciones de escuela no las podrás empatar con la vida real. Así que te diré los
programadores modernos, en la vida real, generalmente a que se dedican y algunos comentarios.
(Ojo, la clasificación es mi opinión, me la acabo de inventar).
Podemos clasificar el trabajo de programadores en varios rubros. En términos generales:
a)-Por función (En un equipo de programación grande, cual es su labor)
b)-Por tecnología / lenguaje (Por el tipo de tecnologías empleadas)
c)-Por objetivo práctico (A que tipo de programas o mercados están enfocados)

A)-Por Función:
1-Desarrolladores Front End: Que son los que realizan las interfaces gráficas de usuario; ya sea en
HTML5, Jquery, QT4, .NET, ExtJS4, etc, etc... Son los programadores que se encargan de la GUI.
Este tipo de programadores son famosos por darle la FORMA final a un programa. Contrario a los
de Back End, ellos casi no crean clases, objetos o APIs, solo las utilizan para crear formularios,
Skins, Templates, Hojas de Estilo, etc.

2-Desarrolladores Back End: Que son los que se encargan del CORE de las aplicaciones. Programan
lo que hay detrás; saben de patrones de diseño, estructuras, arquitectura, clases, orientación a
objetos, unit testing, etc. Ellos son los que se llevan el trabajo rudo. Sin embargo, su trabajo
generalmente no se ve a pesar de formar la estructura de todo. Generalmente saben mucho de
C/C++, MVC, OOP, Singletons, Factory y otras tecnologías de desarrollo.

3-Equipo de QA (Quality Assurance): Son los testers de los equipos de desarrollo. Se sientan a
picarle al trabajo de los demás para encontrar errores. Si son juegos puede ser entretenido, pero
generalmente QA es un trabajo aburrido. Saben mucho de control de calidad, estándares,
normatividad, etc.

4-Diseñadores: Son los que crean el arte de un programa; los assets, sprites, canvas, dibujos,
animaciones, Flashes, etc. etc. No hay mucho que decir.

5-Team Leaders o Project Managers: Son los directores de la orquesta. Saben mucho de proyectos,
metodologías, trabajo en equipo, SCRUM, Xtreme Programming y se encargan de orquestar un
calendario de desarrollo y llevarlo a la práctica. Generalmente estuvieron muchos años de Back
End Developers.

http://davidjrodger.files.wordpress.com/...

B)-Por tecnología y Lenguaje: (NOTA: Tema muy polémico, para desatar guerras)

Hay decenas y decenas de lenguajes de programación. Pero para términos prácticos, existen 3
GRANDES competidores en infraestructura de programas que llevan la batuta de las tecnologías:

1-.NET: Los fanboys de Microsoft. Saben de C# o Visual Basic y generalmente programan .NET,
Silverlight y otras bazofias Microsoft. Estos programadores tienen mucha demanda, les pagan bien
y generalmente hacen aplicaciones que corren en Windows o Internet Explorer. Muchos aman a
.NET, otros simplemente lo odiamos (Por ser Microsoft) Estos programadores no tienen otra
opción que usar su Visual Studio en un Windows.

2-JAVA: Los fanboys de JAVA, que hoy en día son poco menos que esclavos de Oracle. Ya no es el
Java de Sun Microsystems que solía ser fabuloso. Las personas que programan tecnologías Java
generalmente son las mejor pagadas, pero la curva de aprendizaje es muy dura. Puede ser para
móviles, para Android, para servidores, aplicaciones Enterprise, etc. Usan J2EE, JSF, JDK, Struts,
Hybernate y aman IDE's como Eclipse para programar. Aunque existen decenas de buenas IDE's
para Java. Hay programadores Java que usan Windows, Linux, Solaris, etc. La desventaja es, que el
mercado de Java cada vez es menor.

3-Open Source: Este tipo de programadores son los mas versátiles y es difícil enumerar todos los
estilos. Generalmente programan en Linux, usan todo tipo de herramientas y lenguajes abiertos y
estándares. Python, Ruby, Php, Perl, C++, Lisp, C, Fortran, HTML5, etc. Son todos estándares y
lenguajes abiertos. Ya sea que crees una aplicación de escritorio o web, generalmente tienen
toneladas de herramientas para programar. En contraparte, en ocasiones es difícil encontrar
trabajo de este tipo de tecnologías a diferencia de .NET y Java. (No quiere decir que en Java o .NET
no se pueda programar HTML5 o C++, simplemente que en el mundo del Open Source se apegan a
los estándares y pueden usar cientos de frameworks, IDE's y herramientas.

C)-Por Objetivo o Mercado: Desde luego, pueden existir cientos de categorías, te diré las mas
comunes:

1-Juegos
2-Negocios
3-Seguridad
4-Entornos Distribuidos
5-Redes Sociales y Comunidades
6-Aplicaciones Especializadas
etc....

Fuente(s): Te pondré mi caso práctico aplicando todo lo anterior:

Yo soy Lider de Proyecto, mis tecnologías son 100% Open Source (odio Microsoft y odio Java), uso
Linux. Generalmente estoy envuelto en aplicaciones web hechas con PHP o Python y de vez en
cuándo desarrollo binarios compilados para servidores, lo hago con C++. Mi mercado es el
mercado de negocios; Aplicaciones de índole financiera y administrativa.
Te recomiendo comenzar por entender las FILOSOFÍAS detrás de cada tendencia. No te vayas por
qué tan complicadas son, por que tan caras se vean o que tan difíciles de aprender sean. Tienes
que sentirte cómodo con la IDEOLOGÍA de cada estilo. Tiene mucho que ver con tu forma de ser,
con que tanto ames u odies al capitalismo, con que tanto dinero quieras ganar, con que tan
divertido pretendas hacer tu trabajo.

https://es.answers.yahoo.com/question/index?qid=20121012153117AAAK0WG

S-ar putea să vă placă și