This post was also published on Medium
This is how I got a full-time software development job right after high school.
Last March, I started to look for a summer internship. I wasn’t a college student like most other applicants, but I’d been programming 40 hours a week for two years and already completed an internship. That had to be worth something. So, I applied to 25 positions online with my resume and a short, individualized cover letter.
Initial returns were nonexistent. Three weeks passed, and I didn’t hear back from anyone. Two companies eventually replied, but once they found out I was still in high school, they dropped off.
Not knowing any better, I did another round of online applications. This time, one company expressed interest.
I lucked out by getting a problem I’d seen before (find the number at a given spot in the Fibonacci sequence) in their technical phone screen (most technical interview processes I went through resemble the one described here). It wasn’t pretty, but I must have done well enough, because a week later they invited me to an onsite interview.
My first session was “soft” — just a chat about my previous experience. It was straightforward, until my interviewer found out I was a high schooler. This threw up red flags, but they decided to continue with my interviews anyway.
The next session was pair programming, during which I worked with a developer from their company to implement a small feature. I didn’t make any glaring mistakes, but being a new experience for me, it was hard to tell exactly how well I did.
Over the next few weeks, I got to several more technical phone screens and one onsite interview, none of which led anywhere.
One of the conversations I had during this time was pretty interesting. I was on the phone with a CEO about opportunities at his company when he found out was still in high school. He immediately went into a rant about college as a waste of time and money — “I didn’t learn anything at university except for how to cheat on tests!! I would’ve rather washed dishes for five years!”. It was a scene straight out of Silicon Valley.
I’d almost forgotten about that first company who’d interviewed me when their VP of Talent called three weeks later… to offer me a full-time position.
This is roughly what went through my head:
- Confusion: …did I hear that right? I don’t even have any internship offers!
- Elation: wait a second. A full-time job?
- Self-doubt: these guys are way smarter and better than me. Taking this position would be setting myself up for failure.
- Conflict: the salary is low for a programmer…but I’m only 16, so it’s way better than other jobs I could get…
I didn’t graduate for another two months, so nothing needed to be decided immediately. They agreed, so I continued my job search, now with a fallback plan.
Receiving a full-time offer gave me a big boost, helping me interact more confidently with other companies and interviewers. I wanted to jump in, contribute, make some mistakes, and learn a ton. I just needed to find somewhere where I could do so. At this point, two things stood in my way: my lack of formal education and my age.
A college degree shows a certain level of competence as a human being. Diplomas are not as ubiquitous in the tech industry as elsewhere, but many companies still wouldn’t talk to me because I couldn’t show them one. Not much I could do here.
The bigger problem, and a recurring theme during this process, was my age. People without computer science degrees get programming jobs all the time, but most are a decade older than me, or have a different degree. This was the hardest barrier to break. 90% of rejections I received had nothing to do with knowledge or skill, but rather how long I’d been alive. At the risk of sounding ungrateful, I would also say that offers I did get were noticeably lower than the market rate for someone with my skills, and it’s not hard to trace that back to my age as well. In Silicon Valley’s “meritocracy”, this was discouraging.
Around this time, I also signed up for Hired. Once I passed their approval process, a talent advocate reached out to help me with my job search. He encouraged me to use my unique situation to write a bio that would stand out.
So, it was time to make my age and lack of experience look good somehow. Here’s what I put down.
Instead of a scared high schooler looking for a handout and trying to hide the holes in my resume, I was a savvy, energetic, talented young engineer, and startups could get on board with that.
I also began preparing for interviews with interviewing.io. Instead of interacting with interviewers who were just trying to get things over with and head back to work, the people on the other side of the phone here wanted to help me improve. The advice I received during these sessions was invaluable.
The next full-time offer I received was at a medium-sized startup, for $30,000 more than my first one. I was blown away.
The team was structured with more senior developers than juniors, which would give me abundant opportunities for mentorship. The salary was, evidently, as good as I had seen. On the surface, it seemed like everything I was looking for.
The problem was that the offer was exploding; the company made it on Thursday and gave me three days to answer. Enough smart people had spoken against exploding offers to make me think twice. When I asked them why we were on such a strict timeline, I was told “it’s an industry standard, look it up”, and that didn’t go too well with me.
However, this time I was even more unsure if I could get a better offer elsewhere. Letting this one explode could be something I regretted for a long time.
I ended up using the tactic described here to make a decision, but with a coin flip instead of a dice roll. I watched the deadline pass, got to bed, woke up, went to Disneyland, and never heard from the company again.
A few more weeks passed, and I had scrapped for another two offers. I was close to graduating and feeling a bit burnt out, so I wanted to get things over with and decide between them. On paper, both were worse than the one I’d let go (but much better than the first one I received).
As I weighed my options, a recruiter from Braintree reached out to me on Hired. I told him that I would hear him out, but made sure to let him know I already had two good offers on the table.
Things got interesting when he began describing their interview process. It was light on algorithms and heavy on practical skills. In other words, it matched up well with my experience (and with the day-to-day responsibilities of the position). This was a chance to succeed, and I was determined to make the most of it.
I put a lot of effort into my code submission. Like, a lot. I tried several different approaches, tested it thoroughly, and refactored until I was happy with it. That got me past the first step.
My focus was now on just one company, so I was able to prepare for the rest of my interviews with clear focus. I learned about Braintree’s history, read through all of the documentation for their API, built a demo app on their gateway, and formed my own thoughts on it. This would all help me during the onsite.
Braintree’s interviews followed the script I expected. In the absence of algorithmic questions, I did well with communication, energy, and curiosity, and I got a chance to show what I knew in an environment I was more comfortable with.
After the last session ended, I was held in suspense for about 10 minutes. Then, the recruiter dialed in and told me that they would be extending me an offer.
The negotiations that took place over the next few days went swimmingly. I was in.
Like all good things, this process was a combination of hard work and opportunity. Here are two of my personal takeaways.
- Soft skills are important. Some people can solve any technical interview question on the spot. I was not one of them, but at first I thought the only way to succeed was to become one. So, I studied and studied to try and catch up. I eventually realized that interviewers were more interested in how I think than how much I know. By focusing on effective communication during my interviews, I made my thought process transparent and saw good results.
- Always get feedback. Through all of my interviews, this is the most important thing I learned. Without feedback, I was shooting at a target in the dark. When I got tired of the disappointing results, I started to ask companies who rejected me *why *they did so. Is there anything in particular that I can improve upon? What was one thing I did well? The responses I received went a long way towards making my target easier to see. For example, I wish I’d asked for feedback after I got my first offer. Instead, I was too caught up in my own “luck” to wonder what led the company to give me an offer. If I’d known exactly what I’d done well during my interviews, I could have applied that knowledge elsewhere.
Just like most things you hear from strangers, take those with a grain of salt.
I’ll leave you with a quote that sums up some of my feelings about this experience:
“A certificate of live birth is not the same thing by any stretch of the imagination as a birth certificate.” - Donald Trump, referring to Barack Obama
Wait, that’s not the right one. Here:
“I am a great believer in luck. The harder I work, the more of it I seem to have.” — Coleman Cox
Thanks Aline, Sam, Isabelle, Jerry, Randall, and Pops for reading drafts.