Khan Engineering

Khan Engineering

We're the engineers behind Khan Academy. We're building a free, world-class education for anyone, anywhere.


Latest posts

Go + Services = One Goliath Project

Kevin Dangoor on December 20

How to upgrade hundreds of React components without breaking production

Jangmi Jo on September 23

How Engineering Principles Can Help You Scale

Marta Kosarchyn on August 21

Making Websites Work with Windows High Contrast Mode

Diedra Rater on March 21

Kotlin for Python developers

Aasmund Eldhuset on Nov 29, 2018

Using static analysis in Python, JavaScript and more to make your system safer

Kevin Dangoor on Jul 26, 2018

Kotlin on the server at Khan Academy

Colin Fuller on Jun 28, 2018

The Original Serverless Architecture is Still Here

Kevin Dangoor on May 31, 2018

What do software architects at Khan Academy do?

Kevin Dangoor on May 14, 2018

New data pipeline management platform at Khan Academy

Ragini Gupta on Apr 30, 2018

Untangling our Python Code

Carter J. Bastian on Apr 16, 2018

Slicker: A Tool for Moving Things in Python

Ben Kraft on Apr 2, 2018

The Great Python Refactor of 2017 And Also 2018

Craig Silverstein on Mar 19, 2018

Working Remotely

Scott Grant on Oct 2, 2017

Tips for giving your first code reviews

Hannah Blumberg on Sep 18, 2017

Let's Reduce! A Gentle Introduction to Javascript's Reduce Method

Josh Comeau on Jul 10, 2017

Creating Query Components with Apollo

Brian Genisio on Jun 12, 2017

Migrating to a Mobile Monorepo for React Native

Jared Forsyth on May 29, 2017

Memcached-Backed Content Infrastructure

Ben Kraft on May 15, 2017

Profiling App Engine Memcached

Ben Kraft on May 1, 2017

App Engine Flex Language Shootout

Amos Latteier on Apr 17, 2017

What's New in OSS at Khan Academy

Brian Genisio on Apr 3, 2017

Automating App Store Screenshots

Bryan Clark on Mar 27, 2017

It's Okay to Break Things: Reflections on Khan Academy's Healthy Hackathon

Kimerie Green on Mar 6, 2017

Interning at Khan Academy: from student to intern

Shadaj Laddad on Dec 12, 2016

Prototyping with Framer

Nick Breen on Oct 3, 2016

Evolving our content infrastructure

William Chargin on Sep 19, 2016

Building a Really, Really Small Android App

Charlie Marsh on Aug 22, 2016

A Case for Time Tracking: Data Driven Time-Management

Oliver Northwood on Aug 8, 2016

Time Management at Khan Academy

Several Authors on Jul 25, 2016

Hackathons Can Be Healthy

Tom Yedwab on Jul 11, 2016

Ensuring transaction-safety in Google App Engine

Craig Silverstein on Jun 27, 2016

The User Write Lock: an Alternative to Transactions for Google App Engine

Craig Silverstein on Jun 20, 2016

Khan Academy's Engineering Principles

Ben Kamens on Jun 6, 2016

Minimizing the length of regular expressions, in practice

Craig Silverstein on May 23, 2016

Introducing SwiftTweaks

Bryan Clark on May 9, 2016

The Autonomous Dumbledore

Evy Kassirer on Apr 25, 2016

Engineering career development at Khan Academy

Ben Eater on Apr 11, 2016

Inline CSS at Khan Academy: Aphrodite

Jamie Wong on Mar 29, 2016

Starting Android at Khan Academy

Ben Komalo on Feb 29, 2016

Automating Highly Similar Translations

Kevin Barabash on Feb 15, 2016

The weekly snippet-server: open-sourced

Craig Silverstein on Feb 1, 2016

Stories from our latest intern class

2015 Interns on Dec 21, 2015

Kanbanning the LearnStorm Dev Process

Kevin Dangoor on Dec 7, 2015

Forgo JS packaging? Not so fast

Craig Silverstein on Nov 23, 2015

Switching to Slack

Benjamin Pollack on Nov 9, 2015

Receiving feedback as an intern at Khan Academy

David Wang on Oct 26, 2015

Schrödinger's deploys no more: how we update translations

Chelsea Voss on Oct 12, 2015

i18nize-templates: Internationalization After the Fact

Craig Silverstein on Sep 28, 2015

Making thumbnails fast

William Chargin on Sep 14, 2015

Copy-pasting more than just text

Sam Lau on Aug 31, 2015

No cheating allowed!!

Phillip Lemons on Aug 17, 2015

Fun with slope fields, css and react

Marcos Ojeda on Aug 5, 2015

Khan Academy: a new employee's primer

Riley Shaw on Jul 20, 2015

How wooden puzzles can destroy dev teams

John Sullivan on Jul 6, 2015

Babel in Khan Academy's i18n Toolchain

Kevin Barabash on Jun 22, 2015

tota11y - an accessibility visualization toolkit

Jordan Scales on Jun 8, 2015


How Engineering Principles Can Help You Scale

by Marta Kosarchyn on August 21

Our engineering team has grown a lot over the past couple of years, and we’re delivering more product than ever before. It’s exhilarating. It’s also tricky. Because scaling is hard. This is the first of a set of posts in which we’ll talk about how we’re managing it at Khan Academy.

Like many engineering organizations experiencing rapid growth, we’ve used some standard strategies for scaling over the past two years:

  • Technology and architecture—leaner and cleaner
  • Decision-making and communication—be open, keep it simple, repeat often
  • People and organization—make sure the right person is in the right seat
  • Process and tools—standard and common across the team

These are effective levers, and they’ve been helpful as we’ve grown from a small engineering team to a not-so-small engineering team, moving ever faster and delivering more and more. Stay tuned for more on how we’ve used them.

Making the right shifts keeps things running smoothly
(Photo by Alok Sharma on Unsplash)

But today’s post is about what I believe may be the most critical aspect of scaling, the one that really determines how fast and smooth a growth journey will be—evolving your engineering principles so they support hyperscaling while keeping your culture intact and your team vitally engaged.

Getting principles right has an accelerating effect on all other levers of change as well as positive impact on growth and professional development opportunities for engineers. It also results in a sustainable codebase, faster velocity, and—most importantly—happy and productive engineers.

Khan Academy’s initial engineering principles were key to the success of our early years as an organization. They reflected the nimbleness necessary in a team bootstrapping a foundation for reaching the vast global community of learners whose lives could be changed with free access to a world-class education. Those initial principles were aimed at removing any barriers to speed. They encouraged, for example, anyone to work on any of the code, anytime. They were effective, and we grew in both impact and team size. We grew a lot. We grew to a size that meant alignment with our original principles was slowing us down. We became more likely to break things and to leave behind clutter in the code. Architectural decisions were made implicitly and on the fly and were not logged. Ultimately our pace of delivery slowed. That’s when we identified the need to correct course and embarked on a journey of turning things around: it was time to reexamine our engineering principles.

Getting principles right has an accelerating effect on all other levers of change

We had to refocus on what it takes to build high quality and sustainable code when there are 10 times as many engineers working on the product, when the product has expanded to include test prep (we have over 50% of the market for SAT prep) and enabling teachers and students in the classroom. And continue to publish more and more world-class content - now in more than 40 languages and across more than 370 courses.

Here are our updated Khan Academy Engineering Principles. A very thoughtful working group of Khan engineers, architects, and managers focused on what would guide us best in this next phase of our journey. The principles represent how we work together as a community focused on growing a world-class engineering team that delivers on a mission to provide a free world-class education to anyone, anywhere. We champion quality (sometimes we go slow to go fast), we nurture every engineer (everyone learns and everyone grows), and we collaborate compassionately (we work as an efficient team and we treat each other with utmost respect). The principles remind us that the impact we make on our community and on the world should be no less than spectacular.

I’m excited to share our new engineering principles with you. Please read. We’ll continue to unpack them in coming posts. And, we’ll talk more about how the new principles are guiding us through a re-architecture journey and other key foundation strengthening initiatives.

If you find our engineering principles are the kind that you want to hold yourself to, come join us—we’re hiring!