PS

Ask Me Anything

Questions are answered publicly here, with your name anonymized. Want a private answer instead? Ask on ReachVIP.

I've worked as a senior leader at Microsoft, Meta, and OpenAI, and ran my own startup. Many people consult me over email and LinkedIn. Instead of answering them privately, one person at a time, I wanted those answers to benefit everyone… so I launched this: a public archive of anonymized answers, open to everyone.

Filtered by #career. Clear

From the Archives

answered Jul 13

first off, im a dad, former network engineer, and technical manager.

i've been going through a midlife crisis (37 years old) and
tranistioning into coding + becoming an SWE.

im focusing heavily on python and leveraging AI workflows to build and
architect software at scale.

my goal? i'm reaching out to you for guidance (or personal opinion) on
how to break into FAANG. i want to become a SWE, even at a junior
level.

i read your substacks and some of your podcasts... if i was on your
team and you were my staff engineer (i dont know if im using this term
correctly), what exact, uncompromising 6 month regimen to get me
across that hiring bar, would you tell me to do?

Philip

Hey there - gerat questions. I don't know your professional skills well enough to give specific recommendations, but here are some general thoughts:

  • A lot of getting a job at FAANG is about the jobs leading up to it (i.e. you want to ladder yourself from no-name companies → B companies → A companies). This is because the recruiters get literally hundreds of applications for each open position, which is impossible to otherwise sort through. So depending on your past work experience, you may need to get an interim job to lever yourself ultimately into FAANG.

  • Spend far more time preparing for interviews than most people do. My Substack post on getting a job at OpenAI discusses this. It's important.

  • Leave every work relationship positive, even when you leave a company because it's gone south. This is because the industry is small (especially at Staff+ levels), such that you're very likely to remix with past coworkers in future situations.

  • Relatedly, the best way to get in is to have a referral from an internal employee who's worked with you in the past. Odds of this are better if: a) you already work at well-established companies (since those employees will often move into FAANG), and b) you've worked at several different companies (so that your professional circle is wider).

Hope that helps!

From the Archives

answered May 26

I wanted to reach out and ask what makes a good/successful software engineer, both in terms of your opinion and perhaps what you notice the industry tends to value. 

I feel that school has taught me some things about computer science, but really nothing at all about software engineering, and I really struggled to adapt during my internship. My manager's main feedback to me was that I was not at the expected level of technical proficiency and recommended that I work on some open-source projects to gain experience.

I tried that for a bit but I didn't feel like I could glean any insights on things like why the code was written in any particular way, and the maintainers seemed pretty stretched thin and weary about having to deal with first time contributors who may be using AI for the entire PR (which I was not doing). I'm not sure if this is part of a larger trend across open source or if I was just unlucky in picking my first project, but it's made me feel hesitant to try open source again for now, especially now as I wonder if I even have sufficient skills to be contributing to open source. 

My internship project revolved around getting the company's AI to automate my actual project of performing some API migrations. I think that I made the significant mistake of offloading certain tasks such as ramping up to the codebase and debugging build errors to the AI, which only gave me a weak foundation to reason about the changes I was making later on. I also felt that the presence of the tool itself gave the expectation to my manager and mentor that I would be much faster at making changes, and this coupled with my feeling overloaded with information surrounding the project and not recognizing it seemed to contribute greatly to me struggling. 

I'm not trying to shift blame here - I acknowledge that someone more skilled than me probably wouldn't have done as poorly, and I did not have those skills. I felt that I struggled to understand the internals of the microservice I was working on, and that the team was so busy that getting help often felt difficult. The main thing is, I can't tell if I was really just that bad at software engineering, or if maybe the expectations were artificially inflated by the presence of an AI tool that didn't actually work that well, and also the problems caused by me being overly dependent on it. Or maybe something else I didn't think about. 

But regardless, the only thing I can work on is improving my own skills, so I wanted to ask (alongside the original question of what do you think makes a good engineer) if you have any resources or recommendations for how I can learn fundamental software engineering skills/patterns and debugging skills as well. And also any other advice that you might have. 

Philip

Sorry to hear the internship didn't go as well as possible. Here are a variety of thoughts.

First, the only way to grow is to:

  1. Know what you need to grow

  2. Put work into growing

  3. Learn from the right people how best to grow, or figure it out yourself.

Knowing what you need to grow is about asking for feedback effectively and internalizing that feedback. It sounds like you have a fairly good idea what can improve. You now need to dedicate effort to growing. The open source projects were a good example of trying, but I don't know how much time you put into it. You need to put a lot of time into these things to become noticeably better; otherwise, the improvements are too small to notice.

The best people to grow from are usually directly from your workplace. Are you still at the internship? If so, seize the opportunity to find one or two senior engineers, or you manager, to ask their advice on how best to grow. They'll also be able to give concrete feedback on your PRs so that you can improve specific things.

Most open source projects have maintainers that never get back to you. I had a 4-year PR open on Firebase which the maintainer just punted two weeks ago because, in the past four years, they moved past the feature I helped them fix. I think it's hard to get traction on those projects. Much better to build something with a strong peer of yours and learn together. Or do https://adventofcode.com. Do every year, every problem. You will get much faster as you learn which architectures work and which ones don't. Do not use any AI at all to help you code those solutions. There's no substitute for generating a bunch of code by hand in order to improve how you code.

If you're not in the internship anymore, get feedback much sooner next time during the internship so that you can make adjustments quickly. I recommend asking for feedback weekly for the first month, and then maybe every other week.

There's not an easy way to get better at these things than to put real time into it, and to learn from the best people. Why don't you work on this past year's Advent of Code and LMK how far you get in a week or so?

Want a private 1:1 answer from Philip Su? Ask on ReachVIP