> I admit I still don’t understand what a PM really does.
In the best case they have a proper technical understanding and do ground the team in reality (i.e. makes sure the team doesn't over analyses/engineer and adds fully unnecessary part).
Then the PM should help the team to come to decisions if the team can't decide weather they do solution A or B and they _seem_ to be equally good wrt. all measurable and non measurable aspects.
Lastly the PM should help to keep all the unhelpful and hinder-some things upper management might want to put on the engineering team away and similar thinks.
The problem is the PM needs IMHO solid technical understanding of the topic in question at the same time they need enough soft skills to nudge the team in the right direction and protect it from upper management absurdities.
I don't think I have yet to meat a person who fulfills this qualities, often they fundamentally lack technical understanding to a degree that they do more harm then good, i.e. in many cases a self managed team with a tech. senior team lead is a better problem. Except if the team lead is not grounded enough and prone to over-engineering, at which point a PM (or second team lead) to ground this person is essential.
What?
> Java isn't that terrible of a language.
Doesn’t mean it’s a good language though.
> Despite being called "engineers," most decision are pure cargo-cult with no backing analysis, data, or numbers
And when people ask for numbers, it is usually because they don’t like your idea
> People who stress over code style, linting rules, or other minutia are insane weirdos
That’s why you need languages with good defaults for formatting and linting (e.g. Go, rust)
> 90% – maybe 93% – of project managers, could probably disappear tomorrow to either no effect or a net gain in efficiency.
I admit I still don’t understand what a PM really does.