Sabemos que evaluar de manera objetiva es muy complicado, de hecho una de las reglas básicas es "si no lo puedes medir, no lo puedes evaluar". Para medir hay que parametrizar y para parametrizar hay que definir variables, consiguiendo dos objetivos imprescindibles: fiabilidad y validez.
Si trasladamos esa complejidad al ámbito profesional y más concretamente a la evaluación del rendimiento de los profesionales, nos metemos en temas que generan mucha controversia.
Las llamadas evaluaciones de desempeño o revisiones anuales provocan mucho descontento no solo entre los evaluados también entre los evaluadores, fundamentalmente por un motivo: la toma de decisiones en el qué, cómo, quién y cuándo evaluar no suele ser percibida como la más adecuada.
Explicar la finalidad de las evaluaciones: ¿Por qué evaluar?
Si queremos eliminar las malas experiencias que todos hemos vivido en las evaluaciones de rendimiento (o al menos reducirlas), hay que empezar explicando a los profesionales por qué es necesario evaluar.
Si hacemos de las evaluaciones una herramienta impuesta, lo único que se consigue es malos entendidos, y generar la opinión generalizada de que no sirven para nada más que para cumplir con las burocracias y decirnos si subirnos o no, el salario.
Las evaluaciones de rendimiento (bien hechas) son una herramienta valiosísima tanto para el desarrollador como para la empresa. Por un lado, permiten que mejorar como profesionales, y por otro, saber si la organización va en la dirección establecida o por el contrario, necesita realizar cambios.
Definir las competencias, funciones y objetivos del desarrollador: ¿Qué evaluar?
Hay competencias que serán generalizables a cualquier profesión y a cualquier puesto de trabajo, pero otras son específicas.
Analizando muchas de vuestras respuestas a la pregunta ¿Qué cualidades te convierten en un buen programador? es impresionante la variedad de respuestas: gusto, vocación, hacer todo lo que te diga la empresa, saber lo que se hace y cómo funciona el código, imaginación, ilusión, práctica, constancia, creatividad, hacer lo mismo en el menor tiempo y que quede bonito para vender, pereza-impaciencia-hibris, ocioso, orgulloso, inquieto, la capacidad de resolver problemas, el que se relaja y disfruta programando fuera de su trabajo, pasión, hambre de conocimiento, entender que el código debe escribirse de forma sea comprensible por otros programadores y sea fácil de mantener, observador, analítico, capacidad para adaptarse, capacidad para buscar soluciones en situaciones dispares, paciencia, autodidacta, entender problemas y estimar su complejidad, compartir el código con los demás, estructurar el código, concisión, resolutividad, eficiencia, no desanimarse con las caídas o los errores, aprender de los errores, pensar, los genes, curiosidad, foco, humildad, buscar siempre la manera de automatizar las cosas, profundo conocimiento de la teoría de lenguajes de programación y saber aplicarlos, etc … y la lista podría ser interminable si siguiéramos preguntando a más desarrolladores.
Como bien hace alusión uno de los comentarios, hay que distinguir entre las Soft Skills y las Hard Skills. La mayoría de las respuestas hablan de competencias soft, es decir esas habilidades más relacionadas con la actitud, la personalidad y el comportamiento. En cambio las competencias hard están relacionadas con los conocimientos y la experiencia técnica que tenéis como desarrolladores, y que por tanto, son propias de vuestra especialidad.
Ya hemos dejado claro la importancia de las competencias, pero no es lo único que se deben tener en cuenta en las evaluaciones de rendimiento, las funciones y los objetivos son imprescindibles para darle sentido.
El diseño del método de evaluación de rendimiento suele ser una especialidad de RRHH, pero no debería ser exclusiva de ese área o/y dirección, sino también del equipo técnico.
Demostrar que se puede medir: ¿Cómo evaluar?
Sabemos que trabajar como desarrollador, es una profesión creativa e intelectual y por tanto son complicadas de evaluar. Pero ya hemos visto en vuestras respuestas que sí somos capaces de distinguir a los buenos y no tan buenos desarrolladores es porque si se puede evaluar, el problema es que no nos hemos puesto a analizarlo y parametrizarlo objetivamente.
Sabiendo lo que queremos medir, ahora viene uno de los mayores quebraderos de cabeza no sólo en las evaluaciones de rendimiento, también en los procesos de selección, el ¿Cómo?.
Siguiendo en la línea de vuestras respuestas. He considerado seleccionar como una de las principales competencias soft del trabajo como desarrollador: la pasión y vocación por programar ¿Cómo podríamos medirlo? Un buen indicador es la dedicación de vuestro tiempo libre a programar.
Algunos reclutadores/evaluadores solemos mirar el Github porque es una manera visible y accesible de conocer a priori esa inquietud e incluso conocimientos, pero como bien dicen los comentarios debatidos en el foro de meetup: Github no es tu CV. Todos conocemos muchísimos desarrolladores que no les gusta darse visibilidad o simplemente utilizan repositorios de código privados y tienen pasión por su trabajo. Así que cuidado con afirmar que si no estás en Github no tienes pasión por programar y más cuidado aún con afirmar que sólo los buenos están en Github.
Github pues ser un buen indicador para evaluar la pasión y vocación por programar, pero no el único.
Más adelante hablaremos de ¿Quién y cuándo evaluar?, pero antes me encantaría conocer vuestras opiniones sobre las evaluaciones de rendimiento/desempeño.