“Can I become a product manager without a computer science degree?” I asked that question to many product managers, friends, and anyone who’d listen when I was considering a transition into product management. I eventually transitioned into a product manager role at a startup, and now work as a product manager at Google, without ever going to school for computer science nor a business degree. I hope my experience helps you.
For context, a few things I’ve learned about the limits of technical knowledge in your product management journey.
- Your understanding of computer science concepts will be a small part of your role as a PM, as you’ll spend considerable time understanding your users and customers, crafting a product strategy, writing PRDs, discussing go to market approach, and more.
- Your engineering counterparts will own technology and implementation decisions, or any choices that need a good understanding of CS concepts.
- Technical skills won’t be enough to get a job as a product manager, but you can get rejected during the interview process for not understanding enough fundamentals.
The reason to learn some technical fundamentals is that understanding computer science concepts will make you a more effective Product Manager and work better with engineering. This is why there is a technical interview as part of the Google Product Manager interview.
When technical skills help a product manager
You may be wondering, do I need to be able to code? And the answer to that is, not really. Ultimately, you are learning technical concepts to be effective in certain situations, none of which will involve coding or code reviews. You can leave the code in the hands of your capable engineering counterparts.
Instead of worrying about code, focus your technical learning to be effective in:
- Feature design tradeoffs
- Debugging product issues
- External discussions
Feature design tradeoffs
A fundamental part of the product manager’s job is to specify the requirements for the product. As part of defining the product, it is helpful to understand what requirements are challenging to achieve and will require more engineering effort. Understanding this will help you, and your design counterpart, make the right tradeoffs between specific user experiences vs. the time and cost to build.
You don’t need to foresee every challenge, nor should you try, as you will always have an engineering counterpart to help review your proposal. But, to the extent that you can proactively address challenges – such as knowing what operations require a “roundtrip server call” and can slow down the UX – the more effective you can be.
Debugging product issues
Your product will have issues, which your users will quickly find and report. Instead of distracting your engineering counterparts for every issue, you should be able to understand or use available tools to figure out what may be wrong. You may now know exactly what is wrong in the code or the infrastructure, but you should at least be able to narrow it down to a general component of the product. Better yet, try to see if it’s an issue that is impacting many users or just a few based on your diagnosis.
By doing this, you can help the engineering team prioritize the right issues, work with customer-facing teams to handle communications appropriately for feature requests or user errors, and ultimately help the team overall work better.
As a product manager, you are often the voice of the product. You will need to represent your team in customer conversations, potential partnership calls, or even when discussing your plans with other groups. These conversations will often include questions for which you’ll need a good understanding of your product’s technical capabilities to answer.
How to prioritize what to learn
If you haven’t studied computer science, it may be daunting to prioritize what to learn. What you quickly realize with each of those scenarios is that the technical knowledge that you’ll need in each situation (feature design, debugging issues, external discussions) varies.
I’d recommend that you start by getting curious about the technical stack for the product that you’re interested in managing. What is technically challenging about building such a product? What is expensive from an infrastructure perspective? What are the components needed?
If you don’t have a particular desire, pick a mix of fundamental technologies and currently popular ones to start learning. Here are a few examples of things that helped me.
I learned some of the fundamentals by taking free courses on Codecademy, which taught me the fundamentals by getting me to build a simple site. Understanding these core technologies helped me understand the limitations of the “client-side” technologies and what sort of things need to happen “server-side,” essential concepts as you discuss product development with your team.
Understand product infrastructure
Your job as a PM is to drive prioritization discussions, and many significant investment discussions relate to product infrastructure. Start by understanding the technologies powering your product. The easiest way to do this is to write down technology names you don’t know and then googling them or asking an engineer what they are.
For each key technology, try to understand:
- Why is it used?
- What are its limitations?
- How does using it helps product development?
- Does it have product performance implications?
- How does it impact the user’s interaction with our product?
I worked on a project in my first few years as a product manager to expand the language capabilities of a product search engine. To be useful as a PM, I had to work with engineering to evaluate whether to use pre-packaged components or build brand new ones. Understanding what pre-built packages enabled us to do, and how difficult it’d be to produce those ourselves, was crucial to making the right decision. Besides, we had to consider the impact on potential roadmap features – both the flexibility and limitations we’d have – based on the chosen approach. It was crucial for me as a PM to be actively involved in this process.
Do simple programming exercises
If you’ve never programmed, take a simple course in Python and Java or C programming. Writing a few lines of code and having it execute well will start giving you a sense of how a computer works.
Learn the vocabulary of your area of interest
Each product area has a lingo. Learn what things mean. Machine learning may sound intimidating until you’ve read a bit about it. What is a “cloud” product? Is it better than an on-premise product? Why or why not?
Build an app with a friend
I find that in Silicon Valley, building an app on the side gets you good street cred for a PM role. I have my hesitations about how effective that is in helping you develop the skills necessary to be a PM in a larger organization. But, it’s a great way to gain experience prioritizing what to build when. You’ll learn to evaluate benefits relative to development cost. You’ll also learn to define the spec for a developer to build.
I have now been a product manager for over six years and have worked with many different teams. I never stop learning and continuously encounter new technologies and technical concepts. However, by remaining curious about the technology and diving deep into technical concepts when relevant, I have been able to help the team without a computer science degree.
Your PM job will be about a lot more than technical expertise, but being technically curious will make the journey more fun for you and your teammates. It will also help you build credibility, both with your engineering counterparts and your customers. So whatever you do, don’t shy away from the challenge, ask questions, and keep learning!
Last Updated on August 22, 2020 by Omar Eduardo