Did you know? According to Wikipedia, the world’s first hackathon was held in Calgary on June 4th, 1999. While hackathons have become much more popular since then, nowadays a hackathon is loosely defined as a fast-paced, sprint-like event where participants collaborate and leverage technical experience to create new solutions that address real world problems.
As a student with several hackathons under my belt, and an intern software developer with some industry project experience, I thought it would be interesting to compare hackathons and software development projects and explore how both provide meaningful opportunities for growth.
In a hackathon, the goal is usually to create a functional proof-of-concept within 24-72 hours. Hackathons can focus on specific topics like mental health or cryptocurrency, require participants to use a specific tech stack or platform, or incentivize the use of sponsor APIs and hardware.
Hackathons encourage developers to pick up fresh skills, leverage new APIs or tools, and learn how to integrate them into their existing expertise to create innovative solutions. When I participated in MHacks-14, we were encouraged to use Twilio’s API to integrate SMS text messaging features into our solution, while at CalgaryHacks 2021, we were challenged with incorporating Calgary’s open data into our app! The best part is any new experience with APIs or datasets is something you bring to every hackathon/project that comes after!
There’s also a heavy emphasis on communication and marketing skills since most hackathons require you to demonstrate or showcase your solution to judges. A polished video demo not only helps judges understand how your solution best addresses the given problem but is also a great way to easily share your project with friends, family, and potential interviewers. Having won a couple of hackathons largely attributed to the production and quality of what we’ve presented, I always make sure I put the time into editing a solid demo. In fact, I’ve often found myself staying up until 4 in the morning just to put the final touches on the video.
Lastly, hackathons provide an amazing opportunity to work in a cross-discipline environment. During the 2019 Innovation 4 Health hackathon, I worked on a diverse team with people in electrical engineering, kinesiology, and medicine developing a new therapy tool for kids with hemiplegic cerebral palsy. It was super cool to work alongside people with different backgrounds, especially when it came to understanding the condition and how we could use functional electrical stimulation to help patients!
Long-term projects, whether they’re industry or personal, typically aim to achieve a well-engineered, stable, production-grade solution. Unlike a weekend-long hackathon, software development projects sometimes take months if not years to complete and have a well-defined set of functionalities.
One of the hallmarks of well-maintained, high-quality software is a comprehensive, high-coverage test suite. Whereas in a hackathon, unit testing typically goes out the window, in all my project work at Arcurve, I’ve learned that unit tests are the backbone of software quality and maintenance. When I was tasked with drafting client estimates for new features, I made sure to include enough time to write unit tests. In fact, I’ve found that sometimes it takes longer to develop a suite of high-quality tests than implementing a new feature itself! While it can be annoying, future developers (including yourself 😉) will thank you when unit tests fail as opposed to the new feature deployed in production.
Effective communication plays a key role in long-term projects as well, however unlike hackathons, there is a great emphasis on communication for maintainability. In my first week at Arcurve, a pull request for a change I made was rejected several times. My mentor explained that it didn’t follow our project’s code standards and patterns, so while it fixed the bug, future developers could be confused by it and possibly waste time trying to understand it. Communication is not just about writing clear documentation (which, as an aside, I also found out that I love to do 😊), sometimes it’s as simple as the code itself!
To summarize, hackathons and software development projects provide excellent learning opportunities to teach developers to both explore and innovate, while keeping your code high-quality and maintainable. Are you a student interested in getting some hands-on, software development experience? Check out our internship opportunities here!