Capture the Hackathon

Why hackathons aren’t helping the world, and how CTFs can fix that.

Tuesday, March 17, 2015 · 3 min read

If you’ve been following my blog, you know that I’m not a fan of competitions. One of the few exceptions to this is CTFs. CTFs, or Capture-The-Flag competitions, are computer security challenges where the organizers host a few vulnerable servers and you need to “hack” them to find secret keys. CTFs are, to be very honest, a lot of fun.

But I’m not here to advertise CTFs—I’ve already done that in another post—I’m here to talk about how CTFs should be replacing Hackathons.

Hackathons are great. You hang out all night long, eat junk food, listen to music, and get all sorts of swag from the riches companies in Silicon Valley. You get to meet successful people who have their own start-ups.

But that’s all.

Respectable hackathons advertise themselves as educational: if you know how to code, you get a chunk of time to work on a project and learn a new skill. If you don’t know how to code, we’ll teach you.

The truth is, neither actually works out in the real world.

I know of exactly zero pieces of hackathon-code that the authors are legitimately proud of. “Authors are legitimately proud of” differs strongly from “authors are capable of making an exciting, buzzword-heavy pitch about,” the latter generally being the sole criterion in determining winners. Hackathon veterans largely agree that hackathon-code is rarely touched after the demo, because it’s usually written as just enough to create a demo. You aren’t supposed to pay heed to petty things like maintainability—you’re hackers! And so your efforts over 24 sleep-deprived zombie hours all go to /dev/null.

At the other extreme are the brave souls who walk into a hackathon cold: no programming experience whatsoever. From what I can tell, they’re generally persuaded to come by their nerdfriends, with the prospect of free food. In any case, I have yet to meet someone who actually fell in love with programming at a hackathon. Yes, the rich Silicon Valley startup culture is appetizing, but you can’t just show up at a hackathon and found a company. You need to put in the effort to learn the basics and fall in love with programming, and that is not something you can do in 24 continuous hours. You can’t put on a concert in 24 hours having never touched an instrument.

So, what are hackathons good for? They’re great for networking: making friends, and even getting internships or jobs. They’re great for getting T-shirts, playing games, and having awesome conversations. They’re great for hearing talks that make you feel good about yourself for being a “hacker”, “innovator”, “creator”, “developer”, etc. They are, in short, what the humble party has evolved into to suit Silicon Valley.


Enter CTFs. CTFs are hardcore. To do well in one, you need to be really clever. You need oodles of esoteric knowledge about all sorts of computer science. You need to be good at math, algorithms, general-purpose problem solving, and of course programming. A single CTF problem can teach you far more than an entire hackathon can ever hope to.

(You do not, by the way, need to be good at making a pitch in front of a panel of judges.)

I posit that a CTF is also as social as a hackathon: perhaps a majority of my best friends are folks I’ve met CTFing, either because they were my teammates, or because I ran into them on a CTF’s IRC channel. The conversations you have with your teammates while trying to solve a CTF problem are fantastic: you share large wealths of information, refute or build upon each others’ ideas, and ask hard questions, and do all of that while making puns and inside jokes.

As far as I’m concerned, a CTF is much more valuable than a hackathon for a casual programmer—mildly experienced script kiddies and ninja rockstars alike.

But more importantly, I can envision CTFs for beginners, too. Solving the problems in an introductory CS textbook is far more appealing when put in the context of hacking into someone’s server. I’m sure an elegantly crafted sequence of problems can Socratically teach someone enough basic Python to, for instance, compute large Fibonacci numbers recursively—for the right people, that should be enough to make them fall in love with computer science.

CTFs have a lot of potential: it’s a shame we’re instead promoting hackathon-parties as “CS education events”.


P.S. It would be an even bigger shame if this post comes true in the wrong way, and CTFs go the same route as competition math. As much as I love the idea, some part of me wants to keep the CTF world a secret so that the people who ruined competition math can’t get their hands on CTFs as well. I hope that’s not selfish—but I think that’s a topic for a whole new post.

◊ ◊ ◊