My First Hackathon (And Why You Should Do One)

Rick Moore
7 min readJun 15, 2021
Photo by Markus Spiske on Unsplash

This past weekend, I participated in my first ‘hackathon’, organized by Cody Green of Flatiron School. As a recent graduate of their software engineering program, I’d heard this term ‘hackathon’ several times, but never really had an idea of what to expect to participate in one. In fact, I used to think it sounded like a bunch of anonymous masked hackers with laptops in a dark room racing to see who could crack a cypher and steal the Declaration of Independence first.

Photo by Clint Patterson on Unsplash

Well… that wasn’t quite right, and the reality turned out to be one of the most valuable learning experiences of my coding career. A hackathon is a gathering of like-minded creators, across different tech and coding disciplines, who team up and create together on a tight deadline. This can often be an acid test for new coders, tossing their skills into the fire, and put their clout to the test.

The theme of this hackathon was “Work Together” and we were tasked with creating technology that facilitates teams to do just that. Coming out on the other side still breathing, I learned so much over these intense 3 days. Here are some of my takeaways from this unique experience:

Let the Brainstorm Rage On

Photo by Johannes Plenio on Unsplash

2–3 days fly by like a hurricane, but planning out the process of your application cannot be understated. The more clear and developed the overall vision, the easier and faster it is on the other side to code that vision out. Not only did the team spend several hours riffing on different core concepts of the application, the front-end team members spent the better part of 24 hours creating mock-ups of the UI design they were envisioning. These were shared among all the team members so we had a crystal clear goal of what the app was going to look like and how it would operate. This preparation is invaluable when starting a new project, especially when the deadline to deliver is so tight. Before we even touched the code, we had a framework to reference:

Iceberg Profile Mock-up

Prioritize The Core Features For Presentation

I went down several code rabbit holes during development, and many of them were due to a misplaced sense of pride or narrow project view. For example, I implemented full user login using the Devise gem on the back-end. This took several hours to debug and by the end of the weekend, it became clear that my implementation would have made sense in taking the application into production, but created more bugs in the short term, without the luxury of time to find and correct them. A placeholder functionality would have been quicker and easier to implement, and for the purposes of the demonstration, would have been identical to the work I did.

It Is Okay To Mock Data To Get a Front-end Feature Working

When trying to spin up an app quickly, there is no shame in hard-coding data to quickly bring a feature to life. If you have time at the end, you could add in the intended functionality under-the-hood, but you’ll still have that feature working in some capacity for the demo if you run out of time.

Communicate Regularly With Your Team

Photo by Headway on Unsplash

Seek out tools to keep track of who is working on what. We ended up using a delegation tool called Asana to manage tasks. Nothing is worse than spending 2 hours on a feature, only to find out one of your teammates was working on the same or similar implementation, especially when every minute counts. On a related note, have no shame about asking your teammates for help if you run into a bug that you can’t solve. A fresh pair of eyes may be just what it needs, and it’s in everyone’s best interests to be familiar with the whole codebase. Helping out is how this shared knowledge flourishes.

Typically, students don’t get as much practice in this realm of collective building as they should, especially over the last year of the pandemic. I would consider this to be the most valuable learning aspect of the the whole event: The team members were forced to look at a big picture and recognize the strengths of other members, and maximize those strengths into a cohesive direction. This social (yet distanced) aspect was a huge learning experience that simply can’t be replicated coding on your own projects.

Github Is Amazing But Challenging

Photo by Yancy Min on Unsplash

Any modern development team will utilize the tools Git and GitHub in their workflow. Git is a command line interface that allows developers to track their work with snapshots that can be rolled back, or merged together during the development process, and GitHub is a browser based application for remote repository management, that uses the Git framework as its base. Most students learn the first few basic commands, and don’t dig much deeper, but all students of any coding discipline would be doing themselves a favor by seeking out tutorials on advanced Git usage.

In the real world, as made clear by this hackathon, Git is absolutely crucial to managing a code base with many contributors. As a team, the majority of our last day of work was spent treading water in the deep end with Git and GitHub, and resolving conflicts between the work we had all done. Mistakes were made and things got more complicated than we all could have imagined. However, this stressful environment made the benefits and pitfalls of the platform clear, and made some best practices very clear as we worked through the muck. These are experiences you can only gain by working through them first-hand, and mastery of collective coding tools like GitHub is crucial for the modern developers toolbox.

Recognize Your Team

Finally, It’s important to recognize how the support of a close-knit team helps to inspire and motivate all the members. Personally, these 3 days were probably the most intense and exhausting of the entire Flatiron Software Engineering program, because we were using all the skills we had been honing over the last several months, but in a super concentrated flurry of ideating, designing, planning, coding, debugging, and finally presenting our work to all the event participants.

I reached the end feeling like I’d run a marathon, and that’s the point. This sort of environment is where we grow as developers. We get introduced to new technologies that our teammates are familiar with, and get to play with them first-hand in a fast-paced context that doesn’t forgive inaction. You learn what the speed of a group can bring to a project and the challenges that come along with that. I feel incredibly lucky that the 6 members of my team ended up being skilled and clever but also a pleasure to work with; that certainly isn’t always the case. If not for the dedication, and positivity and supportive attitudes of the team members, we wouldn’t have come anywhere close to the quality of product that we delivered in the end.

The Result

Iceberg login screen

In a tornado of GitHub push and pulls, we presented the closest thing we had to a complete application, that we’d committed changes to literally minutes earlier. Iceberg is a social media platform used to connect coworkers on a level deeper than the surface. It implements a user profile where a user can edit their information and interests, and a connect page where a user can search for other members of their company with similar interests. A messaging system allows quick connections to happen and allow a team to be more connected as a whole. The team decided not to stop work at the end of the weekend, and we have decided to continue contributing to the codebase moving forward, a testament to the inspiring nature of events like this.

Thank you again to Cody Green and Flatiron School for hosting this hackathon. I can’t wait for the next one and if you’re a developer and have never participated in an event like this, I hope this helps to inspire you to do so. I’d also like to thank my lovely wife, for being so supportive even when I get completely lost in my work. This was a long weekend, but she is my anchor and I wouldn’t be able to continue this journey without her!

--

--

Rick Moore

Software Engineer at Thrive TRM. Specializing in Ruby on Rails, React/Redux and JavaScript.