How to get that dream job at tech giants?

Get into Google, Facebook, Microsoft and other tech giants as a young professional

Posted on July 20, 2017

At all stages in life, sheer hard work will get you where you want to be. Most of the students desire to get the best job in the software industry. The definition of the best may not be clear, but I will make it clear for you where should you spend most of your energy as a fresh graduate.

I am a firm believer of do what your heart says! That does not mean, you don't put effort for the goal :P. With this guide, I intend to channelize your energy for maximizing your chances to land the "best" job you want to.

There are four pillars to it - Building skills, Presentation, Applying and Interviewing.

  1. Building skills: This is the most important step according to me. If you bring something good to the table, companies will want to grab that. Following are some ways to up that skill quotient.

    • Fix a particular niche where you want to work, like CNNs, Distributed Systems, Kernel etc. Build some useful applications/projects and showcase them on GitHub. Participate in relevant hackathons. There is no limit to awesomeness. I partiulary appreciate Andrej Karpathy's contribution to Deep Learning as a student and a researcher.

    • Contribute to Open-source. This will help you mitigate large codebases and contribute to the technology/platform that you have a special bond with. Start with GitHub or Summer of Code.

    • Master Data Structures and Algorithms. In any case, you need to clear your interviews which stress on these. Many of the resources are mentioned in the interviewing pillar as well. A quick list of useful resources - Cracking the Coding Interview, InterviewBit, CareerCup, TopCoder, Codeforces, Codechef etc.

    • Learn technologies, softwares, languages used or built by the specific firm. For example, for Google, use and learn Go, AngularJS, Firebase, BigTable etc. For Facebook, Cassandra, Hack etc. Read up on their architecture for more - Google, Youtube, WhatsApp etc.

    • Participate in competitions organised or sponsored by Google, such as Kickstart, CodeJam, Sponsored SRMs on TopCoder or other sites, Google CTF, GSoC etc. For Facebook, sponsored SRMs, Hackercup etc.

    • You can always refer to technical guide for student by Google itself. Technical Development Guide.

    • Find a bug in these companies’ software or claim bug bounties. Google. Facebook.

    • Blog about your work, readings and projects. Saurabh Verma :P

  2. Presentation: is immensely important when applying for dream companies like Google/Facebook where the bar and the competition is too high.

    • Specific Application: Tailor your resume to the specific job and company you are appyling to. This guide is for those who want to land a great job at one of the most desired places to work and thus, does not support mass application to irrelevant positions. Align your qualifications, projects and achievements as close as possible to the job description.

    • Quantify: Nobody wants to read your previous job description or a vague description of achievements. Highlight your work, achievements, actions, solutions, savings, profits and progress in a quantified way. I just love my internship manager Dushyant Tiwari's LinkedIn summary.

    • Portfolio: A couple of pages with only text is not enough to impress the talent scout these days. Stand out with a webpage resume, or even better online portfolio. Showcase your projects with demos, achievements with photos and use millions of creative ideas to present your work.

    • Guides: On preparing the best version of your resume by top tech companies: Google, Microsoft and many more.

  3. Application: You can send your application through the following four ways. They are sorted in the order of ease and probability of getting to the next stage.

    1. Internal Referral: Find someone you know working in Google who can refer you for the internships. Students can contact one of their senior or alumni through LinkedIn or Facebook. If you know someone who can verify your skills better, you should contact them instead. For example, if you do competitive programming or some other skills learning, you can reach out to some senior from other institute or company, who used to do the same thing.

    2. External Application: Apply on companies' jobs portal for different internship programs or jobs. Improve your application as much as you can to get to interviews.

    3. Performance/Profile: If you perform extraordinarily well in popular competitions like Codejam, Kickstart etc., recruiter may reach out to you himself. If you have a stellar profile, you can share it on LinkedIn where recruiters are scouting for talent.

    4. Recruiter: Reach out to the very specific recruiter looking for candidates like you politely with a strong application, profile, resume and cover letter. You are making their job easier this way.

  4. Interviewing: This is one of the hardest skills to master, but there is nothing that practice can't help with.

    • Preparation: By this time, you should be prepared for the interviews. Now, it is the time for you to seal the deal. You should be ready to tackle challenges in Algorithms, Data Structures, System Design, Object Oriented Design and other areas as required by the particular role.

    • Past interviews: Always look up online on different platforms like GeeksForGeeks, CareerCup etc. about the past processes of the target company to cover any flaws left. For example, Google stresses on writing correct code in language of your choice on a whiteboard or Google Docs.

    • Why: Be very clear on why you want the job. Nobody wants to hire someone who will not absolutely love working with them.

    • Relax: This comes from my personal experience. I have never performed to my full potential if I try to prepare on the last day or think about the interviews. I cleared my hardest interviews by not worrying about them at all.

    • Mock Interviews: Do not want to screw your first interviews like most of us? Get a head start with mock practices as close to the real as possible. This will help you know your mistakes, problems, pressure points and flaws. It will get you accustomed to that pressurizing chair.

    • Basic Tips: I will reiterate some of the most basic and essential tips here for a comprehensive overview.

      • Be crystal clear on the problem requirements. For example, O(1) read and O(n) write may be better than O(logn) read and write in a read-heavy system.

      • Start with brute force solution if necessary and constantly optimize.

      • Break down the problem to easy and implementable modules.

      • Write clear, modular, self-explanatory and working code.

      • Use the tips and hints given by your interviewer, they know the solution, you don't.

      • Test your code with a good test suite considering edge cases, boundary cases and normal cases.

      • At the end of the interview, ask real, meaningful questions.

    • Guides: Preparation guides by top companies themselves: Facebook, Google, Microsoft and many more can be found online through a quick search.

At this stage, I cannot give you anything more than my best wishes for getting the job that you want unless you specifically ask me. Reach out to me with your success stories, explanation requests, criticism or whatever you feel like here.