I would go as far as to say there really are only two things a lower- to mid-level manager should focus on. First--and this is by far the most important thing--she should make sure her subordinates have the best possible environment to do their jobs. The second responsibility is hiring the right people. With these two ingredients in place, whatever she does on top of this would actually harm the performance of her team.
What usually surprises me about large organizations is how little power the managers have over these two points. A manager in charge of internal applications development may negotiate the functional specs with the business, but have no influence whatsoever over the hardware that's supplied to the developers.
A bad one will make you aware of every microissue their boss has to worry about, and makes you code in some terrible things in order to please them.
A good one acts as a firewall between their boss and their subordinates. Bad ideas from above are pushed back (as much as they can), lots of independent (and usually fairly random) requirements are combined into something logical, and my resulting problem set is something reasonable to create, test, and maintain.
A boss with programming experience will be able to negotiate a deliverable that's internally consistent enough to make for a good product. They do some of the up-front thinking to reduce the problem down before it's even given to me.
A nontechnical boss just sees a spreadsheet of checkboxes that we have to complete. They're like a simple IO controller: send requests, wait for completion.