K15t Software recently held its eighth hackathon, which I participated in. What I really like about hackathons – and the reason I'm always excited about taking part – is that normally, I have so little time on my hands. Time spent at a hackathon is special in comparison with usual office hours. Why? Because everyone gets to focus on shipping something with just a limited set of features – within a 24-hour time limit! You are just destined to get things done. But how do you go about a hackathon project? What do you start with? How do you decide what you can and cannot achieve? I will answer these questions by taking you through my own hackathon project. This will provide you with a structure and process that will guide you through yours, too.
Step 1: Collect ideas
Ideas can be found in a lot of places, you just have to collect them. Here at K15t Software, we do hackathons because it gives everyone the chance to take on some of the pain points that hinder them every day. Our daily business is to solve our customers' problems. So why not use hackathons to sort out our own? Drawing from these problems, some of my colleagues decided they wanted to reduce the time it takes to install Confluence add-ons for testing purposes. Others recognized that while multiple users can concurrently edit a page in Confluence 6.0, they may also need a tool to directly communicate with one another while writing.
Hackathons also allow you to tackle issues you wouldn't normally dare to approach, problems which might seem too daunting or too tough to deal with. Or they allow you to work on projects that you have been meaning to get around to for weeks, maybe even months. Just think about all those annoying issues you downplay in order not to deal with them. A hackathon is also a great way of expressing your creativity, of making something you would not normally develop at work because it doesn't fall into your realm of responsibilities, even though you think it would be great to have. That is what I did during our last hackathon. My hackathon buddy Thomas and I thought that our company mascot, the rocketcorn, wasn't getting enough attention. So we created Unicore, a game showing the rocketcorn in action.
So, as you can see, there are lots of areas you can collect ideas from. Go ahead and start making a list of your own.
Step 2: Choose a project
After collecting dozens of ideas, you will need to choose one. Look at your list and mark the ones you know you can tackle on your own or with a teammate. Another way of choosing is by sorting your ideas by relevance. Which are more important to you? Which do you really want to work on? Finally, you should gauge the scope of your project. You need to choose a project that you can successfully execute within 24 hours.
Unicore, a game developed during K15t Software's last hackathon.
Step 3: Structure and Plan
After you have chosen which problem to solve, you need to execute it. But how to you do this? Start by planning backwards. What aspects are essential to the project's completion? What steps do you need to take before you can complete them? And what do you need to do before that? And so on and so on. If a step seems daunting or too tough to accomplish, break it down into smaller, manageable steps. Keep asking yourself; "How do I accomplish this step?" Imagine a child continuously asking you why and how. By creating a mindmap of to-dos (see image below) you will always know what to do next.
Because of the limited time frame of a hackathon, you want to be careful not to have too much to do. Cut away elements that are bloating up your project (this is something you can also do while you are executing your plan). Question whether a step is necessary or not. Distinguish between must-have and nice-to-have features. What is really necessary for your project?
When Thomas and I decided that our project was going to be a sidescrolling game, I first thought about doing animations. But that was something that would have been nice to have. It wasn't a must-have for the game to work. In addition, Thomas and I are both developers. We are not experienced at making animations, which means that it would have taken us a long time – it just wasn't feasible in a 24-hour project. So we focused on what we do best: coding! Instead of worrying about animations and fancy design elements, we settled for what we already had (the rocketcorn – a unicorn riding a rainbow trail rocket).
This is the plan I created for Unicore which helped me decide where I needed to start. It is normal for revisions to take place while executing such a plan.
After you have a to-do list and have cut out the unnecessary elements, you need to divide up tasks if you are working in a team. Thomas and I decided that it would be best to assign tasks depending on which person had better suited resources, capabilities and knowledge. If you are working in a team, constant dialogue is important. It ensures that you don't work on the same tasks.
Step 4: Execute, but watch out
You have your to-do list. Now it's time to start executing your project. Here are some of the pitfalls you need to look out for while executing your project:
- Procrastination: Never give yourself the chance to procrastinate, by always following your to-do list. Don't add anything to it unless you really have to (don't make features fancier than they need to be). Remember, the clock is ticking! You won't be able to procrastinate if you planned backwards and broke down those unwieldy, big tasks into small, manageable steps.
- Working on things you don't really need: Ask yourself; "Do I need to do this to reach my goal, or am I working on a nice-to-have feature?" whenever you start a new task on your to-do list.
- Getting in your own way: This is so easy to do. Concentrate on what you are good at. For example if you aren't good at drawing or writing, get help or ask yourself if you have an already existing resource to draw from (do you need to have a new design element or does an old one suffice?)
- Perfection: Keep in mind that no project is perfect. Does your feature work? Good. Move on.