Disclaimer: this post is all about my personal experience, only representing my point of view, take it with a grain of salt.
About three years ago, I was graduating from college with a CS degree. Dreaming of going to U.S. to study, I gave up the opportunity of attending graduate program without entrance exam at my school. Unfortunately, I wasn't able to get into any U.S schools. Not only didn't I prepare for job interviews, I also missed all on-campus hiring event as well as new grad hiring time window of most companies.
At the point, I was fresh out of the college and jobless, possibly the most painful time of my life. I made some changes to my plan and tried to take an exam to get in another graduate school at my country because there's a pandemic going on and studying abroad seems impossible. Somehow I failed the exam. I was hopeless and desperately trying my best to find a job to get by.
Once I got the hang of it. I began creating side projects on GitHub. At first the projects are pretty simple: a REST api with jwt authentication and authorization, a single page made from react or vue, or a CMS with some CRUD functions. I was never satisfied with my work and always trying to explore and improve. I began learning typescript, learning advanced react usage, learning graphQL. I was also writing my learnings down as I progress. My most popular blog post had more than 10k views and is still at the first page of
migrate to typescriptgoogle search result to this day. My toy react hook library also have thousands of download per week. Like all the developers, I'm also obsessed with creating my own blogging system. From markdown engine to database design, I was in from every aspect of my blogging system. My blog have gone through three major version change, reflecting my skill up. Going from
ASP.NET Core+ JQuery + Bootstrapto
ASP.NET Core + React + Component Libraryto
Node.js + React + components written myself. Looking at my blog now, I can say that it came a long way.
Having a lot of side projects is not you gold ticket to FAANG though, There's also leetcode grind like everyone else. The only difference might be when I was practicing problems, I will first try to understand the mechanism of this type of problems, then I take the problem to strengthen my impression.
Then these are the interviews. There's 6 rounds of technical interviews for me and some of them might even in 1AM due to timezone differences. I would talk about projects at my previous companies first and solve some leetcode problems later. Not being able to find the optimal solution is fine, you have to at least provide a promising solution.
After what feels like a century, I finally got the offer from Microsoft. To be honest, I didn't believe I would got into Microsoft at all and would never dream of getting into FAANG three years ago. Using GitHub, npm, typescript and vscode almost everyday, I'm quite impressed by the products that Microsoft was building. I'm really looking forward to take on new challenges at Microsoft.