Puede leer la versión en español de este post aquí.
A lot has been written about the benefits of gamification in recent years. When people talk about gamification they generally focus on sectors such as education, marketing, sales, energy, and health. However, there are a variety of different areas that could benefit from gamification, but have not been thoroughly explored, such as software development. The main purpose of gamification in the field of software development is to motivate developers to adopt or improve the best programming practices while working on software projects.
Project managers know the importance of having development teams that are highly motivated, committed to their projects, and dedicated to applying best practices. Teams with these attitudes are more likely to succeed, as well as gain more satisfaction from the project and from their clients. In contrast, there are severe consequences for development teams that lack motivation. For instance, projects where developers are demotivated evince bugs due to low quality or no testing, continuous delays in deadlines, failure to adopt requirements, low collaboration among team members, conflicts, and stress.
Therefore, in order to carry out software development successfully, developers should work in collaboration, foster good teamwork environments, actively participate in discussions, and be motivated to succeed. Indeed, the motivation ingredient is present in this recipe for success. Gamification, or the use of game design elements in non-game contexts (Deterding et al., 2011), is an effective way to improve software developers motivations to produce quality work. Keep in mind, when we discuss gamification we are not talking about making use of games to entertain professionals or suggesting a way to have fun in the workplace.
It seems that gamification is considered a suitable technique for motivational issues in software development. Now that gamification has been established as a motivational technique, previously, we should look at the common sources of demotivation for software engineers. In a study conducted by Sharp et al. (2009), the researchers suggest the most influential factor on developers’ motivation was their ability to identify with their work. This means that most developers must find a sense of purpose in the work that they do, or their motivation to continue working will decrease. The lack of motivation is generally linked to dissatisfaction in their daily working environment. Demotivated software developers do not feel in control because of their working conditions (they cannot control their achievements, recognition, independence, responsibilities, or promotions). This dissatisfaction may occur because of unfair reward systems, poor communication between team members, unclear or continuous changes to objectives, little to no influence in the workplace, and unrealistic project goals.
In addition, common factors that improve software developers’ motivations are a sense of belonging, supportive relationships, rewards and incentives, professional recognition, challenging work, feedback, and autonomy. All these elements are close to key conditions of human intrinsic motivation (competence, relationships, and autonomy) as described in the Self Determination Theory (Ryan & Deci, 2000), highly regarded in the field of gamification. Software development tasks are often complex and very creative, which is why software developers value intrinsic rewards over extrinsic (I know many software developers that did not change employers for more money, but they would change employers if they were not motivated, even if they will be earning less money). Intrinsic factors are essential for facilitating long term motivations, since they move beyond shortterm motivations provided by elements of extrinsic rewards or the novelty.
At the academic level, many studies conducted by researchers have shown encouraging results after incorporating gamification techniques. On one hand, this research comes from working environments where software developers lacked motivation. They exhibited common behaviours due to a low level motivation such as inadequate use of a version control system (de Melo et al., 2014), implementation of a lowquality code (Dubois & Tamburrelli, 2013), perception of monotony when performing tasks (Passos et al., 2011), and lack of productivity in comparison to other development teams (Sheth et al., 2011). On the other hand, there is still a long way to go. A review conducted in this field concluded that the researches in this scope are quite preliminary, and more effort is needed to analyze the real impact of gamification (Pedreira et al., 2015). This research also considers that integrating gamification with an organization’s existing tools is an important challenge that needs to be taken up in this field.
From the corporate point of view, gamification is being successfully applied. For example, to motivate software developers to adopt Agile Methodologies (the engineering methods based on iterative and incremental development, where requirements and solutions evolve over time as needed for the particular software project) coming from the use of the traditional waterfall model of software development. This is a paradigm shift that generally has a very low adoption rate by software developers, and in some cases high resistance is perceived. Motivation is a key element to successfully implementing best practices of Agile methodologies into development teams. The cited example experienced good results thanks to gamification. The development of new terms like “Agile Gamification” seems to be an example of the increasing interest in this field. Agile Gamification refers to the use of game mechanics and rewards in an environment of agile software development to increase team participation and promote desired behaviours.
In addition, some reports from consultancy concluded that the application of game design techniques can increase software quality and motivate engineers to decrease the complexity of their software development process. Several gamification case studies helped them develop high quality software, which exceeded the expectations of their clients and fulfilled their business requirements. Furthermore, to make these implementations possible they needed highly motivated training programs. Specifically, there are useful online tools for the process of learning programming languages. The most popular tools are already incorporating gamification:
- Codecademy is based on the use of progression for achievement in their programming courses and establishes recognition through points, badges and levels that reveal their programming skills, as well as record establishment. It also makes use of avatars.
- Code School provides programming courses whose performance is proposed as different achievements where can be overcome through levels, points and badges. Additionally, it provides avatars.
- Khan Academy is similar to Codecademy, since it is specially based on the use of progression for the achievement through programming courses and skills recognition. Khan Academy does this by using badges, points, status, levels, and also by making the use of avatars.
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.