Over the past months, many colleagues and friends have asked about my preparation, interviewing experience, and how my life has changed since I joined Amazon as a Software Development Engineer, working on the Alexa iOS application.
Although I don't want to bore you with irrelevant anecdotes and stories, it's still important for the bigger picture to understand who I am, my background, and how I ended up in the FAANG interview process.
Just like many reading this article, I don't come from a traditional computer science educational background. I spent all of my twenties in the restaurant and nightclub industry, navigating a relatively successful decade as a club DJ.
That life, for many obvious and non-obvious reasons, was not sustainable. Working in night clubs six nights per week really takes a toll on one's wellness, fitness, and ultimately, happiness.
Driven by the mainstream success of mobile applications like Snapchat and Uber, I decided to end my career as a DJ. I began to attend college remotely and was able to get a position as a QE intern at a software company in Munich. There, I developed Selenium UI automation tests in Java.
Although I started my studies in the field of business informatics, I never attended a class or submitted any assignments. I had wanted to learn how to code, yet most of the study material seemed ancient.
The theoretical material wasn't interesting to me, nor was it guiding me towards my goal: Learning how to develop iPhone applications.
It was then that I choose to pursue an alternative route. I quit both the college program and the job, and instead watched countless Udemy tutorials and started freelancing as an iOS engineer. I began learning by doing...
With all the information and resources available, and the vast amount of entrepreneurs looking for mobile application engineers, it was actually quite simple to find freelancing clients.
The soft skills and business skills I acquired during my DJ career helped me to sell myself, even when I knew I wasn't very qualified. What mattered was that I believed in my ability to just figure things out.
After a handful of successful projects, I was introduced to a client looking for an engineer for a building inspections application. Over the next three years I developed an award winning SaaS platform with cross platform applications, whole cloud infrastructures, and all kinds of web applications and services.
The skills I developed during that time drastically increased my versatility as an engineer.
- iOS - I've had exposure to many Apple frameworks. From Animation over Bluetooth and external CPUs, to Unit and UI testing, and all the way to popular third party frameworks, and even Release Management.
- Firebase - TypeScript and understanding the concept of realtime databases and observers, CRON and Cloud Schedulers–Knowledge that logically transpires well to AWS.
- Ionic - Angular for cross-platform application development and custom native libraries. A lot of exposure to scalable Angular usage, especially in regards to custom npm packages for code sharing purposes.
- PDF Engine - domPDF and twig using PHP and HTML with CSS styling. The most valuable experience was not being able to use floating and bootstrap. This forced me to learn and understand more about HTML, especially nested tables.
- Database and API development - Over the years I've had widespread exposure to real time databases, Firebase's Firestore, SQL and all kinds of API protocols.
- Leadership - It's important to understand, especially with the desire to join FAANG, how crucial leadership skills are. This includes both soft skills as well as business skills. I've managed hires and freelancers as well as customers and stakeholders.
Like many startups and small businesses, ours was a victim of COVID19. Although the project is still alive and maintained, I was forced to leave the day to day business for financial reasons, as investors fled when the market tanked in March 2020.
My friend Carola Nitz, who I've worked with in the past to revamp the Voice Pitch Analyzer application, encouraged me to interview for Netflix and ultimately other big tech companies in the Bay Area.
Credit goes to her for introducing me to the concept of the tech interview and handing me the most important resource: "Cracking the Coding Interview"
Although I wasn't limited in my skills to iOS anymore, I was completely new to the concept of tech interviews. I would have never thought that I would need that much preparation, and that I was lacking that much knowledge.
I took the following weeks to study LeetCode. Full time. 8 hours a day. 7 days a week. I concentrated entirely on the LeetCode Premium FAANG questions.
I'm not even pretending that any of this was or is fun. It's a nerve wrecking experience, fueled with anxiety, imposter syndrome, and occasional happy moments followed by a repeat of terrible emotions.
Four weeks into my LeetCode and interview preparation journey, I was contacted by an Amazon recruiter. After an extremely pleasant phone conversation, I was forwarded more preparation materials and a link to an online assessment, with a 7-day deadline.
My plan was to use the whole week to study as many Amazon questions as possible, and then to get it over with.
Interestingly, the online assessment questions were very similar to questions I saw on LeetCode. I put in the extra effort to structure my code, as I would for any given production scenario. I used
public functions and attribute declarations, and more than enough code documentation to illustrate that I know what I'm doing.
Only minutes after sending the assessment for review, I was invited to the 4-hour on-site interview with an additional two weeks to prepare. While I used the first week for premium Amazon LeetCode challenges, I used the second week as follows:
- Morning: 4 hours of Amazon LeetCode challenges
- Gym: 1 hour of System Design stuff on YouTube. I didn't need much more, as I'd already spent most of my free time over the years to study on best practices regarding System and Object Design. That topic is my home run.
- Afternoon: 2 hours of Amazon LeetCode challenges
- Night: 1 hour of studying up on and understanding the Amazon Leadership Principles, while also extensively preparing stories of my own, as well as questions for the interviewers.
The interview itself went very smooth. I was asked two questions related to Object Design, one question was an algorithm problem related to Binary Search Trees, and lastly, the obligatory System Design interview.
Although I totally bombed the Binary Search Tree question, I felt that every single interviewer was very friendly and outgoing and therefore I felt very good about my performance.
I was able to have extensive stories and conversations due to my Leadership Principles preparation and I personally felt that asking the right questions helped me to showcase my experience and seniority, and also gave the interviewers an outlet to talk and have fun–not just to work and listen.
Shortly after the interview I received the good news and received the offer letter.
Today at Amazon, I'm proud to be referred to as an iOS subject matter expert. Every day I'm trying to raise the bar. I'm working on automation scripting and tools to support colleagues and partner teams, as well as working on many iOS related milestones within the Alexa organization.
I'm very fortunate to have a manager who works relentlessly with me on my promotion material for the next steps of my career.
- Everyone's path is different. What worked for me, does not need to work for you and vice versa.
- Most of my success stems from me putting in the hours of building stuff, solving problems, learning and most importantly, watching talks, reading books and articles.
- Cultivate your LinkedIn profile, keep it up to date and be professional. Try to avoid posting spam or "please follow me" kind of content. Provide value in the form of articles, videos, or even just hints, and people will want to follow.
- Study LeetCode. Although as an iOS engineer it's questionable how often you'll ever see a BST or a Trie, you will need to learn and understand those concepts and issues if you want to succeed in any tech interview.
- Prepare for the company. Amazon especially has a very different kind of culture. The Leadership Principles are something you will hear about almost every single day. They are important. You need to understand them so that you can give good answers to interviewing questions that start like: "Tell me about a time..."
- Prepare good questions. I'd argue that half of my interview was won because I asked the right questions, like "What would you change in your team if you could?" or "What bothers you the most working for Amazon?". Those kind of questions not only open a dialogue, but they also provide the opportunity for the interviewer to vent a little. That's a good feeling. You want to leave your interviewer feeling good...
- Don't give up. I know it's not easy... but when a DJ from Germany who learned coding on YouTube can do it, so can you.
Special thanks in this article go to my friend and first mentor Mehdi Foudhaili, to Mark Popkowski who helped me to shape myself as an engineer through trust and drive, and to my loyal followers and friends who invest their time into reading my articles, and lastly to my wife, who supported me throughout all this craziness.