Hacking A Hackaton

After the AI hackaton in Minsk (where I joined the team that reached the 2nd prize) and Spacehack in Moscow (where I was a member of a tech committee and reviewed ~30 projects), I’d like to naively generalize some thoughts about preparations for hackaton. Of course, a hackaton means rapid decisions, more code and inspiration, less planning. But some planning prior to the event is still useful.

What do jury members (and, of course, venture guys who pay for the party) want to see?

  • product and market understanding;

  • observable dynamics between the checkpoints (startup guys name it traction, nerds could name it a derivative);

  • some bells and whistles that make your code looking more or less similar to MVP (those guys don’t like source code and command line interfaces so much).

I know no recipe for making up good ideas or proving your ideas are good. Probably if you do participate, you’re sure enough the idea is cool. So there is no silver bullet for this part (in my head at least).

Showing you’re not stuck is easier when you’re into data science area. Build a very stupid pipeline at the very beginning: linear model on top of messy data is good enough, usually it is still better than rolling a dice and looks a suitable step to your ultimate goal. Later you will have a chance to fine-tune your favourite network or add more trees into your ensemble.

A pipeline should be followed by metrics. “We did something and reached ROC AUC 0.6” is not that bad as some of data people think. If you have a checkpoint left, you’ll have a chance to surprise a committee with better metric later and show how awesome you are. As soon as you have no metrics, it may look like playing in a sandbox (even if you overperformed in reality).

what a lame model, eww

Finally, prepare some Flask (or use any other microframework, who cares) application with a basic features: web UI with various fields and ability to call .predict for some mocked model. You don’t have to be full stack engineer, you need to copy and paste Bootstrap and jQuery snippets from StackOverflow.

If you’re a chat bot hipster (or any other cutting edge technology), please replace Flask and other web words to something more relevant to your area - there is a boilerplate everywhere.

As a bonus: think like a devops and write a small script that deploys this app into any cloud. Many teams can not pass the barrier that divides a good model in Jupyter notebook and something looking like primitive web service. Having such boilerplate in advance will allow you to convert your fancy model into service prototype during the lunch.