Hackathons and coding challenges are intense furnaces throwing immense temporal, technical, and social heat, heat that can be used to forge one’s mettle, pushing one’s limits. It is this process of trial by fire that allows one to grow, personally and professionally. Each of these events is unique, sometimes scarring, but always rewarding. I’ve participated in and won a number of these events over the course of my career, most recently receiving recognition at the BRAVO 01 Hackathon. What follows is some hard earned guidance for how to navigate these gauntlets – and win.
Background: What are Hackathons and Coding Challenges?
A hackathon is an event where a group of people get together to collaborate on a project. Oftentimes all the participants are developers, but some events are open to a much broader range of experts than just programmers. For example BRAVO 01 invited anyone to participate, resulting in a mix of programmers, visual designers, project managers, aircraft mechanics, and civil engineers. These events are usually short, sometimes less than 24 hours, but rarely more than 5 days. Participants work quickly and under immense pressure to produce a working product. Sleep, meals outside of the event space, and non-project related conversation are luxuries few can afford under the significant time pressure of such events. Hackathons usually end with a presentation to a panel of judges consisting of prominent figures, such as industry experts or industry leaders. The opportunity to meet with these figures is touted as one of the major benefits of participating in the hackathon.
“Coding challenge” is a term used mostly by the government to describe a hackathon-like software development event that’s part of a contract bid. Like hackathons, coding challenges provide a team with a very tight timeline to deliver a working product meeting very ambitious requirements. The difference between a hackathon and a coding challenge stems in the nature of the event and the reward for winning. Hackathons are informal events featuring much chatting and joking, with the winner receiving praise and a well deserved pat on the back. Coding challenges reward the winning team(s) with a lucrative contract with monetary value far beyond a pat on the back, and have strict rules in place to ensure that all participants have equal chances and no advantage is given to one over another.
Step 1: Sign Up
It may sound easy to “sign up” to volunteer to participate in an event, but it certainly is not. Most events have far more volunteers sign up than they have spaces available, so the event organizers can and will be picky with who they select to join the event. Therefore, as a participant, you need to have the knowledge, experience, and ability with a profile to match.
- Polish your resume and ensure it aligns with the event. Many hackathons and coding challenges will ask for and check your resume.
- Make sure your LinkedIn profile is in shape.
- Get your GitHub profile in order.
- Take your time filling out the application and don’t be shy. This is not the time for humility. Make sure to tailor your answers for the event; don’t provide generic responses.
- Have sometime else review your application and anything else you’re submitting. It’s easy to get tunnel vision and forget to include some key information; a third party review will mitigate this risk.
- Ensure that your current position (such as security clearance, background, physical location, and employment history) permits your participation.
- Understand the costs and who will pay them. Will your current company support your participant and cover expenses, or will you have to foot some (or all) of the bill?
Step 2: Really Sign Up
In Tracy Kidder’s The Soul of a New Machine, engineers “sign up” implicitly sacrificing part of their lives, completely dedicating themselves to the effort at the cost of everything else (sleep, exercise, healthy diet, even family). And that’s exactly what a participant in a hackathon or coding challenge needs to do in order to get the most out of the experience and also in order to have a chance at winning.
Most participants have “signed up” too, so having this level of dedication isn’t a bonus – it’s a baseline expectation.
Step 3: Reduce, Reuse, Recycle
These events are not the right time to indulge in unnecessary complexity, overly fancy designs, or exploration of new tools. These events, with their intense time pressure, are opportunities to demonstrate expertise in the tried and true, to show off honed skills, and to demonstrate existing talents.
Reduce the amount of work you and your team has to do as much as possible. Embrace the KISS Principle. Einstein’s “Everything should be made as simple as possible, but not simpler” quote should play over and over as you proceed through the event. For example, are you itching to win buzzword bingo by building a microservice architecture? If the requirements don’t say you have to do a microservice architecture, and you think you can meet the requirements faster with a monolith, then use a monolith. It’s better to succeed with the tried and true than fail with fanciness.
Reuse existing work as much as possible. Is there a library that you could include that saves you from writing code? Could you use an existing tool instead of having to create something new?
Recycle previous work. Is there an existing visual design language you can leverage instead of creating a new one? Do you have a project that overlaps with these requirements that could be modified to meet them quickly? Do you have a cloud environment available that you could use, saving you from having to start from scratch?
Remember: extra credit only counts if you complete the assignment. And in this case, the assignment is very challenging and under immense time pressure, so there’s no guarantee that you will have the luxury to indulge in the extra credit.
Step 4: Present
After all that grueling work, it’s finally time to show off the fruits of your labor.
Until this point, the only people who know what the team has accomplished is the team itself. So unless you present your work and do so well, the entire effort is wasted. Since the team has been pushing itself incredibly hard throughout the challenge, presenting will be even more difficult than usual, since there is little to no time to rehearse and patience tends to be short due to exhaustion. But now is the time to dig deep and really exert that reserve of mental fortitude: show that panel of judges how great your work is and how much of a capable professional you are even when under incredible pressure. Finally, always remember your audience, optimizing your presentation to those who will receive it. Is your audience technical? Are they in senior leadership roles? Are they peers?
Step 5: Network
Many hackathons wind down with some free time to look around and see what other teams have accomplished. However, don’t get too drawn in by the wonders created by others; instead, focus on the network opportunities. Make sure to get the contact information of your teammates, the judges, and anyone else of interest. Then, when the event is over, follow up with these connections.
Hackathons may be short, but they are incredible, intense experiences; connections made during such trying times are like bonds forged in battle. Perhaps I’ll see you on the front lines of such a competition someday.
Step 6: Retrospective
After the event has wrapped up, it’s time to produce an after action report. Make sure to note what went poorly, but don’t forget to congratulate yourself on what went well, too. Take this after action report to heart, really try to learn from it, and apply these lessons learned to your future efforts in hackathons as well as more typical circumstances. Keep the hackathon product around: that code, those designs, or whatever artifacts were produced may be applicable in the future, improving your experience at your next hackathon.
Closing Thoughts
“We do these things not because they are easy but because they are hard” could easily be said about hackathons as well as moon landings. Keep in mind that challenge is the reward, keep a positive and productive outlook, and use these tips to get the most out of your hackathon experience.