¿Funciona la gamificación en el proceso de desarrollo de software?
Escrito por Alberto Mora del grupo HCI GAMES. Like us on Facebook.
Read the English version of this blog post here.
Mucho se ha escrito en los últimos años sobre las posibilidades que nos brinda la aplicación de las técnicas de gamificación en diversos sectores: educación, marketing, ventas, energía, salud, etc. Sin embargo, existen otros ámbitos no tan conocidos con gran potencial de aplicación, como puede ser el desarrollo de software. Su propósito, motivar a los profesionales del desarrollo de software en la aplicación o mejora en las buenas prácticas de desarrollo de software.
Los responsables de proyectos de software saben sobradamente que resulta fundamental contar con profesionales en sus equipos de desarrollo que estén altamente motivados, comprometidos con los proyectos y que éstos apliquen las buenas prácticas, lo que conlleva a una mayor probabilidad de éxito y una repercusión en la satisfacción tanto del cliente como de los propios integrantes. Por contra, las consecuencias de un equipo de desarrollo de software desmotivado se traducen normalmente en una mala calidad de producto en forma de aparición de bugs debido a la ausencia o testeos muy simples, prolongaciones continuas de los “deadlines”, incumplimiento de los requisitos preestablecidos, baja colaboración entre los miembros del equipo, conflictos, estrés, etc.
De esta manera, para que un buen desarrollo de software pueda llevarse a cabo de manera exitosa se requiere de una alta colaboración, trabajo en equipo, participación activa, y motivación. Efectivamente, el ingrediente de la motivación aparece en esta gran receta. La gamificación, comúnmente conocida con el uso de elementos y diseño de juegos en entornos no lúdicos con un propósito motivacional (Deterding et al., 2011), tiene mucho que decir hacia este propósito. Se debe tener en cuenta que al hablar de gamificación no nos referimos a hacer uso de los juegos o videojuegos con el objetivo de entretener a los profesionales en su labor diaria o como una forma de diversión en la oficina.
En consecuencia, para considerar la gamificación, como una posible técnica para mejorar un problema motivacional, quizás deberíamos entender previamente cuáles son las causas más comunes de la desmotivación de los ingenieros de software en su día a día. (Sharp et al., 2009), en su estudio consideran que el aspecto motivacional más relevante para los desarrolladores es la necesidad de identificarse con la tarea que realizan. Consideran que la desmotivación esta asociada especialmente a los factores relacionados con la mera insatisfacción, localizándose en el ambiente que les rodean y abarcan las condiciones en que desempeñan su trabajo, a menudo, situándose fuera de su control (especialmente logros, reconocimiento, independencia, responsabilidad, promoción, etc.). Se perciben aspectos tales como sistemas de recompensa injusta, pobre comunicación dentro del equipo, objetivos poco claros o cambiantes, baja o nula influencia en el equipo, metas establecidas poco realistas, etc.
Por contra, los factores mas importantes hacia la motivación de un desarrollador de software suelen estar relacionados con un alto sentido de pertenencia, relaciones de apoyo, recompensas e incentivos, reconocimiento profesional, propuestas desafiante, feedback, autonomía, etc. Todos estos elementos están muy ligados con los componentes claves (competencia, relación y autonomía) asociados a la motivación intrínseca de los individuos y descritos en la Teoría de la Autodeterminación (Ryan & Deci, 2000), una teoría altamente referenciada desde el ámbito de la gamificación. El desarrollo de software es un trabajo complejo y en gran medida, creativo, donde los desarrolladores tienden a preferir las recompensas intrínsecas por encima de las extrínsecas (personalmente, conozco muchos desarrolladores de software que no cambiaron de empresa porque buscaban más dinero, al contrario, sí por estar poco motivados, incluso ganando menos dinero). El factor intrínseco es un aspecto fundamental para lograr una motivación a largo plazo del individuo, más allá del cortoplacismo proporcionado por los componentes extrínsecos o por la propia novedad.
Desde el punto de vista académico, se han llevado a cabo diversos casos de estudio por parte de grupos de investigación, presentando resultados alentadores tras incorporar las técnicas de gamificación en los procedimientos de desarrollo de software. Por un lado, algunos de estos estudios han partido de escenarios muy comunes presententes en el desarrollo de software fruto de la baja motivación, como pueden ser: uso insuficiente de un sistema de control de versiones (de Melo et al., 2014), implementación de código de baja calidad (Dubois & Tamburrelli, 2013), percepción de monotonía en la realización de tareas (Passos et al., 2011), o falta de productividad respecto a otros equipos similares (Sheth et al., 2011). Sin embargo, aún queda mucho camino por recorrer. Una revisión llevada a cabo en el ámbito concluyó que los resultados de investigación aún son bastante preliminares y se necesita un mayor análisis para conocer el impacto real de la gamificación (Pedreira et al., 2015). A su vez, consideran que la integración de la gamificación en las herramientas existentes dentro de una organización es un importante reto.
Desde el punto de vista corporativo, la gamificación está siendo ya aplicada con éxito, por ejemplo, para motivar a los desarrolladores de software en la adopción de la metodologías Ágiles (se trata de métodos de ingeniería del software basados en desarrollo iterativos e incrementales, donde los requisitos y las soluciones evolucionan con el tiempo según la necesidad del proyecto), partiendo del uso del modelo tradicional de desarrollo de software en cascada. Se trata de un cambio de paradigma que normalmente requiere de una lenta adopción por parte de los desarrolladores de software y que en algunos casos, presentan reticencias. La motivación es un elemento clave para implantar con éxito las buenas prácticas Ágiles en cualquier equipo de desarrollo de software y gracias a la gamificación, parece que los resultados ha sido satisfactorios. No pasa desapercibido la existencia de un cierto interés y que empieza a percibirse, por ejemplo, a ver a través de la aparición de términos como “Agile gamification”. Se refiere a la utilización de las mecánicas del juego y recompensas en un entorno de desarrollo de software Ágil para aumentar la participación en equipo y fomentar los comportamientos deseados.
Por otro lado, algunos reportes procedentes del ámbito de la consultoría muestran algunos datos acerca de cómo la aplicación de estas técnicas de diseño de juegos puede incrementar la calidad del software y motivar a los ingenieros a mejorar el complejo proceso de desarrollo de software. Diversos casos de estudio desembocaron en el desarrollo de software de gran calidad por encima de las expectativas de los clientes y cumpliendo con las necesidades de negocio. Sin embargo, para que esto sea posible, no debemos obviar la formación. Son necesarios programas de entrenamiento altamente motivantes. Concretamente, para el propósito de aprendizaje de lenguajes de programación, existen herramientas online de gran utilidad, donde las más populares ya están incorporando gamificación:
- Codecademy: se basa en el uso del progreso para alcanzar los diferentes logros en los cursos de programación y establece el reconocimiento a través de puntos, insignias y niveles que muestran las habilidades de los programadores, así como la posibiidad de alcanzar récords. A su vez, hace uso de los avatares.
- Code School: ofrece cursos de programación cuya consecución se traduce en forma de diferentes logros en los que se pueden alcanzar niveles, conseguir puntos e insignias. También aquí se hace uso de los avatares.
- Khan Academy: similar a Codecademy, se basa especialmente en el uso del progreso para alcanzar los diferentes logros a través de los diferentes cursos de programación y el reconocimiento de habilidades mediante el uso de las insignias, puntos, estatus, niveles, además de los avatares.
REFERENCIAS
→ DOWNLOAD our papers from the HCI Games publication archive
Deterding, S., Dixon, D., Khaled, R., & Nacke, L. (2011). From game design elements to gamefulness: defining gamification. In Proceedings of the 15th international academic MindTrek conference: Envisioning future media environments (pp. 915). ACM. Download.
Sharp, H., Baddoo, N., Beecham, S., Hall, T. & Robinson, H. 2009, “Models of motivation in software engineering”, Information and Software Technology, vol. 51, no. 1, pp. 219233.
Ryan, R. M., & Deci, E. L. (2000). Selfdetermination theory and the facilitation of intrinsic motivation, social development, and wellbeing. American psychologist, 55(1), 68.
de Melo, A. A., Hinz, M., Scheibel, G., Berkenbrock, C. D. M., Gasparini, I., & Baldo, F. (2014). Version Control System Gamification: A Proposal to Encourage the Engagement of Developers to Collaborate in Software Projects. In Social Computing and Social Media (pp. 550558). Springer International Publishing.
Dubois, D. J., & Tamburrelli, G. (2013). Understanding gamification mechanisms for software development. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (pp. 659662). ACM.
Passos, E. B., Medeiros, D. B., Neto, P. A., & Clua, E. W. (2011). Turning realworld software development into a game. In Games and Digital Entertainment (SBGAMES), 2011 Brazilian Symposium on (pp. 260269). IEEE.
Sheth, S., Bell, J., & Kaiser, G. (2011). Halo (highly addictive, socially optimized) software engineering. In Proceedings of the 1st International Workshop on Games and Software Engineering (pp. 2932). ACM.
Pedreira, O., García, F., Brisaboa, N., & Piattini, M. (2015). Gamification in software engineering–A systematic mapping. Information and Software Technology, 57, 157168.