I think the Peter Principle addresses a good point, but misses a critical one: the hierarchy itself. Obviously, a manager requires different skills than an engineer, so why should a good engineer be a good manager? This holds the other way round: a good manager is not particularly likely to be a good engineer.
Both is fine, these are just different jobs. However, the problem is that the manager is 'above' the engineer in the generally accepted hierarchy. Consequently, engineers are pressured to become managers for the development. As long as this hierarchy exists, the problem will exist.
My experience in a large ‘industry’ (not IT) is that we: a) are very bad at knowing how to measure performance b) mostly only measure performance as an individual contributor, and not as a manager or leader. (Which is to say: of course managers and leaders have their performance assessed, but it is often via the same tools/questions used for individual contributors, rather than specifically measuring skills in management or leadership domains) Then you overlay this with human factors such as nepotism, conflict aversion, politics, friendships… and of course we screw it all up overall. —- So, to your point, absolutely we’re bad at selecting people who have the aptitude to be a good manager or leader for such roles, and terrible at weeding out people who aren’t suited.
> these are just different jobs
This is a point I came to make. Different jobs also different skillsets. A good solution taken on by some industries is decoupling promotion and salary rises by having separate engineering and management streams where both have similar opportunities for career progression but you can stick to the actually job that you yourself are best suited for. People who have the people/social/political/organization/high-level-view skills and like exercising them can go into management, and those with focus/deep technical expertise/creative problem solving skills, can stay in engineering. People do usually have bits of both of these, but you know if you are stronger in one or the other.
> As long as this hierarchy exists, the problem will exist.
I would encourage you to try to setup a place where no hierarchy exists and see how it goes. In my experience people have wildly different opinions on multiple (even minor) things and without someone to "take a decision", things end up just going in circles.
Of course, if the person taking the decisions repeatedly takes decisions that have a negative longer term impact (much easier to asses on longer term than at the moment you have to take the decision), something should change, but that can include contributors looking for other companies ...
A manager requires very different skill sets from a low-level developer. However, for your senior developer, you need very similar skills as a manager. The manager can skip all the engineering skills, but the senior engineer cannot skip all the manager skills.
Senior engineers and above, they need to know all the engineering skills, but they are most of their time not being engineers, they're being a people person. They're talking to others, they're explaining to other developers what's going on, how to do their job. There is somewhat difference as the manager is thinking only about the organization structure and how good people are, whereas the senior engineer is thinking about how to use people to make the engineering parts better.
They are different jobs, but I think still being an engineering manager benefits from having spent time as an engineer, more than the other way around.
In my org, we have "tech manager" roles, where the compensation is similar to people manager roles. Some sr. tech managers end up with a direct report or two. At the end of the day, upper management asked and got the message that we care more about compensation than titles and implemented this in response. Everyone is encouraged to switch roles, but it feels like it's less about development per se and more about auditioning for upper management (both finding out who plays ball and has the skills).
A manager that is not as good as the engineer they are managing / wasn’t ab engineer, would be managing a team where the actual engineers are doing all the job and taking all the critical decisions. The manager would feel weak whenever the technical side of the work is being questioned, reviewed, planned, explored; they can only listen to the engineers, they’d have no say in most topics, weak arguments, will look lost. However, a manager who was previously an engineer that actually worked for years, and got exposed to many projects, will lead by excellence and can intervene in most subjects with high confidence. As for the managerial skills, one could learn them with time (ofc some of them are naturally given), but i’ve seen managers with very little soft skills, learn a lot, and do well.