Facebook's Hackathons and Engineering bootcamps have been a core port of our engineering culture for some time. They’re enormously valuable in keeping our engineering teams both creative and productive. However, as we grow, we often have to adapt and rethink the way we do things so we can continue to move as quickly as possible.
Last year, we had a few really high priority projects that needed to get done but no one was working on them. When we asked for volunteers, it turned out, sadly, that everyone was so wrapped up in getting other projects done that no one responded. After a second request went out with no reply, we realized that we needed to rethink how we could more quickly free up engineers for high priority projects, and "Hackamonth" was born.
The idea of Hackamonth is to encourage any engineer who has been on the same project for more than a year to leave their team for a month to work on something in a completely different area. Ideally, we hoped to have about 10% of our engineers working on a Hackamonth at any given time. This would not only greatly increase the fluidity of our engineering team, but hopefully increase the sharing of knowledge across teams.
Over the past year, we have had 3 pilot Hackamonths with about 35 engineers participating. The engineers that participated had either expressed a desire to participate or were randomly selected. While they could opt out, most chose to participate.
For each Hackamonth, engineering teams submitted project ideas that were about a month’s worth of effort. Teams working on higher priority projects were strongly encouraged to submit project ideas, and most did. The engineers then selected projects that interested them and, at the start of the month, joined the new team full time.
During the month, these engineers became fully engaged in their new projects while their previous teams were asked to act as though those engineers were no longer available to help. We hoped this would help to maximize their productivity.
When a Hackamonth finished, an engineering-wide forum was held where each engineer presented the results of their work, followed by a post-mortem wrap-up dinner to gather feedback and to learn more about the experience.
The Results Are In
The response thus far has been very positive. Most of the Hackamonth projects were launched as a part of the main site. For example, three engineers joined the mobile team to help with our most recent update to the Facebook iPhone app. Another engineer made some pretty major improvements in both overall site performance and photos performance.
Nearly every engineer found Hackamonth to be a great experience and something they would recommend to others. In addition, at least one engineer from each Hackamonth decided to stay with their new team permanently.
For the teams that lost an engineer, they believed that on the whole, the trade-offs were worthwhile. Often, they ended up with a returning engineer that was re-energized, had some new ideas, or were more certain that they were working on a team that was a great fit for them.
This summer we plan to start doing Hackamonths every month so that every engineer who has been on a project for more than a year can participate in a Hackamonth on a schedule that fits with their current team’s project timelines.
As Facebook continues to grow, we think that this will be a really healthy way to move engineers to high priority projects, to give engineers a chance to try new things and to keep our engineering culture vibrant and dynamic.
What do you think?
Dave is an engineering manager at Facebook.