I never really worked with a PM that was good at preventing wasted effort. Or even mediocre at it. Most assumptions I saw them making were incorrect, unless it was a VERY SIMPLE product.
To me this is something that engineering should be doing, just like splitting tasks and double-checking designs.
Of course not every engineer can do it, but some of us have been doing it, negotiating deadlines and deliverables our whole careers. So I don't really understand why our industry insists on having us throw away those abilities.
Everyone needs a counterpart to "trust but verify".
At my company, engineering managers are ultimately responsible for the deadlines and deliverables. It's an anti-pattern for PMs to also be the project managers - that is a bad combo and it should either be owned by the EMs or a dedicated role.
And your example is also a good one, I totally agree, PMs managing deadlines is also not a good idea.
I'm quite fortunate that at the moment I have a great relationship with all of our peer teams and we generally sort it out amongst ourselves. We don't have a product manager involved at all for the last few years.
Also agree about engineering needing to have the PM skillset. Especially in startups.
Where it gets nasty is the new opportunities. Assuming your system of patronage at a company is a good one, there's a lot of work in finding new opportunities in the first place and testing them out. And often the cat herding of developers who do some of this (great!) but want to just run wild without testing any of their assumptions (not so great!) and trying to balance the excitement and creative forces with whatever framing is needed to satisfy others in the company. That gets most complicated when various stakeholders hold opposing positions on "what we should be focused on", and if you don't have a PM absorbing that damage for you, you're just going to end up doing that all day instead of building software.
It would be very hard for a company to build a sustainable business that way.
- Embracing the idea of a manual valuable process is a great one - as engineers we often want to start by automating and/or building, and dive right in - only to realize later we either didn't understand the product, or our stakeholder didn't and now wants changes once they've seen what it does. (Deeper dives here: "Escaping the Build Trap"[1], "The Minimalist Entrepreneur"[2]
- Understanding negotiation is extremely helpful as you are often operating under constraints, and need to get those across to your stakeholders such that you can both move forward together. Negotiation is basically about aligning two stakeholders with different goals and arriving at an arrangement they can both live with. (Highly recommend "Negotiate without Fear"[3])
- Another excellent concept surrounds the theory of constraints and getting good at recognizing bottlenecks, and subordinating all other processes to them. Essentially, if work is piling up somewhere, look at where it is coming from, and attempt to re-route those efforts to something productive (the bottleneck moves the same speed regardless of how much work is piled up in front of it). The classic book on this matter is "The Goal"[4] but a fun retelling more oriented around an IT department is "The Phoenix Project"[5].
[1] https://www.amazon.com/Escaping-Build-Trap-Effective-Managem... [2] https://www.amazon.com/Minimalist-Entrepreneur-Great-Founder... [3] https://www.amazon.com/Negotiate-without-Fear-Strategies-Max... [4] https://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0... [5] https://www.amazon.com/Phoenix-Project-DevOps-Helping-Busine...