Why We Do Hackathons
If you’re learning to program, then you should be going to hackathons. We recently had two teams of students win two separate hackathons and they’re only four weeks into our software engineering immersive. Hackathons provide an exceptional opportunity for learning and growth for new coders.
A Little Backstory
Hackathons were conceived by Chad Dickerson. Yahoo’s Open Hack Day happened at the end of my first week at Yahoo and was one of the high points of my life in Silicon Valley. It’s hard to top standing in a crowd listening to Beck “hack” out some new music, and then drinking beers at 3AM with David Filo and Jerry Yang and the Yahoo! Mail team. Nimit and I also submitted our own hack, “Grayfitti” which was a maps hack back when they were cool. We called it Grayfitti because it let users paste their own maps over the gray areas of the Yahoo map (imagine campuses, museums). Our hack was that we had this GUI for sticking the map which used canvas and let users rotate the map directly in the browser.
1. Debugging and Reading the Documentation
A lot of programmers will sit there staring at the code trying to figure out what exactly the computer is thinking and hoping for divine intervention. A good start is putting “print” statements littered throughout your code–that’s probably how most of us learned back in the days of BASIC and C. However, the tools available now for debugging are incredible–tools like Console, Pry, Web Inspector, Debugger, Repl and others give you the superpowers of Hiro Nakamura to stop the clock of the entire world (or at least figure out where your code is breaking). Hackathons help new programmers turn to the tools because they don’t have time to sit there going through all the possibilities they can think of for why their code is breaking.
Hackathons take you out of comfort zone because you’re building something using new APIs you might not have seen before and you’re building something atypical. Documentation becomes a lifeline, something that you quickly learn how to use and leverage for the benefit of your project. Students get the added benefit of becoming familiar with a new API, and integrating different tools into their applications.
2. Presenting and Networking
There’s something that riles up the blood and the brain about presenting in front of a group of strangers. Add a live demo to that and you’ve got yourself a real show. We want to encourage our students to become comfortable presenting their work, logically and clearly walking people through how the product works, and developing a pitch that makes sense and appeals to people’s interests and logic. Public presentations and speaking is a skill that will stay with our students whether they stay in tech or move into a different industry.
Hackathons are a great chance for our students to meet people who work in the industry. This can be helpful in innumerable ways. Often they can get an inside look at what it’s like to work at a certain company, or hear another person’s opinion on anew piece of technology. The worst thing that could happen would be for our students to go through our program in a bubble only hearing our opinions and ideas; hackathons provide a prime opportunity for networking.
There are three constraints you’ll be constantly dealing with at a Hackathon– what you’re capable of, how much time you have left, and how well you can present your actual accomplishment. Beginners tend to underestimate the first and almost everyone overestimates the second two. Projects can never be fully completely at a hackathon and often the code is a patchwork job that is held together by a couple of shoe strings. We realize these constraints and encourage our students to refactor and refine their code post hackathon. It's a great way to teach students how to continually edit and pare down their code.
5. It’s Fun
Developers get to do what they love, meet some interesting people, and put a new idea out to the world.
Simulate Hackathon Conditions to Kickstart Your Growth
Obviously there’s not always going to be a hackathon to participate in, but simulating hackathon conditions can kickstart your learning. One of the most impressive accomplishments I’ve seen on Hacker News is Jennifer Dewalt’s 180 Days of Programming. Every day for six months Jennifer launched a new project, and the progression from her early projects to her later ones is a dramatic time-lapse of skill acquisition. In a way, Jennifer hosted a mini hackathon each day, pushing herself to build a website in 24 hours. Simulating constraints and setting a goal is great way to improve your programming skills.