#TechTuesday: How I Got My Developer Job at Khan Academy (as Someone Who Was Severely Underqualified)
Working at your dream company usually doesn’t happen instantly. Find motivation in the time and dedication this engineer gave to get her dream job.
By Stephanie H. Chang (Software Engineer, Khan Academy)
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.
Have you seen some of those hilarious code trolling posts on the Code Golf StackExchange? Yeah, some of my code looked like that, only it wasn’t a joke. But hey! It was well documented, even if nobody ever looked at it.
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.
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
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.
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
A mutual friend graciously honors my request to introduce me to Elizabeth Slavitt over email.
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.
Support my significant other as he applies to grad schools.
(Well, half-support. Mostly I’m just an anxious wreck and making life harder for him and lamenting that he abuses/misuses commas in his writing.)
Dec. 18, 2011
Scramble to respond quickly to feedback generously left by Ben Eater and Matt Wahl.
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.
Jan. 29, 2012
Submit my pitch deck-based application to Khan Academy. Ping Elizabeth to ensure my application gets seen.
Bite nails and feel incredibly insecure as I wait.
Feb. 2, 2012
Find out that my resume has been accepted and that I’ll get an interview.
Go beserk and scream. (Sorry, housemates!)
Feb. 9, 2012
Hacker News post that Craig Silverstein, the first employee at Google, will be joining KA hits the HN frontpage.
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
Tell my manager I plan to leave my job at Microsoft as a PM, despite not having a job offer anywhere else (and not applying anywhere else). Announce the final decision to my parents via email.
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. 18, 2012
Write blogpost with tips for writing KA exercises which gets to the Hacker News frontpage after I tell friends about it/ask them to help upvote. Ben Kamens retweets and I get a high from the validation.
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.
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).
Feeling starstruck. Hustle to work on a fun project to build an alternative browser for Khan Academy content using D3.js (using the KA API) that I want to demo to Ben Kamens, my next interviewer and lead dev at Khan Academy.
Mar. 14, 2012
Interview #4 with Ben Kamens, who I didn’t know was a Duke alum until our interview. (The college connection didn’t help at all.)
I want to work for this dude. Wow. His blog illustrates how thoughtful, funny, and humble he is, and how that shapes the culture.
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.
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.)
Time funemployed: ~1 month
Summary of The Things I Did
- Improving an existing Khan Academy exercise
- Designing and coding a brand new exercise (Telling Time, Interactive)
- Mocking, in code, a redesign of the exercises UI (included in the pitch deck)
- Creating a pitch deck in lieu of a traditional resume
- Writing and publicizing a blogpost with tips for writing KA exercises
- Reading John’s book
- Designing and coding an alternative browser for Khan Academy contentusing D3.js and the Khan Academy API
- A single (yikes!) practice interview with my friend Jian Wei Gan
- Reading Programming Interviews Exposed, working through the problems, and brushing up on algorithms
The pitch-deck resume
- Creating a portfolio site in Nanoc (no longer alive – it’s been since replaced by this Octopress site)
- Writing a blogpost on stories
- Coding a little photo slideshow plugin using the Flickr API
- Attending a Product Design Guild meetup where I got to meet some really cool people doing exciting work (including behavior change author Nir Eyal) and got feedback on my D3 project
- Searching for and completing tutorials/articles/video walkthroughs, including the Ruby on Rails tutorial by Michael Hartl, RailsCasts video tutorials by Ryan Bates, and a super helpful Chrome Dev Tools debugging video by Paul Irish that I can’t, for the life of me, locate anymore
- Taking a free meditation course (with delicious vegetarian Chinese dinners) at the Chung Tai Zen Center in Sunnyvale, CA
- 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…
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.
This piece was syndicated from STCHANGG.