I've actually had some experience on both sides of the table.<p>When I did my first software startup I had no idea how to code, but since I'm pretty good at convincing people, calling bullshit, diplomacy, etc. I managed to get funded and got together a development team. I thought I had a pretty good grasp on what needed to be done, timelines, etc.<p>Fast forward some years. I've learned to code (Not a genius by any stretch of the imagination, but I know the basics) and I simply cannot comprehend how I could have managed a software company without knowing how to code. There are so many things that seem obvious now that I completely and utterly missed that it's amazing we ever got anything done.<p>A rewrite of Eric Raymond's famous quote captures it pretty well: <i>"As a manager, coding is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better manager for the rest of your days, even if you never actually code a lot."</i>
At my last job (doing .NET Web Dev), I spent the first 2 years under a manager who knew absolutely nothing about programming or really anything technical for that matter. He was, for all intents and purposes, originally hired as a henchman to weed out bad employees because the CEO hated being the bad guy. That made him the COO and as such, the head of IT as well because of how the company was strucuted (or not structured).<p>The last 2 years saw me working under someone who had been programming for a living for many years. While he was, by his own words, a bit out of his prime and behind the times, the difference between working for the two was night and day. Deadlines became more attainable, requirements became more realisitic and when difficult decisions arose we had someone who could go to bat for the IT department as apposed to someone who always sided with the "sales" portion of the business.<p>In my mind, anyone directly overseeing a developer should know how to program as well. In small organizations and start-ups, that's not always possible, but if you're somewhat established and you have an IT/IS director, manager, CIO or what have you that can't program a lick .... I think there's an issue there.
Yes, they should. Programming languages have these mysterious features called "loops", "conditionals" and "recursion". Without an intimate knowledge of these, you just can't understand <i>why</i> your subordinates do what they do, and you certainly won't have the ability to judge the accuracy of estimates.<p>Does this mean that managers should be promoted from within the ranks of programmers? Yes, that's exactly correct. Should managers be "non-technical"? Absolutely not. It just doesn't work.
If anyone in the Western Canadian area wants to help make "Programming For Managers" a real course, let me know. I don't how much easier my life would be/have been if some of my previous superiors knew what the hell they were talking about (it would have been a lot, I suspect).
It has been my experience that direct managers of technical people who don't have at least a competent grasp of <i>both</i> technical perspective and business perspective are doomed, almost without exception. This is fairly obvious when you think about it, because these people are a bridge between two worlds, and need to command the respect of both.<p>The problem is that most managers with only one perspective don't seem to appreciate what they're missing, think they're a good manager anyway, and often receive positive reinforcement of this illusion when the side they do understand (and probably support too much, at the expense of the other side) praises them.