En el desarrollo de software, como en todas las disciplinas, se van adquiriendo conocimientos y habilidades a lo largo del tiempo, que van sumando a lo que podemos aportar y hacer ganar a una empresa o equipo de trabajo. Las empresas suelen reflejar esa experiencia adquirida en distintos grados o “escalones”: trainee, junior, semi senior, senior, etc. Cuando buscan desarrolladores, generalmente apuntan sus busquedas a alguno de esos grados, para poder tambien “encajarlos” en alguna categorización de sueldo, rol y beneficios.

Cuando veo algo así, se me vienen a la mente varias preguntas: ¿Para qué ponen el requerimiento de 3 años en el puesto? ¿La cantidad de tiempo que estuve en un rol define mi experiencia? ¿Si hace 2 años que trabajo no califico como Semi Senior? ¿Si soy groso en React pero no usé JQuery no califico como Java Senior? Y yendo un poco más allá, se me ocurre la pregunta que da origen a este post: ¿Qué hace que un desarrollador sea Senior?

Vamos a empezar a tratar de contestar esta pregunta desde el Junior. Luego el Semi-senior tendrá esas mismas habilidades y otras nuevas que irá incorporando, y a su vez, el Senior tendrá las de los grados anteriores.

Desarrollador Junior

  • Aprende: Nadie nace sabiendo. Las habilidades y conocimiento técnico se van adquiriendo con el paso del tiempo, proyectos, aciertos y equivocaciones.
  • Aprende continuamente: la tecnología cambia, van saliendo herramientas nuevas, y un desarrollador de software tiene que estar al día sobre las herramientas nuevas, además de las que ya está usando.
  • Colabora en los proyectos: lo que todos tenemos que hacer, saber desarrollar funcionalidades y entregar el producto.

Desarrollador Semi Senior

  • Puede llevar la responsabilidad de un proyecto. Puede desarrollar lo necesario para que el proyecto salga adelante. Si bien cada tanto necesita la guia de un desarrollador con más experiencia, ya conoce la tecnología y el proyecto lo suficiente para poder desarrollar sin mayores interferencias.
  • Aplica buenas prácticas de desarrollo: intenta que su código sea legible y mantenible, tanto para el, como para el resto de su equipo, aplicando estándares, patrones de diseño, re-utiliza código, etc.
  • Usa librerias y frameworks estándares del mundo empresarial (spring, hibernate, o los equivalentes de cada tecnología). Sabe reconocer cuando  sus problemáticas a solucionar encajan con algunos de los problemas más frecuentes del mundo del desarrollo, y busca usar las herramientas que ya solucionan dichos problemas, en lugar de re-inventar la rueda escribiendo su propio código.

Desarrollador Senior

Y ahora si, vamos con lo que distingue, según mi opinión, a los desarrolladores que pueden considerarse senior:

  • Guía a otros en el desarrollo y aprendizaje del proyecto, herramientas y metodologías: No alcanza con saber implementar, hay que saber comunicar las decisiones y fundamentaciones técnicas, así como también tiene que poder potenciar a otros desarrolladores que tengan menos conocimiento. En este aspecto, el desarrollador senior debe ser un auténtico líder.
  • Fomenta las buenas prácticas de desarrollo: no alcanza con escribir buen código, tiene que poder  contagiar a su equipo, para que todos trabajen en una misma dirección.
  • Codea en distintos lenguajes: Si bien hay que tener un lenguaje de cabecera en el que seamos especialistas, también hay que tener cierto conocimiento de varios de ellos, y poder elegir la herramienta más adecuada para cada situación.
  • Posee habilidades de comunicación inter-equipos e inter-roles: Saber reconocer las buenas ideas, independientemente de la experiencia o el rol de la persona que las haya propuesto, para fomentar las soluciones ricas.
  • Demuestra actitud positiva frente a los problemas: Los problemas representan un desafío, y en lugar de enojarse y quejarse, toma decisiones y acciones que lo llevan hacia donde quiere estar.
  • Es proactivo, introduce novedades en el equipo.
  • Demuestra pasión por lo que hace, y disfruta su profesión: Es desarrollador dentro y fuera de la oficina. Dedica tiempo a leer y probar nuevas herramientas y las prueba en proyectos personales.
  • Aporta a la comunidad: Postea preguntas y respuestas en foros, escribe software de código abierto, da charlas, etc. Esto vendría a ser como un principio similar a la responsabilidad social empresaria, pero desde el punto de vista del individuo. Los desarrolladores tomamos muchas cosas de nuestra comunidad, y es positivo que en un punto empecemos a devolver y nos involucremos.

Y entonces, ¿cuántos años de experiencia le tengo que pedir a un desarrollador Senior? La verdad es que no lo se. Hay muchas habilidades para desarrollar, y cada persona es única en su ritmo. A algunas personas pueden tomarle pocos años adquirir todas estas habilidades, mientras que otras pueden estar años en distintos empleos y nunca adquirirlas, pero no nos dejemos engañar,  un extenso curriculum, o conocimientos muy específicos sobre ciertas tecnologías no nos convierten en senior, sino que son todo un conjunto de habilidades que se van puliendo con el tiempo, y es eso lo que nos convertirá en ESOS desarrolladores que todos queremos tener en nuestro equipo.

Basado en ¿Qué hace que un desarrollador sea Senior?, por Emiliano Tebes.
Escuchar el Episodio 1: Seniority del Podcast para más debate sobre el tema.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw