While having a chat with Naresh Jain, he suggested me to go through the Ted Talk – “Gaming can make a better world” by Jane McGonigal. I found the title very weird and was wondering how is that possible? After going through the talk though, I was amazed. I started wondering if I can use the gamification technique in Agile Adoption, in our Products, in Performance Management Systems, in Employee Engagement Programs?
Dhaval Dalal introduced me to Prof. Kevin Werbach’s definition of Gamification – “The use of game elements and game design techniques in non-game contexts.”
For our 4th ShipIt Day, organized on 25th/26th Sept 2014 at IDeaS, I decided to explore the idea of using game elements and game design techniques in the context of Agile Adoption. The idea was to create a gaming system which will automatically collect data, i.e. without explicit user intervention, from multiple sources like Jenkins, Rally and manually from individuals and offer Star’s for positive behavior and deduct Star’s otherwise.
The aim was to help the team get continuous visual feedback on how they are doing, adopt agile practices, visualize sense of accountability, visualize sense of achievement, drive positive behavior, create healthy competition, create a culture of appreciation, help performance tracking and create transparency.
We are moving from traditional water fall model of development to Agile way of development. We use Jenkins for continuous integration and Rally to track our stories.
Jenkins had some part of gamification techniques already available via The Continuous Integration Game plugin. Below are the rules of the Jenkins CI game
- -10 points for breaking a build
- 0 points for breaking a build that already was broken
- +1 points for doing a build with no failures (unstable builds gives no points)
- -1 points for each new test failures
- +1 points for each new test that passes
In Rally, we do story mapping. We follow certain processes like
- Every story in the iteration should have story level planned estimates.
- Every story in the iteration should have tasks.
- One should update the Actual and TODO for the Rally task they are working on every day.
- The stories should be completed and accepted within the iteration.
- Story spill overs into next iteration should be low.
It was not possible to work on this idea alone and I am glad and thankful that I got support from Umesh Kale – who helped with the UX, Vishal Gokhale – who helped with the Jenkins Plugin. Paresh Dahiwal – who helped with the Rally plugin and Sameer Shah – who helped with QA.
I am glad to present the game “IDeaS Rock Stars“.
The web-app has two sections
- A departmental leader board – that shows
- Star of the Day ( Top three individuals, who earned most stars in a day. )
- Star of the Week.
- Star of the Month.
- Most Appreciated ( Top three individuals who have earned most stars so far. )
- Most Appreciative ( Individuals who appreciate other’s contribution. Encourages individuals to recognize other’s contributions. )
- Open Missions ( Open missions/quests are visible across departments. Quests help in creating the culture of taking initiatives, being pro-active; helps in earning more Stars. Encourages cross department collaboration in addressing issues.)
- Self-Board – that shows
- Stars that I have got ( Show off your stars with pride. )
- My Department ( Where do I stand with respect to others in my department? instant feedback on how hard I have to work to earn stars. )
- Who is getting Stars? ( Why are others getting stars? how can I earn more stars. )
- Why are my stars are getting added or deducted ( Instant and specific feedback, encourages positive behavior.)
- Self-Board – Appreciate Someone
- encourages the culture of appreciation.
- individual can give +1 star per appreciation.
- managers can give or deduct more than 1 stars.
- Self-Board – Create Mission
- Managers can create additional missions.
- Missions/Quests are a nice way of earning more Stars.
- Missions/Quests are visible across departments. Other department may be in a better position to solve your problems! Encourages cross department collaboration.
- Show off your badges as you earn Stars.
Jenkins Plugin – an extension of The Continuous Integration Game plugin which sends out stars to the IDeaS Rock Star game. It also sends stars for the downstream builds.
Rally Plugin – custom standalone java program that scans Rally and sends out stars to the IDeaS Rock Star game based on the rules that we have defined.
Based on our teams values and processes, below list shows how to earn Star’s. Other teams/departments can choose to have their own structure of earning Stars.
|for breaking a build that already was broken.||0||discourages developers from checking in code when the build is already broken. Encourages them to fix a broken build.|
|for doing a build with no failures. unstable builds gives no stars.||1||encourages developers to produce good builds. Encourages developers to check in more frequently to collect more stars. More frequent check-in leads to faster code integration.|
|for each new test that passes.||1||encourages developers to add new test scenarios with every check in. More quality, automated test scenarios, lesser effort required on manual testing. Aids quick feedback.|
|for updating actual and todo in rally every day.||1||encourages developers to follow standard process which helps in getting correct velocity.|
|for setting planned estimates at story/defect level. Stars given to story owners, story task owners.||1||encourages developers to follow standard process which helps in getting correct velocity/burn down.|
|for completing the story within the iteration. Stars given to story owners, story task owners.||10||encourages team work, encourages developers/qa/product owners to better slice the story and finish the story in one iteration.|
|for getting the story accepted in the same iteration. Stars given to story owners, story task owners.||10||encourages team work, encourages developers/qa/product owners to better slice the story, finish and get the story accepted within iteration.|
|for giving internal training, presentations; knowledge sharing. you have to claim these stars from your manager||30||encourages and enhances presentation skills, knowledge sharing, encourages continuous dialogue with managers.|
|for participating and presenting your idea in ShipIt. you have to claim these stars from your manager.||50||encourages innovation, initiative, proactivness.|
|for writing technical blogs, articles, answering stack overflow questions etc. you have to claim these stars from your manager.||50||encourages knowledge sharing, community contribution and expression of thoughts.|
|for open source contribution. you have to claim these stars from your manager.||75||encourages community contribution.|
|for becoming ShipIt Innovator. you have to claim these stars from your manager.||100||encourages innovation, initiative, proactivness.|
|for giving presentations in technology conferences. you have to claim these stars from your manager.||200||encourages developers/qa to participate in conferences, knowledge sharing, branding.|
|Wild Card – other tangible/intangible value addition/creation. You have to claim these stars from your managers. These stars are discretionary; based on perceived value addition.||*||encourages going above and beyond your responsibilities. Encourages continuous dialog with managers.|
|for each new test failures||-1||discourages bugs, encourages fixing flaky tests.|
|if story/defect does not have planned estimates (per day). Stars removed from story owners, story task owners. Associate leads and above get -2 per story that does not have planned estimates.||-2||encourages dialog between leads and team members.|
|For not tasking a story (per day). Stars removed from story owners. Associate leads and above get -2 per story that does not have tasks.||-5||encourages planning|
|for NOT updating actual and todo in rally every day.||-5||encourages developers/qa to follow process. Historical actual data helps to determine how much efforts went on a particular module/feature/release etc.|
|for breaking a build.||-10||encourages taking builds on local machine before check-in. encourages fixing flaky tests. encourages team members to respect each others valuable time.|
|for story spill over. Stars removed from story owners, story task owners. Associate leads and above get -5 per story that gets spilled over.||-20||encourages planning, story mapping, slicing and completing the story in the given iteration and getting quicker feedback.|
|for leaving the story in prior iterations without getting those accepted. Stars removed from story task owners.||-20||encourages dialog between product owners, managers and members and making sure that the work is complete.|
|Production Bug. Stars deducted from all the individuals involved in the story. Product owners, developers, qa. Based on managers discretion as not every bug has the same impact.||-200||encourages code quality.|
Simple way of gaining big stars -> If I am working on a story for a complete iteration (8 working days) and I check in code 3 times a day and I add two new test scenarios per check-in and I make sure that the story is complete and accepted within the iteration, it gives me 100 stars. Better sliced stories, following agile practices give me even better reward!
|Reason||Stars per check-in||Code check in frequency||Total|
|completing the story||10||10|
|getting the story accepted in same iteration||10||10|
|Total weekly Stars||20|
|giving stable build||1||3||3|
|adding new test scenarios per check-in||2||3||6|
|Total Daily Stars||10|
|Total Stars for 8 days i.e (10*8)||80|
Once you are done with your stories, you can earn additional stars by helping other members of the team in achieving their stories within the iteration.
The game has been running for the last two weeks and my team has gladly agreed to run a trial period of about a month to see how it works.
The next step is to put up LCD to show off the departmental leader board.
I have seen a lot of excitement around the game… Only time will tell how it works… Statistics to follow…
The humans have a psychological need of having a purpose in life. Gaming gives them purpose and makes the mundane routine tasks in games to be played for and gives them achievements on completing the tasks. They offer difficult level tasks based on ability of the gamer. This way the games keep the gamers engaged.
Making sense of purpose for the workplace’s mundane routine tasks and giving appreciations for the same seems to me the most important benefit brought out of this rating system developed by Ashish.
Further allocating the tasks with multiple difficulty levels to folks as per the ratings earned shall keep everyone involved and also the overall workplace shall become more productive.
But I think building over a broken build should have negative stars ….
Wow, really cool concept for the adaptation of gamification. I hope Jane Mcgonigals TED talk has inspired more to adopt gamification techniques within the work place, education and even day to day motivation.
Our blog, https://virtualmeds.wordpress.com/ is all about the benefits of gaming, so if you’re interested in that sort of thing, we’d love for you to check us out! cheers.
I have some doubt this will be curturaly implementable everywhere. For instance in culture were it is bad perceived to be higher than your teammate.
More over i think that the gamification carrot (aka extrinsec motivation) is destroying the inner motivation. See Daniel Pink work on youtube or in his book on the truth on what motivate us
Absolutely. It is not a one size fit all solution. Moreover, agile practices, values would change from team to team and culture to culture. The way to earn stars that I shared, I think, would work in the culture that come from. Different teams can choose to define their own ways of earning/deducting stars.
I am a fan of Daniel Pink and his talk inspired me to start “ShipIt” Day at IDeaS. I also think that different individuals from different age groups and different socioeconomic backgrounds have different cravings and there will be different ways to fulfill those. Moreover, if you look at the star system, most of the stars are earned not for the cognitive skills; though the stars are also given for cognitive skills.
I don’t think that getting stars will drive individuals on their cognitive skills. Intrinsic motivation will do it. The game will just record it.
That’s why it is an experiment.
Nice motivation Ashish!
Hey, we’re doing something similar for the code repository and tracker, but we want to include CI systems soon: http://getbadg.es
Hi Christopher… Cool! We have open sourced our game and the CI plugin.. Check it out at http://github.com/IDeaSCo/rockstar
Please feel free to reuse the available Jenkins plugin…
Would you please provide a user manual for proper installation of the application as i am facing issues in installation.
The mysql database is not getting created and also, i get a blank screen when i launch the application through url.
I attempted the documentation of installation at https://github.com/IDeaSCo/rockstar
Seems it is not enough. Probably we can have a hangout session and see through the installation and I would document the missing steps. What do you think?
I have committed an empty db script and is available at https://github.com/IDeaSCo/rockstar/tree/master/db
My contact details are available at gravatar.
Thanks for your reply…
I tried to resolve the issue however wasn’t successful 😦
The issue which i am facing currently is active directory authentication of the user.
The active directory is located on server (A) and the application is installed on another server (B).
When i try to login to the application, the application is referring to server B instead of server A to authenticate the user.
Kindly let me know the settings i need to do to make the application refer to server A and not B for active directory authentication.
Thanks in advance.
Thats an interesting scenario. I have used COM4J (https://com4j.java.net/) and Waffle (http://dblock.github.io/waffle/) to access and authenticate with active directory. In our case we have our company active directory where all the users do domain authentication.
Both com4j and waffle were drop in solutions for me i.e. I did not land up doing any configurations…
The intention of using domain authentication was so that the users are already logged in and they don’t have to explicitly login in in the Rock Star App.
In your case, you will have to find any configurations that com4j & waffle accept to point to a specific active directory.
I was looking for exactly the same solution. Thanks for developing it.
Can you please guide me to integrate ldap authentication.
I’m looking for the same LDAP integration or a simple integration with mysql db. Could you please help me? Thanks a lot!
Hi Eduardo Bastos,
The code is available at https://github.com/IDeaSCo/rockstar
It uses Spring internally. You will have to add the necessary filters to customize the authentication.