Khan Engineering

Khan Engineering

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


Latest posts

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


Engineering career development at Khan Academy

by Ben Eater on Apr 11, 2016

At Khan Academy, we see ourselves as part of a broader engineering community and just as we aim to open-source much of what we build, we also want to share what we learn while growing and maturing as an engineering team. We’ve previously shared our Engineering Principles. Today we’re releasing our Engineering Career Development guide.

We want to share this with the community in the hopes that other engineering teams may find value and give us feedback, just as we’ve used/stolen/gained so much value from Fog Creek, Stack Exchange, Rent the Runway, and others in making our career structures stronger.

Why do we care so much about this stuff?

Focus on the learner

Like many companies, at Khan Academy we have a list of company values that drive what we do and how we do it. Topping our list is “Focus on the learner.” Perhaps that seems obvious—who else would we be building Khan Academy for, if not the learners who use it? We’re a non-profit, so it’s not shareholders—we don’t have any. But much of education (non-profit or otherwise) is focused on every stakeholder but the learner. It’s important we don’t lose sight of our goal of making the education system better for more than just parents, teachers, or a small set of privileged students.

Keep learning

Only as continuous learners ourselves can we really empathize with and understand the mind of our learners. Consequently, our second company value is “Keep learning.” Not surprisingly, there’s no lack of opportunity to learn at Khan Academy. Apart from all the amazing content we produce for our learners, we love to teach each other too. We’ve had fellow team members teach us everything from bookbinding to cooking to coffee roasting to zumba. But the one thing everyone on our engineering team is continually learning is how to become better engineers.

As an engineering manager, I see it as a primary part of my job to support the other people on my team through their individual learning journeys. It’s pretty neat that by working on that challenge, we get to improve ourselves and simultaneously build even better empathy for our users. Our career development guide is a small piece of that puzzle.

But it took us a while to get here. Our career development guide started the way most of these career ladders do—and for similar reasons: We needed some sort of framework for figuring out how to hire and pay people with different skillsets and impact to the mission, we wanted it to be fair, and we needed to be able to talk about performance and growth. So we copied a lot of stuff from Fog Creek’s professional ladder and tweaked it a bit to meet our needs. That first version served us reasonably well for about 3 years, but over time we discovered its limitations.

The original version described each level with a single paragraph, making it hard for someone to really know what it took to move from one level to the next. As a manager, I had a shared understanding with other managers about what each level meant (or at least I assumed I did) and could give individual guidance to people. But that’s not good enough. It’s not good enough for me to be the only one to understand the full career progression and just tell you what the next step is—even if I’m right (which is far from guaranteed).

Student agency

As we were learning that lesson, it was teaching us the parallel lesson that even if we built the world’s best personalized learning system with all the fanciest artificial intelligence that always gave perfect recommendations to each of our students, it wouldn’t be good enough.

It turns out that true personalized learning requires more. It requires students to fully understand the path that they’re on. It requires students to know where they are, where they’re going, and what steps stand in the middle. Ideally, armed with this understanding, students have the agency to choose their own path. The teacher’s role is to help students understand and internalize the context, motivate them, reassure them, and give feedback along the way. But it’s the student who’s really driving things.

Changing the broader education system is going to take a bit more work, but this seemed like something we could try for our engineering team pretty quickly. So about six months ago, we added a ton of additional clarity to our engineering career development guide. We wanted everyone to have a shared understanding of how you grow as an engineer. For example, what skills does it take to become an engineering lead for a major initiative? If that’s still a few years away and you have trouble ever imagining yourself as a lead, what can you work on now to take a step towards being able to imagine that? We wanted the shared ~understanding that we had as managers to actually be shared by every engineer in the organization. We may never fully meet that goal, but we’ve made a lot of progress.

As a manager, I now find myself in a lot more of the kinds of conversations I want to be in. I’m having a lot fewer prescriptive conversations—e.g., “here’s the next thing I think you should work on”—and more conversations where I’m brainstorming possible career arcs with someone who knows how to take the next step and feels empowered to do so.

Shipping beats perfection

We know this document is still far from perfect. We like to look at the way our team functions the same way we look at everything else we make: Something we constantly iterate on. I’m hopeful that by sharing this (far from perfect) document, we’ll get some feedback that helps us learn from others outside Khan Academy.

Feel free to fork our guide and modify it to use it in your own organization. If you do, please reach out to me and share what you learned! Or if you don’t want to bother implementing this in your own organization, you could just join on our mission to provide a free, world-class education for anyone, anywhere. We’re hiring! :)

Thanks again to the many shoulders we stood on: