From “Hello World!” to Microsoft!

My journey from a newbie to a full-time software engineer.

Egahi
CodeX
17 min readAug 23, 2021

--

First day at Microsoft

First and foremost, I give all glory to God and acknowledge that He alone has made all I am about to share, possible. Here’s my story.

2017 — “Hello World! — CS50”

In the final semester of my freshman year as a computer engineering student, a few friends and I were gathered in a reading room, bent over drawing boards, making furious attempts to complete a technical drawing assignment that was due the next day. And here comes Tobi, asking if I’ve heard about the course CS50.

He had his laptop opened and was pointing to a video of David J. Malan on stage, literally demonstrating “computational thinking”.

A bunch of students were on stage role-playing as computers while others from the audience gave them instructions on how to prepare a peanut butter and jelly sandwich! The outcome was quite messy, thus proving his point that instructions given to computers had to be as precise as possible or the output would be unpredictable.

I was intrigued by the demo, so I made a mental note to explore the course. During the break, I signed up for the edx course, joined the Facebook group (they have a group/page/account on almost all social media platforms) and started exploring the lectures. They introduced us to scratch then continued the course in C.

Interestingly, we would be taking Introduction to programming using C++ the following semester, so it was perfect timing. (C++ is an extension of C and has similar syntax.) I used Bucky’s tutorial on C++.

Cs50 that year was structured in lectures and Problem sets (projects). I started with lecture0 and after a few months of playing with scratch, attempted pset0. I would watch the lecture, hit a mental block, and leave the course for weeks before coming back to try again. When I finally implemented pset0, I submitted it and it was accepted. The euphoria I felt was unlike anything I had felt before. Like, I was smart enough to figure this stuff out!

Lecture1 introduced us to C and part of the tasks for pset1 was to create a GitHub account. Here is my very first repo on GitHub. (For those who don’t know, traditionally, printing “Hello World!” to the screen is the first thing you learn to do in most programming courses.) I would go on to complete 7 weeks out of 12, covering a variety of topics including sorting and searching algorithms, cryptography, memory and data structures.

On a parallel plane, I was also learning the syntax for C++. I would watch videos and practice until I got headaches then take a break. Most of 2017 was dedicated to practising C/C++.

Funnily, I did all this coding on a tablet (with a mini-Bluetooth keyboard) and occasionally on a pc when I could borrow one from a friend.

View from the 8th floor.

January 2018 — “Writing codes every blessed day.”

I entered 2018 with a strong desire to become an excellent developer. My goal was to become a “senior developer” in 3 years (this was largely based on my limited knowledge of who a senior developer is).

My first course of action was to commit to coding every day. Luckily for me, I stumbled on the 100 days of code challenge and decided to take it. The rules were simple, code for at least an hour every day and tweet about what you work on daily. Here’s a repo of the projects I built during that exercise.

2018 was also the year I got my first laptop.

2nd quarter, 2018 — “ALC with Google”

In the second quarter of 2018, I won a scholarship offered by the Andela learning community (ALC) in partnership with Google. I chose the android track and start learning how to build android applications in java.

The very first task in the course was to set up Android studio and this was the most frustrating task of the entire course!

My internet was crappy at the time, therefore getting Gradle to build for the first time was quite the challenge. It took me three days of frustration and multiple times of nearly throwing my laptop out the window to get my first successful build. With Gradle working, I had to learn java. To guide my quest, I decided to take the 21 days java challenge. (Repo lives here.)

I completed the first course and built the required project (here it is), which were the criteria for moving to the next stage i.e. gaining access to the entire Android development nano degree on Udacity, but couldn’t submit it. We were to submit our entries via a google form schedule to lock at a specified date and time. At the time though, I had a strong affinity for completing stuff in the final minutes of the 11th hour.

As per my nature, I was tweaking and making changes a few minutes before the deadline. I implemented the last change, set the app to build and generate an apk and decided to “bow my head for a bit” while Gradle builds. I woke up exactly two minutes past the deadline with a functional app but, the form had closed! I was annoyed but had no one to blame so, I went to bed. Time passed a few folks were selected for the next stage and as expected, I wasn’t. I pushed to get the videos from those who had it and was determined to learn on my own, but without the support of the community, it was a bit challenging sustaining that motivation.

By the way, I was in my third year but not too happy where I was, so I processed a transfer from computer engineering (which was unravelling to be just specialized electrical electronics engineering) to Industrial mathematics (computer option) year two. It is a 4-year course, so this was the closest I could come to computer science without having to spend 5 years but, that’s a story for another day.

View from the 8th floor

4th quarter, 2018 — “First job interview.”

In the final quarter of 2018, I set a goal to get my first job before the year ended and, as usual, I set out to achieve my goal.

I branded myself as an android developer at the time, drafted a resume and started applying for jobs. For the last four months of 2018, I would go on google daily, search for “android developer jobs near me”, and apply to all the unique entries I found. I would also go on LinkedIn and search for “android developer jobs” and apply to all. I did not track how many applications I sent out, but it feels like “a lot” is an understatement.

I was ghosted by most of them though. Luckily for me, on a group chat of developers, someone needed an android developer. I indicated interest and got invited for an interview. That interview is one of the worst experiences of my life.

I came into the interview not knowing what to expect and thus unprepared but, not only that, I also couldn’t answer simple questions and was visibly shaking the entire time. (This is already shaping up to be a lengthy piece so I will save the details of that story for another writeup.)

Long story short, I got my first “we will get back to you” reply and, I know they plan on “getting back to me” but, this is four years and counting.

January 2019 — “First Internship — Heathway Technologies”

In December 2018, on the group chat I joined during the ALC scholarship called “Udacity Scholars”, an ad was shared for a C#/.NET developer and I was like, I have not prospered as an android dev, why not try this out.

I messaged the person who posted it and was like,

“I do not write C#, but I’m experienced in C, C++ and java so if I pick it up, in two weeks I would have sufficient knowledge to be productive. Would the job offer still be available?”

He said he wasn’t sure but encourage me to go on, so I did. I got a text (Fundamentals of Computer Programming with C# by Svetlin Nakov), went through the entire text, and re-implemented some of my previous projects in C#. Two weeks passed; the job was no longer available, but I fell in love with C# and thus became a .NET developer.

As fate would have it, in early January 2019, another job posting was shared, this time around they needed a C#/.NET intern so I applied.

Interestingly, I had fully made the switch from windows to ubuntu a day before my interview but did not bother to install windows before showing up. At my interview, I was tasked with building a simple book rating application in C# and demonstrating it. I tried different hacks on working with .NET on Ubuntu for the entire period but couldn’t get it to work. At the end of the day, I told them I would have to reinstall windows to be able to work on the project.

I went back, installed windows, got started with the project and after a week had a working solution, I submitted it to them and was invited back the next week. We had a conversation on the modalities of the internship and how I would combine it with schoolwork and thus got started.

It was a paid internship but, I was eager to learn so I just accepted their offer without negotiating. I would later get to know that I was hired because I did not quit the project despite the challenges I faced and came up with a solution. Here’s the project.

The internship lasted for six months but, due to financial constraints, they couldn’t keep me on as a full-time staff which was the goal of the internship. The way I found out was funny.

I took a leave of 2 weeks to write exams and on my first day back, pumped with so much energy, I marched into the office, set up my laptop and asked, where did we stop?! The CTO was quiet, then pulled me to a corner, said we needed to talk and broke the news. My energy went from 100 to 0 instantly. Notwithstanding how it ended, I will forever be grateful for that opportunity.

ADC Hoodie!

May 2019 — “First Freelance Job — Interswitch Group”

In May that year, I saw a posting for a “UI/UX designer” who was comfortable with C#. The job description was intimidating but, I was confident in my C# skills, so I indicated interest. It turned out to be a front-end role with good pay, so I accepted the job.

Frankly, I drew motivation from the Udacity scholars group chat. A lot of folks had received amazing offers, shared their stories with us and I was motivated to shoot high.

When I signed the contract with HR, I still wasn’t sure if I could do the job. I just knew if it had anything to do with C#, I could figure it out. I would later sit with the in-house developers who took me through the codebase. It turned out they had a platform built with .NET that needed a new interface.

The project was slow at first because my front-end skills were subpar (I started learning front end at some point but was bored and abandoned it) but I got around to it and was able to deliver, though later than expected.

July 2019 — “First Full-Time job — Itara Global Services”

I was on my laptop, on a nice Wednesday evening, going through my emails, when I got a cold email from Kp (CEO of Itara Global Services). He had seen my profile on Twitter and wanted to know if I would be interested in working at his startup.

My hopes for a full-time offer from my internship had fallen through and, my gig with Interswitch was a 2-month contract so I said sure, let’s talk.

The rest, as they say, is history. I would go on to spend two years at Itara, officially resigning in June 2021.

I was hired to work directly with the CTO (Obaro) in building the backend for the product in development. He left in less than three months and, all his responsibilities as regards building the backend fell on me. Everyone was a bit skeptical (including me) if I was up to the task but, those two months with Obaro was when I experience the most rapid growth so far in my career.

In the first week of deploying a new change to the server, it crashed. I battled to bring it back up for about a week before I was successful. It was a difficult time, but I learnt a lot. I pored through tutorials on managing resources on azure and went from a total novice to something close to a pro on azure. I thought of quitting at some point, but I’m glad I did not.

That experience gave me a renewed confidence that anything can be figured out, I just must persevere.

Though fully employed at the time, as anyone who has been in the field is aware, life at a startup is unpredictable and sometimes unstable. To balance things and supplement income, I did a bunch of freelance jobs here and there including a fully remote contract job with a company in the US.

View from the 14th floor!

2020 — “Data structures, Algorithms and Leetcode”

Sometime in 2019/early 2020, Tobi introduced me to leetcode, it was like the holy grail of acing interviews with big tech. So, 2020 was the year for focusing on leetcode.

I got to know basic DS and algorithms from cs50 and committed to practising on leetcode. I was also privileged to win a hackathon (I love hackathons) sponsored by Facebook and thus had the opportunity of being mentored by two employees of Facebook.

The mentorship was in two parts the first technical and the second behavioural.

The technical part covered most data structures and algorithms I would encounter while interviewing, how to approach technical problems, walking the interviewer through my solution and implementing the solution.

The behavioural part addressed interpersonal skills (soft skills), interviewing techniques, storytelling and generally what was expected of me at interviews.

At this point, I felt adequately prepared for “application season” but still took an extra step of paying for a professional resume*, optimized for ATS.

(Application season refers to the period during which most tech companies recruit for new talent, it starts around June and fades out around December yearly.)

Application season came and I started shooting applications to my target companies. By the end of the year, I had applied to almost all the companies listed here**. It was a stressful process, but I was determined so I kept going.

I had a system, which was to pick a company, edit my resume to match what they do as closely as possible, send in my application then practice on leetcode daily. (At some point though, I drafted a generic resume and just used it for all applications.) If I had any online tests to take, I would take them early in the morning because that’s when I feel the most productive.

Most of the companies ghosted me, some sent in a rejection mail without any contact, others sent links to an online test, and I got scheduled for a few interviews but got no offer. (Fun fact: I still get rejection emails from companies I applied to over a year ago)

Meanwhile, my friend Tobi had a slightly different approach. He resigned from his job, focused on the mentorship from Facebook and dedicated most of his waking hours to practising on leetcode. His sacrifice paid off and, he bagged three internship offers.

August 2021 — “My first job at Big Tech (FAAMG) — Microsoft”

Employment offer

I started 2021 with a very strong sense of optimism that it was going to be the year I make my first break.

I was just coming off a traumatic season of rejections but had learnt a lot from the multitude of interviews especially the ones with Facebook and Google. I knew exactly what they were looking for and how to get it.

I ramped up my commitment to practising algorithms and data structures by purchasing a premium subscription on leetcode and doubling down on the daily practice.

April 2021 was when the first wave of good news came in, I got a mail inviting me for an interview with Microsoft without any direct application. One of my previous applications (for which I was rejected) seemed like a good entry for a new role that just opened so it was transferred.

Before proceeding though, here’s my story again, this time focusing on Microsoft.

I applied to Microsoft for the first time in 2018 (when I was determined to get my first job). I was very new to programming, did not have a decent resume (I customized a template from google docs) and knew little about data structures and algorithms but I applied anyway.

I was privileged to have a recruiter reach wanting to “get to know me”. To date, I’m not sure what stood out in that application, I just assumed they were scouting for talent and took a chance with my application. The call was short though, she realized I was still in my second year of college and politely informed me she was looking for penultimate students or finalists.

The call was inspiring because I kept thinking that if I could get the attention of a Microsoft recruiter without really trying, what would happen when I did put in the effort. Thus began my journey of learning, applying, and getting rejections upon rejections.

Rejections from Microsoft

Fast forward to April 2021, my application had been transferred to this new opening and I was scheduled for my interviews.

Microsoft’s approach is to have four independent interviews (about 45 minutes each) scheduled on the same day. They were mostly technical (the interviewer gives you a problem, you discuss your approach to the solution and implement it in any programming language of your choice), but a few minutes were spared to discuss soft skills.

I came into the interview fully prepared and aced the first, second and fourth. As for the third, I came around to the solution but initially went down a complex part because I missed a hint the interviewer gave. At some point, my solution was becoming too complex, so I took a step back to look at the question again, only then did I pick up the hint and came up with an accurate solution. The interviewers were friendly and accommodating so it was an amazing experience.

About two weeks passed and then I get a call from my recruiter on a cool Friday evening. She called to deliver the kind of news any job applicant wants to hear.

“Your interviews were successful; the feedback was amazing, and I would like to schedule a call with you to discuss your employability with Microsoft!!!”

- My Recruiter

I managed to compose myself throughout the call but immediately after, I was jumping, screaming (in my head), and maybe dancing? I was like, FINALLY! My dream had been fulfilled and I was going to be a Microsoft Engineer! The joy I felt is indescribable.

I had to take some time to process what I just heard. I sat down, pictured myself and reflected on my journey. When I started, the frustrations, rejections, programming on a tablet, borrowing laptops, battling with problems on leetcode, everything in between and now, all that work had paid off. My big break had come!

The interesting thing about that call was it put things in proper perspective for me. I started the year, determined to land an internship with big tech and during the interview, I had no idea it was going to be immediate employment. But here I was being offered immediate employment as a full-time engineer with Microsoft!

My journey had come full circle, from tutorials to freelancing, startups, side gigs, contract jobs, internships and finally, big tech!

After that call began the bureaucracies (offer call, background check, signing of contract etc.) Mine had a twist though. I am a fulltime student so there had to be an internal conversation to ascertain if I was legally employable or not considering the law and the company’s standard. That happened and I was cleared.

Overall, the process took 4 months. I was first contacted in the final weeks of April, had my interviews in May, got the offer in June, went through a background check, signed my contract in July and started in August.

PS: “Background check” is the step in the process where they verify your academic and work history. All I can say is they are very thorough, so you want to be as accurate as possible when drafting your resume.

As of the time of completing this article, I am 1 week old in the Microsoft family and the experience has exceeded my expectations. Microsoft is built around a lot of internal communities, self-help sites and unlimited resources for personal development. In less than a week of joining, I already feel like I truly belong here.

My first day was amazing. We are meant to work remotely due to the pandemic, but we were given a choice to come to pick up our work tools from the office and we used that opportunity to tour the office. The office space here in Lagos Nigeria is just exquisite! I couldn’t stop taking pictures until my teammates literally dragged me away.

We got our devices, set them up, got our access cards and got onboarded on teams that same day. I came back from the office with so many gadgets it was as though I went shopping. I was given a laptop, a desktop, two monitors, a keyboard, a mouse, a headset, and a hoodie!

Work tools.

It’s been a week of being part of this amazing family and I can’t wait to see what the future holds for me here!

To wrap this up, I want to give special shout out to the people who were strategically placed on my journey to help me.

Shout out to Tobi and Michael, for introducing me to programming, to Auwal and Aniedi of Google, for your community work that created an enabling environment for me and to everyone on the Udacity Scholars group chat for your constant motivation.

Shout out to Segun, CEO of Heathway Technologies, for giving me my first opportunity as an intern and to Kp, CEO of Itara Global services, for giving me my first opportunity as a full-time software engineer.

Shout out to Obaro of Microsoft, to Michael and Pearl of Facebook for your mentorship, to Tejumade of Microsoft, my recruiter and everyone at Microsoft who vouched for me, a million thanks to you all and more!

PS: My journey over the past few years can be traced along three parallels — Faith/Spirituality, Academics and Career. In this write-up, I have traced my journey as a professional (career-focused), in another, I will explore my journey as a man of faith and in another as a full-time student. Or probably just write a book? Well, thanks for reading and bye for now.

Edit:

*I got my professional resume from Top Resume

**Find a more recent repository for summer internships here

I shared my story with the awesome folks at the Campus Talent Podcast. You can listen on Spotify or Anchor

Kings Tower — Home to Microsoft Lagos (© kingstower-ng.com)

--

--

Egahi
CodeX

I’m constantly contemplating purpose, morality, and ultimate justice | I work on Windows at Microsoft | Occasionally, music gets me high.