Working in a product company you are always in conflict between the product short term, long term goals and tasks that engineering want and need to do, but have nothing to do with the product itself, for instance improving the testing framework, building plugins for the IDE that will improve their day to day or even creating back-office tools that will solve other people in the company day to day problems or issues. There are also tasks that engineers want to do to pay technical debt on the product, thus improving the long-term maintainability of the code. Getting this quality time for tasks not directly related to the product development is hard as there is always pressure to release the next feature.
This is where the Guild steps in and help making it possible and creating a balance between working on features and taking care of other engineering and company wide concerns.
Like I described in the previous post, 20% of the time (one day a week) is dedicated for Guild activities. As part of the Guild activities we wanted this day to not only be about talking and learning, but also about doing. So we have created a game called "Games of Gangs").
"Games of Gangs" is a gamification of the guild tasks, which in its core is our main value of building an engineering culture and knowledge sharing. While the first half of the day is mostly dedicated to retrospective and training, the second half of the day is dedicated to doing Guild related tasks.
A Games of Gangs task can be anything that is not directly related to the product that the engineer is working on. Also we want to enhance our engineering culture and knowledge sharing by using these tasks as a tool for learning and improving. So here are the guidelines we put for the game's tasks (these are guidelines and not rules): Tasks should be done in pair programming with an engineer from and different team. Tasks should conform to at least one criterion:
Enhance our framework
Help another company with their own tasks
Examples for good tasks we had are: Creating maven Archetype for new projects; reduce build time; creating CMS for our studio to manage templates; enhancing our monitoring capabilities.
To kick start this activity and to encourage people's participation we had points assigned to tasks based on the task value and its knowledge sharing value. For instance if you do a solo task you will get only 1 point, but if you do it in pair each one will get 2 points. If you pair up with someone not from your company you will get 3 points and of you do it with someone from an off-shore office you'll get 4 points. You would also get points for doing lectures, writing blog posts on our engineering blog and other knowledge sharing activities.
Games of Gangs can sometimes be dedicated to a specific topic we want to push. For instance cleaning warnings in the code, or upgrading to a new Scala version.
So "Games of Gangs" has become a great way to balance between the engineering needs and the product needs while putting our engineering culture to play. It also creates the much-needed personal relationship between Guild members who do not meet on any other day as they are working for different companies at different physical locations.