How to get placed in FAANG companies?
Published: 2020-10-02 09:48:23

<strong>Hello Reader, This article is completely about how to get placed in FAANG companies.</strong>

### What are FAANG companies you ask?
You’ve already heard about them. Those are Facebook, Apple, Amazon, Netflix and Google.

### Why do you/anyone want to work in these companies?
* There are many reasons, but I'll list only a few. 
* Good Paycheck
* Better work culture
* A lot of perks
* Best of all is they’ve got bigger challenges to solve.

### What do these companies seek?
They need people who are good at problem-solving.

### What do they mean by problem-solving? Is it a math problem? Or a DS/Algo problem? 

Problem is something which makes people’s lives harder.
One problem faced by a company like Google is handling huge traffic. The solution to this problem is not like any road with directions but rather it is a dense forest. You are lost in it. 

### How to get ready to solve these problems?
I will be discussing a roadmap so that you don’t get lost in the dense forest but rather escape it with the instincts you’ll develop.

### The Roadmap will help you to land in a job as an Engineer in these companies.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ugruyfh4aaxjr45p8wp8.png)

The roadmap consists of 5 major parts. Let’s explore them one-by-one.

### Learn a Programming Language: 
* Let’s make it clear. HTML is not a programming language.
* Choose your programming language foreseeing the future. By future what I mean is the next steps of the roadmap.
* If you think that learning a language like C and want to do development and also participate in competitive coding is not right.
* What you should look for in a programming language is the community support it has, Ease of learning and implementing the language,  Range of scenarios where we could use this language.
* If you want to develop Android Applications, then learning Kotlin is best. Kotlin can also be used for competitive coding. Kotlin is officially supported by Google. Kotlin is a rising programming language. Kotlin is interoperable with Java and also covers most of the issues with Java. Kotlin can also be used for backend development.
* If you want to develop machine learning applications, then learning Python should be great. Python is an interpreting language. Hence it is slow, making it less trustworthy to be used in competitive programming. But because of its easy syntax, it has got huge community support. Python can be used in various scenarios like Backend development, Machine Learning etc.  “ I’ve personally used python for development and competitive coding. “
* If you want to develop web frontend applications, then learning javascript makes sense.
* Choosing a language is completely your choice.
* <strong> NOTE: I’m asking you to select one language so that you don’t waste your time when you actually decide what to develop and try switching languages. Also, Once you learn a language, switching between languages is a matter of a week.  (Unless it’s java. One of the hardest languages as per my opinion)<strong>
There are many other rising and dying languages. Explore them on your own and select one.

### Learn DS/Algo/Math and Do Competitive Coding:
* This is the game-changer. If you excel in this section, You can excel in every other section and as per the experts, the only way to excel is by PRACTICE, PRACTICE, PRACTICE. I repeat, PRACTICE.
* People who start learning would always fall in a doubt like whether to learn all concepts and start practising them later or to learn and practice concept after concept.
* Just start practicing. I myself have an approach to practising. But before discussing it, Let me first list a few awesome platforms where you could practice as well as learn.
    * Hackerrank (Great Resource for beginners)
    * Leetcode (Best for Interview preparation)
    * SPOJ (Great Set of Questions)
    * CodeChef (Good for practising and Competitions)
    * Codeforces (Best for practising and Competitions)
    * HackerEarth CodeMonk(Good for Learning)
    * cp-algorithms (Awesome for learning Advanced Concepts)
    * Algoshots(Great for getting prepared for competitions.)
    * Youtube
    * GeeksforGeeks
    * Google Search
* Now the approach for learning is:
   * Use HackerEarth CodeMonk to learn the concepts. If you don’t understand the explanation for any topic provided there, don’t hesitate to google and find other learning sources. We are using Codemonk so that you’ll get to know the list of important topics and the order in which you’ve to learn them. Try to solve the practice questions. Solving 50% problems from every topic is good.
   * By this point you’re good with basics. But to test your actual problem solving skills you’ve to participate in a competition. Competition has time constraints just like an interview. You’ve to crack the solution within the provided time. Participate in LeetCode Weekly, LeetCode Biweekly, Codeforces and CodeChef rated contests. Participating in rated contests helps you in identifying your growth. Look at  the editorials for the problems you were unable to solve post contest.
   * <strong> NOTE: One thing you shouldn’t do is practice easy problems. Always try solving harder problems. You can use Algoshots for some good set of problems with increasing difficulty.</strong>
   * If you feel uncomfortable in any specific topic. Try to solve more of that topic.
   * Since you’ll be participating in many platforms at once. It may be pretty hard to keep track of every single one. Use StopStalk. This improves your productivity a lot.
   * Try participating in well-recognized competitions like Google Kickstart, Google HashCode, Google CodeJam, Facebook Hackercup, ACM-ICPC, etc.
   * Once you reach Expert level in CodeForces or 5 Stars in Codechef, you can move to the next stage.

### <Strong>Learn CS Core Subjects:</Strong>
* Focus on DBMS, Operating Systems, Computer Networking.
* You can choose books/video lectures based on your interest.
* There are many resources from where you could learn.
   * NPTEL
   * MIT OPENCOURSEWARE
   * YOUTUBE
   * COURSERA
   * UDEMY
   * UDACITY

### Develop Applications:
* Think of Application to build. It's not mandatory to be unique. You can mimic other apps which are already available in the market.
* Make a team and develop a fully working application.
* Make sure your application is modular, Easily debuggable and scalable.
* Deploy the Application.
* Get the Usage Analytics of your application.

### Prepare Resume:
Watch the video.