There’s been a lot of noise over hackathons. Some people say they’re bad, others can’t stop singing their praises. For me, I’m all for anything that makes me better in my craft. Note: When I say hackathon, I also mean code jams, game jams and whatever else you call it when geeks hang out and code together! 🙂
I can honestly say that hackathons (and game jams) have made me a better programmer.
Part of this stems from the fact that one goal I had going in was to become a better programmer. I didn’t enter to win. I entered to learn and I have from every one I participated in.
Hack in my Head vs in the IDE
The biggest take away is probably the most surprising.
Instead of making me hack more in every project, I find I hack less. I find that my mind will hack on problems, trying various approaches before I even start typing at the keyboard. I thought it would be the opposite.
I think the condensed timeframe doesn’t allow for you to play at the keyboard. Almost every keyboard stroke has to be something worthwhile because you only have a limited amount of time. Therefore, when you do code it’s better code than when you have tons of time and could care less about the code because you know you can fix it later.
Code with Purpose
This is another thing that I found to be liberating.
I program to tasks that need to be delivered. Isn’t this what programmers normally do? Sadly, no.
Programmers like to tinker. We like to rewrite things that don’t need to be rewritten. For example, we may call an existing method in the code. The method works perfectly fine and we just need to use it. However, we may look at the code in the existing method and think, “Hmm…we could write that a little cleaner/better/nicer/spiffier/etc.” Then off we go, wasting precious time on something that requires no attention.
Always Have a Working Product
This is something I hear some programmers always have, but I never really put it into practice until hackathons. I’ll admit that there have been times when I’ll be in the middle of a big issue, that I’ll just walk away and come back later. Now though, not so much. I don’t leave until I can compile and run the project on the target platform.
Always having a working build is necessary in hackathons because you’re always demoing to fellow hackers, wandering judges, event sponsors, etc. I remember my first few hackathons where people would come up and say, “Can I see it?” and I’d respond, “Sorry, I just broke it.”
Stash Your Crap and Get Committed
Hackathons have also increased my dependency on Git.
In order to work fast and live without fear, you need to commit often. Once something works, commit it, push it to github and move on. There’s nothing worse than having a machine go on the fritz during a hackathon.
Committing and pushing often will insure a bad machine won’t throw you off your A Game.
Plus, for the rare occasion that you literally just ran a bad build moments before a “Can I see what you got?” guest arrives, stash that crap! Show a good demo, then reapply the stash and get back into the zone. The encouraging feedback will be worth the interruption and git makes it a snap to do.
You will never make friends faster than you will at a hackathon or game jam. People just love to hang out, have fun and make great memories. Whether it’s giving constructive feedback, buying pizza for everyone, celebrating being the last ones standing at dawn after coding all night or playing a fiddle to provide soundtracks, there’s something magical about being a participant in these events.
You will never learn faster than you will at a hackathon. Brilliant people participate and they have no qualms stopping what they’re doing to help you. In fact, for some, that’s the only reason they’re there. Jay Freeman, a brilliant coder/hacker, is the epitome of that person: Wicked smart and more than willing to help.
Hackathons Aren’t for Everyone, But They’re Good to Me
I may be a bit biased because I’ve won some decent coin at hackathons, but I have to say that I love ’em. You get to hang out with fellow programmers, who also are crazy enough to try to cram a month or so of work into a few days. Where else could you have a common bond that strong?
Hackathons are also great for team building. You can watch our short film that we made during a hackathon. It explains all the benefits a team can gain going through a hackathon.
If you have any other things you learned from hackathons, feel free to drop them in the comments below. See you at the next hackathon! Don’t know where to find them? ChallengePost has a great list, some of which you can participate from home even! As for game jams, Ludum Dare has virtual ones and 360|iDev has in person ones.