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


A Case for Time Tracking: Data Driven Time-Management

by Oliver Northwood on Aug 8, 2016

Tl;dr: Time-tracking everything I do in Google Calendar has made me happier, more productive, and a better developer. You should do it too! It’s really easy and pays off quickly. All you have to do is make personal calendar events for everything you did at work each day, and you’ll have data about where all your time goes.

Having more data available is really cool. It lets you make decisions with more information, and alleviates a lot of doubt as to whether you’ve considered all possible options. I time-track everything I do. I use Google Calendar because it’s easy, and all I had to do to get started was create a few more calendars:

A screenshot listing 8 different calendars in Google Calendar.

Here’s what an example week looks like (with titles hidden):

A screenshot of my (very full) calendar in Google Calendar, but the event titles are blank.

Here I’ve hidden the titles of all my tasks, because I really do track everything and I’d rather not share all the details, but I found a week where I can publicly share at least the work-related tasks (red) in full:

A screenshot of just my work calendar in Google Calendar.

As you can see, the titles aren’t very specific, and many of them are just copied directly from my work calendar. The important part is to get the gist of where the time went. Since I have my calendar open for most of the day the added overhead of clicking and typing what I’ve been doing for the past half hour is really minimal, and in return I get to know (months later) that I spent a lot of time during that week talking to people on the team to make sure everyone was on the same page, and triaging development tasks in Asana. (This was a week where I was wrapping up being the tech lead of an 8-month project – nicknamed “Bibliotron” – and also on a support rotation where I was fixing bugs from our support queue.) I also spent a lot of time working in the evenings since we were in a time crunch that week.

If you’re not totally freaking out about the idea of seeing your life in such detail, read on to learn more about why on Earth I do this.

About a year ago, I realized that I had very low self esteem about my work life. I was constantly worried that I wasn’t getting enough done, and that people would figure out that I wasn’t a good developer. Anyone who has been down that road knows that it self-propagates: having low self-esteem causes you to take on less responsibility, which makes you stagnate, which makes you feel like you aren’t very good, and so on. It’s a cycle that’s really hard to break.

The biggest thing that was keeping me down was that I had no idea where my time was going. At the end of each week I knew that I had been at work for an adequate amount of time, that I had put in effort, but I didn’t have very much to show for it. The weird part about being a developer is that you do produce a lot of really solid relics of the time you spend working – commits, docs, features being deployed – but you also spend a lot of time chewing on hard problems and bugs, and not having much to show for it other than a better solution later. It makes it hard to figure out what time was wasted.

Then I started time tracking, and in the past year I went from having almost no confidence in my engineering abilities to being the technical lead on not one, but two of Khan Academy’s major initiatives. I’m still pinching myself, because I’m pretty sure it’s a dream, but I’ll go ahead and finish this blog post so other people in this dream kingdom can benefit too.

The biggest difference between me now and me a-year-ago is that I no longer worry that I’m not getting enough done. I don’t have to worry because I know where all of my time is going, even if I’m wasting it! It’s empowering to have data.

Fear of not getting enough done leads to a lot of bad things:

  • Paralysis: Every task that crosses your mind spins around in the decision tree of “is this worth my time? I haven’t done enough today so I probably should do something more important? Is this important?”
  • Stress: Your body gets all knotted up and anxious whether you like it or not. You worry that someone will ask you what you did last week and you won’t know what to say. Time slips away from you and you obsess over losing it.
  • Working on weekend and in the evenings: If you don’t feel like you got enough done in the day you’re more likely to go home and keep pushing yourself to work. Working overtime isn’t always a bad thing, but if you already feel like you’re behind, chances are you’re just going to make it worse by not giving yourself any time to relax.
  • Fear of talking to your manager: It’s really important that you have a good relationship with your manager and can talk to them about what you’ve been working on. If you can say “these are the things I worked on this week, can you go through them with me and help me find ways to make better use of my time?” then you can take advantage of the relationship to become an even better developer and make your manager happy in the process, If you’re constantly scared of your manager finding out that you don’t know what you’ve been working on then your relationship and growth are going to suffer.

My solution to not knowing where my time was going was to write things down. I’ve time-tracked before, but with a different purpose. My first job out of college was at a design & development agency where I was paid hourly and had to submit detailed time sheets for each client. The time tracking has a major, and very crucial, difference: I time my track for my own gain. Not for my manager, not for a client, not to show off. The most important part of doing this is that you remember that you’re time-tracking for you and you alone. Don’t let other people see where your time is going. In order to get good data, and to figure out where you’re wasting time, you need to be honest. When you spend a half an hour reading tech news, write it down. Pick a different colored calendar for your wasted time. No one will see it, and you’ll soon learn that after you send off some code for review you typically spend a half an hour not knowing what to do with yourself.

Tracking your time will give you data. I’m a scientist! I love data. You might not love data though, and data can be overwhelming. Having data is always better than not having it, but here are some ways you can put the data to use:

  • Look at where your time goes: It only takes a minute to scan through your week and see where your time went, and it will better equip you to say “no” when someone tries to put something else on your plate, or push yourself to block off a few hours of “heads down coding time” every day.
  • Feel more productive: Every so often you get to write down what you’ve been working on. After a while it turns into a great feeling of self-competition to make the most of your time. You’ve got a half an hour left before lunch – why not fill it with those code reviews you’ve been meaning to do?
  • Work reasonable hours: If at the end of the day you can look back and say “I’ve worked 8 solid hours today!” then you can go relax without having the fear weighing on you.
  • Talk to your manager: Before your weekly/bi-weekly/monthly meeting with your manager or team lead, glance over what you’ve been up to since you last talked. Where has your time been going? Have you been swamped with email? Is that low-touch side-project of onboarding new developers actually taking up tons of your time? You manager can give you advice, help advocate for you, and shift around responsibilities to make sure you’re in a good place. (Bonus: Their job is to make sure you’re making the best use of your time, so they’ll love you for helping making their job easier!)
  • Advocate for yourself in your self-review: You now have a record of all the cool things you’ve been working on! Bring them up with your manager during review-season and make sure those cool things you’ve been working on don’t go unnoticed.
  • Write weekly summaries: I’ve been combining time-tracking data with writing weekly snippets, which are weekly summaries that each person at Khan Academy writes to share what they’ve been working on with the team. Writing snippets becomes much easier if at the end of each week you can see exactly what you spent time on.

If you do want to try this out, start small. It took me many weeks to get into the habit of writing down everything, and for the first while I just tracked work, then added in sleep and exercise. I now track everything because it’s fun and I’m weird, but feel free to just try the work part. There are also apps out there that will track your sleep and movement for you, which will help immensely with filling in data after the fact. At this point it’s pretty much effortless to keep on top of it, and has saved me many times. Good luck, and happy time-tracking!