Here's a breakdown of how to consider a career in product management versus software engineering
As a new grad, I was lucky enough to choose between product management and software engineering. I talked to a lot of people in both roles at different companies before ultimately joining the APM program at Google, which was a phenomenal experience. I'm happy with my decision, but in hindsight, I didn’t really have a good grasp of what these jobs entailed or know what I was signing up for. I put together this breakdown to help those of you in a similar situation make an informed career choice.
What are you responsible for?
Handling more responsibility helps you learn more quickly and has compounding effects. This is something you want to optimize for early in your career. Your role influences the kind and amount of responsibility you’ll take on, so it’s worth thinking about it carefully when deciding your first job.
Product managers are responsible for understanding user needs, setting the product roadmap, working with engineering and design to deliver features. You are ultimately accountable for the product's success or failure.
As an engineer, you’re responsible for building and shipping software. This might be for a user facing product or back end infrastructure. You are accountable for the quality and rate at which you ship as well as the scalability, performance and reliability of your code.
PMs are closer to business critical decisions and their work impacts many other people in an organization, so they’re likely to get more responsibility early in their career. As an engineer, your responsibility extends beyond yourself and your code once you become a tech lead or move into engineering management. You focus on gaining skills and becoming a good engineer first whereas PM-ing is more of a trial by fire.
What do you do everyday?
The day-to-day for a PM and engineer are drastically different. PMs work with various stakeholders such as design, engineering, sales, legal, marketing, and business development. Your job has two parts. The first is the strategy component. This involves identifying opportunities, prioritizing them, selling a vision and getting buy-in from relevant stakeholders. The second is execution, which involves writing product specifications, working with engineering and design to actually build the feature while navigating trade-offs along the way. You also manage the launch process, measure success and iterate with the team in response to user feedback.
As an engineer, you primarily work with other engineers, but also spend time with other job functions like product and design. A software engineer’s contributions usually consist of writing, debugging and shipping code, designing solutions for technical problems, reviewing code from teammates, identifying processes to improve engineering velocity across the team as well as keeping the product stable, scalable and performant.
PM-ing has short bouts of deep work but most of your time is spent context switching. Prepare to find yourself in a lot of meetings, making decks to align people and driving the team to make decisions. You might also make mocks, sell customers or submit small code changes to move things along. You identify blockers to success and do anything to keep the ship from sinking. Engineers spend much more time heads down building. You’re in fewer meetings and hopefully have fewer distractions. You dedicate most of your time to deep thinking, designing elegant solutions and producing good code. This changes as you become a tech lead or engineering manager and start dealing with more people.
What will I learn?
PMs will learn how to:
- Think about product strategy and roadmap
- Make product decisions and tradeoffs
- Talk to customers and analyze data to identify user needs
- Align stakeholders
- Manage a launch process, evaluate product success, and respond to feedback
Engineers will learn how to:
- Design and implement technical solutions to problems
- Develop expertise in engineering stacks, programming languages and technical concepts
- Adopt best practices and processes for an engineering team
- Mentor other engineers through code reviews and design critiques
Which one is right for you?
You might prefer product management if:
- you’re interested in answering the “what” and “why” around shipping product
- you have a desire to learn how to make product decisions and help a team execute on it effectively
- you are ok with spending your time aligning people and influencing others to get work done
- you’d prefer to build a breadth of skills, more-so than deep technical expertise
You might prefer engineering if:
- you’re interested in answering the “how” around shipping product
- you really enjoy programming and want to write code
- you’re primarily looking to develop your technical skill set
- you prefer to be more independent in terms of work, at least earlier in your career
Your mileage may vary
Both roles vary a lot based on your company and team. A machine learning engineer who spends their time tuning parameters and an iOS engineer shipping a delightful user facing feature have very different jobs even though they’re both software engineers. Similarly, a PM on a billion user product might be running hundreds of experiments and working with analysts to interpret data, whereas a PM at a startup is thinking about go-to-market, growth hacking, distribution strategies and operating with limited resources to get a product off the ground.
Don’t sweat it
You can always transition between the two roles later. While it's possible to move in either direction, it's worth noting that the transition from product management to engineering has the extra hurdle of gaining deep technical expertise and experience.
Keep in mind that careers aren’t linear. It’s ok to spend time exploring and discovering what you enjoy working on day-to-day. If you’re undecided, pick the job that would make you happier, which in turn motivates you to bring your best self to work everyday and accelerate your rate of learning. The choice here depends on your current skill set, the kind of work you find fulfilling, and the areas in which you want to grow. Hopefully, you pick the job that’s right for you and have a blast doing it!
- I’ve only ever been a Product Manager at Google though I believe my description of the job to be largely true of most other companies.
- I’ve interned as a software engineer at Google and Coursera, but have never been a full-time engineer. Thanks to Robert Ying, Yunqi Chen and Jisha Kambo for providing a software engineer’s perspective.