La formación de un desarrollador: las etapas de junior a senior

4 min lectura
Desarrolladores / 29 diciembre 2015
La formación de un desarrollador: las etapas de junior a senior
La formación de un desarrollador: las etapas de junior a senior

BBVA API Market

La etiqueta “Senior” aplicada a un desarrollador es algo tremendamente relativo y, en cierta forma, transitorio según avanza la tecnología. La industria del software evoluciona aceleradamente. Es imposible comparar una profesión técnica de desarrollador con cualquier otra no técnica. Por lo tanto, jamás deberíamos hablar sobre la categoría profesional de un programador de una forma genérica.

¿Dónde reside la experiencia o el grado de conocimiento para considerar a un programador senior? No vamos a recurrir a la trayectoria obvia partiendo desde la universidad (o cualquier otro tipo de formación reglada) hasta los primeros años de la experiencia laboral. Quizás en otras profesiones funcione mejor. No nos interesan los años de experiencia, al menos no de la manera clásica. Tampoco si en la universidad consiguió la base necesaria o lo hizo de forma autodidacta, ahora mismo existen multitud de recursos disponibles para ello.

Cualquier empresa que se precie de considerarse “moderna” debería fijar su foco a la hora de valorar a un programador senior, es decir, tanto en el momento de su contratación como en la de su promoción en los siguientes puntos:

– Experiencia, no necesariamente cuantitativa. Es valioso haber evolucionado en distintos proyectos. Eso es haber tocado distintas tecnologías, haber participado en la construcción de un proyecto desde cero (no tiene que ser el que lo lidera necesariamente) o, por supuesto, haber evolucionado de una forma crítica sobre tu trabajo (el que hiciste hace seis meses y la semana pasada). No equivale igual diez años haciendo año tras año lo mismo que diez años evolucionando como desarrollador.

– Skills técnicas (buenas prácticas). Olvidemos por un momento los lenguajes de programación. No hay que pensar tanto en código sino en buenas prácticas. Para ser considerado senior es necesario tener ciertos conocimientos sobre patrones de diseño, metodologías ágiles, arquitectura, orientación a objetos, control de versiones, programación funcional (si se da el caso) y nunca viene mal algo sobre algoritmos básicos.

¿Parece trivial, verdad? Pues estos dos puntos resumen lo que debería ser una base sobre la que deberíamos fijarnos como objetivo para alcanzar ese grado “seniority”. El problema es ahora cómo conseguirlo.

¿Cómo conseguir experiencia de valor?

Quizás en esta parte tengamos menos control, aunque guiados por la buenas elecciones podamos hacerlo. A día de hoy hay multitud de nueva startups que crecen bajo una cultura distinta más innovadora, en lugar de tomar el camino “fácil” de una gran consultora podrás aportar/aprender más en un año creando desde el principio un producto innovador. Muchas de ellas eligen tecnologías “modernas”, es un buen punto para conseguir experiencia en tecnologías que otras empresas no se atreven a utilizar.

Pero la experiencia no queda relegada en el ámbito de tu empleo como desarrollador. Se pueden ampliar conocimientos a través del software libre: a día de hoy Github es el mayor “catálogo” de código libre existente. Multitud de proyectos de los que aprender cómo han sido construido e incluso colaborar.

Y, por supuesto, trabaja en tu propio pet project. Desarrollar por ti mismo un proyecto te ayuda a enfrentarte a retos que te empujaran más adelante en tu carrera laboral. Usar nuevos lenguajes de programación como Scala, Go, Dart o Kotlin puede ser útil en tu futuro.

¿Cómo ampliar las skill técnicas hacia la seniority?

Los lenguajes de programación son una de las herramientas fundamentales que tiene un desarrollador. Por eso debes prestar especial atención en usarlos lo mejor posible. No basta con aprender la sintaxis sino ir más allá: comprender cuál es la forma más eficiente de usarlo y, sobre todo, bajo qué condiciones hacerlo.

Manejar tres o cuatro lenguajes de programación es fantástico. Un equilibrio perfecto sería ser capaz de dominar perfectamente alguno de propósito general como (Java, C#, C, PHP), alguno de scritpting como (Perl, Groovy, Python), dominar algo de JavaScript cada vez más extendido, otro orientado a Big Data como R y empezar con la programación funcional con Scala, por ejemplo. Por supuesto, esto es un ideal. No es necesario conocer todos en profundidad. Y como decíamos anteriormente, hay que aprender en profundidad el que uses a diario más allá de la sintaxis.

¿Podría un programador senior aprender cualquier lenguaje rápidamente? Por supuesto, ese debería ser un objetivo que alcanzar. Para ello es necesario que tengamos un amplio conocimiento en Patrones de diseño, leer mucho a Martin Fowler sobre arquitectura y tener una base clara de Unit Testing (cualquier lenguaje que se precie cuenta con un framework para ello).

A día de hoy internet está lleno de recursos disponibles desde los ebook que desde BBVA Open4U se crean a todo tipo de plataformas de e-learning.

Algunas de las plataformas más conocidas son Coursera o Udacity donde podemos encontrar todo tipo de cursos guiados por profesionales. Aprender sobre temas como Inteligencia Artificial, programación en la nube o desarrollo de aplicaciones. También existen otro tipo de plataformas enfocadas al aprendizaje sobre algún lenguaje como Codeschool con cursos sobre Ruby, Objective-C, JavaScript o Git.

Otra excelente fuente de información es la biblioteca online de Safari book, donde se puede consultar un amplio número de libros online.

Imágenes | istockphoto

También podría interesarte