When I joined Algolia, the InstantSearch team was composed of two developers. Ten months later, we doubled the team and will have two more engineers joining us soon.
We are now focusing on several big projects at the same time. Even though we are a single team, we are inherently split into different projects. This means that not everyone is interacting with one another on a regular basis.
In addition, we don’t always have enough time to step back and try new things. As we were thinking of a way to solve those issues, the hack day retreat was born. The concept is simple: 6 team members, 5 hacks, 1 place outside the Paris office, and then non-coding team building activities to round off the day.
Here are some tips you might find useful if you want to organize a similar hack day.
1. Prepare the hacks upfront
To prepare for this special day, we were asked to think about several hack ideas we wanted to realize upfront. The idea was to choose the one we wanted to work on the day before. This is a mandatory step because you don’t want to spend your time looking for an idea on D-day. You’ll only have something like six hours dedicated to coding — use them wisely.
You should also make sure that everyone spent some time to do pre-research and pre-work around the hack, particularly if they know that they will manipulate things they’re not very familiar with.
For example, one of the hacks involved virtual reality throughout React VR plugged with a speech-to-text feature. Prior to hack day, we bootstrapped a blank app and made sure that those blocks were correctly connected to each other. When talking to the computer through the browser, the VR part would receive the corresponding text. Without doing that in advance, we could have spent half of the day configuring it.
A hack implies a lot of unknowns, so you really don’t want to get stuck with configuration issues.
2. Have a hack day outside of your office, in a nice place
As you’re going to spend a full day coding, it’s important to find a nice place where everybody can feel great and enjoy themselves. Being outside of the office really helped switch our brains off the regular daily routine and be totally focused on the hacks.
We manage to find a nice loft in Paris’s 11th arrondissement, full of commodities for everyone:
3. Take the opportunity to empower junior developers
If you happen to have a junior profile in your team (we recently onboarded one), a hack day is definitely an opportunity to learn a lot, albeit with some slight modifications. Here a few tips to make the most of it:
* Never assign a junior person a solo project. It’s the best way to make them feel excluded and not integrate with the team.
* Choose a simpler project that will cover some fundamentals related to the team’s day-to-day job (for instance, how to build a simple application with React).
* Put the emphasis on pair-programming and sharing knowledge (it is the perfect time to learn some workflow or debugging tricks!)
4. Focus on making an MVP
Focus on making a Minimal Viable Product rather than the best product possible. It’s way more rewarding to present something that works during the demo than a vision of something that may never happen. Try to add things step by step without thinking too far ahead.
For instance, in one of the projects, a spreadsheet was used: you don’t have to think about how it can scale and spend time researching the best tool to handle infinite scroll. Instead, you can allocate this time trying to go deeper in the project’s features. Here as always, setting priorities is key to effective time management!
5. Demonstrate your hacks
Don’t end the coding time abruptly. Instead, plan a demo time where everybody can showcase what they did. If the team can manage to push the demos on a repository afterwards, that’s even better, as you’ll be able to share the content with everyone interested.
Here are the hacks we realized on our hack day:
Accelerated Mobile Page is a page format proposed by Google. Its goal is to speed up their display on smartphones. The goal of this hack was to find out if you could build such a page using Algolia. See what Haroen discovered on this GitHub thread.
React has create-react-app to quickly bootstrap a React application, but they were no equivalents to start easily crafting a vanilla js app using instantsearch.js.
Check out what Alex built here: create-instantsearch-app.
- Editing indices from a spreadsheet
The goal of this project was to create a simple app allowing you to edit your index from a spreadsheet: https://github.com/algolia/algosheet/
- Index videos transcripts and search inside them
The goal of this project was to index transcripts of YouTube videos and offer to search through them. Looking for a quote? You’ll be redirected to the right place inside the video.
- React VR + React InstantSearch (featuring Speech-to-text)
In late 2016, we launched React InstantSearch compatible with React and React Native application. This hack was the occasion to see if it was working fine with React VR and to think of a new search interface using voice.
Check out what Marie built here: react-vr-feat-react-instantsearch
6. Mix fun and work
While coding is fun, you’ll also want to do some team building activities involving everyone at the same time. We choose to do an escape game at the end of the day as it’s a great way to have fun while strengthening team ties. It’s also a way to discover how your teammates are thinking and to collaborate.
We had a great experience staying for 60 minutes in the vastness of the ocean trying to restart the submarine engine and make the torpedo ready for any possible threats… and guess what? We all managed to accomplish our mission.
Finally, you can wrap up the day by sharing a drink and a dinner. It gave us the opportunity to share our feelings about our work at Algolia and the place of our team — and to simply enjoy the moment.
The hack day was definitely a success for us: it was a great parenthesis from our day-to-day jobs, and not only did we have some time dedicated to exploring other things (be it AMP, virtual reality, or exploring the possibilities of Algolia), but it was also the opportunity to get to know each other in a different context.
It was the first time we organized a hack day for our team but it will definitely not be the last. We are thinking about what we could do next time to make it even better. Have ideas? Comments? Lessons learned from your own hack days? Let us know: @mlthuret, @algolia