Keep Pushing Forward — My Journey To Meta

Fanan Dala
21 min readJust now

--

The Beginning

My name is Fanan Dala, and I started to write code at 12.

You see, I believed automation would do a lot of good for humanity, so I chose to build the skills that will enable me to create the most advanced autonomous systems. This passion burned so much that despite my lack of a computer, I taught myself to code by writing code on paper. I was also lucky to have two veteran software engineers in my church, Tunde Ajibawo and Oswald Umeh, who I would always bug with programming questions every opportunity I got at church. They were always so happy to answer my questions and nurture my talent. I am forever grateful to them for this. I eventually compiled my first code at 16 when my secondary school opened a computer lab because BASIC programming was a prerequisite for our coursework in a new curriculum.

Shortly after that, I got into university, got my first laptop, and proceeded to learn PHP. Why PHP? Funny thing about this is that at this point, I was already learning C++ from a book I had borrowed from Tunde, but at the time, I wanted to build a service that would enable me to teach people math, like Khan Academy. This was because Math was something I had struggled with but eventually triumphed, and I wanted to help others do the same. A website would have more reach than a desktop app, and I viewed PHP as the website language and C++ as the desktop language. Beyond having more reach, the UI of websites was easier for me to build and manipulate than the UI of desktop applications so I ditched learning C++ for PHP.

I got so engrossed in this that I spent at least 12 hours a day writing code. While most people were pretending to use their laptops to take notes during classes so they could play games, I was pretending to use mine to take notes so I could write code. It was because of this that Kachi and Nnamdi noticed me and proposed I help them build different projects. Nnamdi wanted me to build a football social network (an idea I believe morphed into Afriskaut), and Kachi wanted us to work on a forum for debaters. I agreed to work on both.

Nigerian Troubles And Hard Decisions

With Nigeria ‘Nigeria-ing’, my mum had to open a shop to help contribute to the family income. I worked day and night at the shop, unable to get enough time to write code for the projects I was working on. After a few months, I decided to stop working at the shop. My future was mine to decide and I loved to code.

I understood this was a somewhat selfish decision. But the way I saw it, I had to do what was best for myself rather than hang in there and keep everyone happy. I ran the risk of my family neglecting me should my endeavors not flourish while theirs did, but I also knew my family would never neglect me no matter what. They had proven that over and over again. I had abundant faith in them and knew I could move as ‘mad’ as I needed.

So, that holiday, I told my mum I didn’t want to work in the shop anymore and wanted to focus on my projects (even though they made no money nor had a clear path to a promising career). That was the last day I stepped into the shop as a staff. I spent all my extra time from the holidays working on my projects.

True Greatness Lies In Service

True greatness lies in a service is a line from my secondary school’s anthem and a value I have held close to my heart and followed. It is not surprising that service set me on my path to a successful career.

I still had a passion for teaching math, which was what made me go into web development in the first place, but I had pushed aside my math forum to work on other projects with my friends.

I, however, got a reminder of the importance of my math forum project when I had a roommate who was struggling to understand how to derive certain boolean laws in our Digital Electronics coursework. From trying to teach him, I noticed he struggled with it because he didn’t have a good grasp of factorization. This is a mathematical process I had also struggled a bit with until I stumbled upon a simple trick from a textbook. This made me sad, my heart began to burn again and I wanted to just teach someone math, anyone at all. If it was just one person I could help at a young age to understand some of these concepts better, I was okay. So I kept telling all my friends and anyone I could meet that I wanted to teach math during the coming holidays. Luckily, my friend Ade introduced me to Temitope Ogwu and I volunteered to work with her on Straight Outta Love (now Cedar Tribe) to teach Mathematics and Advanced Mathematics at Aunty Ayo Girl’s Secondary school. From there, I got to learn about Realtor.ng, and at 19, I got the chance to intern there under my first boss, Mr. Diran.

At Aunty Ayo’s Girls Secondary School

I wanted this internship because, at this point, I had been able to build and deploy websites, provision VPS servers, and even set up email servers. But I was curious about the challenges a software engineer could face in a corporate work environment.

While there, I noticed that the number of listings the company had was the most important metric, so I decided to be as impactful as possible to that metric.

Firstly, I helped recover over 5000 listings that had been lost due to a migration from one WordPress theme to another. This was a huge deal because, at the time, the platform with the highest listings in Nigeria had about 20K listings. We were on 2000 listings when I joined the company and the recovery had just bumped us to 7000. I didn’t stop there. The number of listings was so important to the company that everyone was tasked to upload listings, even the CEO himself had his quota for listings. But, even with the collective effort of everyone in the company, we could only upload about 200 per day because of the amount of manual work involved in the process.

I noticed that our listing upload process could be automated, so I built a plugin to do that. This was my first introduction to the value that internal tooling could add to a company and my first introduction to the tenets of capitalism 😂. You see, I had envisioned that the plugin would translate to free time for me and my colleagues, but when I told my boss about it, he raised our targets 😭. Our output increased to 1000+ listings per day, and by the time I was heading back to school after my internship, we were at 16000 listings and counting. Mr. Diran decided to retain me and I continued to work part-time for the company while in school.

Sorrows, Sorrows, Prayers

And so, you can imagine my consternation when I kept on getting rejections from all my applications to Goldman Sachs (despite consistently passing all test cases in the coding challenges), Google, Facebook, and Microsoft. Could they not see my talent? Can’t they see I am a star? Watashi Wa Star!

I kept trying to get into a MAANG for about 2 years and reached out to a few people too. Mr. Diran helped in connecting me with some people that worked at Goldman and my brother even tried to reach out to people internally and pitched me to his manager but I was still hitting a dead end. At some point, it was clear that the gap the existential structures (NIGERIA) facing me had put in place was far wider than my talent alone could close. I knew I could continue to focus most of my time networking but I felt that I would rather use that time to build my skills and build things too. I was not sure how effective networking would help my case but I was sure about how fast I could ramp up in my skills. And so I did just that, I built.

I, along with Kachi Nwani and Tolu Wojuola built Akiddie, and then Flok. I believed that if I did the work, at whatever point I finally decided to focus on getting into a MAANG (f.k.a. FAANG) I would be more than prepared to do so, and if I worked diligently, the MAANGs would come looking for me.

“Seest thou a man diligent in his business? He shall not stand before mean men. Nay, He shall stand before kings. ”

Proverbs 22:29

From L-R: Fanan, Kachi, Ore, and Tolu

Really, this wasn’t an easy decision as I knew it meant years of focus and waiting. If things didn’t turn out well with the things I was building I’d be set back by a few years. There was also the possibility I could lose focus over those years. I also want to say that if you are ever in a similar position, don’t sit and wait to be discovered. There is too much to lose in being idle. I could make the decision I made because even if the MAANGs never came looking for me, the things I was building could translate into a lot of value in the future. And even if those failed, my skills would put me in a place where I would be comfortable. I wouldn’t be at ground zero.

But my history had proven again and again that when I focused on anything, I always produced results. I remembered loving but being so afraid of water and almost drowning once. I made the decision to face my fear of water after almost drowning. Luckily my primary school built a pool and I rushed to sign up for swimming classes. Eventually, I became the swimming captain of my class.

I remembered when I was terrible at math in secondary school (struggled to get past 65/100 every term). I made a decision in JSS3 to incrementally increase my score in each term by 5 and eventually started hitting 90s with ease.

I remembered when my dad wasn’t comfortable with me being so obsessed with electronics in secondary school (even though he still helped me buy tools and components I needed, LHSM). However, I showed results by being first in the subject all through senior secondary school and eventually graduating with a first class in electrical & electronics engineering.

I always showed results.

Focus Focus, Always On My Grind

So despite not getting into a MAANG, I continued to build up my skills. I read Data Structures and Algorithms Using Python by Rance D. Necaise which helped me understand the inner workings of data structures from arrays to stacks. I got to understand how text-matching algorithms worked by reading Data Structures and Algorithms in Python by Michael Goodrich et al. And I got to understand Graphs better by following the course JavaScript (JS) Algorithms and Data Structures Masterclass by Colt Steele.

Aside from working on Akiddie, I also made sure to have a 9–5 job to learn and also get some money I could put into my projects. And this was how I got the opportunity to work at Shecluded and then Hollatags. Working in these two companies was tremendous in improving my system design skills.

In fact, I specifically joined Hollatags because I saw an opportunity to improve my system design skills there. I could deduce that working there would help my skills because first of all, the entry task for Hollatags was quite different from what I saw in other companies. Other companies wanted you to build some mini project but the task from Hollatags was intended to test your cognitive skills. I also noticed that the company was handling USSD and SMS delivery which meant it would be handling a high volume of traffic. I had learned to use asynchronicity to improve response times from my work at Shecluded but I did not know how to make a system process millions of records in a short time. The task Hollatags gave required this and solving it led me to better understand the differences between asynchronicity, parallelism, and concurrency. It was also the start of my obsession with Go, a beautiful language designed to help you build concurrent systems effectively.

I got to learn how to build services to process thousands of processes in a short time and following what I learned about the value of internal tools from Realtor.ng I contributed to improving the speed of some of the internal tools we had at Hollatags.

Serendipity?

After a year of working at Hollatags, I got approached by a company to lead the development of a new project they were working on. At the time, I had decided I would only leave a company if the new company was offering at least two times my current pay or there would be a lot of opportunity to learn and be impactful. The new company satisfied those two conditions but I had made a wrong move.

Three (3) months in, they decided to shut down the project. I was quite devastated. I was tired. I didn’t want to work anymore and decided I would focus on getting a masters and see if I could get into a MAANG from there. But my brother advised me against that and said I should find some work alongside applying for my masters in case I didn’t get in. At the time, I was like “What do you mean what if I don’t get in? I am a first class graduate of Elect/Elect o”. But I chose to listen to him and I also missed being able to satisfy my pizza cravings on a whim. So when he sent me the job posting for a software engineer at Tix Africa , I did not hesitate to apply. I spent that Saturday getting a LinkedIn Ruby On Rails (RoR) certification, added one RoR project to my GitHub, and got my friend Dami to refer me for the job. Anything to make sure I could get into Tix. The motivation that Sapa can give you >>>>.

Tixies

And my brother was right. I got rejected from Cambridge University and Imperial College London. I would have been set back even more if I didn’t get a job. But that was just the beginning of a series of unfortunate events.

The beginning of 2022 was funny because not only did I get rejections from my university applications, I got rejections from scholarships I applied to, and even got a job rejection from an application I had made to Microsoft over a year ago. Then one fine morning in February 2022, I got an email from a Meta recruiter. I hadn’t applied to them recently and had not asked anyone for a referral. I really could not understand how a Meta recruiter was asking me to join Meta.

At this point, I want to take a step back to appreciate the work that DEI recruiters really put in to ensure people from minority backgrounds got equal opportunities to work at Big Tech. While I had put in the work to improve my skills, other macro factors such as a strong push and relentless work from DEI recruiters and a booming economy led to me getting this opportunity.

That said, I was in disbelief. What do you mean what can Meta provide me with so I work there? I have been dreaming about this. Nah, this must be a scam. Probably a new format from the diligent ‘working boys’ (a.k.a. Y! Boys). I took a close look at the email address. I inspected the URLs. I looked up the recruiter’s LinkedIn and found it. Everything seemed legit but I still did not believe it. I reached out to my brother and asked him to confirm from friends he knew at Meta if the recruiter worked there. I got the confirmation, finally replied to the email, and that kicked off my journey to my Meta interview.

This was a very ecstatic period for me because not only did I get reached out to by Meta, but I also got reached out to by two Amazon recruiters, and a couple of other recruiters from other firms offering fat checks. I felt on top of the world.

I got a lot of help from my friends and family here and I am really grateful for that. My brother gave me access to his Leetcode to practice and also told me about how I could practice for the interviews. My friend Kamsi, founder of Ore Creates, also shared Ayo’s article on getting into Google which showed me how effective networking could be in getting a MAANG interview. This made me hopeful because even if I didn’t do well in this interview, I knew how to get more opportunities in the future. Aside from messaging recruiters or connecting with employees who work at companies you want to work at you can also go on Blind, post your resume, and ask for referrals, there are good folks there.

I practiced the popular Leetcode 75 and solved the top 50 questions for Meta on Leetcode. I took two (2) months to practice these and then proceeded to my phone screen interview which I passed. The funny thing about this screening is that I learned the textbook algorithm that enabled me to solve one of the questions in the most efficient manner just a day before the interview. I was pretty lucky, my Chi was doing well.

Everything seemed to be going fine and then, I started to hear about the hiring freeze at Meta. I was still hopeful and continued to practice for my final rounds but, two weeks to my system design interview, I got an email from Meta saying they would no longer be continuing with the interview. I was devastated and wrote about it here: Why DSA Interviews Are Great For Recruiting — My Experience With Meta.

Consistency & Impact

I told my friends about my interviews being canceled and in a bid to comfort me, one of them, Onats, a brilliant Android engineer, posted the job ad for Lemfi (f.k.a. Lemonade Finance).

I wanted to work here for a couple of reasons. One, the programming language they used was Go, my favorite. It would be a great opportunity to work extensively with it and test out my skills in concurrent design. I also guessed their transaction volumes would be in millions (they had just made it into Y.C.) and that would be a great opportunity for dealing with data at that scale. It was also a fast-growing African startup and I wanted to contribute to its growth. Lastly, I did not want to let the practice I had done for my Meta interviews waste so I applied for the job.

I connected with Mayowa on LinkedIn (he didn’t know me from anywhere, really nice guy and colleague) and told him about my application. I just wanted someone to have an eye on it from what I had learned from Ayo’s article.

I got sent a technical coding test which happened to be DSA (Data Structures & Algorithms) related. The test was scheduled to take 1 hr 45 minutes for three questions, I finished all three in 30 minutes with all test cases passing. I then proceeded to pass the remaining rounds of interviews and promised Ridwan, the CEO, in the final interview round that I would scale the platform to process 1 million transactions per second 😂 😂 😂. I didn’t end up doing that. The team at Lemfi was bursting with engineering talent and the engineers there had already figured out how to do that. I still needed to make an impact somehow so I focused my attention elsewhere and my mind went to something familiar…internal tools.

Omo Ope at Lakowe Lakes company retreat

When I joined Lemfi the internal tools we used for managing customers would typically take an awfully long time to interact with every customer and we had around half a million users at the time. At first, this wasn’t a problem but the user base at Lemfi was growing rapidly and the time started to tend towards weeks. At some point, this was not acceptable so I redesigned the system for these internal tools and we were able to cut down the time from weeks to days. While this was satisfactory for the company’s needs at the time, it was not enough for me.

While the new system worked for our use case now, I knew it was only a matter of time before the user base grew to a point that our processes would start taking weeks again, we could do far better. Secondly, the system I designed implemented concurrency at an instance level (each server instance) which I felt was not a good utilization of our resources. If we scaled to the level of say Meta, the cost to process all users in time would be ridiculous. We were using Go, this was a great opportunity for me to leverage concurrency on the CPU level and I did just that. I upgraded the system to leverage concurrency on the CPU level which multiplied the throughput of each instance by over 1000. Using the same amount of resources we had before, we could now process all our users in under an hour even though the number of users had grown exponentially.

Serendipity!

Almost two years had passed since I had had my interview with Meta. I still planned on getting to a MAANG later on but I was enjoying my work at Lemfi and I felt the job market was still a bit unstable so I refrained from applying to any MAANG. And then, in February 2024 I got reached out to by another recruiter from Meta, I was excited.

I had experimented with Go and tamed data on the scale of millions with concurrency, I wanted to see how I would do when that gets to billions. After all, why not? Why not have it all? I had tamed data in the thousands, data in the millions, and now, I have the opportunity to tame data in the billions.

Lord of The Rings

However, the road this time was not what it was before. You see, I wasn’t so keen on leaving Lemfi. I had grown fond of the internal tools I had built and optimized and the impact they had. I loved the comfort of programming in Go, and my new salary allowed me to live a very comfortable life in my country. To top that, the competition from the layoffs could be seen as I started to practice. Some Leetcode questions that had been tagged medium difficulty two years ago were now tagged easy and some that were tagged as hard were now tagged medium.

But I just couldn’t give up the opportunity to deal with systems at the scale of a billion users. Plus, I had heard about THE STOCKS! The stocks Meta offers are quite hooooooogggeeeeee. I wanted that TC 🥺. The opportunity to deal with data at such a scale and huge stocks? I wanted to be there. So despite my new set of ‘challenges’, I pulled through and got ready for my interviews.

Unlike the last time where I had two months to practice, I only had one month this time and I had a lot more responsibilities from my work so I had to be very efficient with my practice. I skipped the Leetcode 75 this time and only focused on the top 60 questions for Meta on Leetcode. I spent the entire month practicing these Leetcode questions only and then proceeded to my phone screening.

I didn’t do too well in my phone screen interview which was expected. I had rushed my practice this time and didn’t take enough time to do one-on-one practice on Pramp. I was still able to solve the questions, with a little nudge from the interviewer on the first question but my communication wasn’t top-notch. I still scaled through this stage with some feedback from the interviewer on my communication. I took note of this and worked extensively on that in the one month I had before my final round of interviews.

For my system design interviews, I read blog posts from Instagram, Facebook, and Pinterest engineering teams. I watched system design videos for popular questions and read Designing Data Intensive Applications by Martin Kleppmann. Finally, I practiced some rounds with people on Pramp.

I went through my final rounds of interviews and did really well in all rounds except my system design round. I felt I didn’t do enough justice to a particular part of the system I was designing, and I felt a bit bothered about that. I was however hopeful for my results. I took a one-week leave, because I was quite tense about what the results would be, and waited. To calm myself down, I spent those days cycling through Ale Yi by Zlatan, Bank Of America by Seyi Vibes, and Claire De Lune by Claude Debussy.

One week after my final interview the result came in, I was in!

“Overthinking is not a great approach to problem resolution. Days with better circumstances are approaching you, do not be bothered about the days you see today.”
— Zlatan Ibile

Reflection

Do I have any regrets about my decisions? Honestly, not really. The only regret I have about my path is that I wish I was paid more during my journey but money was never a top priority for me, knowledge was. My life seems like a fulfillment of the ending quote from the movie 3 Idiots. I am reminded of when my friend, Bonike, recommended the movie to me in SS2 because I reminded her of the main character, Rancho.

Pursue excellence, and success will follow, pants down!

I am really glad about my journey, the things I learned, and how they shaped me.

I remember the first time I came across this Tweet and thought being kind was just about saying please, thank you, how was your day, and talking kindly to co-workers.

Then I tried joining Tix and during my interview, I remember one question asked: “When you are stuck on a problem, how do you go about finding a solution”. My answer was “I go and google about it first, and if I can’t find a solution I can reach out to a colleague” and the engineering manager wasn’t comfortable with it. At the time I didn’t understand why but luckily for me the CTO, Shalom Ayidu, understood my answer was due to lack of experience and chose to take a chance with me. When I joined, I understood the question better and my manager’s issue with my response at the time. Tix had a great culture of kindness. You see, not everyone’s journey in tech is as smooth or organized as yours. Some people might miss some things on their journey that others had the privilege of learning. The culture of Tix was designed in such a way that no matter your background or journey, your teammates were going to be PATIENT and KIND in their response to whatever blockers you may be facing. If I had been allowed to continue with my thought process of Googling first before reaching out for help, I would run the risk of telling others to Google first before answering them instead of jumping right in and being more proactive in helping them clear their blockers. I saw being kind in a new light but I still had much to learn.

I now had this extended view of kindness being about being as kind as possible within a known bound. So based on my own experiences, I had a kind of sphere for which I was going to be patient with people about how work should be done, but when I got to Lemfi, that changed. You see, when you are in a fast-paced, high-growth environment, getting overwhelmed is inevitable. Luckily, I made good use of my one-on-ones with my manager, Semiu, and let him know how I felt. He would encourage me and tell me about his journey in tech. One time I got so overwhelmed and flat out told him I felt like quitting. He encouraged me and gave me the day off. Why was this important to me? Why did this teach me something new about kindness? You see, from the stories he had told me about his journey, I hadn’t faced up to a quarter of some of the things he had had to deal with on his journey, and yet he still went out of his way to get me whatever I needed to make sure I was comfortable to do my work at my utmost capacity.

Why is kindness important? I have worked for over 6 years and I have seen so many ways in which kindness has saved both employers and employees in interacting with each other. You never really know what people are going through. At Tix, Folayemi will say during reviews “Be kind, even in your feedback”.

Benediction

As you strive for whatever you want, to reach whatever goals you have set, be consistent, be diligent, and persevere.

This simple phrase “Keep moving forward” which I first heard at the age of nine (9) from Lewis Robinson in the movie Meet The Robinsons has been very instrumental in my pursuit of knowledge and excellence. However, I say push instead of move as that is more active. It shows the movement will not come without resistance but you must push against it nonetheless. If you fail, pick yourself up and say it — keep pushing forward. Because no matter how long the night, morning will come.

Above all else, be kind.

“In software development keep things as simple as you can. Repetition is not always bad. Some abstraction make code unreadable and hard to maintain. Remember, code is read more than it’s written. Be kind.” — Beye

[1] MAANG refers to a group of big tech companies (Meta, Apple, Amazon, Netflix & Google)
[2] LHSM is Love Him So Much
[3] Sapa is a Nigerian slang for poverty
[4] Chi is a person’s guardian angel in Igbo cosmology (Odinala)
[5] TC means Total Compensation

--

--