"He spent too long attempting to solve the first problem that we barely had any time to do any coding. Though he had strong comms, and was very pragmatic. Sadly this isn't enough for me to pass him." — company name withheld
This article is a reflection on the sort of front-end and algorithmic challenges I've encountered in my interviews so far at big and aspiring to-be big, technology companies, which have included Amazon, Google, JPMorgan, and Shopify.
It's not the first time I've interviewed at these companies, but it was the first time I completed interview rounds with them.
This reflection aims to decide where to channel my hugely limited resource, my time, to improve my likelihood of success at further interviews. Specifically, to help inform what challenges I choose to curate for my #30DaysOfReactComponents and #130DaysOfDSA challenges.
So if you're curious to know what sort of questions I've been asked, how I've approached interviewing, and my opinion on the various interview processes and how to prepare, read on.
"Unfortunately following some consideration, the team are not looking to take your application forward due to a lack of sufficient demonstration of the technical depth required." — company name withheld
HUNTING FOR INTERVIEWS
The tech market is really hot right now (first quarter of 2022) and big tech companies are hiring like crazy, with recruiters seemingly on overdrive.
Therefore the real problem from the get-go was not whether I would get interviews, but, how not to take on too many interviews concurrently that I got burned out without time to do anything else, such as grow myself, and grow my consultancy.
Tip💡: When looking for roles on Linkedin, set your location to the job market you're interested in.
Tip💡: If you're looking for remote US roles, you typically need an incorporated company so set this up ahead of time.
With my market analysis in mind, I created a very narrow and specific one-page CV targeting front-end react roles and decided to send out applications in batches of 20 - 30.
I had two companies in mind when creating my CV — Google and Shopify. And accepted that given I was just starting, I would fail most of my interviews, but the important thing would be to learn from them towards my Google and Shopify interviews.
APPLICATION POLICY DESIGN
I created a personal policy: "NO MORE NO-NAME STARTUPS," which my accountability group (bless them) kicked against strongly. They advised instead to get something, anything, asap! (In retrospect, they were right).
But I created this policy because I felt I'd seen enough of how startups work at the early stages and wanted to see more of how startups are run when they've made a name for themselves and their products are widely adopted. I also thought that landing a big tech role would offer better job security (laughs in 2022 4th quarter and ongoing 2023 big tech layoffs) against a repeat of the sort of layoff I'd just experienced.
Of course, this "NO MORE NO-NAME STARTUPS" policy expired as my savings runway started to expire, but before then I wanted to push myself to get what I wanted, and very importantly, to avoid like covid any startups that weren't solving challenging problems because stagnation was still very high up there at my greatest career fears list. So much so that two years before this layoff, I had already resigned from my first software engineering role out of university with nothing lined up to prevent stagnation.
Following the previous steps, I sent out my first batch of applications towards the end of January. I also reached out to my best friends, mentors, and the most helpful people in my network letting them know I'm on the market and asking for their help.
Currently, those efforts have worked well enough in terms of converting to the interviewing stage that I only needed two to three major application cycles.
Tip 💡 : Reach out to people. Remember, people are kind and truly helpful if you let them know how to help, especially if there's something in it for them, even if it's as ephemeral as feeling nice about themselves.
Tip💡 : Linkedin is my preferred platform for finding recent job openings and reaching out to recruiters. If you keep your Linkedin active with content, recruiters reach out in a volume proportional to the "relevant" content you put out. This is how I believe I got my Google opportunity, by being active on LinkedIn, and a Google recruiter reaching out. Other than that maybe someone put in a word.
Tip💡: Circular is also proving to be a source of high-quality leads compared to the noise of LinkedIn.
Tip💡: When you make an application to a company, find the company on LinkedIn, look for employers of the company and filter for recruiters. Network with the recruiters to let them know you just made an application. This helped me get my Shopify application past the gatekeeping software.
Tip💡: For targeting small startups, find tech communities on Discord and Slack and view the free job boards they have there. Small startups typically don't pay for agency help and fancy job boards unless they're struggling to fill important roles, so you won't find their openings on places like LinkedIn or Circular during the early stages of them just starting to look for a person to fill the role.
I kept track of my applications using this google sheet so that I could learn what to do more of and what wasn't working.
This is super important because as you can see with NordCloud, the last note says to reach out in the summer when the company can sponsor skilled worker visas. These are the sort of opportunities which get missing in the heat of the moment if you don't keep track.
Tip💡: Be DESPERATE for feedback. Well, in job hunting NEVER be or appear desperate, but you get what I mean, take feedback seriously so you can fine-tune your process.
The CV I used has had a reasonably high conversion rate into interviews of about 4% - 7%. Most of that has come from mid-level roles which as a subset probably have had about a 20% conversion rate, while the conversion rate for senior-level roles is near 0%.
This market feedback has reinforced my prior learning — that a majority of tech recruiters for FAANG-type companies will only consider moving my application forward for a senior role if I had already accumulated about 8 years in total or 4 more years of the same quality of my current technical experience.
This gatekeeping seems to be even more stringent for glitzy startups like Webflow, Monzo and Stripe when compared to big corporations. Rejections are swift at these startups, and I think this has to do with their senior talent-to-product ratio likely being lower than at big corporations. I don't think they can afford to bring on talent who do not have strong and correct opinions, along with the skills, to take their products to the next level. Doing so would jeopardize the value per time per product they get from their existing pool of senior talent if the incoming talent pool presents too much of a mentorship sinkhole.
Finally, unlike big corps and glitzy startups, recruiters for much smaller less glitzy startups seemed to want to push me in some shape or form for senior roles at the startups they were recruiting for, to which the team members, after having had a look at my CV would say, no, they want someone more senior with more experience.
I think this has to do with the reality that recruiters for much smaller startups are not in-house, and are more motivated by commissions than by getting good fits. I quickly learned not to waste too much of my time with such recruiters when I could see that the opportunities they were pushing me for were not a match. E.g why would you push a front-end focused engineer for a DevOps role?
"The team thought you demonstrated strong leadership principles but wanted to see more technical complexity" — company name withheld
WHAT INTERVIEWS HAVE LOOKED LIKE
Interview types I've experienced fell into one of these categories:
Leadership principles a.k.a behavioural interviews
Data structures and algorithms
LEADERSHIP PRINCIPLES A.K.A BEHAVIOURAL INTERVIEWS
These have taken various forms. From a CTO having a casual one-hour chat with me, to the more standard 10 - 30 min formal tell me about yourself screening interviews at JP Morgan, Toptal and Google. All the way to Amazon's drawn-out repeated leadership principles interviews.
They typically follow the form:
Tell me about a complicated problem you solved
Tell me about a time when you delivered beyond expectations
Tell me about a time when you had to act quickly with limited information
Walk me through your CV
Whatever the form, I've prepared for these by reflecting on my varied experience and penning down over 15 examples of instances where I've demonstrated strong technically relevant leadership.
And during the interviews, I've always tried to check that the interviewer follows along with me and that I'm providing the information they're looking for by explicitly asking them at regular intervals, questions such as:
Did that answer your questions
Do you want me to go more in-depth in any particular area
Also, resources I've loved for these are:
link to amazon mock interviews (will update to include later)
link to video about don't get down levelled (will update to include later)
Super Tip 💡: Practice with a friend in person.
DATA STRUCTURES AND ALGORITHMS
All interviews involved some DSA problems. 4/6 companies surfaced graph problems that require proficiency with these algorithms specifically:
UnionFind (1 question)
DFS (3 questions)
Dijkstra's Shortest Path (2 questions)
Other than these:
- Arrays (2 questions - 1 sort, 1 flat list, 1 merge (sum time series))
- One linear programming problem (Microsoft).
flexbox - centring problems
hooks - the optimal way to implement hooks
promises - implement delays
event listeners - hook into scroll event
for arrays and lists, go through merging strategies
for react, read documentation line by line and understand the whys of everything
replicate a challenging project and try to understand why
- Database indexing
For the uninitiated, the popular opinion around using DSAs to screen for coding ability is that it's unnecessary. But while there are cases when it is unnecessary, e.g small startups really struggling to find talent, I think it's an invaluable screening phase for big corporations struggling to screen hundreds of applicants per role, or startups actually solving extremely difficult problems who need people that are meticulous about their software engineering craft.
In my opinion, just like the GRE, proficiency in DSAs measures more than just coding ability, it gives strong indicators of motivation, discipline and intelligence (specifically the intelligence needed to acquire complex knowledge), all of which a candidate who is successful at breezing through the DSA screening phase would need in abundant quantities.
Unfortunately I don't (yet) have a winning formula for acing DSA interviews, but a great motivating resource I reference for guidance is Ayomide's reflection on getting into Google
particularly these sub-sections under preparing for interviews the right way:
Resilient, Spaced Practice
Ayo's points, specifically about spaced practice, also called spaced repetition, reminded me of how I learned my first 500+ characters in Mandarin and convinced me that far more important than my solid understanding of these structures, is my ability to recall them and recall the common algorithms in which they're used quickly and fluidly.
"As you can see Dozie, we're not going to be able to progress further as you didn't finish this problem within the 15-minute timeframe" — name withheld
LIES FROM THE PITS OF HELL
I've learned that no matter how much they believe otherwise, big tech hiring will always prefer a candidate whose thinking process is thorough AND who manages to solve the problems given CORRECTLY within the given time limit, so far they do not have bad qualities to disrecommend them. So please do not believe anyone and fall into a false sense of security when they tell you "we simply want to see how you think."
Luck comes into play when not many people solve correctly, and a candidate is one of the few with a thorough thinking process, plus other qualities to recommend them. Even then, I believe the process will favour the candidates who solved most correctly, or most tenaciously, within the shortest timeframe.
Anyway, if back flipping were coding, here's what it feels like interviewers have been looking for while interviewing at big corps:
"Ghosted on me without feedback for a month+ and got back with an email saying try again" - Google
Tip💡: Never take it personally. It really is just a market where you're trading skills for money. The trick is to identify what skills to learn and how to demonstrate them sufficiently to get a deal.
Keep applying, keep developing your skills and keep learning what to do better.
My break came when I sunset my "no more no-name startups" policy and moved my focus to target small startups. I got an offer about 3 weeks after this switch. And I couldn't help but think, imagine how at peace I and my bank account would have been if I'd made this switch much earlier, well before spending 6 months applying at big tech companies.
The honest answer... if I didn't make that initial attempt at getting the roles I ideally want, I don't think I would have the motivation I currently have now to go at it again or as good an understanding as I have now of the areas I need to improve at.
I also wouldn't have had the time to explore and conclude that I wouldn't find Webflow consulting motivating or rewarding. Regarding this, I learned through technical writing that I don't enjoy nonscalable craftwork as a career. By this, I mean producing unique pieces of items that can only be sold once - case in point, technical articles, which is also what I would be doing if I were creating Webflow sites for clients. I realised it would be a huge waste of my time when, instead, I could build products that scale easily with only further marginal input from me using my software engineering skills. And yeah, I just don't enjoy the idea of non-incremental work. My brain just switches off, so one Webflow site today, another tomorrow, another the next day... I realised I would be bored and frustrated out of my effing mind by the lack of linear progression in complexity.
Still... it's always nice to not be too long out of a job, so while these were valuable insights, I don't advise my future self to take a long-winded route in bouncing back from a layoff.