The Khan Academy Internship Experience
September 14, 2012Quite a few of my fellow interns have already written about what they did at Khan Academy this summer. We were productive, no? And there were fifteen of us, matching the number of full-time devs. Some of the stuff I did:
- Moved our MapReduces to a new backend tier, speeding up the jobs as much as 4x in the process
- Swapped in a next-generation datastore interface for some of our models
- Launched new landing pages for videos in 21 languages created through our massive translation effort
- Wrote and deployed a daemon that maintains up-to-date screenshots of all of our exercises (example).
- Hacked together a Chrome extension that brings Khan Academy content to Wikipedia
But weâre done with our internships. Another school year is upon us (sigh). If youâre a CS student who wants to intern for a tech company next summer, youâre probably going to be thinking about applying and interviewing in the next few months. So let me tell you why you should intern at Khan Academy.
Khan Academy interns learn from the best. The KA team is hands down the best Iâve ever worked with. Everyone is very smart, extremely competent, and really really nice, but more importantly they are the most uniformly passionate group youâll find anywhere. On day one of your internship, one of the devs will introduce themselves as your mentor, a go-to person for pretty much anything you needâfrom a better keyboard to long-term career advice. And I donât really know how to say this without sounding completey self-aggrandizing, but everyone in my intern class was fantastic to work with too. I donât envy our lead developer Benâwith a team that can execute this well, one of the most difficult questions is where we should be focusing our efforts.
Khan Academy interns ship code. To millions of users. All the time. By the end of my first day I had gotten my development environment set up, pushed a small change to our stable branch, and watched it get deployed to the live site. It didnât take long before I was commiting code for some pretty comprehensive infrastructure projects and feature work. If youâve ever worked at a large company where you didnât have a lot of direct impact on the product, youâll quickly get addicted to seeing your name in the âdevs with changesets in this deployâ message that follows a rollout. And weâre strongly committed to open source. Thereâs very little about your Khan internship (Khanternship?) that you wonât be able to share with the world.
Khan Academy interns use good tools. Our stack includes Python, JavaScript, Google App Engine, and Amazon Web Services (EC2, EMR, and S3). Collaboration is done with Mercurial/Kiln, git/GitHub/Phabricator, Trello, HipChat, and Google Apps. You can use whatever kind of computer you want. There are no centithreads, and barely any decithreads for that matter. Our code quality is always improving thanks to our testing, documentation, and continuous deployment practices, and the product benefits from extensive analytics work using techniques like A/B testing. Trust me: there are a lot of other companies at which this part of the job is a lot less fun.
Khan Academy interns have fun. Khan interns are treated like full-timers in many respects, and taking part in company culture is no exception. One thing I liked about KA being a small startup is that although we did have a couple intern-specific events, like an epic scavenger hunt around Mountain View, almost everything we did was entirely all-inclusive. There were the KA traditions like bread, petting Toby, hackathons, and the company offsite as well as a bunch of stuff outside of work like rock climbing, going to the movies, and trips to Muir Woods, Point Reyes, the Googleplex, and more.
Feel free to contact me if you have questions that I didnât answer here. But really, what are you waiting for?