How To Get a Job in Big Tech (As told by a software engineer in big tech NOT a youtuber)
Does the world really need another “how to get a job in tech” article? I’m exhausted with tech screens. It is not good for the soul to tell the third candidate this week, with a masters in CS, that you’re not even close to ready. So from my perspective, yes it needs at least one more. I want to break down the steps and tell you exactly what to prioritize to land a top tech job so if I have to do your tech screen later you will nail it.
Know what you are up against
They say that getting a job in big tech is competitive, I disagree. There are many tech jobs to be had. Every tech company I have worked at is desperately hiring, it’s a constant struggle to attract and retain great engineers.
If everyone is hiring why is it so hard to get the job? If the worst thing a bad engineer could do is make no contribution, and be a complete dud, then tech companies probably would roll the dice more. In real life, a bad engineer can do great damage. It is literally better to not hire anyone than a bad engineer, you will end up doing less work overall.
Do you have what it takes? Of course you do. If you have never worked at one of the top tech companies it is easy to think only the smartest wizards work there. I’m telling you that is not true, they are smart, yes, but think of the required critical thinking as learning a new sport. Some of it is natural, maybe, but the great majority of it is practice.
Now that you know your enemy you must get ready for battle. There are two big battles you must win. The resume screen and the tech screen. You cannot neglect either.
Your resume is very important, you should spend a considerable of time on it. What a waste to have all this great experience but your resume does not reflect it.
If you are about to sit down to prototype your new app idea to impress the hiring manager at the company you want to work at, stop. That time spent would be far better spent making your resume perfect.
The art of writing a great resume is another topic but let’s start with my opinion on what the top things big tech wants so we can structure our resume accordingly.
1. Work experience as a software engineer at a big tech company. Once you’re in you will forever be contacted by recruiters from other tech companies wanting to poach you.
2. Work experience as a software engineer elsewhere. Work is different than play, fixing bugs all day is different than prototyping a new game. Having any work experience is a big plus.
3. Internship. I personally value work experience over an internship with a big tech company.
4. Large project experience. Having experience on a large, sustained project and working with others exercises a different skillset than weekend projects.
5. Education. I don’t really care where you went.
6. Weekend projects/Hackathons/Game Jams. Due to the scope and time constraints of these projects they usually lead to ugly unsustainable code. Bad architecture, everything is a singleton, circular dependencies, etc, it does not show you can contribute to a stable codebase. If this is all you have ever done, then I’m not excited to hire you.
7. Awards. I’ve probably never heard of what you won.
8. Certifications. I don’t care at all.
Keep in mind when writing your resume, now is the time to brag. List achievements you have accomplished that improved a project you worked on. Sell your achievements, let’s say you noticed devs passing around large files using a thumb drive so you set up a file share. Put on your resume, “I set up a local package management system greatly increasing the efficiency of the project by making private material easily accessible by other contributors and encouraging the exchange of critical ideas”.
Some advice I read said to be explicit, “I was able to do X which increased performance by 32%”. I don’t think that is necessary, it’s kind of a running joke where I work.
Vocabulary is very important here. I can’t speak to how exactly recruiters filter resumes but the process certainly includes looking for keywords fitting the job description.
Don’t fritter away too much time on the design, I personally prefer a simple clean resume without graphics.
The Tech Screen
This is the hardest, easy part. It’s hard because, well most people fail them. If you made it to the tech screen nothing on your resume really matters anymore. If you bomb the tech screen your PhD in CS won’t save you, the interviewer does not care you invented homebrew, the fact that you’re a great person to work with matters, sure, but that alone won’t get you the job.
The easy part? The answer on how to pass the tech screen is very straightforward, there is no secret. Don’t even waste your time googling “How to pass a tech interview”. The answer simply is to study. Study what? Leetcode, TopCoder, GeeksForGeeks, HackerRank, they all have similar word problems. (I prefer Leetcode). I can’t stress this enough, the greatest skillset you can have to further your career is interviewing. Just do it, sit down and do it. After reading this article go to one of these sites and start answering questions.
People often measure their readiness in questions answered, how much is enough? I would say shoot for at least 200. If you’re new to this type of question, then don’t feel bad or think that you’re not smart enough when you fail to find the solution. The easy questions feel hard at first but don’t give up.
You are training your subconscious here; humans excel at pattern recognition but to do so you must inject a ton of patterns first. If you just picked up tennis tomorrow you wouldn’t feel bad your backhand is terrible, why would you expect different here? Getting discouraged serves zero purpose, so do your best to stay positive. I promise you, keep at it and magically the easy problems will start feeling easy.
How to study properly is its own challenge, just make sure you keep the time and space complexity of your solution in mind when studying. I would suggest spending no more than 45 mins trying to solve the problem then look at the solution and make sure you understand it. Also, make sure you do not spend too much time learning to study than studying.
Don’t waste your energy wailing that the system is broken, and whiteboard interviews don’t accurately reflect what kind of worker you will be. I don’t disagree, but it doesn’t matter, this is how it is, play the game! When you’re the one driving, and you're asking someone a nasty dynamic programming problem, then maybe ponder the relevance, but for now, keep your head down and practice another word problem.
In the before times interviews were once performed on a whiteboard, now they are all virtual in a text editor. Writing code on a whiteboard is probably a good to practice though, who knows when we will go back to that.
What should you be doing now?
No matter what stage you’re in start studying and keep studying interview problems. Get your interviewing skills sharp and keep them sharp. Work on big projects, little weekend projects are fun but are not very helpful when getting a job. Can’t find a big project to work on, make one. We’re not looking for someone that came up with the next big thing. Just work experience.
If you are younger go to college, if your older go to a cheap online college that you can get through faster. When going to school try to get a part-time job or an internship, didn’t land an internship at a big tech company? get one anywhere. Also, keep in mind that if you didn’t a part-time industry job or a great internship, oh well, don’t get discouraged. There is no one track to success so there is no way to be off track.
Done with school? You have a shot at an entry-level position, keep what I said in mind, spend your time on something that shows work experience, skip the little one-off projects, and skip studying for a certification. If you don’t get an interview keep trying. In the meantime, get any industry job.
When applying for jobs this is the biggest tip. It is a numbers game. Blast out your resume. I want to reiterate this point. It takes a lot of work writing cover letters but do it anyways, eventually, you will get a nibble.
It took me 6 months to get my first tech job. Try not to get too discouraged, rejection is totally natural, and you cannot avoid it. When I got my first big tech job I was rejected for an entry-level position while simultaneously getting an offer for a higher-level position at the same company in a different city.
If you want to get a top tier tech job, please, start out with the mindset that you are more than good enough, because you really are. Sharpen your interviewing skills until they can cut an unripe tomato. Spend your free time on projects that show work experience. Spend an inordinate amount of time on your resume, come back to it often and revamp it. Most importantly stay positive!
This was my opinion and I think discourse would help everyone, please comment below what I left out or what you disagree with. If you work in tech, please list below, in order, what you value most from candidates.