Why developers should also be product managers

This post is summarizing some observations I’ve made working at Microsoft as a Program Manager, Applied Scientist and Developer. My intention is to go beyond simple narratives like “developers don’t know how to focus on the big picture” and “product managers are clueless middle managers” since it’s easy to make all sorts of negative generalizations based off a few bad devs and PMs but it’s harder to prescribe actionable advice to either side.

PM job description

My first week as a Product Manager I was told that my job description is essentially to

Get shit done

At first this advice infuriated me because I found it hopelessly vague. Does get shit done, mean focus on paying technical debt, make the customer happy, get visibility, write documentation, make the devs happy, make your managers happy etc. And TBH, it took me about 2 years to figure out exactly what a PM is supposed to do.

To figure out the answer to that I tried to look at

  1. What are the common good traits associated with PMs we were hiring?
  2. What are some of the characteristics of the best PMs I’ve met?

The answer to the first question was that the PMs were hiring were generally clear communicators both in writing and verbally, while they may not have all been extroverted they did know how to hold conversations and were generally charismatic.

The second question has multiple answers, the best PMs I’ve seen were either product designers, coaches/managers, scientists and developers.

Part of the reason I struggled so much with identifying what makes a great PM was the sheer variety of them, how could we even lump all these very different people under the same title? I’ll answer that after I go over the developer role.

Dev/Applied science job description

My first week as a developer I was told that my job description is essentially to

Get shit done

Damn was I confused this time. I did not expect to hear the same job description especially after all the noise I made to switch in the first place. Again I followed the same framework I used to figure out what’s an excellent dev

  1. What are the common good traits associated with Devs we were hiring?
  2. What are some of the characteristics of the best devs/scientists I’ve met?

The answer to that first question was relatively simple, performance on a programming interview.

The second question had a simpler answer than that of PMs. The best developers were often also the best communicators, leaders, scientists and programmers. In other words, they were domain experts that knew how to communicate their work, influence their orgs, document their systems and their capabilities.

Why devs should think a bit more like PMs

I was initially confused this conclusion. So the best developers were great PMs of their own products and systems. They were also great developers in their own right, having cultivated a subject matter expertise over several years but it was the clarity with which they spoke about their work which I found most illuminating.

So to conclude I’ll leave you with a list of useful skills to cultivate if you’re a developer besides the obvious do lots of math and code a lot

  1. Learn to write clearly and concisely - a creative writing class or /r/WritingPrompts is more engaging than technical writing classes
  2. Learn to communicate clearly - an improv class is great for this
  3. When someone asks you to do something don’t say yes or no, ask why? “VP X said we should” is not an answer. Asking why a lot will give you lots of useful context as to why something is more important which will sharpen your product instincts
  4. Get to know your users directly - it takes 2 steps for a message to do a roundtrip between 2 parties but it takes 4 steps to do a roundtrip between 3 parties
  5. Be familiar with your high level product metrics - you could be doing the exact same work on 2 products A and B but if B is used by 1,000 times more people you should be prioritizing your time on B
  6. Be familiar with your product roadmap and vision - you can build anything you want and be succesful if you understand both code and product. It’s a superpower
  7. Learn the basics of interface design - read Don’t make me think, The design of everyday things and the visual display of quantitative information