It's important to understand that in operations management, the conventional wisdom (which is probably largely correct) is that the best manager is someone who is really good at managing. You need someone to manage X? Get a good manager. You need someone to manage Y? Get a good manager. It doesn't really matter so much what X and Y are. Certainly, you'll need good team leads and so on who are familiar with X and Y, but your managers should know how to manage, first and foremost.
The problem is that we believe this is not true for software development. Actually, I think that it's this kind of mindset that leads one down the road to a lot of bad development methodologies. To date, we've managed to defend having the Chief Software Architect (my boss) be basically in charge of the whole software development group, but we're getting increasing pressure to grow the team significantly (which we want to do) and to bring in a VP of engineering to manage this increasingly large team (which we're not so sure we want).
Anyway, this brings me to the question: we're looking to gather some references about why it makes good business sense to have developers be managed by developers. One really good one is this article by Paul Graham (at least parts of it discuss this point), but one article by one guy is probably not good enough. I'd also be willing to hear countervailing viewpoints, too (I'm not really the "I've made up my mind, and now I want some data to back me up" type that this post may make me sound).
I do believe that if we make a good case explaining why this is the right thing to do, then we will be able to convince the senior leadership. For example, the sales organization has managed to let themselves be run like a sales organization (that is: by quotas and commissions and such), rather than like a line organization, but they did this because the senior leadership understood why this was important. We need to pull off the same thing, now, for the development organization.
Thanks in advance for all the good reading.
------------ :Wq Not an editor command: Wq