Design

Gamification: The Art of Attracting and Keeping Users

Game designs and artifacts involve users more deeply in communities. Soon, prizes, trophies, and badges will be a standard part of the user experience of Web apps.

Look around the Web today and you'll see the buzz around a term that might be entirely new to you  "gamification." Gamification is the use of game mechanics (such as badges, leader boards, and levels) in activities and software that are not themselves games. A good example of successful gamification is Nike's Nike+ community. Nike has turned fitness into a kind of game, in which participants track progress against goals with a "score" to improve health with every run. They can save their run data, share progress with friends, celebrate milestones and accomplishments, and motivate themselves and their social circle to attain a healthier lifestyle. Gamification is fun and engaging for consumers, and it also helps make sites, products, and brands "sticky." That is, users come back frequently and participate more actively.

Predictably, however, developers respond somewhat differently from typical consumers: they tend to respond better to gamification that works within specific constraints. This article provides guidelines for the gamification of developer sites and communities, based on our long experience developing such communities. However, much of what we suggest here is applicable  with the appropriate changes made  to all users.

Know Your Audience

Some developers love the idea of keeping score. They use sites such as Ohloh and GitHub to track their contributions versus their friends' efforts, and enjoy this sense of competition. Others are turned off by competing, but like to explore new things, meet and engage with new projects and people, and achieve their own goals. Software development is no different: Sometimes it's not whether you win or lose, but how you play the game. Talk to your community and consider creating different rewards that appeal to competitive, exploratory, social, and goal-oriented developers so that everyone feels included.

For example, we've seen Ohloh's contributor spark-lines, commit counts, and kudos all appeal to competitively minded developers who claim they use these features to informally compare themselves and motivate each other. In comparison, StackOverflow's many badges reward valuable contributions and give community members something to strive for individually.

Create Appropriate Motivations

Whenever you add social rankings to the mix, someone will try to manipulate those rankings  alas, it's human nature. Creating carefully constructed trophies and achievement recognition not only helps motivate developers to engage in the most desired behaviors, but also deters people from trying to abuse the system for their own advantage. Don't reward traffic for clicking a send button. Do reward new skills, capabilities, and significant and sustained success.

For example, awards at Coderwall are about language experience and open source participation. When Coderwall rewards activities such as forking and committing code to someone else's project, or using more than four languages across your own projects, it offers proof of both your technical chops and your community commitment  and it is hard to fake.

Focus the Scope of Rewards

Sure, it is fun to see where you rank on the all-time list of most prolific Java developers  but only if you're in the top ten. With millions of Java developers active, the developer ranked 2,474,673 probably finds such a list de-motivating. It could be much more meaningful and motivating for such programmers to see where they rank in productivity on their own projects, and how many more merged contributions it would take to "level up." Context is vital to gamification  consider rewarding activities in narrowly scoped areas to give developers something concrete and achievable to strive for.

For example, GitHub's new "impact graph" shows who makes the biggest impact on a project and how the contributor community morphs over time. It is scoped to a single project and shows both individual contributions and diversity of effort over time in an easy-to-digest format.

Implement Wisely

Before you implement your gamification system, think carefully about how it will scale and take future needs into account. If you are defining your own trophy format, be especially careful in how you structure the system: You don't want to be maintaining different versions of your format for years to come. Plan for the inevitable abusers. Consider how you can gain wide adoption of people, adding new opportunities and awards to your gamification system, and make adding these awards a simple and easy contribution process.

Also consider how people can share and showcase their achievements  the social and sharing element is what attracts and motivates many people.

For example, in Ubuntu Accomplishments, all trophies are verified via an automated verification server to ensure they were not faked. This server enables a decentralized way for clients to detect accomplishments, while also providing a scalable means of verifying them.

Conclusion

Gamification is a rich and opportunity-filled trend, but it is a topic that needs careful design consideration and implementation. For any kind of social gamification (such as trophies in communities), a balance must be struck between opportunity and reducing the risk of abuse: You don't want people not to participate because the credibility of the awards is called into question.

While it is easy to build software to deliver rewards, it's important to think carefully about not only the social opportunities but the social implications, too. Individuals also perceive rewards very differently; in some cases, one person's reward is another person's discouragement. The goal is to get people to want to play the game and feel rewarded for doing so.

Although there is a lot to consider, the gamification of your technology, service, product, or community provides a great opportunity to increase participation, reward commitment, and build a sense of connection with your users and customers.

Fortunately, there are some pre-existing systems out there that have explored many of these challenges, and if you're interested in gamifying your community, the first step may be researching their approaches. Be sure to look at the examples we've mentioned, as well as others. Good luck!

Rich Sands was appointed Director of Developer Communities at Black Duck Software. Jono Bacon works at Canonical, where he is a community manager for Ubuntu.

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Video

This month's Dr. Dobb's Journal

This month,
Dr. Dobb's Journal is devoted to mobile programming. We introduce you to Apple's new Swift programming language, discuss the perils of being the third-most-popular mobile platform, revisit SQLite on Android
, and much more!