Saturday, December 2, 2017

Gamification in the context of software development

Software development is a prolonged and demanding activity that requires not only a deep cognitive engagement but also creativity. Software developers, who repeatedly solve challenging problems and acquire new skills to do so, can lose their intrinsic motivation over time, which inevitably leads to the progressive degradation of the quality of their work. 

In the recent years, researchers and software development companies alike have started to explore the ways in which gamification could be applied in the context of software development to provide positive reinforcement and a sense of accomplishment to software developers. 

What Is Gamification? 

In their influential book "For the Win: How Game Thinking Can Revolutionize Your Business" Kevin Werbach and Dan Hunter define gamification as the use of game elements and game design techniques in non-game contexts. 

The concept of gamification is sometimes confused with game theory, which is the study of mathematical models of conflict and cooperation between intelligent, rational decision-makers. Whereas game theory is concerned with the human desire to maximize gains and minimize losses, gamification is all about "turning something not a game into a game" as Richard Bartle, the inventor of the first MUD (Multi-User Dungeon) game, defined gamification.

What Is a Game?

To understand how to turn something that is not a game into a game, we need to first understand what are the core defining characteristics of all games.

According to Jane McGonigal, the author of "Reality is Broken: Why Games Make Us Better and How They Can Change the World" all games have the following defining characteristics: 

  • Goal: The goal of a game gives players something to strive for and motivates them to play the game as it was intended to be played. Without a goal, players would have to explore how the game can be interacted with, which, while entertaining, would be unproductive in the context of software development. 
  • Rules: As counter-intuitive as it may sound, rules boost creativity by providing direction. In a famous experiment, Haught-Tromp and colleagues recruited 64 undergraduates and asked them to write a series of rhymes. One half of the participants were given eight specific nouns, while the other half could use any nouns. "Participants generated more creative rhymes when they had to work with the externally imposed constraint of a given noun", wrote the judges who evaluated the rhymes. 
  • Feedback system: The feedback system serves two purposes: first, it provides positive encouragement when players successfully reach the goal of the game; second, it informs players how much they need to improve in order to successfully reach the goal of the game in case they fail to do so. 
  • Voluntary participation: Kene Boun My and Beno√ģt Chalvignac have studied the effect of voluntary participation in the context of a collective-good experiment and discovered that voluntary participation could induce a recovery of cooperation levels when the payoff yielded by the exit option is high enough, so that the usually observed decay of average contribution levels can be counteracted. Without voluntary participation, games stop being games and turn into tasks, and tasks don’t have the same positive effect when it comes to overcoming unnecessary obstacles as games.

Examples of Gamification

Perhaps the best-known example of gamification in practice, one that most software developers are already familiar with, is the popular question-and-answer site for developers Stack Overflow, which describes itself as the largest, most trusted online community for developers to learn, share their programming knowledge, and build their careers.

On Stack Overflow, users can receive reward points and badges for answering the questions of other users or spreading links to questions and answers via social media websites. According to Stack Overflow’s help center, a person is awarded 10 reputation points for receiving an upvote on an answer given to a question and 5 reputation points for receiving an upvote on a submitted question.

Another particularly relevant example of gamification is Visual Studio Achievements. This extension for Visual Studio allows software developers to earn achievements for performing various coding feats or exploring some of the less-known features of Visual Studio.

Gamifying Software Development 

"Gamification, if applied to software development, may provide several advantages. First, because of its rewarding mechanisms, it may motivate developers to learn new technologies and increase their productivity (e.g., the Visual Studio Achievements). Second, it may improve the quality of their work if adopted to encourage best practices (e.g., testing, code conventions, etc.). From a management perspective, it may be used as input to give economic incentives and to support the evaluation of employees as well as of teams", claim researchers Daniel J. Dubois and Giordano Tamburrelli.

According to Pew Research Center, 53 percent of technology stakeholders said that the use of gamification would be widespread by 2020, and the other 42 percent predicted that gamification would play an important role, but would not be as widespread.
Clearly, gamification has its place in software development, and there are already several gamification frameworks for software development, some using cognitive principles, while others are focusing on improving the quality of the software development lifecycle.

Most gamification frameworks and real-world implementations use the PLB Triad. "Points, Badges, and Leaderboards are … widely used in gamification systems, because they appear to work moderately well as extrinsic motivators", state the researchers from the University of Lugano, Switzerland

To introduce gamification systems, such as the PLB Triad, on a real or virtual system, it’s necessary to understand where to derive value from to encourage a certain behavior, and it's also necessary to design sufficiently interesting activities and avoid tension with other motivational structures. 

The Swiss researchers argue that because adopting a gamification system means modifying the behavior of people and influencing their routine, the adoption might actually backfire. "As such, it represents a delicate matter that may negatively impact well-functioning parts of the system. Put simply: Adding a reward to a boring task may help to motivate the user, but will not turn it into an engaging activity."


While gamification may be the future of certain types of software development, a great deal of caution should be exercised when implementing game-design elements and game principles to improve productivity, learning, and motivation of software developers. There are many individual and contextual differences that need to be accounted for to design a functional gamification system, and large-scale, successful implementations of gamification principles are still fairly scarce. 

Gamification frameworks intended for the context of software development can serve as an excellent starting point and help  companies avoid many potentially costly mistakes.