PS: A lot of people told me to make this article a paid, short e-book. This didn’t feel like something I wanted to do with it. Be patient with me though, a book will eventually come. I (will) have many, many things to say.

Prologue

TL;DR You will most likely fail many times. When you do, don’t just try again, try again with wisdom.

First Big Break

The first time I ever imagined working abroad as a Software Engineer happened in my second year at University. I heard about some Covenant University alumni who had worked at Bank of America Merrill Lynch (BofAML) & Goldman Sachs (GS) in a conversation. I remember being fascinated at that moment by the fact that working abroad hadn’t even crossed my mind until that point; I suddenly became more aware of how one’s environment can limit the future that one aspires to.

My tweet about how one’s environment can be a limiting factor
Some of my BofAML applications. I applied for a Compliance role out of desperation (tears).
Some of my GS applications.
A BofAML rejection email. Emails like this became quite normal.
A 2016 cutie: I was rough around the edges, but super honest!
* A banger, if we’re being honest *

First Big Rejection

The summer of 2018 was one of the best times of my life; I got to spend ~3 months in London with some of my best friends. They had gotten summer and full-time offers through GS’s African Recruiting Initiative. However, by the end of summer, I did not have a return offer to GS.

I tried to learn too much

My project was to write a complex-ish Go script to automate metrics generation from Kubernetes cluster audit logs. I needed to populate a dashboard with these metrics using a lib; I needed to use Kafka to enable async operations; I needed to store all the information in the firm’s data lake in a queryable format.

I didn’t have enough technical depth

This one was a tough pill to swallow. Particularly, I didn’t have a deep understanding of DSAs. All the different parts of my project required this: parsing the logs, populating the dashboard, and storing the data.

I didn’t handle my admin tasks well.

Part of being a summer intern includes things like replying to hundreds of emails, attending conferences, meeting with company management, giving presentations, and so on. I term these “admin tasks”.

Communication

I had multiple presentations, and sometimes I got too technical for non-technical audiences. Sometimes I gave too much of a background story and didn’t get to the point quick enough. Sometimes I wasn’t able to capture the business benefit of what I was working on. Sometimes I just hadn’t practiced beforehand.

I didn’t feel settled in the team. I should have moved.

I left this one for last because, as a principle, I try to highlight what I could have improved personally first in any situation. This was uncomfortable to admit, but it is true from my perspective nonetheless.

Rejection-as-a-Service

After the internship, I doubled down on HackerRank, GeeksforGeeks (G4G), and Cracking the Coding Interview (CTCI). Before these, I had tried out Codewars. These platforms were the worst ways for me to start to learn, but more on that later. I practiced — struggled really — with these platforms and learned some things the hard way. After some time, I felt a lot more confident in my knowledge of DSAs, so I decided to apply to companies again. Remember what Arthur Ashe said.

Me, trying to be tenacious.
My reward for tenacity.
Cold message to a Palantir recruiter.
Conversation with a Bloomberg recruiter.

Working on Foundational Problems

PS: While I worked in companies before and after TeamApt, I’ll focus on just them in this article, as they are the most instrumental to this story.

TeamApt

Many people don’t know this, but I got sacked by TeamApt during an internship with them in 2017. I remember feeling devasted by that at first — like, “How can you get sacked during an internship, Ayo? (tears)” — but that has been one of the most important moments in my life.

So, why was I sacked?

At the beginning of 2017, TeamApt, < 2yrs old at the time, was starting to make huge strides. I joined as a Software Engineering intern and my first main task was to write Selenium tests for frontend components.

Back again, but better

If there’s anything you should take from this, it’s that I try to be very self-aware. I think about every damn thing, and it makes me appreciate a lot of experiences, eventually.

Tosin gave me honest, brutal feedback at the time of the sacking. I came back to thank him for it.

The Swiss-Knife

I joined a team building a product called Moneytor, which offered internet banking & merchant management services to Nigerian banks. You can think of the product as a pack of ingredients. For each bank we delivered the product to, we made the meal in a unique way.

Used a tool called FIGlet to display TeamApt’s core values in my terminal. Read about the values here.

The Aptian Magic

Asides from my main job, there were many things about the company that contributed to my overall growth

  • We read and reviewed multiple books together as a company including Clean Code, The Pragmatic Programmer, and Computer Science Distilled (my recommendation, obviously). We discussed ideas and used practical examples to explain engineering principles.
  • We gave presentations — I gave some — on different topics and tools.
  • We had multiple hackathons as well, with winners getting monetary and non-monetary rewards.

The Valley of Disappointment

All of this time, I hadn’t forgotten my main goal: japa. So, I kept interviewing while working. Again, I interviewed with multiple companies, but I’ll only focus on the ones important for this story. Also, I only applied to places where I felt I would fit; I needed to like what they did.

Facebook

In December 2019, a recruiter from Facebook reached out to me regarding a summer internship. I took the first interview and was successful. I remember the question requiring me to use binary search and queues (I think); the feedback for this interview was that they were impressed because I came up with the most optimal solution. The final stage had 2 questions. The first one was trivial; the second one required using recursion, but the interviewer could not understand my solution. This was painful for me, and I took the lesson to go back and learn how to explain recursive solutions better.

Goldman

I applied for a full-time role with Goldman in September 2019 and as part of submitting the application, I was invited to take a test. I believe there were three questions; I remember reading through them, knowing I could solve them. However, something weird happened. The cue from my brain that I really wanted to get this opportunity suddenly put an incredible amount of pressure on me. This made it hard to think clearly. But that’s not where it ends. Smile — my internet provider — decided to take a holiday. Nervousness and bad internet do not go well together my friend. So, I couldn’t finish this test during the time limit and I got an automated rejection 🙂. I, and I hope you expect this by now, made sure to solve the questions afterward — I even timed myself!

An item from the winner’s prize

Bloomberg

2019 was a really strange year for my Bloomberg applications. I applied for a full-time role and botched the interviews. I think I made it to the second stage, I don’t remember much about it. But after botching the full-time interviews, I decided to apply for an internship with them.

Palantir

If I wasn’t here to clarify, you’d think the Bloomberg and Palantir scripts had the same director!

Preparing for Interviews the Right Way

Fundamentals

I said earlier that starting with Hackkerank, G4G, CTCI, and Codewars was the worst way for me to start to learn. The reason for this was because I didn’t quite understand data structures properly when I was starting out, so I should have dedicated time to that.

Pursuing Curiosity

In all the time I spent preparing for, having, and failing interviews, I made sure to continue to pursue my curiosity in different ways. This included building personal projects (like the recruitment platform I built for a non-profit org with a team); reading articles and books to learn and understand things; taking technical courses or watching random youtube videos.

  • When you are genuinely interested in something, then researching about it doesn’t feel like work, it feels like play.
  • Don’t compare yourself to others. It’s okay to admire, but don’t envy. Envy will skew your growth because you’d try to be someone else.
  • Curiosity is a gift, so nurture it. Create processes to pursue it. Refine the processes as you go along.
  • You don’t understand something if you can’t explain it. “Explain it like I’m 5” should be a guiding principle.

Resilient, Spaced Practice

At different time periods, I would solve 2 questions in the morning before work starts and 2 questions after work was done. This was impossible for me to sustain for years because at different points I had other priorities or I just wanted to chill. So what I did was to have short periods of time that I set out to achieve a goal. For example, I could solve questions every day for a month and then take a break for another month and repeat. Sometimes it was 2 months. What’s important is that I was consistent with setting (and achieving) goals bounded by those time periods.

Community

I’ll just like to acknowledge God, my family, my girlfriend, and my friends. Your kind words, gifts, comforting arms, and boundless love were a source of strength for me.

Here, my parents encourage me, as they always have. I love you both.

Ok Google, wagwan?

Getting an interview at Google

Before getting an interview at Google, I had submitted at least 10 applications to them at different times. The response was always the same.

Hello & Best Wishes from Google

Preparing & Interviewing

I had two interviews after that: a video interview and the virtual on-site. The on-site consisted of 5 interviews: 3 for coding, 1 for systems design, and 1 for Googleyness.

  • done at least 30 mock interview sessions with my friends and on Pramp
  • read through almost all the systems design use cases on donne martin’s system design primer repo.
  • solved at least one question a day for 3 months
I completed 61% of Google-tagged questions before my on-site

Epilogue

Every time I failed or was disappointed, I got a little sad or very sad (depending on the context), but I always made sure to learn from my mistakes and go again. It’s borne from an understanding that to reach a crescendo we must start the journey upward; every time we fail is an opportunity to aspire to a new crescendo.

Interested in many industries, but my first love is technology. Passionate about coding, reading, art & travel. Aspiring Kensei ⚔️.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store