Last month OpenDNS hosted our own code-a-thon. Since it was such a great experience for our team, we wanted to share insight on our process, as well as a look at what went well and what we’ll be sure to improve on next time.
Planning
Planning the code-a-thon was pretty simple. We encouraged employees to work on a self-selected project for 24 hours, and only had a few rules:
- Code-a-Thon starts at 10:00 AM Thursday ends at 10:00 AM Friday
- You must work in teams of 2 +
- No posting of code or projects to live servers allowed
- The project should be somewhat aligned to our space or our company
- It’s okay to create Open Source tools, but they must be approved before posting publicly
After the 24-hour period was up, participants would be asked to demo what they for the rest of the teams. Initially, we opened the Code-a-Thon up to all engineering, operations, research, and product management teams.
Selecting Projects and Teams
We started promoting the Code-a-Thon internally a few weeks before it kicked off. That gave our team members time to start thinking about their projects and to brainstorm on teams and ideas. We created a board on Trello that listed project ideas so employees could add themselves to teams, or collaborate. At our weekly company-wide meeting later that week, we announced that plans for a Code-a-Thon were underway. We were pleasantly surprised to find that employees from outside of our technology groups were interested in participating, so we opened up the challenge to everyone.
Kick off @10:00 AM Thursday
The morning of the Code-A-Thon we gathered all the participants to go over details. I reiterated why we were doing this, the rules of engagement, and shared details on the fuel we’d have available – countless energy drinks, a steady supply of deliveries from favorite local eateries, and plenty of amenities like blankets and toothbrush kits.
Teamwork
Once we kicked things off, our teams got right into it. Since we have engineers spread out in both our San Francisco headquarters and our Vancouver, Canada office, lots of our teams got started by grabbing a conference room and setting up Google Hangouts.
We also had a few last-minute participants, but our team is really collaborative, so it wasn’t an issue for the teams to add another person or two. Many of the teams started and ended with the same project idea, but there were quite a few that changed their ideas after early brainstorming. We even saw movement between the teams during the event, as different projects required different skills.
Late afternoon on Day 1 we decided to have an impromptu ping-pong tournament. It was nice to break up some of the coding.
Many participants worked through the entire night on their projects, some slept a few hours, and others actually finished early! Luckily it was a very nice night in San Francisco, so some of us worked on the rooftop under the moonlight.
At midnight we met on the roof to toast the work that had already been done, and then we quickly got back to our projects.
Demos
As morning came, the teams starting wrapping up their projects and discussing how they were going to demonstrate what they had accomplished. At 10:00 AM the teams met up to present, and each were given 10-15 minutes to announce their team, what they worked on, and show a demo. We were able to stream the demos for both of our offices, and record them for the people who weren’t able to watch live. I was impressed to see how excited our crew was to see what others had built, even after many worked throughout the night. We also had a ton of folks from other departments who came out to watch the demos.
It was quite amazing what the teams were able to accomplish in just 24 hours. There wasn’t a single team that didn’t finish enough to show a demo. After a few hours the demos wrapped up and we celebrated over a delicious lunch. Employees that participated in the code-a-thon were free to get some final work done, wrap up, and the go home and sleep as needed.
Although we didn’t see the Code-a-Thon as a competition, we thought it was important to acknowledge the amazing work that was done. We set up an anonymous survey where participants could vote on the projects. Voting rules were simple: you can’t vote for your own team, and you can only vote once per category. The categories included hardest technical challenge, most creative, best demo, and best overall project.
Retrospective
What went well.
- Teamwork and collaboration across teams.
- 100% participation from all engineering teams and even some from outside engineering.
- Quality, quality, quality. The quality of projects that were delivered in just 24 hours was amazing.
What did not go well.
- Not enough whiteboards. We have whiteboards in all of our dozens of conference rooms, as well as several mobile whiteboards, we still needed more!
- Demo webcast had some problems with streaming.
What we can improve upon for next time.
Since the Code-a-Thon was a huge success, we definitely will be having more of these for internal employees and we are even thinking about one day inviting outside guests. Some items that we would like to improve for next time are:
- Give the engineers more advance notice on when we will run the Code-a-Thon
- Involve more groups across the company (even those who are less technical) to participate. The principles of a Code-a-Thon can be applied across all disciplines.
- More whiteboards!
- More sticky notes!
Shipping Projects into Code
Although we had a rule that no team was allowed to push code into production during the Code-a-Thon, we are now are in the midst of polishing up some of them and pushing them into production. The first one is two-factor authentication and is available for testing now. Two-factor authentication is becoming more important as credentials theft gets more popular. We will be writing a more complete blog on this feature soon, along with several others we have in the works.
Screenshot of two-factor authentication:
We highly recommend hosting a Code-a-Thon as a means to create teamwork, excite engineers, and promote innovation. We’ve found that having just a few rules is the surest way to let creativity prevail. If you’ve attended or hosted a Code-a-Thon, be sure to share your experiences in the comments.