Early in the history of Microsoft, our view was, if you were very smart then you could learn how to manage people, how to do business, how to do marketing.
It turns out that talent isn’t that fungible. Somebody who is great at doing software in many ways is often not the right person to manage people. I think the thing to recognize is these different kinds of ability, and to think through, as you build a team, “How do you get the right mix?”
Although I probably wouldn’t have used the word “fungible” myself, I agree with Bill’s sentiment. Programmers are not developers. And developers are not managers. But, I would add something else to this:
A manager who doesn’t know what it’s like to be a programmer or a developer cannot be a manager of programmers or developers! Management is a special combination of leadership ability and empathy. Your manager needs to be able to stick his neck out for you, because he knows you. And he needs to be able to provide wisdom — not because he’s smarter, or because he’s more mature, but because that’s now his role. Managers are the guys who protect you from everyone not on your team, who make sure you have everything you need to innovate, and who provide wisdom because their job description includes, “must be able to dispense timely wisdom at all the critical moments.”
Management also includes vision. Some software developers become managers and their vision alone leads their team. Where that kind of energy isn’t possible, lots of empathy, planning, and wisdom are necessary.