I focused on this question as I tried to transition into Product Management. Here is my experience.
1. You will not get hired into Product Management because of your Computer Science skills. Your understanding of CS concepts will be a small part of your role as a PM. Your engineering counterpart will own technology and implementation decisions. Or any other decision that need a good understanding of CS concepts. A caveat, each company has a different recruiting process and some require you to be able to ship code. If your background is not technical, you’ll be at a huge disadvantage going for a Product role in such a company. I’d look for opportunities in companies where the Product role doesn’t include shipping code.
2. Yet, understanding CS concepts will make you a more effective Product Manager. It will also help you build better relationships with engineering. Some situations when it helps to understand the product include:
- During feature design. You will often work with a designer and an engineer to define a user interaction. It helps if you understand the tradeoffs between user experience and the cost to build.
- Debugging issues. You will often be asked why a product isn’t working as expected for a customer. It is helpful to know what is wrong without distracting engineering from development. Understanding the components of the system can help you do this. You can often reframe the “issue” reported as a feature request or user error. This can reduce the pressure to ship a ‘fix’ immediately.
- External discussions. A PM is often asked to talk to potential customers of their product. This is particularly the case in enterprise products. These conversations will often include technical questions. Answering the questions without bringing in an engineer can help the PMs credibility. It can also speed up the sales or integration process.
Now, what you’ll realize with each of those scenarios is that the knowledge that you need is varied. As such, I’d recommend that you approach the problem with general curiosity. Start learning about a technology used in the type of product that you’re interested in managing. If you don’t have a particular desire, pick a few of the most common technologies to start learning. Here are a few examples of things that helped me.
- Product’s infrastructure components. It is critical to understand the technology components that power your product. At BloomReach, we use many technologies to build our product. Amazon Web Services (AWS) cloud infrastructure. SolrCloud for our search engine. Cassandra for our database. We’ve built our codebase in Java and Python. Our dashboards may use the Play framework, AngularJS, or ReactJS. Each technology has limitations that you should understand as a product manager. They will guide what efforts you may need to focus on to improve the system. Understand them at a high level. What can you use this technology for? What are its limitations? How does using it help/hinder the product development? What are the implications in product performance? How does it impact the user’s interaction with our product? We developed foreign language capabilities last year. At the time, we had to evaluate whether to use pre-packaged components or build brand new ones. As a PM, I collaborated with engineering to make a decision based on the pros and cons of each approach. The cost to build and impact to potential roadmap features was a key consideration.
- 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?
- Potential exercise, build an app with a friend. I find that in Silicon Valley building your own 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 an effective 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.
In general, I’d suggest that you are technically curious. Your PM job will be about a lot more than technical expertise, but being technically curious will make you more effective. It will also help you build credibility, both with your engineering counterparts and your customers. Don’t be afraid to ask questions and read up on things in your spare time.