FAANG Principal Engineer answers common career questions

PathFinder
9 min readApr 17, 2022

--

This is part of pathfinder.fyi’s blog series where we interview employees from reputable tech companies about career questions and how they got to where they are today. We aim to provide quality, useful, and concise content so you can learn and apply it to your own career.

Subscribe here, If you want to read more content like this. We’re starting this new blog series and will be pushing lots of content regularly.

For more content where software engineers, UI Designers, data scientists, etc. answer common career questions go here.

General Questions:

Can you introduce yourself?

I’m a lifelong software engineer taking a sabbatical after 30 years.

My last couple positions were as a principal software engineer, a software architect, and a software engineering manager. I’ve worked at Microsoft, Amazon, Google, Oracle, ThoughtSpot, in research, in research software engineering, government, and at university. I’ve got a PhD in computer science in distributed virtual environments, emphasis “World of Warcraft.”

For the last six years I’ve been spending a lot of time giving career advice on a questions website called Quora, and lately have started contributing on Reddit, and YouTube — Deliberate Engineer. I’ve been addicted to computer games for more than 40 years, currently World of Tanks.

You have been in the industry for over 30 years, what are your thoughts on the common sentiment of “how to keep up with new technologies and trends”? How did you “keep up”?

Keeping up with new technology was something I worried about for my first five years. I made sure I read relevant magazines and websites, and occasionally read papers in my area.

Later I realized this was a waste of time. It never made a difference in the shape or quality of my work, my usable knowledge, nor what I chose to do. From that point forward, I stayed current just by doing my job. If I was somewhere where I wasn’t learning anything from the job, I generally got bored and moved on to a place where I did learn.

My advice for others is, don’t try to guess what will be important in the future and read up on it. Instead, work on the problems in front of you that are contextually important in your role. The meta-skills you learn from that (design, architecture, programming, technology) will be incredibly valuable, and you’ll be getting paid to grow them.

Can you give a one sentence description of the job differences of each of the different levels of an Individual Contributor?

  • Entry level: Competently completes assigned implementation tasks with guidance.
  • Junior: Handle sub-component design with guidance, and implement it independently.
  • Senior: Design and implement component-level features independently, and guide efforts of other engineers in their team to help accomplish bigger things.
  • Principal/Staff: Provide design and implementation guidance and mentorship to multi-component efforts.

You have worked in dozens of different domains like Distributed Systems, Security, Networking, etc., which computer science field do you think will continue to grow fast in the future? Which fields do you think will stagnate?

Application experiences will continue to be a place where developers of a variety of skills are employed, from making internal line-of-business applications to multi-platform application infrastructure to work with mobile devices. It’s hard to go wrong with mobile applications, although not as someone trying to release their own.

Cloud computing will continue to grow, as cloud services require software engineers to know less and less to use them. Development of the underlying cloud services will continue to employ a small fraction of all developers, as will operating system level work.

Data Sciences and machine learning will continue to grow and mature, becoming easier to apply to new domains. The romance with the field will drop, requiring fewer software engineers as application to appropriate problems becomes more and more straightforward.

Security and Authentication will continue to be important. Companies haven’t succeeded in unifying behind a single identity and authorization provider, but maybe someday…

Networking and networking protocols are much less important than they used to be, as most applications rely on using a small subset of network protocols, web protocols over TCP.

Resources (storage, CPU, memory, network) will continue to grow, along with battery life, continuing the trend of not worrying about resources when writing all non-game programs. Mobile devices and embedded systems will continue their evolution towards being commodity computing devices in a teeny tiny package.

Career Success and Growth Questions:

What is the fastest way to get promoted?

Be a great communicator. Be familiar with the expectations for the next level. Partner with your manager, regularly asking “how am I doing towards the next level? What should I focus on demonstrating?” Concentrate on delivering results in your primary domain, for example executable code rather than spending 100 hours scrubbing the task and defect databases and running scrums. You’ll get gratitude and absolutely no rewards for being the person who keeps the project clean.

What are some indicators that the team you’re on is a high growth and impact team? Indicators that you’re on a low impact team?

A high growth team is self-evident: more people are hired each year than leave, and the total headcount is growing. If the group is a profit center, its total revenues are rising each year. The group creates new functionality and lights up new scenarios.

If your team is not growing, if the work revolves around maintaining and retiring functionality rather than adding new functionality, if the customer base is stable or declining, these are signs of being in a team whose impact will not be valued.

What are the factors that you look for when changing to a new job (Work life balance, pay, growth, etc.)

We have the privilege of working in an industry where most jobs provide a great standard of living, and where there is lots of demand for good programmers. We can prioritize non-financial factors such as work-life balance, technology, and work environment, and still have a great career.

When I change jobs, I look for a job which combines being able to add value with my current skills, while giving me the opportunity to learn some new skills. It should be in a group which has work complexity sufficient to let me grow at least one career ladder level. I strongly prefer scaling systems up or making new systems, to stable system maintenance. As I’m later in my career, I worry less about whether the team is growing than I do that its charter has life left in it.

What are some questions that you personally ask to the interviewers to figure out if this job you’re applying for is a good fit.

I ask a couple key questions to interviewers to try and see how they feel, and if they’ve been there long enough for their feelings/impressions to be well informed.

  • How long have you been in this role?
  • What do you like best about your job?
  • What do you wish you’d known when you were in my shoes, interviewing?

During technical conversations in the interview, I also try to get a read on how engaged they seem, how happy they are. It doesn’t necessarily mean much on its own, but it’s a data point to combine across interviewers and roles.

How do you accumulate as much wealth as possible as an IC? I.e. get the highest pay

To do well in your company, talk regularly to your boss and make sure you’re keeping tabs on your progress for the next level. Focus on delivering the type of results that are rewarded, without completely neglecting your other (basic maintenance) responsibilities. Make sure your boss knows the significant things you’re doing and shipping, and get their take on how you’re doing for the next review and next promotion. Course correct as appropriate. Own your career.

Every time a big (e.g. 6 month or longer) project you’re on finishes or you are near getting a promotion, poke your head up. See what other jobs are out there. Interview to see what sort of offers you can get, but make sure you can stick around long enough to get a promotion where you’re at if it’s forthcoming. Once you know what you can make elsewhere, you’ll know whether it’s worth the effort of moving to get extra money.

What are the tradeoffs of choosing to work at a big tech vs a startup?

Big tech has consistent rewards for performance, and good benefits. You don’t have to worry nearly as much about being laid off, the company folding, years without bonuses or raises, benefits being slashed, or being unable to get a promotion. You’ll also have a name brand on your resume that makes it easier for you to find other jobs. On the other hand, you won’t get exceptional rewards (millions of dollars) for exceptional performance, and you’ll be working in a more focussed area than you would at a startup.

A startup generally has poor work-life balance if you’re a good performer. Something over 80% of startups fail, so you’ll need to keep an eye on that. As implied in the previous paragraph, your experience at a startup won’t have obvious value to other companies — they won’t know what the job titles and likely product are — so it won’t help near as much in finding a new job. If you’re incredibly lucky, you might get a better payday than you can in big tech. I personally think this is a very rare, e.g. 5% case.

How did you make the first transition into more of a leadership role (whether it’s tech lead or software manager, etc.)?

Generally my transitions to management have been either by choosing to move to such a role elsewhere (a little difficult if I’m not a domain expert), or by there being a need where I’m at as a team grows or a new team is spun up.

The best way to be invited to become a technical leader or manager is to demonstrate leadership attributes in a constructive way, taking on tasks that don’t have owners, identifying things that need to be done, and having good organization and communication skills.

Research and Education questions:

Out of all the hundreds of Software Engineer job posts scraped by Pathfinder off of Linkedin etc, the job posts that mentions degree levels, only 7% of them mentioned the keyword ‘PhD’ and 38% mentioned ‘Master’s Degree’.

What are the biggest advantages of having a PhD in this industry? What are reasons not to get a PhD?

There is no advantage in having a PhD in software engineering, and the opportunity cost is very high. Literally everyone I’ve talked to with a PhD who works in software engineering — including myself — says DO NOT GET A PHD. I believe it’s only useful for positions that absolutely require it (which very few do), or if you want to be in a tenure-track academic position.

Biggest advantages of having a MS? Reasons not to get a MS?

The only real advantage to getting a masters degree is having a better case for work VISA applications if you want to work overseas and don’t have much work experience. It does teach some more advanced skills, but almost always they do not directly affect the quality or quantity of work you do, and again, the opportunity cost is high.

I wound up doing a masters because I applied as a fall-back in case I couldn’t get a job after undergrad school (I failed to do so). I ignored campus recruiting as an undergrad, paid attention to it as a graduate student, and had a job offer at the end of my first semester of grad school.

How to choose whether to enter academia/grad school or go into industry?

If you want financial security and relative ease in obtaining and switching jobs, go to industry.

If you want to program and make products, go to industry.

If you want to be an industry researcher, make sure you understand what an industry researcher does (you’d be surprised how little is blue-sky innovation), and then get a PhD. Then go to industry.

If you want to be in academia, get a PhD, and make sure you’re up for the grind of trying to get tenure. Then enjoy the academic life.

For more content like this, click here. We’re starting this new blog series and will be pushing lots of content regularly.

--

--

PathFinder

Bringing transparency to every kind of career path within the tech industry. High quality posts here only. Check Bio for our methodology. https://pathfinder.fyi