The Development Abstraction Layer - Joel on Software: "Management's primary responsibility to create the illusion that a software company can be run by writing code, because that's what programmers do. And while it would be great to have programmers who are also great at sales, graphic design, system administration, and cooking, it's unrealistic. Like teaching a pig to sing, it wastes your time and it annoys the pig."
This is great. As a person who has created two reasonably large (not huge) software development organizations, I can tell you that what Joel says is true: the vast majority of people believe that organizations are they way they are because that's just the way they are. In fact, every organization is designed, either by default, in which case it is horrible, or by conscious design, where a productive supportive, almost invisible environment of productivity reigns.
Both of my organizations fell into disrepair after I left. That's because those that followed thought things were the way they were just because that's how things should naturally be. In fact, the development organization was something alive that needed to be fed and tuned and supported and gently reorganized as times changed. Without that care and feeding it spirals into a Dilbert comic strip.
I wish I knew how to make a software organization that would survive on its own but I don't. And I know some other successful "software organization architects" whose creations have fallen into disrepair.
As soon as the top-level management support beam that believes in nurturing and tuning and massaging the development organization is gone, the whole thing sinks.
What a bummer.