La industria del software es relativamente joven. Constantemente está redefiniéndose a sí misma. Y por ello cometemos errores. Uno de los que más daño hace a muchos productos de software es malinterpretar el valor de una categoría tan importante en un equipo técnico como el del Programador Senior.
Basándose en las necesidades de la industria se ha ido entregando ese título a la ligera. Debido, quizás, a la falta de gente con más experiencia de valor y la propia autocomplacencia de que al estar programando una cierta cantidad de años (a veces un par de ellos), se pueda dar el salto de Junior a Senior. Un grave error.
Simplificando las etapas de un programador nos encontramos tres momentos profesionales: programador junior, intermedio y senior. Cada uno de ellos representa una fase distinta en la que la mente de un programador evoluciona y va a aprendiendo de gente con mayor conocimiento y experiencia.
Programar es una tarea compleja y no debería medirse en años “picando código”. Los años de experiencia son muy distintos entre diversos programadores que han ido alcanzando metas y evolucionando en el camino al de otros que han vivido una repetición constante del mismo año sin evolucionar.
Existen distintos tipos de programadores: desde los más apasionados hasta los que van a la oficina a pasar de la forma menos dolorosa el día sin complicaciones. ¿A quién crees que deberías poner la etiqueta de senior si todos tienen la misma experiencia en x años?
-
El eterno junior. No es conflictivo pero se limita a aplicar lo que le funcionó con anterioridad.
-
Los ?francotiradores de tareas? que se limitan a sacar las tareas sea como sea con la solución que menos esfuerzo implique. Abocando al equipo a que acabe explotando el producto en el futuro sin remedio. No quieren evolucionar ni se lo plantean.
-
Los programadores gregarios, usando la terminología ciclista, están enfocados en el código (pero ojo haciéndolo bien bien). Su foco es plasmar en código los requisitos y cumplen los patrones marcados por la gente de más experiencia o los líderes del equipo.
-
Los programadores que empujan al equipo, motivados y con ganas de hacerlo mejor. Estos son los más valiosos, los que cada día aprenden y evolucionan ellos mismo y al equipo. Van superando etapas y adquiriendo la etiqueta de senior con su trabajo diario.
¿Cómo dar el salto? ¿Cómo empujar a un programador Junior?
Un programador Junior sale de la universidad con las ideas muy claras, pero se topa con un mundo profesional confuso y tarda en darse cuenta que lo que ha aprendido en las aulas no vale de nada. Necesita un mentor, idealmente alguien con mayor experiencia que él, que le guié y, sobre todo, le ayude a apreciar el contexto de muchas decisiones de diseño que tomará en su carrera.
La autocrítica y la inquietud de hacer cada vez mejor las cosas es fundamental. ¿Alguna vez os ha pasado descubrir código que hicistéis hace un par de años del que en su día estabáiis orgullosos y ahora mismo simplemente apesta? Esas es una de las actitudes de mejora continua que hacen evolucionar a los programadores y mejorar día a día.
No debes limitarte a aprender a picar código, si no a tomar decisiones de programación. Limitarse a mirarse en el código es un error. Por supuesto que hay que obtener la maestría en el lenguaje, el framework o las herramientas que usas pero eso no te llevará a saltar de nivel. Necesitas pensar menos en código y pensar en patrones, arquitecturas y, en definitiva, en el contexto presente y futuro de lo que estás desarrollando para equilibrar tus decisiones de programación.
¿Qué factores distinguen a un programador senior?
Algunos de los rasgos que distinguen a un senior frente a un junior o un programador intermedio son varios, quizás haya muchos más, pero algunos de los fundamentales son:
-
Ha aprendido de sus errores. Los años de experiencia se denotan por haber recorrido ese camino con anterioridad. Haber cometido errores es bueno cuando se ha aprendido de ellos. Ese es el valor de un senior: haber estado antes en alguna situación complicada y anticiparse en el futuro para no volver a caer en ese error.
-
Empujar al equipo. Un programador senior se siente responsable de la marcha del equipo. No hay excusas argumentando que eso no es su problema. Rema junto al equipo y asume de forma automática la resolución de los problemas.
-
Sabe delegar. Es consciente que, aunque pueda tardar menos o aportar un código de mayor calidad a la primera, debe guiar al resto del resto del equipo para conseguir lo mismo y transmitir sus conocimientos.
-
No está centrado en el código. Ve más allá del alcance de un proyecto. Al fin debe llegar a un compromiso entre distintos factores: calidad, tiempo, recursos, requisitos, etc.. Sabe tomar la decisión más equilibrada basada en el contexto.
-
Tiene ciertas especialidades sobre frameworks, lenguajes, librerías, entornos de programación, patrones de diseño, etc.. Pero lo más importantes es que sabe adquirirlos con facilidad.
Lo importante es valorar la mejor actitud para el equipo
Simplificar estos conceptos nada triviales en los anteriores puntos no debe limitar la elección del correcto programador senior para tu equipo. Los años de experiencia son un buen punto de partida, pero como comentábamos hay mucho detrás. Hay que dar oportunidades a todos de demostrar su valía.
Puede que el chaval que lleva 3 años programando sea considerado mejor que lleva 10 años estancado o al revés. Repito: no es un ciencia cierta, lo importante es valorar las mejores actitudes para el equipo. Algunas de ellas las hemos dejado en este post pero podéis aportar las vuestras en los comentarios.
Foto | Flickr