Participating in a Hackathon? Want to? Read this!
Tags: webdev, learning, career, productivity
Published: 2018-11-28 12:26:25

---
title: Participating in a Hackathon? Want to? Read this!
published: True
description: I was asked to participate in my first proper hackathon competition last week. This is what I learnt.
tags: webdev, learning, career, productivity
canonical_url: http://blog.designpuddle.com/web-development/hackathon-what-how-who-guide/
cover_image: https://thepracticaldev.s3.amazonaws.com/i/h2ff9cnbsnroxiunav5f.png
---

<b>Definition</b><strong style="font-size: 1.8rem;">: Courtesy of Wikipedia,</strong>
<blockquote>A <b>hackathon</b> (also known as a <b>hack day</b>, <b>hackfest</b> or <b>codefest</b>) is a <a title="Design sprint" href="https://en.wikipedia.org/wiki/Design_sprint">design sprint</a>-like event in which <a class="mw-redirect" title="Computer programmer" href="https://en.wikipedia.org/wiki/Computer_programmer">computer programmers</a> and others involved in <a title="Software development" href="https://en.wikipedia.org/wiki/Software_development">software development</a>, including <a title="Graphic designer" href="https://en.wikipedia.org/wiki/Graphic_designer">graphic designers</a>, <a title="User interface design" href="https://en.wikipedia.org/wiki/User_interface_design">interface designers</a>, <a title="Project manager" href="https://en.wikipedia.org/wiki/Project_manager">project managers</a>, and others, often including subject-matter-experts, collaborate intensively on <a title="Software" href="https://en.wikipedia.org/wiki/Software">software</a> projects.<sup id="cite_ref-the_hackathon_is_on_1-0" class="reference"><a href="https://en.wikipedia.org/wiki/Hackathon#cite_note-the_hackathon_is_on-1">[1]</a></sup>

The goal of a hackathon is to create usable software or hardware with the goal of creating a functioning product by the end of the event.<sup id="cite_ref-_2-0" class="reference"><a href="https://en.wikipedia.org/wiki/Hackathon#cite_note--2">[2]</a></sup> Hackathons tend to have a specific focus, which can include the <a title="Programming language" href="https://en.wikipedia.org/wiki/Programming_language">programming language</a> used, the <a title="Operating system" href="https://en.wikipedia.org/wiki/Operating_system">operating system</a>, an application, an <a class="mw-redirect" title="API" href="https://en.wikipedia.org/wiki/API">API</a>, or the subject and the demographic group of the programmers. In other cases, there is no restriction on the type of software being created.</blockquote>
<h1>You've been summoned!</h1>
<img class="aligncenter" src="https://vignette.wikia.nocookie.net/animal-jam-clans-1/images/6/67/Pokemon-go-blog-banner.png/revision/latest?cb=20180404052455" alt="Image result for pokemon banner" width="870" height="260" />
I was asked to participate in my first proper hackathon competition last week. You first get the announcement, then you need to decide whether you want to take part, <span style="font-size: 1.8rem;">what you want/</span><strong style="font-size: 1.8rem;">can</strong><span style="font-size: 1.8rem;"> do and who the hell will do this with you? 
Here's what I learnt.</span>


<h1>What do I do?</h1>
Once you've acclimatised to the idea, your next though should be <strong>"what am I going to do?"</strong>

You need to take into consideration your strengths, the tools you know how to use, and things you know you can improve upon. Does your Hackathon have a theme? Or is it a more competitive based Coding challenge similar to <a href="https://codingcompetitions.withgoogle.com/hashcode">HashCode,  </a><a href="http://blog.designpuddle.com/web-development/google-hashcode-programming-competition-2017/">which I participated in back in early 2017.</a>
<h2>What do you want to achieve?</h2>
Everyone will have different things they want to achieve from participating in a Hackathon:
<ul>
 	<li>Want to try out some <strong>new tech</strong>?</li>
 	<li>Have an idea to <strong>improve</strong> some <strong>existing functionality</strong> within your organisation?</li>
 	<li>Want to <strong>write a tool</strong> to help <strong>speed up development</strong>?</li>
 	<li>Want to <strong>understand team dynamics</strong> and the<strong> purpose of each department</strong>?</li>
 	<li>Like the idea of <strong>building something from the ground up</strong>?</li>
 	<li>You're super <strong>competitive</strong> and want to <strong>win</strong> at all costs!</li>
</ul>
Maybe it's all of the above. Maybe you don't have an idea at all, and just want to expand your horizons and see what's possible.
<h2>Pick something that interests you!</h2>
Whichever of the above has brought you to this process, make sure whatever you choose to focus on <strong>interests</strong> you. A Hackathon can be a long arduous process, and that <strong>drive</strong> that comes from something you have an attachment to will drive you through any barriers that will arise.
<blockquote>
<p style="text-align: left;"><strong>" Look for something that you see a problem with</strong>.<strong>"</strong></p>
</blockquote>
Look for something that you see a problem with, then find a way of fixing it. <a href="https://www.uber.com/gb/en/">Uber</a> and <a href="https://www.airbnb.co.uk/">Airbnb</a> are good examples of taking something we already have and elevating it to another level using technology.

With the boom in AI Assistants you could look at integrating Alexa, Google Assistant or Siri into an existing application. The fitness market and wearables introduce new data that can be used in useful and interesting ways.

GPS tracking and geofencing, automation, big data and the Internet of Things (IOT) are all areas that are still in their infancy and can yield impressive results.

<a href="https://serverless.com/">Serverless systems</a>, containerisation and orchestration (<a href="https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/">K8</a>) are going to become mainstream in the next decade, so how about chucking your code on <a href="https://aws.amazon.com/">AWS</a>,  <a href="https://azure.microsoft.com/en-gb/">Azure</a> or <a href="https://www.heroku.com/">Heroku</a>? How about packaging your app using <a href="https://www.docker.com/">Docker</a>, or changing your API approach to <a href="https://graphql.org/">GraphQL?</a>
<h2>Build or Implement?</h2>
You have <strong>two</strong> options when starting your idea, <strong>build</strong> on something that is already there, or <strong>start from scratch</strong>. There are many great frameworks out there that you can use, that will speed up your delivery. However, while creating something from scratch will require additional thought in each aspect, it will give you a higher level of personalisation and freedom.

<blockquote><strong>"Don't be afraid to re-invent the wheel"</strong></blockquote>
<img class="aligncenter" src="https://storiesofworld.com/wp-content/uploads/2016/04/Wheels-376x262.png" alt="Image result for wheel evolution" />

Remember <strong>Angular</strong> was created by Google, <strong>React</strong> &amp; <strong>GraphQL</strong> by Facebook, and <strong>Cassandra</strong> by Amazon to tackle problems that they had with Web Interfaces, APIs and Storage.
<h2>When is it?</h2>
The amount of <strong>time</strong> given to you to prepare will have an <strong>impact</strong> on what you <strong>can</strong> create. Going into a Hackathon without any prior preparation will put you on the backfoot. It does depend on your goals, though: maybe this event is a giant learning tool for you. Either way, coordinating where you have to get to, transportation, accommodation and feeding yourself are equally important. You <strong>don't</strong> want to be burnt out before starting!
<h2>Remember to sell your idea!</h2>
If your hackathon has an open structure allowing for different ideas, you may need to recruit others to your team. For that reason, you need to be able to <strong>sell your idea.</strong> Using the points above, figure out its purpose and make it sing. Remember at the end of the Hackathon you may need to present what you have done.

<img class="aligncenter" src="https://blog.bannersnack.com/wp-content/uploads/2016/04/Content_2x_680x350.png" alt="Image result for marketing banner" />

Towards the end of your allotted time, you may have a fantastic project created, however unless you can showcase this, it will ultimately be a wasted endeavour. Marketing is not usually a strong point for many coders, so having the right mix of people in your team is imperative to your success. Even if, no formal presentation is required, documenting what you have done is important.
<h2>Get a good team together</h2>
A Hackathon on your own is possible, and maybe you just want a little time on your own to look at new things. In most cases though, having a good team will help you be more successful at reaching your objective.

Find people that are interested in your idea, or have interesting ideas of their own. Make sure you/they can and want to contribute to the team. When the team is together, find out your strengths and weaknesses and determine how tasks can be distributed.
<h2>Don't be too optimistic: start simple, with something that can grow.</h2>
Rewriting the Google search engine or Facebook sounds great, however try starting <strong>small</strong>. These products all started with minimal features that have expanded over time. If you can compartmentalize your idea starting with the fundamentals, then add stretch goals to improve, if you have time.

<strong>Trust me</strong>, even the simplest idea will present challenges you did not expect. Look at this as a Kickstarter, where you have tiers you want to achieve!
<h2>Showcasing your creation is imperative</h2>
So, you've got your idea, you've got your team, you've got your product.

Time to sell it! You've determined the best points about your idea, and what its purpose is, so now you need to showcase it.

<img class="aligncenter" src="https://images.pexels.com/photos/842876/pexels-photo-842876.jpeg?auto=compress&amp;cs=tinysrgb&amp;h=350" alt="Image result for present free image" />

How are you going to do this;
<ul>
 	<li>Do a live <strong>demo</strong>?</li>
 	<li>Give a <strong>presentation</strong></li>
 	<li>Create a brief <strong>video</strong></li>
 	<li>Write up strong <strong>documentation</strong>?</li>
</ul>
You need to figure out which one of these will show your hack in the best light. If it's not fully functioning, showing mockups or wireframes can portray the missing link which you did not have time to complete without negatively impacting what has been achieved.
<h2>Collaboration</h2>
<img class="aligncenter" src="https://www.missiontolearn.com/wp-content/uploads/2009/08/community-300x199.jpg" alt="Image result for collaboration free image" />

It is unlikely you will all be working on a single machine (you may not even be in the same room!) so looking at ways of collaborating on your idea will affect your efficiency.

<strong>Git</strong> has become the de facto code sharing tool, so if you haven't used it before, getting to grips with it before the Hackathon is a good idea. Here's a complete set of tutorials to get you on your way: <a href="https://www.atlassian.com/git/tutorials">https://www.atlassian.com/git/tutorials</a>

Slack, Skype, Messenger and Whatsapp are all good methods of communication. It depends on whether you want to be on voice comms, share your screen etc.
<h1>Ultimately, Try and have fun!</h1>
By far, the most important advice I can give is to try and enjoy the Hackathon experience.

When finished, you may not even have a functioning product, so enjoying the journey and what you've learnt will be the thing you take away from this.

You may be wondering how my attempt went? Well unfortunately our team didn't win, but we created a really powerful tool which I'm ultimately very satisfied with.

It was a code generator that produced some boilerplate code required for our internal processes to work, I'd have shared the code, but it's within a private repo with sensitive information. We used Node and a few packages to build and populate the templates required.

I learnt a lot across our brief Hackathon window.  Viewing all the different ideas and implementations that were created by others, really emphasised the breadth of creativity that our industry can produce. It also gave a great insight into what is possible to create in such a brief period and the camaraderie that can be built up over such a short time frame.

But most importantly,<strong> I had fun doing it!</strong>

<hr />

If you have any other questions about the above, or want to ask further into what we did, please comment below. If this post helped you, please Share it too!