Earlier quoted context omitted.
>If you're building the average CRUD-plus-workflow application, the last thing you want are superstars who are going to get bored with routine work. Even the average CRUD plus workflow application is only really routine & repetitive if you're using suboptimal tools. If you're good, you're good at choosing the optimal tools and automating all the tedious stuff. In large companies, managers would rather have a mediocre…
You're describing an idealized theoretical team organization model with strict separation between the engineering manager, product manager, and developer roles. In the real world with highly productive teams those roles tend to blur together. In order to produce actual business value — not just churn out code to spec — developers absolutely need to be able to communicate clearly, empathize with customers, and collabo…
Yes, in the real world you sometimes have to work with poor product managers who have little empathy with customers, who deliver unclear specs and vague priorities. That doesn't mean a good developer is somebody who can handle the parts of their job that they failed at.
"Communicating clearly" is important, but when developers fail, they usually fail at writing clear, functioning code, not explaining why they did something to others in a conference room.