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


Time Management at Khan Academy

by Several Authors on Jul 25, 2016

Everyone at Khan Academy received a plea recently:

I'm hoping to organize a blog post that joins together stories of how each of you manage your time, and lessons you've learned in your adventures so far. I'd love to learn from all of you, and I'd bet anything that a ton of other people feel the same way.

Here are four of the responses that came in (and stay tuned for the next fortnightly post where you'll see Oliver's full-length response)!

Elizabeth Slavitt

Each Monday, I make a to-do list in Trello with the most critical tasks I need to complete that week. This post isn't about goal-setting, so I won't go into too much detail about how I come up with my to-do list here, but on a high level, my weekly to-do list is derived from my yearly plan, which I create based on what I and my team are accountable for delivering to the company.

I make a new Trello card for each week and create a checklist for each day of the week. I tend to assign tasks that require long blocks of uninterrupted thinking time to Tuesdays and Wednesdays since I block Tuesday mornings and all day Wednesday for proactive work (no meetings). I also keep a couple hours Monday morning and all of Friday afternoon meeting-free when possible; that way I have time Monday morning to catch up on any emails or respond to any questions or docs that accumulated over the weekend and have time to wrap up any work from the week on Fridays before heading out.

After that initial respite Monday morning, the rest of Monday and all of Thursday tend to be filled with meetings, so I don't assign tasks that require much uninterrupted work to those days. Whenever I complete a task, I check it off in Trello, which I find quite satisfying :). If I don't finish a task I assigned to a particular day by the time I'm ready to wrap up work in the evening, I move it on Trello to another day that week.

I do my best thinking earlier in the day, so I try to do anything that requires me to generate original ideas in the morning or early afternoon and save things like providing feedback on others' work, helping others make decisions, etc. for later in the day since critiquing others' work is much easier than generating new work from scratch.

I get a lot of email, and I need to be pretty responsive since, as a manager, a big part of my job is helping others do their jobs more effectively; I also work with partner organizations so have to be responsive to their questions and needs as well. I could easily fill all of my working time in my email -- responding to questions, providing feedback on docs, making decisions, etc. -- but if I did that, I'd never make progress on bigger strategic questions or generate new ideas, plans, or processes for the company. In other words, I can't ignore my email, but I also can't let it dominate me.

Here's how I try to navigate that balance: Whenever I check my email, I respond immediately to anything I can answer or deal with right away. If something can't be dealt with immediately but isn't pressing, I use Boomerang to make it disappear from my inbox until a later date. I think of Trello as my proactive to-do list and my email inbox as my reactive to-do list. I try to complete everything on my Trello checklists each day or at least complete everything I set out for the week by Friday afternoon, and the same is true for my "reactive" to-do list: I try to get to inbox zero (no emails) every day or at least by the end of the week.

Andy Matuschak

This is an important topic, but a broad one: people write books about time management! I'll stick to two ideas that have particularly helped me.

From first principles

We're all in crunch mode sometimes—one thing after another, churning through some list of tasks. Time management discussions often focus on this level (what task management system should I use?!), but the most valuable decisions and corrections I make are at higher fields of view. Good time management doesn't matter if I'm not using that time to do what's important.

As a first step: beyond the tasks on my list, what are the projects and outcomes I'm currently working towards? Do any need to be nudged along or rescoped? Have any become some kind of zombie that's never going to end? Critically: are there projects missing given my areas of focus and responsibility? I generally review this level every Monday morning.

Then: I have to periodically review those areas of focus and responsibility. Given my couple-year goals, am I focusing on the right spheres in my life? Are my accountabilities working for my goals or against them? In the last couple years, I've often found myself answering "no" here, and that's driven valuable evolution of my role at Khan Academy.

Reviewed less frequently, but crucially: given the vision I'm pursuing in my life, do I have the right couple-year goals? Or even higher: does that current vision align with what I consider to be my purpose? (Thankfully, that last one changes less frequently).

For example, my professed purpose is "expand the reach of human knowledge and ability"; my current vision is "do that by making powerful ideas more learnable and by helping more people become life-long learners"; my couple-year goals on that path are to establish a successful research practice while supporting others in picking off lower-hanging fruit in the space.

For now, at least, these answers seem reasonably well aligned, but that's only because I often review my work from first principles in the way I've described. That vigilance is essential: I've certainly thrown out plenty of older answers to these questions.

Reliability without anxiety

Reliability is a hallmark of professionalism. It helps organizations scale because it allows work to be truly handed off. I can rest easy knowing that a reliable colleague will either complete their work as expected or will raise warning flags early if that won't happen.

As my responsibilities multiply, anxiety often accompanies my quest for reliability—not because the actual work is too difficult, but because I'm constantly afraid I'm forgetting something that's going to screw me.

Peace of mind here comes from a trusted source of truth. What are all my obligations? All of them? This isn't so hard in principle: get a task manager; do weekly "mental sweeps" to add everything that's missing; sleep easy.

But such a list quickly stops being a trusted source of truth because it's overwhelming and anxiety-inducing in itself! I might notice myself wincing away from it in the morning, letting my eyes glaze over the sprawling contents, only pretending to study it instead of thoughtfully prioritizing. Then when that really important task comes in, I won't simply add it to the list because I don't trust myself to reliably prioritize and complete work from it anymore—instead, I write it on the whiteboard behind me, or use a sticky note, or start another list… and that's when it's clear I've failed!

The hard part about making a "trusted source of truth" is the "trusted" bit. I find trust requires regular maintenance: reviewing my tasks often to ensure that they're actionable and relevant; delegating, deferring, and removing tasks which I'm not going to complete; slicing and filtering so that I'm only seeing usable information. I have to watch my own reaction when something important comes up, and when I feel wary of my own source of truth, I dig to find out why.

Reliability doesn't stop at the task level. As our scope increases, we become responsible not only for completing all our projects reliably, but also for choosing the right projects in the first place, and so on, all the way up the reflection ladder discussed in the previous section. One defining attribute of successful executive and senior executive roles is reliability at the couple-year-goal through vision levels. But first, my notes tell me this essay is due tomorrow…

[These ideas perhaps primarily adapted from practices I learned from David Allen's "Getting Things Done", influenced by Tim Urban, Merlin Mann, and various others.]

David Hu

  • I work from 9:30 - 6:30
  • I start by journalling 1 page on: why, what, and how. I come up with 1 “wildly important goal” that I schedule my day around.
  • I spend 10 mins on my morning checklist — scheduling the day, checking calendar, quick check of Slack, status update.
  • I’ll spend two solid 2-hour blocks, one in the morning, and one in the afternoon, on the wildly important goal. I close Slack and email during this time. Sometimes, I’ll go to a cafe too.
  • I use the Pomodoro technique — 25 min working, 5 min break. I meditate during breaks to calm and re-center.
  • I keep a spreadsheet of how focused I was on each Pomodoro work session. I ask my manager to look at that spreadsheet each week to keep me accountable.
  • I spend 5-10 mins at end of day reflecting — what I’m happy about, what I’m worried about.

John Sullivan

Responsibilities pile up after you're at a company for a little while. I've been working at Khan Academy for a couple years, so regardless of the project I'm on, there's always unrelated things competing for my attention.

My system for dealing with this is dead simple, and fairly effective: between 2 PM to 6 PM every day I work on my current project only, and I strongly resist any attempts at pulling me away from that work. Outside of that 2-6 block, I let myself be distracted by anything else that's demanding my attention.

The dog from the movie "Up" being distracted by a squirrel.

This lets me estimate my projects more effectively (I know each day is going to be 4 hours of focussed work on the project, no less, and probably not much more), and also allows me to be pretty trustworthy when I say "I'm busy and can't do that right now, but I'll take a look at it tomorrow morning".