This is the story of my job search. I shed light on the entire process, from generating a list of companies, to getting offers and all the trials in between. For job searchers, I hope this will: 1) serve as a useful reference and 2) be a voice of comfort on those (inevitable) discouraging days.
Here’s a link to the spreadsheet in the image above. It also includes data from my roommate who also recently went through a job hunt (although his data isn’t quite as detailed)
On January 24, 2018 at 9AM I arrived home on flight UA2 (Singapore to San Francisco). For the last 3 months, I had been traveling solo in Asia. After being laid off from my last company, a solo trip was just what the doctor ordered.
While I was away, one of my roommates, Richard (not his real name), quit his job and moved into full-time job search mode. Richard is also a software engineer and failed 3 Technical Phone Screens and 5 onsites before his first offer. That’s 8 “No’s” before the first “Yes”. After accumulating those scars, he was a battle-tested vet. Richard became my sherpa.
Here’s the advice he gave me:
The knowledge that Richard had gone through his own struggles before landing at Google was comforting. With that, I began the first steps of the job search: Identifying Opportunities, Networking and Resume Polishing.
I started with a list of companies that interested me. These were companies that I was impressed by from a distance, either through blog posts (often authored by the company themselves), podcasts, or from people in my network. AngelList puts out curated lists of companies they call “job collections” which I drew upon for inspiration. I referenced the Breakout List and Wealthfront’s List of Career Launching companies, although those sources are sparse on useful information. Next, I glanced at the list of portfolio companies at some well known VCs. From these mostly nebulous sources, I made three lists: Low-Mid Interest, Mid-High Interest and Crypto companies. Finally, I used Glassdoor reviews to sanity check if any of the companies on my list had red flags.
I wouldn’t discover Key Values until week 4 of my process, but I wish I found it earlier. Key Values is a website that helps engineers find teams that share their cultural values. The profiles on Key Values are the closest thing to a company’s culture resume anywhere on the internet. Two reasons why I wish I knew about Key Values in week 1:
More on Key Values in the Appendix! But for now, just make sure to leverage Key Values early.
While I was traveling, I received an email from a recruiter at Greylock who connects engineers with Greylock’s portfolio companies. I couldn’t meet then, but when I returned, I bumped the thread and set up a time to chat. This relationship would ultimately prove quite fruitful and I encourage you to establish an open communication channel with recruiters at VCs. They’re wonderful people – and everybody loves a good matchmaker.
Additionally, I started reaching out to friends who worked at companies that were on my lists. This was admittedly not a very expansive network, and I only knew people who worked at 3 companies on my initial list: Affirm, PagerDuty and Uber. I asked if they would feel comfortable referring me and all three were happy to help.
Similarly, I reached out to friends and asked if they could introduce me to second degree connections. Often, I found that my friends were excited to make introductions if they could. Richard connected me to one of his good friends who worked at BitGo. Another one of my friends couldn’t introduce me to anyone, but he dogmatically encouraged me to apply to his company: Coffee Meets Bagel (CMB). While I didn’t get past the recruiter screen at CMB, his referral proved to be highly useful for our next topic: Resume polishing.
Keep resumes short. I have been part of the resume filtration process before and believe long resumes are a disservice to those who must read them. Respect other people’s time!
You can see the resume I used for my job search here.
In one evening, I summed up my 3 years of professional experience into 4 or 5 bullet points. On another evening, I wrote descriptions for recent hackathon projects.
I sent my resume out for comments. Unsurprisingly, those who gave me the best comments were friends referring me to their own companies. My friend at CMB helped me eliminate vague bullet points. My friend at Uber gave me tactical advice: “Don’t list a technology on your resume unless you’re willing to be grilled on it”. So true. Don’t give your interviewer a chance to put you on the spot.
Next, I copied the updates from my resume into LinkedIn. And I marked that I was no longer at my previous job (it had been recommended to me to initially show that I was still at my previous company following the layoff, but it was time to rip off that band-aid).
My mindset for updating my resume was MVP. Honestly, resumes only serve two purposes:
Does your resume perform those two jobs? Great. Is it as simple as possible? Great. Now ship it. There are more important things to focus on. If you want any resume help, connect with me!
And finally, I got a friend to take a new photo of me (via my iPhone). I’ve started using it everywhere, on my LinkedIn, on my Twitter and on this website. (PS If anyone out there knows someone who shoots great headshots, hit me up, I’m on the market for a new one)
…the unprepared? On January 30, I had been back for 6 jetlagged days. On that day, I was scouring the net for the answer this question: If I failed the Triplebyte quiz, could I try again? (The answer appears to be yes, but after 4 months). But suddenly, I felt a compulsion to ignore Richard’s advice and jump into the quiz – preparation be damned. My heart rate rose. I gazed at the start button. Click
It was on.
The first 3 or so questions surprised me – I couldn’t answer them! Had to select “I don’t know”. I felt twinges of panic. And regret. Should have prepared! How is this quiz so hard! But the first punch in the face turned out to be the worst. I answered one question with confidence and then another. Each one calming my nerves. Eventually, I got on a roll.
Later (I don’t remember when), I got an Intercom message on Triplebyte’s site: “Congrats on doing very well on the quiz! The next step is a technical interview with us.”
Wow, okay. Hurdle cleared.
The job search process can completely shake your self confidence. You know what you’re capable of. You know what you’ve done in the past. In fact, no one in the world knows your ability better than you do (although collectively, your co-workers probably do, but that’s collectively). Yet, here you are, being evaluated and tested. All of your past accomplishments are invalidated.
This sucks. Doing something you haven’t done in a long time (interviewing) and getting judged on your ability to do that thing can mess with your head.
You might start avoiding companies that you suspect will reject you (this is what I was subconsciously doing at first). You might lose motivation, stop studying and cease applying altogether. You might be led to feel incompetent, unintelligent and unemployable.
One of my friends texted me: “How do you stay positive?”
Me: “I don’t haha”
In response to this feeling, I started to question the usefulness of interviews and their ability to detect my value. For a while, I stopped preparing for interviews and pursued other interests (for me, I studied other things: CryptoZombies and High Performance Browser Networking, both of which are great resources, btw. Of course, I procrastinated with the usual suspects as well: watching sports, reading random articles on the internet).
Many smart people have abandoned the idea of getting a traditional job and have sidestepped the interview process altogether by starting their own companies. In one of his recent blog posts, Steve Blank analyzes the paper Asymmetric Information and Entrepreneurship and summarizes one of its conclusions:
“People choose to be entrepreneurs when they feel that they are more capable than what employers can tell from their resume or an interview. So, entrepreneurs start ventures because they can’t signal their worth to potential employers.”
I began to feel that way. And on top of that, I met up with a few friends who had struck out on their own and started businesses: Vietcetera and Origin of Mind. With Vietcetera, Hao is spotlighting an emerging Vietnam, with a focus on culture and business. The vibe is a bit like The New Yorker, but more entrepreneurial and a whole lot more Vietnamese. With Origin of Mind, Alex is using clothing to spark conversation on some of the country’s most important social issues. She launched in Oakland with the “On Education” collection.
I began to wonder if I should follow in their steps and do something of my own.
But at the end of the day, I focused on my long game. Yes, my present situation sucks. Yes, this process is uncomfortable. Yes, there might be very intelligent ways to forgo it entirely. But what are my long term goals? What kind of opportunities do I want to be looking at in 10 years time?
My long term goals are nebulous. I know it has something to do with community building, entrepreneurship and technology. Only, the shape hasn’t crystallized yet. And thus, I decided to invest in education. I determined that I would be able to learn the most by working with people who possessed managerial, technical and entrepreneurial skills that I lacked. (And hustling on the side – but, that’s always).
But perhaps most significantly, I simply felt this had to be done. The job hunt was something I had been fearful of and as I learned in a meditation class: “What we need to do is often what we fear the most” (Tim Ferris also has a variation of this saying). I can be extremely stubborn.
There are no right answers. Everyone is at a different place and has a different destination in mind. But if your conclusion, like mine, is to continue with your job search, read on, I’ll drop a few tips on how to get through the grind of getting to onsite interviews.
You may waste a lot of time scheduling. Solve the nightmare of double bookings (when two companies book the same time), excessive back and forths, and large blocks of wasted time with a tool like Calendly or You Can Book Me. I’ve seen people use Mixmax, which directly allows people to book a time within an email. They’re all great tools, and any of them will do. If you find yourself thinking too much about scheduling, use a scheduling tool.
When you can, connect with decision makers. If the CTO reaches out, take the call 100% of the time. If you’re going to reach out to a company, ask for introductions to decision makers. I find that conversations with decision makers are much more invigorating. Instead of sizing you up, wondering if you will pass their technical challenges, decision makers are thinking about fit. They spend the phone call trying to probe if you’ll be excellent on their team. This will be a great way to break up the monotony of talking to recruiters. (And anecdotally, converts much better too!)
In fact, I believe there is a way to conduct a job search that revolves entirely around connecting with decision makers – instead of a numbers game, it’s all about developing mutual trust with a small number of people who are looking to stack their teams with absurdly strong talent. But, that’s an entirely different approach from the one I conducted and a discussion for a different time.
For me, weeks 3 – 6 were dominated by phone screens and take homes. This section of my job search was a grind. I spent a large percentage of my time waiting for phone calls. I tried to utilize that time to study, but was very inefficient. Nonetheless, I did the bulk of my studying during these weeks. On some days I did one or two Leetcode problems (it’s okay if you fail lots of questions and need to look at the answer after 25 minutes. I did this a lot. Just try to find a similar question and use what you learned). On other days, I worked on problems from Cracking the Coding Interview. On other days, I read sections from the CLRS Algorithms book.
For some reason, interviewers love to ask questions that involve BFS/DFS (as Richard foretold), tree traversals, and 2 pointer problems. The last category is nebulous, but is a very useful tool in your toolbox. It involves using two (or more) pointers in crafty ways (maybe you have one pointer start at the beginning of a sorted array and another at the end, maybe you have two sorted lists and use a pointer for each…). If you have identified a brute force solution that requires O(n^2) comparisons, this is often a fruitful question: “Can I do better if I use two pointers to get everything done in O(n) time?”. This was a surprisingly helpful tactic for me.
Another note – I loved take homes. As a practicing software engineer, I found that take home assignments gave me a chance to send a true signal about my abilities. They weren’t algorithm heavy, but tested my ability to write non trivial, production-level code. Affirm provided the option of either a take home or a technical phone screen. I gladly took the take home – not only did I get a chance to write code that simulated real work, I learned some useful domain knowledge that helped me understand their business.
During this grind, I also experienced rejection. At the recruiter screen, I was rejected by Crew and CMB. At the technical phone screen, I was rejected by Pinterest and Blend. Blend in particular hurt, I had gotten excited about the idea that Blend would be a good fit. But as Richard advised me at the very beginning, get used to rejection.
Believe it or not, rejection is a good thing. It means you have pushed yourself to your current boundaries. Furthermore, it toughens you for future encounters, improving your ability to stay calm under pressure. Getting rejected by Pinterest and Blend also made me a little better at technical questions (I implemented improved solutions to the problems immediately after the screens).
But don’t worry, the rejections didn’t stop there.
Some of my phone screens and take homes started to convert and suddenly, it was onsite season. My first two onsites were with Sonder and Google. I failed both. Interestingly, they were polar opposites. Sonder asked 0 algorithm questions, focusing entirely on system design and object oriented programming. Googled asked 5 algorithm/cleverness questions. I was completely stumped by one of the questions and spent most of the 45 minute session trying to keep a level head. I walked out of the interview embarrassed. I refer to this interview as The Disaster. (The other 4 were ok).
I went home to Texas for 5 days (Thursday through Monday) after my Google interview. Taking a planned vacation in the middle of onsite season was incredibly important. It gave me a chance to integrate the lessons of failure, as well as a chance to relax and get ready for the next wave of onsites. I highly recommend a period of rest if you can make it happen.
The following week, I had onsites with Intercom, b8ta and Solv. With the scars from my recent failures, I walked into those onsites with confidence. At both b8ta and Solv, one of my interviews centered around CSS, which I bombed. But unlike The Disaster at Google, I did not panic, not even a little. I stayed calm, openly told my interviewers that CSS was the weakest of my full stack skills and we proceeded to have a surprisingly not-awkward session of me DuckDuckGo-ing basic CSS. I was rejected by b8ta and Solv. In their email to me, Solv told me this: “While everyone appreciated your personality, communication and problem solving, tech thinking, we hit a road block on the core front end skills..” Haha, fair enough!
On Friday, Intercom called me to let me know they were extending an offer! Everything changes when you get your first offer. Your belief in yourself is finally re-validated. Just as importantly, other companies will pick up the pace and get with your timeline.
The next week, I had onsites with Earnin, Affirm and Uber. At this point, the onsites felt routine. Once in a while, I felt that my interviewers were really testing me, pushing the envelope to see how I would react. I clearly communicated what I completely didn’t know and stretched to hit the questions I thought I could get.
Earnin and Uber extended offers. Affirm would not get back to me until the following week with a soft rejection: the team I had interviewed with would not be moving forward, but they could reconsider me for a different team. I accepted the rejection and declined to move forward with the other team.
As an aside, the length of time a company takes to get back to you after the onsite is incredibly revealing. If it’s in 1 or 2 days, the result was either a clear yes or clear no. This is ideal. If it’s longer than 3 days, then the result was either contentious or the company doesn’t operate efficiently. Neither of those are good things. You want to go to a team that wants you, not a team that is settling for you. And you definitely don’t want to go to team that doesn’t respect candidates’ time.
In my final week, I managed to squeeze in one last company into the mix. I had alluded to BitGo earlier in my blog post, but what I did not share was that I had actually designed my entire interview process with them in mind. I shared this with Richard one day. I had been reading High Performance Browser Networking and Mike Belshe, the CEO of BitGo, kept popping up in the book. While at Google, he had masterminded the SPDY specification which laid the foundation for HTTP 2.0. I had been reading some Bitcoin blogs and Jameson Lopp, a BitGo engineer, kept popping up. (Jameson has since left, but on great terms). I wanted to be in the Crypto space and BitGo was the one company I really had strong interest in joining.
Richard had a good friend at BitGo who referred me. The company sent me a HackerRank coding challenge. I did it (although one of my solutions didn’t pass all tests). I didn’t hear back for a while, assuming that I had been screened out. Then, out of the blue, I got a message from BitGo in week 9 – they wanted to set up a technical phone screen. We squeezed in the phone screen on Friday of week 9 and my onsite was on Monday of week 10.
I thought the BitGo onsite was solid, despite it being my 7th onsite in 13 days. My solutions weren’t as sharp as they could have been, but they weren’t bad. In my tired state, I tried to communicate my strong interest in BitGo. They asked for references and I waited for them to check in with some of my former coworkers. 4 days later, I got a call from BitGo letting me know that they would not be matching my other offers and would not extend one of their own.
I’ve heard this time and time again. The more you want to work at a company, the more desperate you come off, and the less desirable of a candidate you become. This is by no means a deal breaker for companies, but you should avoid doing what I did. Don’t design your process around one company. The chances are, they won’t reciprocate and might even read your enthusiasm as uncomfortable desperation. Just keep an open mind, your best opportunity might not even be one you were hoping to get. It’s sort of like Frank Ocean said/sang: “The best song wasn’t the single”.
On a related note, an hour after I heard back from BitGo, I spoke with a Director of Engineering at Uber (my manager’s manager). I was sold. On March 30, 2018 at 2PM I contacted Intercom, Earnin and Uber and communicated my decision. It had been 65 days since I touched down in SFO. The job search had finally ended. I was Uber bound.
I had a few takeaways from my job search.
It’s going to suck! Putting yourself out there for assessment and evaluation is a vulnerable experience. It’s not pleasant. And if you’re like me, you probably won’t enjoy it. But deep down, you’ll know whether or not this process is something you must do. For me, I felt that I had to do this. I felt compelled to push through.
And if you ever need someone to rely on, come find me. So long as I’m not inundated with projects, I will make time for you. I believe we all need a strong support network in difficult times and I’d be thrilled to become a node in your network!
In my job search, I applied to 18 companies and talked with 13. There lots of great things to say about each, but I want to highlight a few that I’m extra excited about. These are companies that I would strongly recommend to friends.
I’m really excited about Intercom both as a business and as a place to work. Intercom’s engineering values of “Run less software” and “Shipping is your company’s heartbeat” really resonated with me. As someone who has been heavily influenced by the book The Pragmatic Programmer, Intercom’s engineering culture felt incredibly efficient. Jamming with the team on a hackathon-like project was energizing and fun. The team is entrepreneurial and pragmatic.
For anyone who loves building excellent product, I would strongly advise Intercom.
My phone call with Daniele (CTO and co-founder at Solv) was one of the highlights of my job search. We talked about life, healthcare, Bill Gurley, prioritization and my work style. I left the call feeling incredibly excited. The onsite with Solv was great, but unfortunately, my CSS deficiencies were a deal breaker.
If you’re interested in healthcare, like working with smart and passionate people, then you have to check out Solv. (You should also read the book Catastrophic Care)
When I went onsite at Earnin, I was impressed with their engineering culture. Interviews felt collaborative, the assessments were diverse (system design, algorithm, short answer, object oriented design), and the people were down to earth. The more junior engineers talked about how they felt supported by the senior engineers, and the more senior engineers mentioned how they liked mentoring. This all happened without any top down directives with regards to mentoring.
If you’re looking for a strong group of engineers who have built a great organic culture, I believe you’ll find it at Earnin.
Ok, so I didn’t interview for a position at Triplebyte, but I worked with them. Of all my 44 technical assessments, the Triplebyte interview was the most fun and engaging. My talent manager was enthusiastic and genuinely wanted to place me at a great company. The only thing about Triplebyte that is a bit hit or miss is their matching process (a bit opaque and not always successful). Still, it is absolutely worth your time to work with Triplebyte.
As an aside, I would have paid just to take their assessment and “get Triplebyte certified”. That would be a nice feature for those with non-traditional backgrounds to signal that they’ve been vetted by at least one 3rd party.
Try out their practice quiz – it’s actually kind of hard (I learned a couple things even from this practice quiz!). Read their blog. It’s excellent. And if you’re curious about salaries, check out their aggregated salary visualizations. I don’t talk about salary in this post, but I will comment that those graphs were in line with my offers.
I mentioned it earlier, but I want to reiterate – Key Values is the closest thing to a company’s culture resume anywhere on the internet. Companies get to talk about what they think is important and highlight their cultural strengths.
Additionally, browsing Key Values will reaffirm your beliefs in your own cultural values. This is incredibly important to be thinking about throughout your job search. While Key Values may not have the company profile that you’re looking for, it will categorically make your job search better.
Do yourself a favor and use Key Values from the start. And check out the culture queries, it will get your mind thinking about the important things.
AngelList is a fantastic resource to get in contact with startups. I know so many people who have gotten jobs through AngelList, and in fact, it was how I got my first job. One thing to be aware of is that on AngelList, a company can see the number of companies a candidate has indicated interest in. Don’t be the person who is “interested” in 723 companies. Be selective.
Let it be known that I believe Glassdoor is the Yelp of company culture reviews. It’s heavily influenced by disgruntled employees and coordinated manipulation (I stumbled upon a well known company with over 40 reviews, the majority of which were generic 5 star reviews published within a 7 day span). The product is occasionally unusable (because they constantly direct you to use their job search product). But it has some great authentic reviews. And it’s not going anywhere because of its strong network effects. Ultimately, those brief moments of authenticity are worth the noise.
I love and hate Glassdoor.