I was under the impression that we promote based on who games the promotion system best.
Also, pretty much all non technical lower level managers were disaster. And issue was not just their lack of tech knowledge in pure form, but their insecurity, inferiority complexes and what not everybody else had to deal with. And profound not understanding of culture around tech just lead to completely unnecessary misunderstanding.
Lack of technical knowledge in the context of managing technical people imply that you will fail in social aspect too.
Engineers are a deeply opinionated species that will not heed the advice of a man they deem to be inferior to them in technical ability. Technical competency based promotion is about managing hubris and egos.
For the second, I have a hot-take: "All problems in tech are work estimation problems."
And so too is who gets to be manager. Nothing annoys an engineer more than a manager who estimates arbitrary times to tasks. Similarly, nothing annoys a manager than being unable to establish accountability for work effectiveness of an employee. So non-technical managers set up metrics (LOC, Hours worked, tickets moved) for accountability. Average Metrics are bad and bad metrics are disastrous. Metrics are exploited by the politically savvy, set up micromanagement structures and discourage those who are actually well aligned with product success. A good engineer makes work-estimation easier, avoiding the need for some of these toxic structures.
What matters is finding the 10x to 1000x value thing to build, and putting resources (usually many people) building it. It doesn't matter how long it takes, as long as it's something people need and can afford and you are able to build it.
This is something that Microsoft tried, at least, to get right: pay/rank was mostly divorced from job function.
What's stranger is that managers write more code than high level (not line level) "org tech leads" who sit in meetings all day.
I dunno, certainly at IC5 (so I think IC4 now) level at FB, my manager was totally judged on the output of her team, and strongly discouraged from working on her own projects.
Meanwhile, at the same level as an IC, I was working on my own projects but mostly helping others accomplish theirs.
I consider myself highly technically competent, but if you asked me to lead a team, delegate, etc., I would crash and burn. I just don't have the interpersonal and communication skills to set expectations.
Could I learn those skills? Oh, certainly. But why? The work doesn't interest me. The more I'd go up the management chain, the more I'd get disconnected from the technical work that I actually find interesting, and my day is spent in bullshit meetings where we'd rehash the same bullshit plans on a weekly basis.