Published on

A Job Search Retrospective- Why LeetCode?

Estimated Reading Time
Estimated Reading Time: 11 minutes
Authors
  • avatar
    Name
    Isabelle Villamiel
    Twitter

April 1st is mine and Jon’s (@NoWhiteboardOrg) last day of work, so I find it bittersweet to be writing this post. In December, I started applying to new roles, and by the end of March, I accepted Atlassian’s offer. This article will cover what I was looking for in my next role, factors that affected the search, and how I got offers from companies like Microsoft and Twitter.

Why Whiteboard?

Some of you might wonder why I’m talking about companies that use whiteboard interviews on a site promoting other types of interviews, and the answer is complex. First, I did apply for jobs through this website. I applied to the companies that I even wrote about on “Companies that Pay FAANG salaries,” but none got back to me. From personal experience, I saw a trend in which companies that don’t whiteboard preferred candidates that were already familiar with their stack. And I totally get that, but my goal was to change my enterprise tech stack, so…

This left me with a conundrum. How do I find roles, teams, and companies that would take a chance on me, a .NET and C++ developer? How can I showcase I was willing to learn something new and prove that I could (ie. From my first role at Qualcomm)? After 5 automated rejection emails, I made up my mind.

To get my next job, I needed to widen my search, which also meant accepting the possibility of getting asked data structures and algorithms questions during an interview. Which also meant practicing LeetCode.

I had a couple of advantages, namely time, for whiteboard interviews. Let’s get real—who benefits the most from an interview process that includes LeetCode style questions? Engineers and developers who have the time to study. A parent working full time and also has to pick up their children from school, cook dinner, and spend quality time with their kids before bed has more responsibilities and less time than a twenty-something who only needs to take care of themself. Speaking of taking care of themself, there are also house chores.

Another advantage I had was Jon. Being in a relationship meant that shared responsibilities could be easily offloaded to him when I was focused on getting a job. The dishes get washed; the trash taken out, food prepared or brought home, and our dog Oscar walked and fed while I was in the middle of interviewing. Having someone I could depend on to keep the house together was a huge advantage to my search, and it was definitely a contrast to when I was living with roommates also searching for full-time jobs post-grad: our kitchen was a mess and I don’t remember eating very often.

Another advantage I had were referrals. Or rather, one referral. I opted out of getting referred to FAANG/MANGA companies, though my network certainly would have done it. Instead, I asked a friend to refer me to Atlassian. Having a friend inside the company was a great talking point to the age old question, “Why this company?” because they had already vetted the company culture and outlook. The referral also helped expedite my application (though I’m not sure to what extent) as I’ve seen with other places like Facebook back in college.

These advantages helped, but it was not a walk in the park. I still had to make my own sacrifices in order to prepare for interviews. After moving away from home, an enormous struggle we had was making friends in a new city, but I found a group of really cool people through beach volleyball! Jon and I also made a friend through our local climbing gym, so we started having a consistent schedule of things to do and people to see. We hung out after games and clinics, hiked occasionally, and it finally felt like I had a solid group of friends. When I started interviewing in January, however, I lost contact with them for months on end. I had to stop going to volleyball and the climbing gym after work because most of my interviews were scheduled before work the following day consistently. I didn’t have time to exercise, and my anxiety was at an all-time high and caused sleep issues. I became tired all the time and my resting heart rate, usually in the 60s, was in the high 80s, showing that stress was affecting me physically. Before each coding interview, I couldn’t sit still because I was trying to guess or anticipate which LeetCode medium or hard I would see, but also hoped it was easy. Some questions ended up being about a topic I was strong on—purely fortunate.

This brings me back to the initial question posed: why am I talking about LeetCode on this website? The answer is this: NoWhiteboard promotes the ability to choose the best interview experience for each individual candidate, dependent on skills, experience, and life stage. This time around, it just so happened that I had plenty of advantages for whiteboard interviews, but perhaps in a couple of years I would be stronger in take home interviews, etc. Regardless, my experience is but one data point. Hopefully, you will have an easier time when you look for your next role.

Want updates on new blog posts and updates to the website?

What I Looked For

There were a handful of factors, a checklist, if you will, that lead me throughout the search. A company had to have at least three out of five factors for me to consider applying. This was the initial list:

  1. Work life balance: this was number one on my list. WLB for me included good PTO (my current job has unlimited or “flex” time off, so that was my standard), reasonable or flexible working hours, and a highly empathetic manager and team.
  2. Remote: I prefer having the option of going into the office rather than having it mandatory. Also, Oscar would not like it if I was gone the whole day, so this was partly for his sake.
  3. Interesting work: I wanted to work on something different. A different stack, stakeholders, technology, and niche, etc. (This factor almost topped WLB in the end, too.)
  4. A team I would be excited to work with: This factor became more important as I started getting more than one offer. I asked a friend of mine for help on deciding between two opportunities where I stressed how different the work would be, but he emphasized that work would only be tolerable (and even fun) if I liked the people I’d be working with. The team would also determine how long I’d likely stay in the role.
  5. Pay: I had a number in mind for salary that I shared with only two people: my best friend Jen and Jon. This was what I thought my skills and time were worth.

It’s incredibly important to write what you’re looking for. Sometimes this list will evolve. Mine definitely did. Here’s what these factors ranked from most important to least when I was deciding between offers:

  1. Work life balance
  2. A team I’d be excited to work with
  3. Interesting work

Remote and pay didn’t even make the cut simply because the positions I applied for were by default remote and each company exceeded the number I kept in my head. I was fortunate enough to decide purely based on the intangible factors. Atlassian as a company fit three of out five of my criteria. Everyone I talked to was a pleasure to meet, but it was my hiring manager and the security work that his team does that sold me. After speaking with him, the role at Atlassian hit all five of the criteria I documented.

But one other role made the decision to say yes incredibly difficult. When I initially interviewed for Microsoft, it was for a dotnet/runtime developer position. Think: open source with a distributed team. I passed the interviews but didn’t get selected for the job, and the hiring manager from that initial position referred me to a Python team. This team consisted of one person: Steve Dower, one of the core developers for cpython. In this role, I would be mentored by Steve, who is, by all accounts, one of the Python experts at Microsoft alongside Brett Cannon and Guido van Rossum (the creator of Python). He gets to sit down in meetings with different teams and VPs and consult them on however they need Python. For example, he helped the Minecraft team with their Python 101 education content for children and continues to contribute to cpython. They wanted to train someone else to be an expert just like him: someone who would be making impactful contributions to the organization and tech ecosystem.

This was such a unique opportunity, but I didn’t feel qualified and told him so. He said, “No one will have all the qualifications for this job. In the beginning, I didn’t either. You’ll learn everything as you go,” which really stuck with me and made the decision harder.

In the end, I still chose Atlassian, not because Microsoft and Steve’s team didn’t hit my criteria, but because at this stage of my career I want to explore a different subject matter: security. I would feel guilty taking a once in a lifetime opportunity only to quit after a handful of years because I wasn’t dead set on becoming a Python subject matter expert. However, if this position piqued your interest, I encourage you to apply here. The requisition description sounds intimidating, but fear not. Steve is awesome and you’ll be in great hands.

How I Got Offers

Honestly, I think a part of why I was extended offers was due to luck, but luck didn’t help in the actual interviews. I started practicing LeetCode problems from late November - early December and initially used the Blind 75 curated list. It was frustrating to unlock that part of my brain that knew DS&A from school, and it always felt like a steep, upward trek to get good. However, I was patient and did only two easy questions a day for two weeks before ramping up and doing one easy and one medium until the mediums felt not-as-painful-and-self-confidence-ruining but manageable with some help from discussions. I ramped up to two mediums a day with a hard sprinkled in by the end of February.

A surprising thing to note is that I didn’t even use C# as my language of choice but Java (throwback to college). So even when I was being interviewed for a .NET core/runtime developer position, I was still using Java. Yes, the interviewers made fun of me for it (but it was in good jest). LeetCode took up 80% of my study time.

During the other 20% of the time, I focused on systems design. I read the book System Design Interview: An Insider’s Guide by Alex Xu from cover to cover because I had no experience in designing a system. To be honest, I didn’t really even understand how databases worked or how components connected in the real world (this is still a big black box for me; I am happy with arrows pointing to their relationship), or even what a CDN was. This book was an invaluable source of knowledge and gave me a deeper understanding of each part.

Since I hadn’t done a system design interview until March, I also watched mock interviews on YouTube and read best practices on how to create API endpoints. All were invaluable and applicable to the actual interviews. Every company I got offers from had a systems design portion during their processes, so this 20% of studying paid off. Actually, I’d argue that system design elements gave me an understanding of how SAAS (software as a service) companies are designed in a high level and how they operate, so when I spoke to hiring managers over what their team did, I had a better idea of what the work would entail.

Earlier, I mentioned advantages I had for interviewing. I’ll add another one to the list: having friends that could help me with prep. A tech lead friend of mine, who also conducts interviews for his company, gave me a mock systems design interview where he’d give me pointers and suggestions on how to improve. I’ll impart his advice to me for free: create a website that has each component, so you could talk about deeper details in a real interview. Apparently, interviewers like candidates that can go off into tangents about their area of expertise. I didn’t have the time to build a whole new system, so I read the book instead.

I’ve talked about the technical aspects of the interviews, but what I found to be the most important were the behavioral portions. This was the hour where I could shine brightest and persuade the interviewers of my potential. If my technical knowledge of reversing binary trees and arrays didn’t impress the previous interviewer, the hiring managers saw my impact and contributions, growth mindset, and curiosity and willingness to learn. I talked about the Python side project that Jon and I worked on last year and other hackathon ideas that I worked on with friends and complete strangers. The side project was a fun topic to talk about because interviewers would see my eyes light up and my huge grin and probably think, “Hey, this girl can be passionate about something technical,” and keep asking me for details. I had those down to the T.

Often the behavioral section gets overlooked when preparing for interviews, but I had a different approach: I aggregated company core values and wrote specific experiences that resonated with each one. Then I practiced speaking the stories aloud with Jon, and he’d edit my technical jargon that I was prone to over share into something more palatable to listen to. The information was still the same, but we reframed the information into something that all humans love—a story with a beginning, middle, and end. When facts become a story that you’re telling to an interviewer, they become hooked on what appears to be a hero’s (your) journey. What was the situation, your task, the action you took, and the result? Sounds like Freytag’s Pyramid but can also be called the STAR format.

Freytag's Pyramid

So TL;DR: I made a schedule to do two LeetCode questions every day for three months, read an entire book on systems design and practiced the unique interview format, and also thought and wrote out stories that summarized experiences that resonated with each company’s values. It was a long journey, one filled with personal sacrifice but also kindness from friends and strangers. Looking for a job while I had a job was way different from when I was looking for new grad positions. Every interviewer I spoke with was empathetic and excited to meet me. It was as if they were only looking for red flags rather than looking for a reason to say yes, as it was in college. I'll leave you with some words of encouragement: the right interview process for you is out there as is the right job.

If you are looking for a new role and read this entire post, thank you. Consider looking for that next job right here on NoWhiteboard.org.

Want updates on new blog posts and updates to the website?