Definition: Courtesy of Wikipedia,
A hackathon (also known as a hack day, hackfest or codefest) is a design sprint-like event in which computer programmers and others involved in software development, including graphic designers, interface designers, project managers, and others, often including subject-matter-experts, collaborate intensively on software projects.[1]
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.[2] Hackathons tend to have a specific focus, which can include the programming language used, the operating system, an application, an API, or the subject and the demographic group of the programmers. In other cases, there is no restriction on the type of software being created.
You’ve been summoned!
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, what you want/can do and who the hell will do this with you? Here’s what I learned.
What do I do?
Once you’ve acclimatised to the idea, your next thought should be “what am I going to do?”
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 HashCode, which I participated in back in early 2017.
What do you want to achieve?
Everyone will have different things they want to achieve from participating in a Hackathon:
- Want to try out some new tech?
- Have an idea to improve some existing functionality within your organisation?
- Want to write a tool to help speed up development?
- Want to understand team dynamics and the purpose of each department?
- Like the idea of building something from the ground up?
- You’re super competitive and want to win at all costs!
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.
Pick something that interests you!
Whichever of the above has brought you to this process, make sure whatever you choose to focus on interests you. A Hackathon can be a long arduous process, and that drive that comes from something you have an attachment to will drive you through any barriers that will arise.
” Look for something that you see a problem with.“
Look for something that you see a problem with, then find a way of fixing it. Uber and Airbnb 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.
Serverless systems, containerisation, and orchestration (K8) are going to become mainstream in the next decade, so how about chucking your code on AWS, Azure or Heroku? How about packaging your app using Docker, or changing your API approach to GraphQL?
Build or Implement?
You have two options when starting your idea, build on something that is already there, or start from scratch. 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.
“Don’t be afraid to re-invent the wheel”
Remember Angular was created by Google, React & GraphQL by Facebook, and Cassandra by Amazon to tackle problems that they had with Web Interfaces, APIs and Storage.
When is it?
The amount of time given to you to prepare will have an impact on what you can 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 don’t want to be burnt out before starting!
Remember to sell your idea!
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 sell your idea. 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.
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.
Get a good team together
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.
Don’t be too optimistic: start simple, with something that can grow.
Rewriting the Google search engine or Facebook sounds great, however, try starting small. 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.
Trust me, 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!
Showcasing your creation is imperative
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.
How are you going to do this;
- Do a live demo?
- Give a presentation
- Create a brief video
- Write up strong documentation?
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.
Collaboration
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.
Git 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: https://www.atlassian.com/git/tutorials
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.
Ultimately, Try and have fun!
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 learned 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 learned 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, I had fun doing it!
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!