Monthly Hackathons at CodeHS and Building CodeHS Lite
Monthly Hackathons at CodeHS and Building CodeHS Lite
Every month at CodeHS we do a one-day all-day team hackathon. A core value for the company is teaching and learning, and as part of that, we like to always be creating teaching and learning opportunities inside and outside of the company.
Everyone in the company participates. If you don’t know any programming this is a chance to learn more, either using our website or exploring beyond. If you do know, then you have a chance to work on a fun project for the site that you’ve been thinking about. The constraint is it is a one-day hackathon and you want to choose a right-sized project that can be completed in one day.
So that’s what we do. Every month we have a team hackathon. It’s a highlight of the month, and it has a very collaborative feel. The hackathons have been extremely successful: key projects have come out of the hackathon, projects that have stagnated have been completed, and almost every person on our team has live code on the website. That is awesome. I bet you would be hard pressed to find companies where almost everyone has code on the site.
Almost every person on our team has
live code on the website. That is awesome.
It’s not an easy thing to do if you aren’t a programmer—even setting up a complex development environment takes time, and learning how to contribute also takes time. However, it’s something we like to prioritize since our company is about learning and teaching coding.
In the morning people will start working on their projects, for lunch we’ll order pizza, and near the end of the day everyone will present the projects they’ve been working on.
You can actually see most of the hackathon projects we’ve done over the last year and a half here: https://codehs.com/hackathons/ (this tracking page was also created at a hackathon).
I think a key part of prioritizing the monthly hackathon is we make sure to build delightful features into the site. We have lots of things we plan to build and features we are improving on. But attention to detail, and including fun easter eggs and small surprises is a really nice touch that users appreciate. Lots of the things that started as hackathon projects seemed minor, but turned out to be things people really enjoyed. Just scanning over the list I like that we added a `bark();` command, a new SQL course, and lots of fun, funny, and useful internal tools. One time we had some interns create a build-status orb with a Raspberry Pi.
Usually the format is that everyone works on their own project, or maybe a few people work together on a project. But one of the days we had a slightly smaller group and had everyone working on the same project. This was very much along the same lines as a One-Dayer.
The Problem was that we had recently had a lot of traffic and our site was unreliable for many of our users for a week. It is normally very reliable for customers but we had a huge amount of free trial users on the site. We want to make sure our site is always available for students to code on in one way or another, even if we are having issues.
The Solution is multi-part: one part is upgrading our server infrastructure. The other part is that we wanted a lightweight version of CodeHS available and extremely redundant so it was resilient to the natural breakdowns of the internet, Amazon and our own bugs, and was anti-fragile across many services.
So we took on a one-day project to build CodeHS Lite. The idea was to create a fully static version of our beginner coding environment that would be redundant across many services, from the domain names, to DNS, to app servers to static hosting sites.
We planned out what we would need to get the first version live on the internet in one day, and what would be the must-haves and nice-to-haves. Then we split the project into a few parts and started. Some people were on design, some were on HTML, some were figuring out how to get the editor to work in this site, and I was working on deploying across lots of services. At the end of the day, we did had demos live on many locations across the web, and had learned many things about hosting static sites.
The conclusion of this story is that we are about to launch CodeHS Lite, another person on our team took over that project and made it a lot more robust. I think that by doing a full-team effort to get this project to version-zero in one day we actually saw that it was very promising and it significantly sped up the time to completion. So that is how we do hackathons at CodeHS. We may be doing more full team one-day projects as well.
Have comments on this post? Interested in computer
science education? Tweet me at @jkeesh or CodeHS
@CodeHS. Contact our team at hello@codehs.com