Many software engineers set their sights on getting into big tech someday -- It seems like *the* destination to end up at in one's career. Now this of course isn't universally true (nor should it be) but regardless, this is a goal for many. But is Big Tech all it's cracked up to be? Are the stereotypes true? How the heck can someone get into these big companies?
In this article, I wanted to share with you my journey from working at startup companies all the way to being a Principal Software Engineering Manager at Microsoft. I'd love to share with you my interview experiences and my observations about what I value (and what I dislike) from startups and Big Tech.
Remember that your career journey is for you to own. Don't try to copy someone else's life, just learn from their experiences and take charge of your own. There's no "wrong" path. Every path is unique.
I wrote this article for my good friend, Muhammad Waseem. He graciously offered to include my story in one of his newsletters, and I thought it would be such an awesome opportunity to share with his audience. My version of the article has been slightly adapted so I can share other relevant content for my own audience.
Muhammad, my friend, thank you for thinking about me!
My Background
I went to the University of Waterloo for computer engineering. While I didn't like my classes at all, my 6 internships really solidified that I wanted to be in this industry. I spent my internships mostly at startups or small companies, but in completely different sectors so I could get different experiences.
Action: Take advantage of internships if you have the option!
Action: Use your internships to explore different domains and styles of companies!
My first real full-time software engineering job outside of university was a digital forensics company, now called Magnet Forensics, that was just starting out. This was the first time I started to have a good mix of autonomy and solid leadership mixed together because up until this point with work, I felt it hard to stay motivated in what I was doing for work.
This company had also taken a chance on me because they appreciated my existing skills and way of thinking but knew that I had zero experience in digital forensics. This was also going to be one of the first times in my career that I really noticed "Oh crap, I don't know how to do any of this..." only to realize that after several months I was on my way to building expertise.
Action: Find companies and leadership that you align with. This may take time and experience in industry.
Action: Don't be afraid to jump into new challenges. It's the best way to learn.
I became a technical manager within several months of being at this company, which required my time was spent coding and managing. But this was all due to one critical software engineering skill that I think everyone should invest more time in: Communication.
Action: Work on your soft skills, not just your technical skills
Check out this video with Callie Buruchara for more details on why communication is so valuable:
Getting into Big Tech
This was one of my least favorite things I've done in the past few years. I find that I don't do a great job selling myself to recruiters, and it feels unnatural to discuss my accomplishments. I needed to spend time updating my resume, which would include highlighting some of the biggest accomplishments in my career up to this point.
Action: Update your resume with high impact work. Pick relevant experiences to what you're applying for.
I applied to some of the popular Big Tech companies and after several weeks had interviews that were lined up over a few weeks. In order to do this, I chose the route of going onto their career pages and going through the typical paths. I felt that I had solid work experience and based on historically what I had heard, it shouldn't be too difficult to hear back.
Action: Most (if not all) companies have career pages that show you what they are actively hiring for. Use those.
Admittedly, the job market now is extremely different than it was when I was applying. You need to do everything you can to stand out. This may be an EXTREMELY difficult time to apply to Big Tech companies because of the volume of people trying -- so I do not want you to be discouraged. It may not currently be in your favor, but that doesn't mean you can't focus on things that are in your control.
Action: Give some consideration to companies that aren't Big Tech. They can offer incredible opportunities and there's less competition.
Networking can be very powerful -- so get in touch with recruiters as much as you can. You may have luck connecting with hiring managers, but from my personal experience, I have to direct every single person to the Microsoft careers page anyway.
Action: Always try to be networking! Build relationships with recruiters!
With that said, if you're interested in Microsoft, my biggest advice would be to:
- Use the Microsoft careers page to find jobs you're interested in
- Use LinkedIn to connect with recruiters
- Use LinkedIn to connect with employees in the space
When you connect with the employees in the space DO NOT ask them to refer you. They don't even know you, so they should not be referring you. Instead, see if you can get some time from them to learn about what it's like working in that space. Build a true connection and use it as a learning opportunity.
Interviewing - Exactly What You'd Expect
I'm an engineering manager and I was applying for engineering manager roles... But you bet that I was still being interviewed like a Principal-level software engineer AND with management components added in. There are many similarities with how I would be interviewed compared to an individual contributor software engineer!
I was grinding LeetCode questions every day. Systems design questions. Behavioral questions. All of it. Every day for multiple hours. This was extreme for me because I hadn't interviewed in nearly a DECADE. And every single big tech company was similar. Algorithms. Systems design. Behavioral. Much of what you read or hear online about this is spot on.
Action: Familiarize yourself with coding questions (LeetCode), distributed design questions, and project/behavioral questions
Action: Set aside time to practice as much as you can.
You need to be prepared to ask clarifying questions in the technical part. I hate these types of technical interview questions because I've seen people practice them like crazy, get hired, and then struggle as a developer because they just managed to train themselves well at interviewing. Something to keep in mind.
Action: When you're practicing, try verbally asking clarifying questions and give yourself some constraints. You need to get good at this.
I only had one of my interviews, but that's okay. It can happen to anyone. Ultimately, I chose Microsoft because everything I had heard about the work culture was aligned with what I wanted.
These two livestreams focus on getting noticed and preparing for interviews, and I think they're very valuable to go alongside this:
And the second one focusing on the interview process itself, here:
Big Tech - Final Thoughts
I want to close out this article by bringing back what I said in the introduction:
There's no "wrong" path. Every path is unique.
My philosophy in software engineering is that there are pros and cons to everything. Where we work is no different. Some similarities and differences from my own experiences:
- You might be working on platforms and/or internal systems compared to user-facing offerings. Figure out what you prefer!
- You can find a lot of meaning in what you're doing at big or small companies, but it's often easier to feel that you have a bigger relative impact at a smaller company
- How much autonomy you have can vary from company to company -- usually smaller companies there's more flexibility and autonomy because there's less bureaucracy built in.
- From team to team, or company to company, you might notice the rate at which you can ship features/fixes is different. This can be a VERY big quality of life to consider as a software engineer.
- Big tech has very ironed out career ladders whereas startups it can be more chaotic -- but your level vs how much REAL experience you gain are not always aligned.
- How you interview for Big Tech is well documented but for startups and smaller companies the interview processes may look quite different
There are many more things to compare -- but I want you to know that many people will value these things differently. What we value in life changes as well. I'm very respectful of my work-life time boundaries now. No more 16-hour days.
But a question I'd leave you with is... What do you truly value in your career? In your life?