So you’ve either just gotten accepted, or arrived at a hackathon — that’s amazing!
Simply throwing yourself out there and getting to an event is the scariest part, but that’s all behind you now!
Hackathons have something for everyone from networking to learning (and everything in between), but at the end of the day, the capstone of your experience will be your hack (project).
When it comes to subject, anything is fair game; hardware or software, mobile or web, data or art, music or health, the ball is entirely in your court. Anything is equally viable when it comes to making a cool hackathon project.
Tinder for cats? Go for it. Converting your coffee machine into an IoT device that syncs with your alarm clock? Rock on.
Hackathons are all about building cool stuff. I could reinvent the wheel and try to extensively outline what that means, but I’d much rather refer to a quote by Jon Gottfried, co-founder of MLH, on the concept of topicality in hackathon projects:
“Focus on awesomeness. Awesomeness is one of the best qualifiers I have seen for what constitutes a great hack and it something that I learned from HackNY, the primordial student hackathon. Everyone’s definition of awesomeness will be different but ultimately it boils down to creativity, depth, and wow factor. You want your winners to be endlessly creative and inventive. They should be building things that no one thought possible in the scope of a weekend. They should be using techniques that are abnormal, often impractical, and weirdly elegant. As subjective as it is, distinguishing between a simple CRUD app and something that is mind-blowingly awesome is fairly easy.” — Jon Gottfried, “How to Judge a Hackathon”.
Out of the Gates
Planning! This is arguably the most overlooked aspect of the hackathon project process. The first thing that hackers should ask themselves is ‘what is my main goal here?’ Am I trying to get my feet wet with some new hardware, flesh out an idea with a stack I’m familiar with, or maybe something that falls somewhere between the two? Do I already know what I want my project to accomplish, or do I really just want to use one particular piece of tech?
Being able to hit the core functionality is crucial; let yourself add bells and whistles as a reward afterwards. Fleshing out the logistics and core functionality of a project will take the vast majority of the time at a hackathon. Prioritize accordingly.
‘What is my core product/idea?’
Use your group to its fullest potential
Build something that can utilize the strength of your team, or at least will enable learning in a way that will maximize your group’s efficiency. Getting bottlenecked really can hurt production and increase stress on one particular group member — be sure to help that person out, or be careful to design your project in somewhat of a modular fashion so that downstream features can still get started while the upstream components are polished off.
Draft your project with a ‘wireframe’ or ‘skeleton’
It’s easy to get caught up in what functions your product will have, but drawing out potential screens of a mobile app, pages for a web site, schematics for hardware, or a schema for a database will all help you stay focused and keep on track for delivering on your goals by the end of the event.
This also helps to determine your UI early on to ensure that you have a plan for how you’ll be implementing all of the exciting features you’re coding. We use apps every day, but it isn’t every day that we are building one. Spending the time to plan out how users will be engaging with your product will lead to much more intuitive and polished results.
Pro planning tips:
Overestimate the time you think it will take you to accomplish something you aren’t extremely familiar with. Whether it’s a wonky internet connection, an SDK update that just isn’t cooperating, or just general issues with setting up your environment, getting off the ground seems to be one of the most common setbacks seen at hackathons. One of your most valuable assets at a hackathon are the mentors. Whether it’s an MLH representative, a sponsor company employee, a volunteer mentor, or even a fellow hacker — be sure to utilize them to the fullest, as they are there to empower you and help you succeed!
Depending on your group’s technical composition, you will likely be working on different aspects of the same project simultaneously. Be sure to keep each other updated with how things are going, or if any problems/bugs arise. Simply ‘thinking out loud’ can lead to helpful collaboration, innovation, or unexpected breakthroughs. Further, manpower can be redirected towards larger problems when needed! This expands heavily on the planning/wireframing from the last section, as knowing exactly what each person is responsible for will only help expedite the process of combining the individual parts.
Beyond setting long term goals for the project over the course of the entire event, be sure to set smaller goals for yourself and your team while trying to accomplish your specific task at hand. Setting smaller, more attainable goals will allow you to more effectively monitor your progress, and will help you feel good about the work you’re accomplishing as you’re hacking along. You’ll also be able to more easily figure out when it’s time to ask for help.
With all of the time one spends hacking over the course of an event, it’s easy to get lost in the heat of the moment. Take breaks, get refreshed, have a power nap, rehydrate, and maybe go for a walk. Eat some of the delicious food too, hackathons are a great way to try amazing, diverse food from a variety of different regions!
As with many other things in life, moderation is key! It’s perfectly acceptable to splurge every once in a while; eating junk food and foregoing sleep is perfectly fine, but try not to make a habit of it. Your health is the sum of your decisions, so don’t sweat having an unhealthy meal or two as long as you make up for it at another point during the week!
As with many other things in life, moderation is key.
Being proactive about your health and wellbeing at hackathons pays dividends, as you will be thinking clearer, feeling better, and be more properly equipped to finish building the amazing product your group has already come so far with. As a mentor, the overwhelming majority of problems I have helped to debug near the end of hackathons are simple in nature, typically syntax related mistakes due to sleep deprivation/fatigue.
Take a breather
There’s also what I like to call the ‘mid-event lull’. As you’ve likely been hard at work for many hours, potentially sleepy and/or hungry, it’s important not to get held up in this transitional phase where productivity may have dropped. You could use this time to run your project ideas by a mentor, do something fun that isn’t hacking related, or come and play one of MLH’s fun mini events!
Execution pro tips: If needed, pivoting of the entire project can sometimes save your experience at a hackathon. If you are running into too many problems, a general lack of motivation, or just become disinterested in the subject, changing the project or working on something entirely new is better than spinning your wheels in the mud for the remainder of the event.
Remember: Pivoting is nothing to be ashamed of! The first idea is not always the best!
The Home Stretch
For most teams, function takes place before form in the context of a hackathon project. Although I would personally advocate for a design schema that has a symbiotic relationship with the hack’s functionality, last minute design touches are extremely common. Think deeply about the most critical functions of the application, as well as the parts of the hack that the user will interact with the most. (Ex: Don’t spend 4 hours trying to just design a logo if your web page still looks like plaintext).
Don’t just assume all of your moving parts will fit together smoothly, be sure to test it yourself (don’t forget the edge cases)! Hackathon code will by no means be bulletproof, but formulating an idea of how you plan to demo your product will help in ensuring that the project works for the use cases that you intend without needing to hard code anything last minute.
Testing Protip: Be sure make a sacrifice or two to appease the ‘demo gods’, as no matter how many times you test something, there is always a chance that it will miraculously malfunction when it comes time for demos. Seriously though, try to test on the same computer/environment that you will be using to demo, as it will ensure consistency of experience and reliability.
Version Control (Git)
I figured I could tie this in here, although it could’ve easily been mentioned earlier. Git is a wonderful tool that allows you to make documented and incremental changes to your code, such that your last ‘checkpoint’ will ideally always be a version of your project in a functional state. With git, you can easily collaborate with code amongst the group, track changes, or roll back to any prior version of your code. There are many different hosts for your cloud git repositories, but Github is by far the most popular (and offers an awesome Student Developer Pack to boot)
Beyond the Hack
Contrary to popular belief, not all hackathon projects live and die within the confines of the event! ‘Clean’ coding with proper notation is not just good programming etiquette, but it will help yourself and others in the future if your hack is to be expanded. Proper documentation will help cut down on unnecessary frustration during an event, both for yourself and your groupmates.
Interested in sharing your project’s code with the world? Get on github! Github is THE place to contribute to the open source community, as well as to meet other people who may be equally as passionate about your project as you.
The topic of demos warrants an entirely separate post for itself, but here is a fair synopsis.
Emphasize what is cool about your project. Whether it’s the social impact, technical complexity, or kickass design, play to your strengths and center your presentation around that. There are no hard and fast rules about sharing presentation time amongst your group members, but ideally each person should speak on their sect of expertise. Be sure to mention the tech stack you used, and if you’re competing for a particular sponsor prize, try to reiterate how you used it and your experience with it. Give yourself some time to practice the pitch/demo, as it’s’ all the judges will have to judge your hard work!
Note: One reason companies sponsor hackathons is to get honest feedback from developers trying to utilize their tech. Be honest with feedback on the tech you use, as it only helps benefit everybody in the end! The next time you go to a hackathon, bugs or frustrations you may have had with a company’s product may have magically been solved ;)
Note2: Slides during a presentation can work in some instances, but I personally prefer presentations that focus on the actual project at hand rather than emphasizing background info. Hackathon projects are about building something cool that excites you, not doing a school presentation for a grade.
Hackathon Submission Page
Here’s where you can tell the world about your project! Talk about problems you faced, the tech stack you used, and future direction of the project. The hackathon submission page will help colleagues, mentors, and judges understand more about your project — you can even turn it into part of your portfolio down the line.
The hacker community is always interested in projects happening across the world — be sure to share your awesome work!
Tip: On devpost, if you tag your submission page with the tools you used to build it, you can easily see other projects that are utilizing similar tech.
Hackathons are an unparalleled environment that allow you to literally turn your dreams into reality. You can enter with an idea and walk out with a prototyped product, built alongside a team of people you hadn’t met until you arrived at the event, made possible by a proverbial mountain of resources from software to mentors that otherwise would have cost hundreds or thousands of dollars. Get out there and make the most of it!