Roadmap for becoming Software Engineer in faang
Are you dreaming for becoming web designer in faang and get compensated 6-figures pay to work in a major tech organizations like Google, Amazon and Uber ?
These fantasies and numbers are feasible, and I have coached various people to become computer programmers. To do this, you should follow to the appropriate web advancement guide.
Which Companies are known as faang Companies?
I think in this world, there is no person who didn’t hear one of the faang companies. So what is special in faang companies that everyone wants to work in these companies?
Why did anyone/you want to work in these companies?
1. Work-life balance
As per the employees of these companies, they all have a balanced work-life. However, work-life balance is one the most important reasons why IT professionals love to join faang companies.
2. Flexible hours
Flexible work hours are one of the major reasons why employees want to join faang. They all know that IT Professionals are not Robots but they are human beings who want mental peace for more productivity.
You get a chance to work with World’s top Minds and can create your network with them which is very important in the Corporate World.
4. Development and training
You get the Best Training from Best Teachers in these companies for better Productivity.
This is one of the main reasons for candidates for Joining faang Companies. But there is a catch in their CTC vs in-hand Salary which we will discuss in future blogs.
We all know that coin has two sides, so if we get so many perks then We also have to face a lot of competition for getting an offer from these companies.
What do these faang companies seek in a candidate?
Faang companies need those who are good at problem-solving with the best solution and if they find that person then they can provide a lot of Perks to him for attracting that candidate to their companies.
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.
And these companies want those who can Solve these harder problems and can create optimized solutions so that they can grow their revenues and impact billions of people’s life on earth.
Now you all want to know how we can improve our problem-Solving Skills so that we can get an offer letter from faang Companies.
So Now We will discuss a Roadmap of how you improve your problem-solving skills and join faang.
These three things are most important to do well in any field:
- Hard Work
- Right Direction
This roadmap will help you provide the right direction but you need to put in hard work consistently to achieve what you want to.
We will try to become good at everything within 1 year with a consistent effort of around 2.5 hours/day. After that, we will try to become experts in at least one field. If you want, you can adjust the daily time commitment based on your preference.
If you follow this well then irrespective of your college and your branch, you will be able to get a job in any company that you want.
Learn to code from basics
First of all you have to select one language and then learn it’s syntax and basics like input, output, variables and data types, operators, decision making, loops, arrays, strings, and functions. Then You can learn about classes and objects (including constructor), encapsulation (including public and private access specifiers, this pointer and getters and setters), and the static keyword. You do not need to learn any other OOP concept at this stage.
Not fall in traps of others that this language is easy and other is difficult because in faang you have to work in different languages and if you master one language then you can learn other language in one week.
You can Practice basic Questions of that Language on Geekforgeeks or on Leetcode which is recommended by industry experts.
We Recommended you first you can learn c and then You can go for c++ then for java. C will help you in building Strong Foundation in programming otherwise you can choose other Path which is Confortable for you
Googling is Your best Friend
One of the most important Skill in Programming. Every Enginner Recommends you that Google this Problem and You will get best solution and this is true. Because many programmers already face that problem which you will face now. So Don’t feel shy in googling.
Learn the basics of command-line
Use Linux/Mac: If you have a Windows Laptop, install Linux. If you have a Macbook then you are good to go. Start using the terminal.
Things to learn:
- Basics of bash: echo, read, variables.
- Interact with the filesystem: ls, cd, pwd, cat, touch, head, tail, cp, rm, mv, mkdir, find, etc.
- Input/output redirectors.
- Regular expression in bash and etc.
Learn about VCS, Git, and GitHub
Learn the basics of Git and GitHub. Create a repository on GitHub and upload your codes on that repository for showcasing that repository to your Recruiters and this is very important for Proving you best for that particular role which you Will apply.
Learn how the internet works. Learn about related concepts like HTTP, Browser, DNS, Domain Name, Hosting, Client-Server Model, HTTPS. Visualize these concepts through the terminal using commands like ping, whois, dig, wget, curl.
Firstly, You have to Learn programming concepts through JS. If you already know another language, you just need to learn JS syntax. Solve the problems using js on Geekforgeeks and also Learn error handling as well.
Then Create Basic Website using HTML and for that you can learn
- adding headings, paragraphs, images, links, lists, tables
- creating a form, adding text fields, and button
- adding other input fields like radio button, dropdown, checkbox, etc
- div, span, head, body, doctype
and then use them for creating your Basic Website.
Now You Create Structure of your website but without Designing no one is interested in your Website so for that now you have to learn CSS.
hings to learn and use:
- color, background
- typography (fonts, text, icons)
- Learn about box model: content, padding, border, margin
- Flex, Grid
- Positioning, Float
Start by learning how to modify CSS properties directly in the browser. Then start styling your webpages (built while learning HTML) with inline styling. After that, migrate a few styles by using classes. Finally, move all the CSS to a separate CSS file
Once you have learned how to do these things, properly design all the webpages that you previously created using only HTML.
Things to learn and use:
- Basic DOM manipulation
- Events & Event Listeners
- Chrome DevTools & Debugging
Learn Object-Oriented Programming
Learn Object-Oriented Programming concepts (Encapsulation, Inheritance, Polymorphism, Abstraction, and Composition) using Java.
Once you have learned OOP and created a few implementations, learn Design Principles to make your code designs better. Design Principles: DRY, KISS, YAGNI, SOLID, Separation of Concern.
After this, solve a few design problems using these concepts. Try to write structured and well-designed solutions.
Learn about DBMS and SQL
Learn basics of DBMS(Database Management System) and SQL or NO-SQL as per your choice. From this, you will learn how you can store things on a server.
Build RESTful web services
Start with the basics of the language: how to add dependencies/external libraries. Then learn about the basics of APIs, JSON, and REST including HTTP methods.
Once you know the concepts, start building RESTful web services using Spring Boot or nodejs(express.js). This will polish your skills a lot. Because in 90%+ companies you will work more on APIs.
Become an expert in Data Structures & Algorithms
Information Structures and Algorithms (DSA) is one of the most essential subjects in Computer Science and is the main point for interviews. Prospective employee meetings expect you to tackle issues in the most ideal way by applying your DSA information. For interview prep, the quantity of issues you tackle doesn’t make any difference a ton. Being a decent issue solver matter.
There are numerous subjects in DSA. Carry out everything shrouded in these subjects and in equal, attempt to settle a couple of inquiries connected with the points that you are learning. On the off chance that you comprehend DSA well, you can undoubtedly turn into a specialist with some training. You ought to begin by figuring out how to work out the existence intricacy of an answer. Many individuals keep away from this step and face trouble in upgrading their answers.
Points to learn and rehearse:
DSA Foundations (Time and Space Complexity Analysis, Recursion, Divide and Conquer) (1.5 weeks; 25 hours)
Fundamental DSA (Arrays, Linked List, Stack, Queue, Searching, Sorting) (3 weeks; 51 hours)
Fundamental Algorithms (Hashing, 2 pointers, Backtracking) (2 weeks; 33 hours)
Fundamental Maths for Programming (1.5 weeks; 25 hours)
Transitional Algorithms (String Manipulation and Bit Manipulation) (1.5 weeks; 25 hours)
Transitional Data Structures (Trees, Set, Map, Heap) (3 weeks; 50 hours)
High level Algorithms (Greedy, DP) (2.5 weeks; 42 hours)
Chart DSA (2 weeks; 33 hours)
Practice and Build Expertise (at least until getting a job)
You must continue doing the following until your interviews and potentially after that as well if you like doing it.
This will help you:
- prepare a solid resume
- prepare for interviews
- build expertise
DSA Interview Preparation [Very Important]
Once you have a good understanding of DSA, regularly solve problems on LeetCode or InterviewBit. Try to do this regularly until you get a job.
You may start with a low frequency (7 hours/week). Increase the frequency as you get closer to interviews (30+ hours/week) depending on your comfort and preparation.
You should aim to master applying DSA concepts to almost any medium to hard problems on the above platforms.
- Be consistent: Keep building side projects regularly. Preferably end-to-end.
- Start small: Start with smaller projects and move to bigger projects with time.
- Create a team: Involve multiple people to work as a team. Try to get a designer as well on the team.
- Build clones: Try to build specific features from commonly-used apps/websites.
- Build a startup: Think of business ideas and try to build them.
- Open-Source: Publish the projects on GitHub (if the side-project is not a potential startup).
Peer-to-peer mock interviews
Do peer-to-peer mock interviews with your friends or with other job-seekers on Pramp. Start by doing a mock interview every 2 months, increase the frequency to more than once a week closer to your interviews.
If you do all the things well mentioned till now, you can get a job/internship quite comfortably. But why stop at this when we can be an expert in one or more fields. Everything that we do beyond this will help us become sought-after engineers in the long term.
That is all about how you can crack faang and get your dream job. And for more Articles like this bookmark our website or Start your own startup with our other blog.