Should a Product Manager Know How to Code?

Not necessarily. The perception that product managers should code reflects the fact that the discipline of product management is in its infancy — the true nature of the craft is only beginning to be recognized. Requiring product managers to code might be a reasonable hack for identifying individuals who have one aspect of the product manager skill set, but a coding background isn’t strictly necessary and can even be a liability in some cases (as I’ll explain later).


While a product manager doesn’t need to code, they must able to go deep inside the workings of any system, whether it’s a platform on which their product is built, the framework for how  their product’s success is measured, the market in which their product exists, the mental model of their users, or the politics of their organization. What’s required is not a coding background, but a supremely logical, rigorous, philosophical, yet pragmatic mind. For more descriptions of what’s required, see How can I learn to be a good Product Manager?

While there are many talented product managers who do code, I’ve also seen a coding background be a liability for these types of reasons:

  1. They focus too much on the implementation and not enough on their true duty which is to own the vision of the product and strategy behind each iteration.
  2. Because they viscerally feel the pain of some types of code changes, they can be biased against certain product directions.
  3. They clash with the technical lead who feels like their duties are getting stepped on.

Of course, such pitfalls can be avoided. But the key point is that product management is its own distinct craft and there are many pathways to getting there, coding being a popular one.

This post appeared originally on Quora.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s