Now that I have a couple of hackathons under my belt, I thought I'd take a moment to share a couple of tips and tricks I've learned for making it through a hackathon in one piece.
If you're getting ready to go through your first hackathon, good luck! I hope these suggestions help make your experience a bit smoother. Hackathons are easily one of my favorite parts about being a developer, and I hope that you end up loving them as much as I do.
For everyone else, feel free to chime in with your own advice! I'd love to hear your personal experiences for getting the most out of a hackathon, and what you wish you'd known before taking that first leap of faith.
1. Take Breaks
Take breaks, and take them often.
Your brain is a muscle, and like any muscle, it needs rest. Planning out a couple of 5-10 minute breaks where you walk away from your computer will leave you refreshed and ready to hit the ground running.
2. Plan (And Then Plan Some More)
The key to a smooth hackathon is good planning.
"But we're in a time crunch!" You'll say. "There isn't any time to plan - there's barely even enough time to code!"
I know! Diving straight into coding is the ultimate temptation, especially when you're facing down the first five minutes of your first ever hackathon. You've got a ton of ideas and you're already on your second cup of coffee. You could probably code the Taj Mahal.
But that's you now.
The planning is for you in ten hours, when you realize that one of your APIs isn't giving you the information that you need and half of the code you've written needs to be adjusted or scrapped. Is there a crucial feature that your team didn't realize you'd need? Does anyone know how these seperate components are going to link together?
Don't do that to yourself.
It'll seem like a huge waste of time, but that "hours of planning can save weeks of coding" saying is so prevalent because it's true
Take the time to list out every possible thing that your hackathon project might need, and then cut them down until you have a solid idea of what your MVP (minimum viable product) will need. Break out whatever organizational tools you'll think you'll need - spreadsheets, wireframes, task managers - and start hashing out the basics of what functions and variables you'll need once you have an idea of how your project will flow.
The more you plan, the easier your hackathon will be.
3. Merge Often
Now that your features have been mapped out and broken down into much smaller chunks, you'll want to push and merge your code as soon as you've completed a feature.
The more you merge, the less merge conflicts you'll have. The less merge conflicts you have, the more you'll be able to curse at your code instead of Git.
Make it a habit to grab your group whenever you have a branch ready to merge. Pick someone to pull and review your code, and once they've approved it and pushed it to dev, the whole team will pull from dev. This helps to make sure that everyone is on the same page and makes it more likely that you'll catch potential issues before they become a bigger problem.
4. Communication is Key
Hackathons are a perfect example of what people can accomplish when they work together.
In the heat of the moment, though, it can be easy to slip into your own little world and hammer out whatever you're currently working on.
But remember - you're all in this together, and the more you communicate, the quicker the group as a whole will work through problems.
If you realize that you'll need some different data from someone else's code, let them know. Take a moment every hour or so for everyone to give a quick rundown of what they're doing and any problems they're having. It can also be helpful to practice pair programming and switch partners so everyone in the team has an idea of how the whole project is functioning.
5. Take Care of Yourself
Eat food, take your vitamins, drink something that isn't 98% caffeine, and get as much sleep as your guilty conscience will allow.
I'd say that last one is probably the most important, and easily the hardest to accomplish.
Giving yourself a good night's sleep on the first night will mean more energy for the final push, and you'll thank yourself for it when there's one hour left and your project has been crippled by CSS.
6. Make Deadlines (And Then Stick To Them)
Time management is absolutely crucial when working in a crunch, and hackathons are no different.
A great way to make sure that you don't let yourself get lost in the zone is to make a short deadline for when you think you'll have a feature done, set an alarm for it, and then stop whatever you're doing as soon as it goes off. Forcing yourself to stop working lets you reassess where you're at from an objective standpoint and avoid the trap of spending 'five more minutes' tackling a minor issue, only to have those five minutes bleed into an hour.
This is also a great way to make sure that your team checks in with each other regularly!
Even if it's just a quick thirty second check in, letting the alarm be your guide will free up your brain to focus more on coding and less on making sure everyone knows what's going on.
7. Use Dummy Data
If you're using an API, don't make the mistake of assuming that you have to get everything up and running right away!
If you can, make a call to the API in Postman, take a look at the kind of data it's giving back, and then make a quick dummy data file that replicates the kind of data that you'll be using. This lets the other people in your team write and test their code around static data so everyone can move forward without waiting on anyone else.
That said, it should be noted that communication is doubly important when using this strategy. Quadrupally important, even! The moment the data you're getting back changes, or as soon as you realize you'll need different data from whoever is working with that particular API, it's crucial that you let them know as quickly as possible.
Don't be the guy who tells their teammate last minute that they aren't getting any Nicolas Cage pictures back from the API call when your entire feature is built around dynamic images of his face.
8. Focus on the MVP
Hackathons are a perpetual time crunch, so everything that you plan needs to account for that lack of time.
You might have the blueprint to the Death Star in your head, but for the sake of your sanity and the sanity of your teammates, find a way to dumb it down to a parachute.
Get it as bare bones as possible, and then cut it down some more.
Even if you're a wizard at coding, you can always add in extra features later, but it's a nightmare to be halfway through a superfluous compoment only to realize that you're routing is off, or one of your functions is broken. Play it safe, plan it well, and you'll set both you and your team up for success.
9. Fail Faster
This is absolutely critical during hackathons, but it's pretty great advice for daily life as well.
When it comes to perfecting a skill, quantity always, always trumps quality.
If you make it a point to fail faster and learn from your mistakes, you'll have much more experience to pull from, and the time it takes for you to tackle new problems will shrink dramatically.
Make a plan, write some code, test it, and see if it works.
If it does, great! But if it doesn't, make a note of what went wrong and come at it from a different angle. Maybe talk to one of your teammates and see if they can point you in the right direction.
Either way, once the planning stage of your hackathon is over, the last thing you want to do is to waste valuable time thinking about the merits of one approach over another when neither of them might end up working at all. Don't be afraid of failure - lean into it!
10. Have Fun
Don't take it too seriously! Let yourself have fun and enjoy the experience, stress and all, because I can guarantee that it'll be over before you know it.
Also, it's important to remember that it's not the end of the world if your project isn't where you hoped it would be at the end of the event. Don't let yourself be afraid to take risks and push yourself - odds are you're not at a hackathon to make a perfectly polished project, anyway. You're here for the experience, not to prove that your code is the best or your CSS the prettiest.
Be afraid. Work hard. Get pumped!
Be proud of whatever you've made, even if you were hoping for a Gerber Baby and got a feral goblin child instead. You worked hard on that sentient trash heap! It's beautiful in it's own special, horrific way, and you'll be rightfully proud to show off the product of your hard work.