In a week, we're running an internal Hack-A-Thon at the studio. It'll be the third one we've run. For 24 hours, everyone in the company participates and can work on whatever project they'd like to work on as long it's somewhat (for a very relaxed definition of somewhat) related to the work that we do. It's a great time.
HACKITY HACK HACK A ROO
Officially the Hack-A-Thon starts at 3 PM on a Thursday and finishes at 3 PM on Friday. Past Hack-A-Thon projects have included:
- Migrating the software on our continuous integration server
- iPhone application for interfacing to our platform services
- Unity video game where the studio was modeled and the game could be used as a testbed for sending game data to our platform services
- Video conferencing setup
- Internal project theme song, rap and artwork
- Open source testing framework
Before past Hack-A-Thons, I've gone home, hit the gym, grabbed dinner, showered and tried to nap. I've always been the first one to start before midnight and then it's straight on 'till morning. Usually I can make it until around 7 AM when I have to take a 20 min nap, followed by breakfast, and then it's back to coding until the wrap session.
Here's some tips for making sure your Hack-A-Thon is successful:
1. Be inclusive - Everyone in the organization should participate. Encourage teams to be formed well in advance of the Hack-A-Thon. Let production work with development. Let development work with HR. However people want to form teams or work solo, let it happen.
2. Be open - No secret projects. Make sure everyone's ideas are known ahead of the Hack-A-Thon. Even if someone wants to work on their project alone, it's more exciting for everyone when they know someone might be rewriting a core piece of your game engine or simply getting video conferencing working flawlessly in your conference room. If you can involve the local development community, do that too. You never know the talent you might be able to attract by opening your doors for a day.
3. Be free - Be very lax in what people are allowed to work on. Projects should be somehow related to the work you're doing, but they don't need to be production-ready at the end of the Hack-A-Thon. Let people explore.
4. Be mindful - It's the game industry. There are milestones. There are launches. There are conferences. Make sure you plan your Hack-A-Thon on a day that doesn't preclude half your staff from participating because of a conflict.
5. Be focused - Shut down the tab to GMail or don't open Outlook. Encourage teams to talk in person. Try and be as focused and productive as you can be in the allotted time. Unless absolutely necessary, e.g. our data center servers are actually on fire, focus on your Hack-A-Thon project and not your regular work.
6. Be scoped - Try and choose a Hack-A-Thon project you can actually scope to the allotted time. It's more fun when you can demonstrate a near complete project at the end of your Hack-A-Thon.
7. Be closing - Provide a wrap-up session where people get 5 minutes or so at the end of the Hack-A-Thon to demo their project to everyone. And clap at the end of each demo. Even if people don't complete 100% of what they wanted to get done, applaud the effort.
8. Be publicizing - Talk about the Hack-A-Thon on your company's Twitter, Facebook or blog. Hint at some awesome upcoming projects that are spawned from the Hack-A-Thon or link to open source projects.
At our upcoming Hack-A-Thon, I'm going to be working on rewriting the internals of our open source leaderboard code. More specifically, I want to change the API to be more readable and self documenting as well as to take advantage of transactions to get consistent snapshots of leaderboard data. After that I'm going to re-run the performance metrics to see how transactions affects the leaderboard data retrieval. Next up will be updating the public documentation. Finally I'll release a new library of the leaderboard code. And then I'm going to do all of that for the PHP, Java, and Scala ports. That's the plan at least.
24 hours of coding.
You can find more hilarity over on my Twitter account, @CzarneckiD.