The problem with technical management is often that good developers stay where they are (they are NEEDED), but bad developers are often promoted because it's convenient, and because they don't exactly cling to their technical position - they're expendable.
So you have people that were bad coders to begin with and that don't have lots of technical know-how and experience making decisions that impact the project in very bad ways (like choosing absolutely the wrong frameworks or tools that HAVE to be used).
Also, good engineering skill isn't rewarded, because - of course! - a management or team lead position has more status and salary than a technical position, because it's worth so much more to the company.
So you have people that were bad coders to begin with and that don't have lots of technical know-how and experience making decisions that impact the project in very bad ways (like choosing absolutely the wrong frameworks or tools that HAVE to be used).
Also, good engineering skill isn't rewarded, because - of course! - a management or team lead position has more status and salary than a technical position, because it's worth so much more to the company.