Si trabajas en una empresa de desarrollo y tu cometido es planificar la formación de los nuevos desarrolladores que se incorporan a la empresa, probablemente tengas muchas dudas, ya que es un proceso a medio plazo y que varía mucho en función de los perfiles y de la especialización.
Muchos departamentos de recursos humanos y responsables de equipos de programadores tienen dudas a la hora de fijar un plan formativo para sus trabajadores tecnológicos.
La incorporación de nuevos programadores no es fácil, y se debe plantear como un proceso a medio plazo. Existen varias "trampas" en las que se suele caer como empresa, y las voy a intentar explicar más abajo.
Cuando el programador que se incorpora ya tiene experiencia y sabe programar, todo este proceso es bastante más sencillo. Este artículo no va dirigido a este perfil de desarrolladores.
Sin embargo, cuando son desarrolladores nuevos, tanto en la empresa como en la profesión, hay que formarles en varios sentidos: enseñarles a trabajar en general, enseñarles a trabajar en la empresa, enseñarles a seguir procedimientos y a trabajar en equipo siguiendo la metodología correspondiente, etc.
Surgen dudas del tipo:
- ¿Cómo se debe planificar la formación de un nuevo programador a lo largo del tiempo?
- ¿Es mejor un curso o que aprendan por su cuenta con ayuda del equipo de cara a su especialización?
- ¿Cuándo es el mejor momento, tras unos meses o nada más entrar?
- ¿Es mejor un curso presencial u online?
Cada equipo de programación tiene una forma diferente de hacer las cosas, lo que puede dificultar que los nuevos profesionales se familiaricen con el código y los procesos de formación de la empresa.
Retos para los departamentos de RRHH a la hora de incorporar nuevos desarrolladores
En este artículo voy a exponer los mayores retos a los que se enfrentan los departamentos de RRHH a la hora de incorporar y formar a nuevos desarrolladores, así como consejos sobre cómo intentar superarlos. No es fácil, y no hay una fórmula mágica, pero con un poco de trabajo todo se consigue.
1. Enseñarles a trabajar (de forma inteligente)
Hay más de una manera de realizar una misma tarea: desde modificar directamente el código hasta construir un sistema adaptable.
Muchas empresas detectan que, al principio, los nuevos desarrolladores tan solo quieren terminar su trabajo como sea, incluso si tienen que volver a rehacerlo por completo, para poder dar salida a un nuevo cambio que exige el cliente y tener sensación de que avanzan y hacen cosas útiles.
El problema en estos casos no es que no trabajen, sino que trabajan de más y no son productivos. Esto pasa en todos los oficios. A las personas sin experiencia hay que enseñarles cómo hacer las cosas en el contexto empresarial: rentabilidad, productividad, foco, eficiencia, etc.
Enseñarles la importancia de armar sistemas y estructuras de código flexibles que se adapten al cambio es la solución en estos casos. Es una labor a medio/largo plazo, pero es la mejor forma de trabajar en aras del éxito y la rentabilidad de la empresa. Eso y que lo perfecto es lo enemigo de lo bueno.
2. Evitar que los demás departamentos tiren del "nuevo" para cubrir sus necesidades
El departamento de marketing, el de producción e incluso el de finanzas a menudo se pelean por nuevos programadores que se incorporan. Estos departamentos ven en la nueva contratación como un objetivo fácil para sacar adelante sus listas de tareas pendientes.
Se les pide hacer esas tareas que nadie quiere hacer y que van desde hacer búsquedas en la base de datos hasta ayudarles a arreglar y configurar ordenadores lentos. Para evitarlo, asegúrate de que la estructura de mando sea clara, tanto para tu nuevo empleado como para los demás departamentos.
Lo peor que puede pasar es contratar a alguien para un fin concreto y que el recurso sea arrastrado por las carencias o déficits de los demás departamentos de la empresa.
3. Darles confianza y hacerles ver que son capaces de hacer cosas fascinantes
Uno de los mayores retos es conseguir que los nuevos desarrolladores crean que son capaces de hacer cosas increíbles. Seguramente los perfiles que se han incorporado son programadores inteligentes, motivados y creativos.
Hay que proporcionarles la capacidad de asumir responsabilidades y algo de liderazgo, y darles apoyo, formación y tutoría. Tanto la empresa como ellos mismos se sorprenderán de lo que son capaces de hacer.
Para ello es buena idea asignarles un tutor en el ámbito de la empresa (un veterano de otro departamento que le ayude a adaptarse a nivel personal y profesional a un entorno profesional). Por otro lado, es muy interesante asignarles un mentor al que consultar dudas técnicas de programación y de los proyectos de software (un mentor que les ayude en el desempeño de sus tareas).
Es muy fácil de decir y muy difícil de hacer. Hay muchas variables que no podemos controlar (incompatibilidad de caracteres, carga de trabajo de los tutores/mentores, habilidades blandas de ambas partes, etc).
En mi empresa la figura del tutor se asigna desde el primer día, pero la del mentor se pospone en el tiempo para ver si surge química entre la nueva incorporación y alguien veterano de forma natural. Si no se da tras un mes, se asigna uno teniendo en cuenta la idoneidad y la compatibilidad de las personas y las tareas.
4. Tener y usar software de código abierto
Al disponer y utilizar tecnologías de código abierto es posible encontrarnos que los nuevos fichajes ya estén familiarizados o sean competentes con las tecnologías que se usan en la empresa.
Además, el hecho de que hayan colaborado con su código en otros proyectos, te permitirá evaluar sus habilidades y competencia, y así poder enfocar su etapa de formación en mejorar aquellas cosas en las que no se muestran tan competentes.
Hoy en día hay tecnologías de este tipo en todas las empresas. Simplemente son un buen recurso para la adaptación de las nuevas contrataciones y para detectar ámbitos de mejora, aunque el software que desarrolléis sea propietario y no Open Source.
5. Familiarización de los nuevos desarrolladores con la base de código existente
Familiarizarse con la base de código existente, con todos sus elementos, es una curva de aprendizaje pronunciada para cualquier desarrollador, pero lo es más si son novatos.
Lo mejor es empezar con plantearles un problema sencillo que les permita centrarse en analizar el código fuente y familiarizarse con vuestros procesos.
A partir de ahí, se deberían seleccionar tareas cada vez más difíciles para varias áreas del código, con el fin de evaluar la capacidad del nuevo programador a enfrentarse a estos problemas y ajustando sus tareas en función de los misma.
En este proceso, la figura del mentor del punto 3 es clave para la resolución de dudas. Lo mejor es asignar un momento al día (15 minutos por la mañana y 15 minutos por la tarde), para que el nuevo programador no interrumpa al sénior todo el rato.
6. Integración con las prácticas de desarrollo en la empresa
Cada equipo de desarrollo tiene su propia manera de implementar buenas prácticas de desarrollo. En mi empresa hemos creado un manual SOP (procedimiento de operación estándar, por sus siglas en inglés) para que nuestros nuevos desarrolladores lo repasen una vez que hayan sido contratados.
En él se describen las herramientas de desarrollo que utilizamos, así como la forma en que las utilizamos en nuestras bases de código de producción. Esto ayuda a establecer expectativas y aliviar tensiones cuando el nuevo desarrollador hace sus primeras contribuciones a la empresa, ya que existe un marco de referencia y un consenso en el equipo en torno a un procedimiento que todos siguen.
Mediante la creación de un procedimiento operativo estándar, que pueda simplemente ir familiarizando a los nuevos empleados con los desarrollos y el código fuente, es posible incorporar y entrenar a los nuevos desarrolladores de forma más efectiva.
7. Desglosar la complejidad del software
La complejidad del software es un gran desafío. La funcionalidad del producto y la necesidad de cubrir muchos casos de uso y diferentes flujos de trabajo de clientes, se traduce en productos software de gran tamaño.
Por poner un ejemplo, la formación de los nuevos profesionales en cada microservicio es una buena manera de ayudar a reducir la complejidad.
Conclusión
Incorporar a perfiles nuevos a la empresa siempre supone un reto. Las cosas pueden salir bien o no, como con cualquier otro tipo de relación entre personas.
Lo que no se puede permitir una empresa de desarrollo es invertir tiempo y dinero en los procesos de selección de programadores para luego no tener bien planificada toda la fase de adaptación y formación en la empresa de los nuevos desarrolladores.
No sobran los perfiles de este tipo y como empresa, tenemos que hacer todos los esfuerzos necesarios para consolidar la relación con los nuevos programadores que incorporamos.
Si crees que falta algún consejo en esta lista, no dudes en compartirlo en la sección de comentarios.