KA Engineering

KA Engineering

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

Subscribe

Latest posts

Working Remotely

Scott Grant on October 2

Tips for giving your first code reviews

Hannah Blumberg on September 18

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

Josh Comeau on July 10

Creating Query Components with Apollo

Brian Genisio on June 12

Migrating to a Mobile Monorepo for React Native

Jared Forsyth on May 29

Memcached-Backed Content Infrastructure

Ben Kraft on May 15

Profiling App Engine Memcached

Ben Kraft on May 1

App Engine Flex Language Shootout

Amos Latteier on April 17

What's New in OSS at Khan Academy

Brian Genisio on April 3

Automating App Store Screenshots

Bryan Clark on March 27

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

Kimerie Green on March 6

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

Meta

Khan Academy's Engineering Principles

by Ben Kamens on Jun 6, 2016

You know those super-frustrating movie scenes where the entire plotline is driven by some sort of completely avoidable communication failure?

Where if the two characters WOULD JUST FRIGGIN' TALK TO EACH OTHER, the whole shebang could've been avoided? And you, you poor shmuck in the audience, just have to sit there and watch the author jump through all sorts of hoops to justify why these two otherwise-humanesque characters seem to be woefully incapable of talking like humans?

The "communication failure" trope seems super contrived when I'm watching a movie. But when playing my role as part of a growing company, I'm part of an intricate system that's constantly creating communication failures just as epic and just as avoidable.

Growing, changing companies are breeding grounds for communication failures, no matter how thoughtful and brilliant and well-spoken every single employee is. Sad!

One of the ways to innoculate your company against such a painful reality is by building a team that doesn't require perfect communication to succeed.

Fleetwood communicates well

That's how a lot of "company values" documents get started: with a desire to give every single person the context they need such that without perfect communication, one can make decisions in stride with the rest. By establishing a few key cultural messages that can be repeated — as new hires join, as processes change, as teams rearrange, as priorities shift — you can create a team that gets stronger while communication keeps getting harder.

Our principles, shared with you

Our engineering team is growing, communication is getting harder, and it's important that every single person wields a few key principles that can be used to make decisions in the face of ambiguity.

So we wrote ours down and are now sharing 'em with you. You're free to use this doc however you want — remix it, disagree with it, print it out and fold it into boat.

⇢ Khan Academy Engineering Principles ⇠

In writing this we were inspired by Gusto's version. If you read 'em, notice that they're meaningful in that they take guts and inflict pain. Gusto's "we're here to help" value is particularly gutsy in today's Silicon Valley culture.

It's certainly taken guts to stick with Khan Academy's "shipping beats perfection" and "anybody can fix anything" values. It's also been hugely valuable.

I'm proud whenever I see our principles help somebody move forward in the face of ambiguity. That's exactly the point — empower people to get going without requiring perfect communication. We're gonna need more and more of that strength as we grow.