Getting A Job In Top Tech Companies During Pandemic Has Never Been Easier
Reflecting on my software engineering journey to help you. Writing the articles I wish I had when I started.
I interviewed back-to-back over the course of 10 days virtually and secured 8 offers with Google, Robinhood, Airbnb, Uber, Tiktok, Microsoft, Scale, and Cloudflare.
This series is heavily inspired by a similar post, and is split into 4 parts: an overview (this post), my study plan, team matching, and negotiating multiple $300,000+ offers. I’ll also detail other parts in extra posts if people are curious.
I’m sharing this information to prove you can make a similar change too.
In this post, we’ll cover my background, the companies I interviewed with, the application process, and scheduling interviews.
I don’t consider myself a well-put-together person. I constantly struggle with planning and executing my goals. Moreover, my background isn’t impressive: I have 2 years of experience as a full-stack software engineer and I attended college for a bachelors. Nothing is inherently special about me.
When I started to prepare for the job search, I wasn’t serious about it. Mostly because I didn’t see encouraging initial results. Leetcode easy problems took me anywhere from 20–30 minutes to solve. Leetcode Medium & Hard? Unquestionably unsolvable. To make matters worse, I couldn’t sit still long enough to read Cracking the Coding Interview. I had the attention span of a goldfish and a memory like a sieve.
And honestly, it didn’t matter. I liked the work, my team, and the work-life balance. Interview prep slowly faded from my mind.
Then the pandemic hit. My work-life balance quickly evaporated. I checked email and Slack constantly, stayed up late to code features, and felt disconnected from my team. Working from home has its advantages of course. But making the transition from working in the office to remote work was too difficult.
Working from home was the tipping point for me to change jobs. I rationalized that WFH would allow me to interview with many different companies back-to-back from the comfort of my home and avoid the hassle of flying and booking hotels everywhere.
It would enable me to interview with more companies in the same amount of time compared to interviewing in person. And even if I disliked remote work with my new job, at least I would be paid more.
And it worked! With this inkling of a strategy and a study plan suited to my strengths, I applied to 30 positions, fielded 19 initial calls, scheduled 16 phone screens, landed 11 onsites, and finally secured 8 offers.
Anticipating I would spend a lot of time and energy on this journey, I doubled down on research into the companies I was interested in.
- Interest: Since Google works across so many different fields, I felt I could truly do whatever I wanted. I viewed it as a Software Engineer’s playground. A lot of interesting tech comes out of Google like Android, Kubernetes, and Go.
- Interview Experience: Google’s process was more streamlined than their traditionally slow, in-person process but is still relatively slow. I was happy I did this interview early. The interviews concentrated on gathering quality data (all the interviewers briefly introduced themselves and launched into the technical question).
- Interest: I’ve been a Robinhood addict for the past 2 years. I love their mobile apps and I appreciate the polished experience. Their stack is also closer to the bleeding edge and they have several software engineers who’ve contributed to the libraries and frameworks I use.
- Interview Experience: Robinhood’s interviews focused on more on-the-job (read useful) skills like debugging, fixing problems engineers had encountered before, and assessing foundational knowledge. The overriding sense I got was the company was fast, growing, and similar to pre-Big-N Facebook.
- Interest: Airbnb is a unique company and I was definitely excited to work with them because they have a vibrant & flourishing community of hosts and guests. Their web, iOS, and Android platforms are the gold standard for a clean design and experience.
- Interview Experience: Airbnb’s process was friendly and everyone I spoke with carried a sense of enthusiasm and care. Also, everyone I spoke to alluded to a sense of internal community (for example, a hiring manager insisting I would do well on a competing manager’s team). The interviews were great and the process seamless.
- Interest: Every Uber ride I’ve hailed was a wonderful experience — I met so many different, fantastic people. I felt driven to work with Uber since it’s made a difference in my life. I also regularly read their engineering blog and I wanted to play a part in building something cool.
- Interview Experience: Of all my interviews, Uber’s interviews were the most representative of your standard Big N interviews. The engineers were focused, the questions were unique and challenging, and everyone I spoke with heavily emphasized customer obsession.
- Interest: Tiktok dominates in the social media space, with most of my friends using it. The experience is fun, intuitive, and crafted with an attention to detail. Their consumer product alone was a good enough reason to work with them.
- Interview Experience: Absolutely blown away by their streamlined interview process. Best experience I’ve had! Highly commend whoever was in charge of putting their process together. Conversations were smooth and most engineers & managers expressed a feeling of enterprise and energy.
- Interest: Microsoft’s image has improved over the course of the recent years, from an established, business-y company to a consumer-driven one led by innovation. Basically, it’s cool again and I wanted in on that too.
- Interview Experience: Microsoft’s interview process was transparent and surprisingly the hardest. Principal-level engineers & managers interviewed me so I got the sense there was great emphasis on recruiting quality candidates. While the interviews themselves were great, the recruiting process was disconnected and at times unpersonable.
- Interest: I’ve heard more and more great things about Scale in the industry. The consistent pitch I’ve heard is they’re a platform to get high-quality data for machine learning. With the rise of high-quality services like Zoom, Slack, etc. compared to enterprise defaults, I was interested in starting on the ground floor of a growing and great company.
- Interview Experience: The most “different” interviews with product sense, debugging, and build-this-feature rounds. I got the sense of a budding engineering community filled with people wearing many different hats. These interviews were unique and probably the most enjoyable set.
- Interest: A mission-driven company with a focus on making the internet a better place. They’ve aligned the incentives to improve the experience & safety of the internet by providing quality infrastructure.
- Interview Experience: The interview process & recruiter were awful but every engineer & manager I spoke with had a sense of pride in their work. I especially enjoyed the relatively chill vibes I got from the team.
Once I was reasonably confident I wanted to work at these companies, I started applying.
Applying to Companies
This was my least favorite part. After I graduated college, I spray-and-pray applied to tons of positions until I landed one. This time around, I wanted to be intentional about the companies I applied to and think in a more balanced “partnership” mindset with recruiters rather than a please-give-me-a-yob mentality.
My process was:
- List 30 companies I wanted to work for
- Look for jobs for ABC company by perusing LinkedIn Jobs or their careers page
- Reach out to connections or cold message recruiters on LinkedIn for referrals
No elaborate messages, cover letters, or magic talismans. However, I used some tricks to optimize this process:
- Track your progress with each company: I created a google sheet similar to a Kanban board with the interview steps for each company and my current progress. This made the journey more enjoyable as it felt rewarding to see the companies trickle down to a manageable amount of interviews and cross the finish line with those.
- Search for a “recruiter” or “hiring manager” at X company with the text “I’m hiring.” You’ll get a list of search results you can use to do outreach. Also check their profiles to find the type of software engineer they’re hiring for. For example, I would frequently see profiles of recruiters hiring for embedded systems roles. Since I wasn’t interested in those roles, I wouldn’t reach out.
- I applied to positions requiring more years of experience than I had, if I satisfied a majority of their responsibilities and other requirements. My first job out of college came from applying to a senior position.
- Create LinkedIn job alerts with specific criteria. For example, “Software Engineer in the Bay Area.” Applying to these positions as one of the first candidates is a great way to beat the rush of candidates applying later.
- LinkedIn easy-apply & related applications forms like Lever are simple and can make you feel productive. You can save your resume and apply to jobs using the LinkedIn mobile app. In contrast, Workday application forms felt slow and draining. Be cognizant of your energy and the energy vampires draining it.
Once I got a response, I scheduled my interviews.
Scheduling interviews is easily one of the most difficult parts of the process. Especially if you’re trying to schedule multiple interviews back-to-back in the hopes of leveraging competing offers during negotiations. In my experience, the most difficult parts were carving out time while you’re working and scheduling onsite interviews sequentially.
Let’s cover both.
Part 1: How do I find time to interview while I have a full-time job?
With a full-time job and family & social obligations, I had little time to spare for these interviews. There’s a number of tips & tricks you can use, but I’d like to propose a mental model you can use: take advantage of flexible work hours and companies’ flexible interview policies.
Examples of using flexible work hours to your advantage:
- Work odd hours — if your job allows for it — to carve out additional time.
- Take calls before & after work.
- Skip lunch to do phone screens ☹️.
Examples of using companies’ flexible interview policies to your advantage:
- Schedule phone screens in the early morning before work hours. For example, schedule an 8am PST interview with an engineer in London (3pm there).
- Split onsites over a few days. This is particularly useful if you can amortize onsite interviews over the weeks leading up to your gauntlet of onsites. For example, if company A allows you to take their onsite over two days, do the 2nd day during your gauntlet of onsites with other companies and the 1st day maybe a week earlier.
- Schedule similar interviews with different companies on the same day. Particularly useful for hiring manager or team matching calls where I could compare responses.
Also, if you’ve passed a phone screen with a reputable company, you can leverage that to skip initial phone screens with competing companies. Each initial screen is a point of failure, so by skipping them, you minimize the chances of being rejected and improve your overall success rate. It also saves time.
Part 2: How do I schedule onsite interviews back-to-back?
When onsite season was in full bloom, I took time off for the entire day so I could interview and then stress after in peace. Since I interviewed with 10+ companies, I took 2 weeks off to interview.
The mental model you should filter your decisions through is to schedule early and optimize for days. If conflicts occur, prioritize high-TC/prestige/interest. Let’s dig into this more:
- Schedule early: I scheduled my onsites about a month in advance. This provided the greatest flexibility in scheduling specific onsites on particular days and deciding the ordering I wanted to interview in. For example, I scheduled Google as the earliest interview because they take a while to get back with a decision. I also chose to space my top 3 picks with a day in between so I could adequately rest for the ones I especially cared about. Scheduling early affords you the opportunity to make these decisions.
- Optimize for days: When you are trying to neatly slot onsite interviews in place, each day has the potential to interview with a new company. You should treat each day as reserved for a single, continuous onsite at least. If a company asks you to schedule one-off interviews like say a hiring manager or culture fit call, schedule those on days you have other interviews. Keep your free days … well free! Following this strategy allowed me to neatly slide onsites interviews into those free slots even if the companies came back late with their initial screen results. For example, the timespan between the first and last company asking me to schedule an onsite was almost a month! I scheduled both interviews without issues by following this strategy.
- Prioritize high-TC/prestige/interest companies if conflicts do occur.Ideally, if you follow the first two rules this shouldn’t happen. However, if conflicts do occur, prioritize the interviews you’re actually interested in. You can also bump other scheduled onsites to take ones you have a greater interest in.
As a last piece of advice, I found it helpful to be transparent with your recruiters. Tell them you’re juggling lots of balls and they’ll work with you to meet your requirements. Your recruiter can also provide you with valuable information like how long the process takes (valuable if you’re scheduling early), the types of interview rounds to expect, and the open roles & teams. Work with them so they can help you.
I won’t sugarcoat it, scheduling is a tough challenge. It’s stress inducing. However, by following the above mental models, I was able to schedule and take interviews while juggling a full-time job.
By scheduling interviews sequentially, I received offers around the same time. This helped with negotiating higher offer packages.
Summary & Reflections
🙏 Virtual Interviewing is wonderful. You avoid jet lag, exhaustion from bouncing around the country, and being in a new, unfamiliar environment.
🤝 LinkedIn effectively. LinkedIn is a wonderful tool for job seekers. It made my life a ton easier, and hopefully yours too.
🏡 Take advantage of flexible work hours and interview policies. It’s feasible to interview with 10+ companies at once!
🗓 Schedule early and optimize for days. Break ties by prioritizing high TC/prestige/interest.
Phew, thanks for reading 🥳! I loved writing this post and I hope you learned something. Feel free to comment on what you’d like to hear more about. I review every comment. In the meantime, stay tuned for the next post, how I studied!
Also published on Medium's kencortereal
L O A D I N G
. . . comments & more!