A short story about an average person trying to join a mythologic company
Hi! That is my first text on Medium… and I do not think that existing a better way to start writing here then telling one of the most amazing plot twists of my life. And of course, also answering the question that some people has been asking me to… How had I ended up at Microsoft?
Well… I‘m guessing that’s important to say before… I had always been a fan of the story about how these two guys (Bill Gates and Paul Allen) created the Altair Basic. Since then Microsoft had led a lot of techs revolutions. I personally join the party at 1993 with an IBM 486 running a Windows 3.11. Yep, I can remember very well my first 2 weeks just playing in the double-click and drag tutorial that move and transforms some geometric forms and colors. From there to play games, need more memory and learning to use DOS to free this memory… it was just a matter of time.
From there and after Visual Studio has become my bestie for most of my projects. And because of it and Windows, while my university friends tried to convert me to the Linux/Unix cult, I had always been on Microsoft team. They decided to do things in Java? C# was my obvious choice. But even after graduated I had never thought to work on Microsoft. You see? When you live with something for so long you kind of get used to it in a way that… it’s just… there. Naturally.
August 15th, 2020 — LinkedIn
At that time, I was working on a Brazilian game studio. Life was good, after working 3 and half year with a huge and complex backend system I was learning a lot about the Mobile Market, Data Engineering, and that kind of thing. Things were calm when my LinkedIn decided to notice me about a job opportunity. And that it was. Microsoft. Hiring. I feel the emotion run from my guts. How I never ever considered that before?! It was so perfectly obvious. It is so natural dream… that it never crossed my mind before. I’m really not sure how to explain that… But Microsoft for me was kind of a legend, a myth. It was there, somewhere… But untouchable. Not that I considered impossible to join them, I just not considered at all… maybe due my relationship with it since childhood, I don’t know. What I do know is that took me 5 seconds to decide. I had to join Microsoft.
At that night I subscribe myself to the job position. I wrote the best answers that I could, crossed my fingers and sent.
August 21st, 2020 — First E-mail/Interview
Not so long I received an e-mail from one of Microsoft Recruiter. It was asking me to schedule a meeting with Cortana so we can talk a little. For those who already know how it works… That is the first step, the phone interview. We schedule for almost a week after the e-mail (August 27th).
It could be earlier. Yes. But when I read the e-mail, I compromise myself to do my best to keep my decision to join Microsoft. And I had already searched about how the entire process would be. And although I had some experience programming… I was not a genius on Algorithms. I had to have some time to study for the White Board. I know that some of you, reading this, may be judging me. I had not done the phone interview yet. Even if I pass it, I had not done the exercises/test yet. And only after these 2 phases, if I pass both… it will arrive the White Board phase. But if I start to study only after the 2 phases… The time would be too short.
So, I took the risk. For the first phone interview I divided my free time (remember that I was still working in the game studio 8 hours per day) between study algorithms and learning about Microsoft Cultures, values, story. What kinds of changes that Satya Nadella did? The cultural change was huge, and for sure it will reflect in the interviews. Due covid-19 quarantine, I was working from home, which gives me some extra time since I don’t need to dislocate myself, I could just change windows at the end of my professional day.
During the phone interview with the recruiter things went well. The study about Microsoft’s values and culture pay off, I got some questions, ask a couple of them too and the time flew away. When the interview was over I was confident that I would pass to the next phase. A good sign for that is that the interview went really natural, like a real conversation. That is usually means that you are answering everything, not forcing nothing and the interviewer are getting everything he/she wants.
September 1st, 2020 — E-mail and OTS tests
On September 1st I had received the e-mails with the link for the site that will happen the second phase of the process. The first technical test. Once more I decided to take it in the last minute to get most time possible to study for it. And how did I study?
Well… To study algorithms is not easy. You see, you can study things like Data Structs and it will help (a lot… actually, it’s really necessary) with algorithms. But study algorithm is not something that you can just read about. You have a huge amount of exercises and variations of them that can be asked. More than that, you also can’t just start to do a bunch of exercises to train.
Chances are that you will probably solve anything that appears fast. But is your answer “the best” one? When we talk about programming, we have (most of the time) many kind of solutions for the same problem. How to measure if your solution is the best solution?
To pass this kind of interview or test you will probably need to know 3 main topics:
· Data Structs (Linked Lists, Hash Tables, Binary trees, Graphs, etc…)
· Complexity (BigO notation) on time and space.
The first two are a matter of reading and understanding each of them. The last one is a matter of practice, practice and practice. But not only. You will also need to see some answers/examples. If you know how to calculate the space-time complexity of your solution you will, most of the times, find a good/optimized solution. But some times you will need some tricks to drop even the O(n) to O(1). And believe me, exists hard tricks for some of the problems. Tricks that once you learn you can reuse in other problems but that are too hard to come up with during a 45min resolution. The best way that I find to study:
1. Read the question, take notes. You can expend some minutes, it will worth your time.
2. Don’t rush to code. Take a blank paper. DRAW the problem. Draw the arrays, draw arrow to use as pointers. Emulate your solution with pen, arrows and fingers. Think about edge cases and take note of them… it will be really easier to see them while drawing… and easy/fast to remake the entire solution if needed also.
3. Look to the algorithm that you just draw. Find the loop and start to sketch this loop in pseudo code while on the drawing. Test 3 rounds (first, middle and last one) to check if the loop works.
4. Code it. At that point you already know what to code and how to code. It will be fast, believe me, that hard part had already gone.
5. Test your code for the example given.
6. Test your code for your own example.
7. Test your code for the edges cases that you find on step 2.
8. Check for the space-time complexity. If it’s not linear, think if it’s possible to improve it. Really, take some time thinking, you are studying. Train your brain, it will get easier and natural with time.
9. NOW that you have your own solution… Look for the answer/best solution/discussions. Even if the complexity is the same, it worth take a look and understand another solution… sometimes you learn a simpler way =)
Some of you may be thinking that step 2 and step 3 are just useless. Of course, we as developers could code without the draw, we can write some comments to organize our thoughts and everything. And you are mostly right. But let me tell you one secret… You are training/studying for the interview. During the interview it is EXTREMELY important that you communicate EVERY SINGLE thought to the interviewer. When you draw… you will NATURALLY do that, even without speaking. So… train it. It will worth the time.
And what about the item 9? How to get other solutions? Well… some sites as algoexpert.io and leetcode.com have some paid plans with the solution and, in the former, some video explanations of the problems. But even in the free sites you can check the discussions, community are really good sharing excellent answers and sometimes the answers replace the “official” answer when they are good enough.
Due some contracts, I can’t talk about the exercises itself. But the OTS wasn’t HARD. It has 2 or 3 Easy/Medium questions and enough time to complete and review them (usually 1 hour and 15 min).
You will receive all the instructions by e-mail. I plan to took mine on September 3rd, yes, the latest day. I went to sleep early on the previous night. I woke up 2h before my plan to start the test. Took a good bath, eat a good breakfast… and when it was left 1h to start the test I did one easy exercise. That was important to warm your brain, get in the mood. And the fact that it was an easy exercise it also boost the confidence =) Also I took some chocolate bars, Red Bulls and pizza. You know… developer food. Just in case.
When I finish my tests I sent an e-mail to the recruiter to inform him. As you will see I was luck enough that my process took “only” 6 ~ 7weeks. It may took longer. Your recruiter will be with you along all the process, so it’s really important to keep him on the loop, not just to ask things to him, but also to inform him about the process. You will work as a team.
September 1st, 2020 — Preparation for the White Board
It took a while to receive the feedback this time. I was not that confident this time, I knew that I had solved the questions… But was that the “best” solution? Do other candidates perform better?
So… when my recruiter calls me to schedule the “On Site Interviews” or White Board Interview (that would happen online due Covid-19) I became really happy. He could feel and give me some good advices and cheer me up for the interviews. Once more… you and your recruiter will be a team. You will be working together for the entire process, he/she wants you to success, believe me.
And so, we schedule it for September 17th. This date became marked on fire inside my brain. I think I had never ever studied/worked as much as studied in this time. I was already studying… but after this schedule, everything become really real, really fast.
I was having lunch and dinner on my desk. I was using all time that I could find to do more and more exercises. In those 16 days I did around 80 exercises from different subjects (Dynamic Programming, Binary Trees, BST, Heaps, Graphs, Regressions, Recursions, Strings, Arrays, Queues/Stacks, list goes on and on) from medium and hard difficulty. Every single one following the 9 steps that I wrote before, saving each solution in a folder to consult after that.
Also, I searched for common asked questions like “Why Microsoft?”, “Tell me about a project that…”, etc… And prepare some sketches to have a “prepared” answer to that questions without need to think a lot about it. Also, trained the STARS (Situation, Task, Activity, Result and Self-Awareness) struct to answer these questions. Of course, you can answer this kind of question during the interview… But think with me… How long you will take to find a good example, fit it on STARS struct and, only after that, answer the question? If you reduce the time for your answer already having a list of pre-trained projects/examples… you will expend less time answering each question, which will allow the interview to do more questions and know you better. It’s a win-win situation. You will have, most of the time, the best examples and the interview will know you even better.
But well… after eat a lot of junk food, almost leaving my chair/PC just to sleep (and only 5hours per night) … the day 16th has arrived. It was the last day before the test and I knew that I had to do it differently.
I eat well… You know, I had a salad for lunch, eat pasta for dinner. I don’t did any “new” exercise. I did just 4 exercises that I had previously solved and marked as “interesting”. All 4… mediums.
I also read some of my pre-answered questions. Most of them… wasn’t been asked. But the examples that I found for some of them I could use to answer others that I didn’t predict. So… totally worth it.
The point is that on the 16th I just relax and take my time. I did the 4 exercises just to keep me warm, choose one of this 4 to “warm up” in the next day and that’s it. Just watch some good old Friends.
September 17th, 2020 — White Board Interview
“Show time”. That’s the first thing that crossed my mind when I woke up. Once more I woke up 2h prior the interviews. Took a bath, eat a “breakfast” (well, not really since here on Brazil it was 3pm). Then I did the “warm up” exercise once more and sat quiet on my chair. Well… this time, it won’t be just 1h15 coding alone. It will be a complete 3 to 4 rounds of interviews 45min each, 15 min between them. It would be not a complete marathon of coding and pressure. I though. Then… the first interview finally began.
It’s funny to say. I was so afraid before the interview… but it took me 5 minutes to completely forgot where I was. Microsoft interviewers are terrific partners on coding solutions. Of course, I feel all the pressure of the interview… but at the same time… I enjoyed a lot. It was fun to work with them through the solutions.
I think that’s important to stop here for a moment and give a little piece of advice. People usually goes to white board thinking only about the technical part, the problem solving and everything. I did that too. But during the interview, what I feel is a completely different thing. Of course, it’s important to solve the problem. But remember… if you pass the interview… That people that are working with you… will actually… work with you! So… it’s also important that you work well together, that you enjoy working together! That you have fun trying to solve the challenges together. Think from the other side… would you hire someone that you not feel comfortable work with? That’s probably the major lesson that I took from this process. The White Board is a technical interview in it’s essence, but not only. It’s also the best (if not only) chance that you and the interview have to bound and test how nice is to work with each other. I really enjoyed every single minute of the interviews and if I want to join Microsoft before… Well… I would be very, very sad if I couldn’t work with those guys again.
That being said, it won’t surprise you anymore when I said that time flew away during my first interview. In the end I just want to continue discussing the problem and other things, but time’s up…
When we disconnect all the adrenaline went down and I remembered that I just had my first interview. I didn’t know if I was good enough to pass, but the fact that I had a lot of fun doing that and that I reach a good solutions was good indications of it. So… my brain just start to repeat to me… “ok, you got the first one, don’t mess with the second…” and then I discovered… I was thinking that interview would be hard. Well… Actually the 15min intervals was the worst part. If you think… 15min is not that amount of time, but it felt like eternity. So, I just decided to set an alarm, turn off the lights, close my eyes and do some meditation/concentration between the interviews. If it works? We will never know. But the fact is the time passed and the second interview starts.
The remaining interviews and interval went exactly the first one. 5 min of pure anxiety and when the problem was written down, just fun. I was really enjoying working with those guys and I was hoping that they are feeling the same.
At the end of the last interview I was completely exhausted. Yes, it was fun. But my brain was on fire, the adrenaline flowing thought my body was really intense, I could feel ever inch of it. I remember to try to watch some movie, but I just couldn’t focus on it. So, I just give up. I was barely sleeping during the past few weeks, so it wasn’t hard to sleep again. Nut just before, I had sent an email to my recruiter telling him that the interviews finished and asking him if he knows when I would have a feedback. For my surprise, he answered right in the next day.
September 18th, 2020 — The Uncertain Period
The email is telling that I did well on the interviews. I just couldn’t believe. That’s it! Everything went fine! I’m on the right way!
But you know… when you want something so hard, you need to take care to not cheer up before you actually got it. And because of that, my brain starts to play tricks on me. “Ok, he did you went well… But maybe other candidates did even better”. Don’t do that to yourself. Trust in your recruiter’s words. He’s not playing with you. If he told you that you went well… I’m 100% sure that… you went well. And my kind recruiter… if you are reading this… SO SORRY for all emails asking for updates, LOL.
It took really a while (11 days) until the process starts the next phase. It feels like an entire year for me. Once more, don’t do this to yourself, it’s really bad. But I’m not the brightest guy on earth, specially when talking about anxiety. So I was walking with my phone all the time, checking emails every 5 minutes and so on… (No, I’m not exaggerating, lol).
Next step was kinda a “pre-onboarding” process. It’s a background check. It take a while, but you actually don’t need to do nothing but be patient. Supply all information that you can, phone numbers, addresses and everything. As good is the information that you supply, as fast they will finish the screening.
Also, even after the 3rd party company finishes your report and you see that they had finished… remember that Microsoft also need to check and approve it. So… it also take a while… Specially because… remember that I told you that you and your recruiter will work as a team? Mine was doing exactly that, he already answered me a couple of times, even call me once to tell about the screening process. But… did I told you guys that I’m not that patient?
October 5th, 2020 — The Day
It was the beginning of the 3rd week after the White Board. It’s not much, I know. But I was about to explode. And life wasn’t helping. I’m from Brazil… So, it’s not actually common for to receive USA calls. So, when my phone rang from a Florida number… my heart almost stops! I answered it in a flash knowing that was the call that I’m waiting for!!!! And… it was someone from AWS offering me new services now that they are expanding their services on Brazil… I can’t start to describe my disappointment… LOL.
It was a bummer… I was waiting for 2 weeks already without knowing if something went wrong (actually… I knew. But for some reason I couldn’t believe that everything was fine until a final confirmation). And then, all the adrenaline explodes with that call… that gives me nothing.
I went to the kitchen to make myself a tea and try to relax a little. And guys… it’s like seeing boiling water. It never boils when you are looking to it. While the water was heating my phone rang again. Once more from Florida. I didn’t get to excited this time, actually I was pretty sure that it will be AWS again.
But I almost completely lost my voice when I hear my recruiter on the other side of the line. “The time has finally come…” he started. I could even say any words.
Writing this makes me realize that only 1 month and 20 days passed during the process. It felt like 2 or 3 months due my emotional load with the possibility to work at Microsoft. My recruiter starts to tell me all details of the contract… I was doing my best to pay attention, but I wasn’t believing, I just wanted to scream and run through the house. I didn’t hear any numbers, I expend all my attention to the things that I would need to do like sign the documents. All I could think of is about how much I would learn, how much new techs I would see, how many people I would empower with those techs and learnings… It was to perfect, to dreamy.
Today… I’m just counting the days for my first day at Microsoft on Nov 3rd. I’m enjoying every “boring” e-mail about documentation, rules and everything. Every single experience is a drop of happiness and I can’t wait to start!
Ow! And about the tea that I was making when my recruiter calls… I forgot the water, the water drained out and I had almost loose the teapot. Everyone survived.