## What are hackathons? 

Hackathons are time-boxed events where developers are given a theme which they develop against, either in groups or individually.  

Themes for hackathons can vary. Some might be centred around finding creative solutions to work related problems, for example, “Build a configurable service that can mock external APIs that the whole business can use”. Other themes might be more team-building related, i.e., “Build a game with high scores using the pixel framework”. We also run themeless hackathons where people can pick a new technology to learn, which they will use to build a demo project. However, the aim of these hackathons is not to build something outside of prioritisation, but rather to find and explore new technology to solve a specific problem. This means that – when we have the sprint time to build it – we have a good idea of what we want to do, backed up with evidence.

At the end of the hackathon, each group presents a demo of what they have achieved. We discuss how each project went and the technology used, so everyone in the group can learn about topics that all the groups have explored during this time – including the respective pros and cons of each technology choice.  

Hackathons bring the following benefits to Bink:

Keeping up with the industry

Software engineering is fast-moving and giving dedicated space for exploration is key for us to keep pace. Each hackathon builds our developer toolbelt with new technology, ways of working and design patterns that we can bring back to our day-to-day work. 

Team building

Getting developers from different teams working with each other builds a great work culture. 

Group Learning

With everyone demo-ing and discussing each idea, the group learns a variety of different topics – from new technology to different design patterns – which is much more efficient than one person trying to learn everything themselves. 

## July Hackathon

At the end of July, we ran a Battlesnakes hackathon (https://play.battlesnake.com). In short, it’s like the snake mobile game, but there are multiple snakes on the board, and each snake is controlled by individual API. The game server makes requests to each snake API for their next move, but if that snake API doesn’t respond in time, the previous direction will be continued, potentially leading to disaster!  

Each developer created and deployed their own snake API, which allowed for different programming languages and web frameworks to be explored. We ran them against each other in various tournament styles (e.g., 1v1s, 8 snake deathmatch, 1v1v1v1 in a maze) and allocated points in each match so that at the end we had a winner.