Written on - 07/22/2025
On July 3rd, my life changed. A little after noon, I received an email from Amazon Canada saying that I have received an offer for Software Development Engineer I. I was lying on the edge of my mattress on the floor, and upon seeing the email, I sprang and jumped ahaha.
It's a dream come true. Having recently graduated from the university, and as an international student, I needed something to maximize my chances of staying in Canada. To do that requires some Canadian experience, and this Amazon offer couldn't have come in time.
I have been applying since November last year, and things weren't looking great. Everytime I applied to a job, it felt like I was doing it just for the sake of it; deep down, I knew it was going nowhere. I was not getting past the resume screening at all; not even once to the interviewing stage. I wonder if companies even read my resume; or they were just filtering out using AI. I cannot blame them; a LinkedIn posting almost always has 100+ applicants within the first hour. Even with 1 year experience of software engineering internship, it was still not enough to clinch interviews. This tells me one thing; graduating without an internship these days is basically a suicide, at least in North America from what I have heard and seen.
Amazon was the 6th position I applied out of at least two hundred throughout my journey. In mid February, I was given an online assessment by Amazon that was going to last 4 hours, to be completed within 2 weeks. Yes, 4 hours. It consists of 1 hour of technical assessment, 2-3 hours of behavioral and workstyle assessments depending on your pace. The technical was timed, the rest were not, though the candidate was expected to finish within 3 hours which was more than enough in my opinion.
I stopped all my studies for a while. I purchased Leetcode Premium and grinded for a full two week. I also went back and forth between Amazon Leadership Principles, trying to understand them throughouly. I completed the assessment a day before the 2 week deadline. How did I feel? Meh. During the technical assessment; I finished the first question fairly quickly, which meant I had a little more than 50 minutes for the next question. After reading the question, I panicked. It was not intuitive to me, and I was struggling to come up with a solution. Instead of calming down and thinking about the solution systematically, I tried to find a pattern from different examples I wrote down. The algorithms I came up with, broke at least one example or another. It felt like I was almost there, yet I couldn't get there. So, I ended up writing a solution that only worked for some cases but not all. It was passing only 3 test cases. I wrote down some of my thoughts in comments and wrapped it up. The remaining sections were very fun though; I really liked solving workstyle problems because I felt things were more relatable. I really enjoyed solving those problems.
I thought I've lost my only chance. I waited for a few weeks; no emails about advancing to the next round. I kept seeing that Amazon replies in 2-3 weeks if they liked the candidate. The finals were also now around the corner. So, I took a break from interview preparation, and focused on wrapping up my undergraduate journey.
Months passed by. My parents arrived here in May for my graduation. While staying with them, I restarted my job preparation, trying to stay sharp. But, it was mainly Leetcode practice; nothing else much. We planned a trip to Banff, then to Toronto since I was free to accompany them. We already booked our flights all the way to Toronto including stays. Then, a few days later, boom! An unexpected email came in.
June 2nd 2025 - I had a driving test that morning. I went early for a warm-up drive with my instructor, then completed the test. I passed; I got my license which meant I can now drive around on my own. I came back to our apartment, then talking to my parents about how nerve-wrecking it was to take the test. I went back to my desk, doing my daily LeetCode practice. My uncle came around my desk, asking which platforms I used to apply, and moaning about how insane tech jobs are. The minute he left my table, boom! An unexpected email came in. Amazon wanted to interview me, and asked if I was available with a survey to fill in.
I was shocked; I thought it was gone. At that time, it had almost been 3 months since I completed my first stage assessment. Oh well, I guess I did very well in workstyle assessment, which gave me another chance. This time, there was no room for fumbling. It was going to be the final loop - 3 interviews back to back, assessing my technical and behavioral skills. The survey included dates that were 3 weeks away from the day I received the invite. Cool, 3 weeks was more than enough to get ready.
Here was the problem; I was leaving for the trip in 2 days that was going to last until 5 days before scheduled interview. I knew getting to this stage was not easy; opportunities don't come twice. I discussed with my parents that I would only come to Banff for a few days, then go back to Vancouver to focus. They agreed; we all decided to cancel our trip to Toronto.
There's also another problem; not only they were testing LeetCode, but also behavioral and low level design which I had not prepared in years. My LeetCode skills were better than the rest, but definitely not at best. There were so many things to do, and I have already lost 4 days from the trip.
I focused a lot on Leadership Principles; from my research, I saw that Amazon weighs heavily on your behavioral portion, so preparing solid stories was my priority. I created Google Sheets, mapping my stories to different principles. I also gathered top 30 behavioral questions, and try to use what I had prepared to answer them. I practiced with ChatGPT day and night, trying to get my act cool when speaking about them.
Second next priority was on Low Level Design. Now, this is the portion I had touched only once, and that was when I did my very last interview for an internship position, which they asked because they were torn between two candidates. I got rejected; at the time, I had only heard of it but never practiced. I thought I still did great, but perhaps, the other was just better. Anyways, I used Ashish's LLD repo to practice, I did about 10 problems from there with some topics I found on LeetCode subreddit for recent Amazon interviews.
For LeetCode, I focused on NeetCode 150 + as many Amazon-tagged most frequent questions as possible. I ended up reviewing 125/150 NC and 100 top tagged questions, though there are some or a lot of overlaps between the two. In my opinion, that was enough to get me ready for LeetCode style round.
June 20th - the interview day. My interview was supposed to start at 9 in the morning, however, I woke with up an email saying that the very first of 3 rounds was going to be postponed to a later date, while the other two would go ahead. Well, that was interesting, but you have to be prepared for this kind of scenario right?
My first round for that day kicked off with a bar-raiser round. Bar raiser is a specially trained employee within Amazon whose task is to find out if the candidate beats the 50% of existing workforce. They tend to be non-technical people but can be technical people as well. Since they were trained to make interviewees comfortable, I found that my interview experience with him was out of this world; in fact, it didn't even feel like an interview, but rather a conversation. I was able to come up with solid stories to his questions, and answered follow-ups in great depth. I answered all questions with completely different scenarios, which I think made me a strong candidate. We ended with a great conclusion where I asked him about how AWS solutions overlap with aviation since he worked with some aviation customers. It was a superb experience getting to know how AWS helps airlines operate.
My positive experience in previous round hyped me up for the next. I had a 30 minute break in between before the next interview. When the next one kicked in, there were now 2 interviewers; one principal and another a SDE II. We exchanged intros quickly and dove right away into the problems. This was a LeetCode round, the first was a topological sort problem. After discussing the problem statement, inputs, outputs and edge cases, I discussed my approach to the problem, which they followed up with some questions on my choice. When they agreed, I started coding the problem. About 7-8 lines away from completion, they stopped me, asked me how I would finish the problem with a few edge cases considered. Since I had already explained my approach before, I told in terms of code what I would do to implement the idea, which they seemed to agree. Because of time limit, he told they wanted to move onto next question. So, I didn't finish the question, but sort of left a good impression. I believed this was a Hire or Strong Hire.
The next problem was a classic DP problem. Because I have done this before during my algorithms class, I knew how to solve this problem. After some initial discussion, I talked about the solution, and started coding. For this, I wrapped up and came up with working solutions. With a few minutes remaining, I thought we were wrapping up, but they went on to ask how I would optimize the problem. I stumbled; I was not expecting this. So, after reviewing my code, I proposed a few approaches that could work, but I told them I was not entirely sure if they would actually make it better. We then wrapped up, and I asked a few more questions about their work. Honestly, I was 50/50 on this; despite having explained the solutions; I did not finish the first, then couldn't come up with an optimization. I would say this was Lean hire or No hire.
A few business days later, my first round got rescheduled. Because I knew which round was now left, I focused on preparing solely for it, but there was no guarantee it was going to be Low Level Design. It could have been any one of LC, Behavioural or LLD. I prepared for all anyway.
On the interview day, there was only one interviewer. He was an experienced SDE and we quickly introduced each other. First, we dove into behavioral portion. This time, I felt the interviewer dug even deeper than the bar raiser. For every story, he would have some really good questions on my design/decision choices. He seemed to be very curious about my RomanizedMM project and asked if I was a Burmese. When I said yes, he told he had tried "Laphek Thote" before and like it very much. Well well, I was vibing well with him.
Then, we moved onto LLD portion. Although I had prepared various topics, this was nothing like the ones I had prepared. He gave me a list of requirements, and I talked about functional/non-functional requirements. Then, onto defining entities and listing draft classes. When I was about to code, I only had about 15 minutes left. I asked the interviewer if I should focus on core functionalities or work through step by step from scratch; which he preferred the latter. So, I ended up with a design which was yet to include some core functions. I made sure to explain how I would wrap up my design, and optimize it later so things can run in O(1) time. He seemed to be impressed, so I guess it wasn't that bad, but this round was did not exceed my expectations. I felt this was either Lean Hire (based on LPs) or Lean No Hire (based on LLD).
Now, onto waiting. Amazon had already stated that they would reach back within 5 days. Every day, I would wake up to check my emails and see if they had already replied to me. During the day, I would do the same. Many people say that if they take longer, there is more chance of getting the offer since they have to prepare offer letters and necessary documents. However, some say this is a myth where people get rejected even on the 5th day. It was a mix.
July 3rd - exactly 5 business days after my last interview. My parents were supposed to fly back to Myanmar on July 4th early morning. I helped them moved things from my brother's house to my house since I'm closer to the airport. After having lunch, we were just sitting in my room talking. I was lying on the edge of my mattress on the floor when the email from Amazon arrived - "Congratulations. You have received an offer for Software Development Engineer I". I sprang and jumped. I told my parents I got the job.
They were so happy. The sacrifice we made paid off. I was so ecstatic, I was shaking. It took me a while to cool down.
We went to the nearby mall after to have dinner later. Honestly, I was so excited I couldn't even eat. My parents could barely either. I don't really know how to explain the feeling; it's just so unreal.
Later that night, I left for the airport to drop my parents. I wished they had booked the stay a little longer so we could now go to Toronto freely. But, it was too late. I told them I will get them there the next time they come to Canada. What's more important is that I promised I would fly them in business class for their next trip. I would love to see them enjoy business class; it has always been one of my life goals. For now, it's time for me to work hard to achieve that goal.
I have had so many things that I daydreamed about if I got this job. Now that this has come true, I am planning to do a few of these in the near future. First, I am donating 1-3% of my monthly salary to different organizations I have always wanted to donate. When I was back home in Myanmar, it always ached me to see children on the streets selling flowers. I am fortunate enough to have been born in a wealthy family, but my sympathy still goes to them. I like to put myself in someone else's shoes and think from their perspective. Their lives must be difficult. Instead of being in school, they were on the streets for various reasons. I've found that charities like Sonne International Org actively educate young children like these until they finish high school which can pave way for a better future. I am a firm believer that the future of the country depends on the youth, and we need more disciplined educated youths to have a better nation.
Another org is cat/dog shelters. These animals were brought into this world with an unfortunate fate. There was nothing they could do about it to escape from this fate. Many shelters struggle to feed these poor souls due to lack of funds. There are plenty of these, and I am researching to find out and fill the gaps where help is needed.
Unfortunately, I am trying to tackle so called "immediate problems". Since taking FNH 355 at UBC, I start to see problems according to UNICEF's framework which consists of 3 different layers - "basic", "underlying" and "immediate".
Donating money is simply solving an "immediate problem" - it is directly linked to the actual problem. But, deep down, there are underlying and basic problems that this immediate problem stems from - the basic being "economy". The country had never had a good economy before, and when it was on the rehab phase, it got chopped again. While my efforts can help tackle in short term, this is not sustainable in the future.
This is why I look up to Bill Gates. After reading about him and his efforts in assisting/recovering basic human rights, I have nothing but admiration for him. Many people hate wealthy people - something I will never understand. Maybe he may have had a few bad apples in the past, but his efforts show he truly has passion for what he does. I ought to try to follow the same path in the future.