How I hustled my way to a developer job at Khan Academy

June 16, 2014

I’ve been meaning to write this post for ages and have told this story in enough 1:1s that I feel the need to share it in a more scalable way. I want to share it more widely because I hope it can help other people (if I’m lucky, maybe you!) believe and see how they can reach a goal they thought was out-of-reach.

My second objective is to share some practical strategic advice on and tactical examples relevant to trying to get a job for which you’re severely underqualified. When celebrating on Facebook or Twitter, many people omit the nitty gritty details of their path to success. When we read other people’s success snippets, we might think, “Oh, that person is just better than me at X. I could never be as successful.” The former might be true. But the latter doesn’t have to be.

This post isn’t brief. Instead, it provides a comprehensive walkthrough of all the shenanigans I went through to get my job offer. While luck played a nontrivial role in the happy outcome, a great deal of hard work, hope, and good ole-fashioned attention to detail helped me maximize and grow my share of luck. You can do this and more. The first and most important step is to believe that you can.

I’m going to start my story from the point after I decided to apply for a software developer job at Khan Academy. Maybe in a future post I’ll share my decision-making process before then, if folks would find it useful.

My skills, or lack thereof

In college, I was an electrical and computer engineering (ECE) major, but I was not a very good one. Also, while ECE had more in common with CS than the other engineering disciplines at Duke, it wasn’t designed to prepare graduates for careers in software or web development.

Unlike many software developers, I didn’t start programming when I was 10. I started in college at the ripe age of 18 and took a grand total of 4 programming courses during my 4 years there. I was not a stand-out student in any of my programming or engineering courses. No teacher saw promise in me, took me under their wing, or mentored me to greatness.

By the end of college, I was familiar with MATLAB, knew basic Java, and had written/debugged some C++, but I wasn’t a proficient coder by any means. I didn’t work on side projects and didn’t code for fun. I’d picked up some Python on my own to create a data analysis tool during a product management internship, but with no code review or other code quality feedback loop (my mentor didn’t code). My fellow intern and I shared code via email or some embarrassingly awful sh*t like that.

After graduating college and moving out to the Bay Area, I had no understanding of databases, let alone SQL vs. NoSQL, what a web request was, etc. I’d almost never used command-line tools and had tried to use git once or twice and failed miserably. I didn’t understand AJAX, REST, JavaScript, or callbacks.

And so, with this impressive set of qualifications, I set my sights on a software engineering job at Khan Academy, which then had a team of ~25 full-timers with ~8 developers, including John Resig, creator of jQuery and famous enough to have a dedicated Wikipedia page.

Modeling needs and fears

I didn’t just have impostor syndrome at the time. Back then, I was truly underqualified for the position and lacked many of the core skills I needed to do well at the job.

What I did have, however, was the ability to put myself in an employer’s shoes. What did they need most? What did they fear?

As a small team, they needed someone who could immediately start getting stuff done without needing a lot of training and oversight. While larger companies can afford to spend several months on training alone, startups tend to need their hires to start contributing right away.

What did they fear? The converse. Hiring someone who would be paralyzed by uncertainty, who needed a great deal of hand-holding, or who was unresponsive to or took a long time to learn from feedback. Generally, an employee who will create more work for others instead of accelerating the team’s progress towards its goals.

When I took an honest look at myself, I recognized I wasn’t the type of person KA was looking for.

… yet.

I wanted to be that sort of person, but I knew it wouldn’t happen overnight. Over the course of several months, I trained myself to develop the skills and mindset I needed to succeed. I didn’t have a coach or a program helping me, so I needed to be my own coach and mentor.

How it went down

Timeline

This section is a gratuitous play-by-play of the work I put in during the months leading to my offer. I thought it’d be helpful to give a concrete sense of the pacing and timing of the work that went into getting the offer.

Oct 2011

I work on my portfolio website in Nanoc. Pore over a Hacker News thread looking for a good, cheap webhost. Settle for NearlyFreeSpeech.net. Struggle to get DNS set up.

Nov 9, 2011

Send email resolving to work at Khan Academy to my significant other. Stalk Ben Kamens (lead dev at Khan Academy) online and marvel at what an amazing person he seems like to work with. (Full disclosure: He’s just as thoughtful and perceptive, if not more, in real life.)

Discover that there is a way to contribute to exercises open-source.

Start walking outside every day during my lunch break and tell myself that I can do it, that I’m more than just my current achievements and have great potential.

Nov 11, 2011

Nov 28, 2011

Nov 29, 2011

I follow up with a super long, excited message and end up meeting Elizabeth for coffee the same day. I’ve made sure my portfolio site is ready for her to see/evaluate me on. After we meet, I email Elizabeth back asking if I should take some more time to prepare before applying. She replies “yes”, and I get back to work learning to code.

NOTE: In the developer world, connections matter less than competence. Aside from my introduction to Elizabeth, which didn’t do anything but get my application looked at (which apparently got the notice/attention of the application reviewers anyways), I didn’t have any connections to people at KA.

Dec 18, 2011

Scramble to respond quickly to feedback generously left by Ben Eater and Matt Wahl.

Jan 2012

Struggle to understand the exercises DOM structure and wrangle with CSS as I attempt to create a minimalist redesign of the exercises UI in code.

Work on a pitch deck about me to submit in lieu of a resume. As part of this effort, lovingly craft the following slide. Little did I know this would be the exact model of desk I’d work at just a few months later.

Feb 9, 2012

For a brief moment, I feel like my choice is validated and chuckle at Craig’s cute goodbye email to his Google colleagues. But mostly, I just despair because I think that I really have no chance now. However, the show must go on…

Feb 13, 2012

Interview #1 with Marcos. I have a blast talking to Marcos, but know I have several rounds of interviews to go.

Feb 15, 2012

Although I was just a few weeks away from reaching my 6-month mark at Microsoft (and many thousands of dollars of vested stocks), I very consciously decided to remove the safety net as an added motivational kick in the pants to accelerate my progress. By quitting my full-time job, I bought myself more time and headspace to focus on learning product development and coding.

In so doing, I had to confront significant fears about my identity and value independent of an institution and a steady stream of income (during a time when many of my friends were employed or enrolled at prestigious institutions like Google, Facebook, McKinsey, Stanford, etc.). But shedding my bronze handcuffs ended up being one of the most challenging and rewarding parts of the whole journey.

Feb 22, 2012

Interview #2 with Tom Y. Although I’m almost certainly slower than many candidates, I try my best to be careful and thorough in my coding.

While it’s strictly better to be a fast and accurate coder, if you have to choose speed vs. accuracy, choose accuracy. Again, thinking from the hiring party’s perspective, they’re looking for a candidate who can get things done but, in so doing, won’t create more work for the rest of the team due to sloppy, undocumented, or untested code.

Mar 2, 2012

Last day of work at Microsoft.

Scramble to read John Resig’s Pro JavaScript Techniques book before my interview with him. Finally get a working understanding of the DOM, despite having worked on several JS projects at this point. (Protip for beginners: don’t start with JavaScript: The Good Parts unless you’re reasonably familiar with some functional programming. There are easier and faster ways.)

Mar 5, 2012

Interview #3 with the legendary John Resig, who was unexpectedly incredibly nice (and still is one of the nicest programmers I’ve ever met).

Mar 20, 2012

In-person office visit and interview with Sal (founder of Khan Academy), who is also surprisingly down-to-earth. He had to step out in the middle of the interview to re-park his car for fear of getting a ticket.

I’m in shock and delighted. Not gonna lie, I’d watched the 60 Minutes special a couple of times and knew where the Castro St. office was.

Mar 21, 2012

KA asks me for references, and I’m struck by a deep fear that no one will vouch for me. This is a variable I don’t have as much control over.

Frantically call my references and ask if they’ll do me this last-minute favor. Thank the lord. I am so grateful to the people who wrote me references on such short notice.

Mar 27, 2012

After a nervewracking week, I get an offer from KA.

Flupyeahhhhh.

Timeline summary

Time from setting sights on KA to getting the offer: ~5 months

Time from setting sights on KA to submitting application: 3 months

Time from submitting application to getting offer: 2 months

(I decided to space it out to give myself time to prepare. It does not take this long for everyone, and we’ve sped up the process dramatically. To be totally frank, though, it helps to be a top candidate/super qualified.)

Organizing a few “study group” sessions with friends in which we hung out in a conference room and worked independently on various side projects (since we were interested in learning different things)

Cutting back on group social activities to save time and energy and help me focus (but continuing to go on 1:1’s with friends, which I prefer greatly anyways)

Participating in some hackathons (I actually didn’t find doing hackathons as useful since I lacked the fundamentals to contribute meaningfully, and even found them somewhat discouraging due to my lack of ability to contribute.)

Frequently giving pep-talks to myself on long walks outside

Reading about ways to motivate myself

Reflecting and journaling

What I would have done differently

Although things worked out the first time around, there was a strong element of luck at play. If I were back where I was in Fall 2011, I’d do a few things differently to help my odds and to focus my energies on the highest-value activities.

Specifically, I would have:

Read and re-read Mindset by Carol Dweck, which I only discovered after joining KA and remains one of the most important, paradigm-shifting books I’ve ever read

Spent more time building and launching apps/products to real users

Invested even more time in learning and improving my dev tooling

Done more practice interviews

Asked to pair program with friends with programming jobs or just watch them code (and take notes on what tools they used)

Skipped the hackathons (especially the unhealthy overnight ones) or viewed them primarily as a way to have fun with my maker friends

Spent less time on the proposed redesign

Spent perhaps a little less time on the pitch deck, although it did play a key role in getting noticed and in communicating my KA-compatible personality and commitment to Khan Academy’s mission

Possibly attended group study Meetups for learning various programming languages/frameworks

Behind the scenes

At times, I was deeply uncertain and insecure. I had to talk to myself - literally talk to myself - on walks to build up my confidence and battle my crippling insecurity. I would make sure the coast was clear, then whisper under my breath while speed-walking, “The universe is conspiring to help you succeed.” By telling myself a compelling story, I was able to turn this far-off dream into a reality.

I was also mentally prepared to not get the job. I knew that it was a long shot, and I didn’t regret the time I’d put in (okay, maybe a little regret about the time I spent on the redesign and pitch deck, but the Ikea table slide? Never.). But overall, I had learned so much in the process, and built up my self-esteem sufficiently that I was happy with whatever. They say the secret to happiness is low expectations.

Also, I’d like to note that conditions weren’t perfect as I was going through this process. (To be honest, I don’t think they ever are - there are always some hurdles, expected or unexpected, along the way.)

Specifically, I was in a long-term, long-distance relationship. My significant other lived on the East Coast and was applying to Ph.D. programs. There were two grad schools in the Bay Area with programs that were best for him. They were also two of the most competitive programs in the world, and during the previous application round, he hadn’t been accepted. I put my career search on hold for a bit to buy myself time to give him strategic advice on applications and editing (although that advice was of dubious value). I scrambled together a basic Wordpress website for him. His application process was perhaps more nerve-wracking than my own job search, because it would determine whether we’d need to endure a long-distance relationship for the next 5-6 years.

And finally, my family was struggling with some significant problems. That was the hardest. To say “no” and make space for myself. It felt selfish, but I’d been struggling to help them for a long time, at the expense of my own productivity and emotional health. I needed time to work on building myself, and that meant trusting my family to handle the situation without me.

A final note

If you also find yourself severely underqualified for a big goal you’ve set your sights on, don’t despair. You’re at the beginning of an exciting journey, and yours alone. Decide for yourself the right time to dive in. But dive in completely, and give it your 100%. You can live with fewer regrets.

Be patient. Be humble. Work hard. Invest in developing a growth mindset. Build and share cool things. Invite and grow from feedback. Treat people well. It’s not so different from planting seeds and tending them. One day you can harvest the fruits of your labor, and they will be sweeter than if anyone had given them to you.

I’m still working on all of the above, by the way. Every day. And so the journey continues… :)

Disclaimer

I have felt pretty dang underprivileged (and bitter about it) at times, but in the grand scheme of things, I am still unbelievably lucky relative to others in different circumstances. I care deeply about building a society that’s more fair so that all people, not just a lucky few, can achieve their full potential.