Pon a competir a tus empleados

Pon a competir a tus empleados

La competencia interna entre los trabajadores de una empresa siempre acaba existiendo de una manera o de otra ¿por qué no transformar esta competencia en algo positivo que ayude a alcanzar y controlar los objetivos de la empresa?

Como empresa nueva nos encontramos con determinados problemas al empezar que nos llevaron a instaurar un sistema de competencia entre empleados que mantuviera controlados ciertos aspectos y ayudará a llegar a determinadas metas.

¿Qué fue lo que nos llevó a tomar esta decisión?

Uno de los principales problemas a los que tuvimos que hacer frente en nuestros inicios fue el motivar a nuestros empleados a seguir unas determinadas pautas y políticas a la hora de trabajar. Algunas de estas pautas eran:

  1. La calidad no se negocia, nos da exactamente igual que el cliente tenga prisa o que nos presione para que hagamos las cosas como ellos digan. Preferimos tardar más si el resultado va a ser de una calidad mayor. La experienca nos demuestra que si te dejas llevar por las "prisas" del cliente o de tu jefe, acabas realizando un trabajo muy pobre, y las miradas van a venir a tí, cuando empiezen los problemas. Por esto es muy importante saber poner como prioridad la calidad en el trabajo.
  2. No se sube absolutamente nada a producción sin haber realizado las pruebas automáticas. Los programadores que no están habituados a trabajar con pruebas automáticas, suelen tener mucha reticencia, a realizarlas, por desconocimiento y por pereza, por lo que las dejan siempre para el final. Tras algunos meses trabajando de esta forma tienes un proyecto con apenas pruebas y entonces vienen los problemas. Por eso, dejamos a decisión del programador si quiere realizar las pruebas antes mediante TDD o despúes, pero no se puede subir codigo de producción sin sus correspondientes pruebas.
  3. Hay que documentar lo que hacemos. En nuestra opinión, nuestros desarrollos tienen que estar auto documentados. Esto significa, que si por ejemplo para calcular un dato, estás aplicando una formula, lo ideal, es que puedas plasmar esa formula en el mismo sitio donde se muestra el dato, ya sea a través de tooltips, aclaraciones debajo, o páginas de ayuda. De esta forma, ayudamos al usuario a comprender que está pasando y a la vez tenemos una documentación que se mantiene actualizada. En un futuro escribiremos un artículo sobre cómo se debería documentar según nuestro criterio.

Por desgracia, el equipo siempre acababa dejándose llevar por las imperantes necesidades del cliente y no se cumplían determinadas instrucciones de la empresa. En DEVTIA entendemos este comportamiento ya que el cliente es el que manda y el que aporta el dinero al proyecto. La falta de tiempo existente y las prisas del cliente eran uno de los principales motivos por los que el equipo acababa por no seguir el plan.

El director de tecnología tampoco disponía de tiempo suficiente para revisar uno por uno el trabajo de la plantilla, de forma recurrente, lo cual favorecía el no seguir las normas generales de la empresa.

¿Cómo mejoramos la situación?

Fue en este punto cuando decidimos revertir la situación, convirtiendo algo negativo en una manera de evolucionar como empresa y de acabar obteniendo mejores resultados.

Lo primero que decidimos hacer fue empezar a medir el desempeño de la plantilla con respecto a unas métricas previamente definidas y estudiadas. Estas métricas se basan en tres principios:

  • Deben ser objetivas.
  • Deben ser automáticas.
  • Deben estar alineadas con la política de la empresa.

Las métricas que elegimos fueron las siguientes:

Inserciones en el repositorio

Las inserciones son el número de líneas añadidas al código. Cualquier programador con conocimientos suficientes opinará que no es una buena métrica en la que basar un sistema de competencia entre empleados, ya que es algo muy subjetivo, y no por insertar más líneas en el código se realiza un trabajo mejor.

Por ejemplo, un proyecto con muchas tareas de soporte al cliente, generará menos inserciones, lo cual no significa que se haya trabajado menos… ¿verdad? Por ello somos partidarios de darle la importancia necesaria a esta métrica, pero dentro de un contexto.

Es un factor que te permite medir la actuación y desempeño de una persona. Si una persona hace pocas inserciones en una semana no es nada preocupante, pero si este comportamiento perdura en el tiempo podría ser indicador de que algo no va como debería.

Actualmente contamos con una media de 2000 inserciones, que sirven de guía para hacernos una idea de cómo va la cosa.

Cobertura de rutas

Es una medida que nos dice el tanto por ciento de rutas (URL’s) que están cubiertas al menos por un test funcional. La situación idónea sería que todas las rutas pasaran por al menos un test funcional.

Aunque no es una medida 100% fiable en cuanto al desempeño del trabajo, si que es una referencia para saber si la plantilla está subiendo los cambios y el nuevo código con test.

Cuando empezamos con esta manera de trabajar, teníamos entre un 10-20% de URL cubiertos con test, actualmente nos encontramos en torno al 92%.

Succes time

Es el tiempo medido en % en el cual los test están en verde, es decir que están pasando todos correctamente. Actualmente esta métrica la medimos con el programa Jenkins, una herramienta open source construida específicamente para ello.

Una de nuestras prioridades utilizando esta métrica es lograr que los test se encuentren verdes la mayor parte del tiempo, no que se dejen para el final después de haber pasado semanas en rojo. Actualmente permanecemos verdes el 90% del tiempo lo cual es muy positivo.

Queremos que nuestros empleados estén atentos y se preocupen de ello día a día. De hecho, este es uno de los principales motivos por los que ponemos a competir a nuestros empleados, para aumentar la productividad debido a la competencia entre ellos.

Tareas cerradas en Jira

Jira es la herramienta que utilizamos para la gestión de las tareas realizadas por el equipo. Nuestro fin es que todo quede fielmente reflejado en la herramienta. Así podremos saber:

  • Cuál era el alcance original de la tarea.
  • Cómo fue evolucionando.
  • Quién era el responsable.
  • Cómo fue su resolución.
  • A que líneas de código afecto.

Aunque una tarea no es una medida exacta ya que unas son mucho más complejas que otras, se logra fomentar el uso de la herramienta. Actualmente pedimos que se cierren al menos cuatro tareas por semana.

¿Cómo fue la evolución?

Empezamos a medir todas las métricas anteriormente expuestas a través de informes periodicos que además recibián cada miembro del equipo. De esta forma podía saber no sólo lo bien o mal que lo estaban haciendo, si no como estaban en comparación con el resto del equipo.

Cada semana cada miembro del equipo recibía un correo similar a este:

Informe semanal

Cada mes cada miembro del equipo recibía un correo similar a este:

Informe semanal

Los resultados fueron sorprendentes a la par que satisfactorios, el equipo pasó de tener un compromiso bastante bajo a estar totalmente comprometido y dedicado. Se establecieron unos mínimos semanales a cumplir, modificándolos según el desempeño.

Para motivar esta competencia y hacerla lo más sana posible, impusimos una sanción de un euro para que todo aquel que fallara en uno de los criterios mínimos. El dinero los introducimos en una pequeña hucha con forma de cerdito, consiguiendo que el proceso de pagar no se convierta en algo hiriente, sino que tuviera un toque simpático.

En el momento en que tengamos cierta cantidad de dinero dentro del cerdito, se comprará un regalo al que todo el mundo quiera optar, en nuestro caso algo de temática freak. Estableceremos un sistema de puntuación teniendo en cuenta todo lo anteriormente explicado y el empleado que más puntos acumule en un determinado periodo de tiempo, será el que se lleve el premio.

También para clientes

Aunque durante toda la entrada hemos hablado sobre como hacemos competir a nuestros empleados. Es una política que tratamos de implantar entre nuestros clientes. Si acceden, nos gusta ponerle en el dashboard de cada usuario, algunas metricas que indiquen como es su rendimiento con respecto al resto de empleados de su equipo.

Por ejemplo si tienen un equipo comercial, cada miembro podría ver cual es la facturación que ha conseguido ese año, y el porcentaje con respecto al total del equipo.

¿Y a ti, qué te parece nuestro sistema para poner a competir a nuestros empleados?