Fred Brooks, in his classic, “The Mythical Man-Month,” talks about a chief programmer team (chief programmer, and programmers of lesser hierarchy until you get to the peon). The chief programmer team works when one person can keep all the details about the product in their head. If you use several hierarchical teams of chief programmers, each one keeps their part in their head and the chief-chief programmer keeps the whole thing.
Except that on large projects, that's asking for people to forget important things and make mistakes. We then call these mistakes defects (or bugs or problems).
But what if we didn't have to keep the whole product in just one head? What if more than one person could see the whole product, and learn pieces of the product intimately? That's what agile development is all about.
If you want the best of everyone, not just the chief programmer, consider some of the agile practices:
- Iterative planning and development : No one has to predict the entire schedule or how the entire product will work in advance
- Get small things working: Don't wait unti the end of the project to get feedback on things from the beginning
- Work together: Collaboration makes the best products, whether those are software products, documents, or bird cages
- People create things, processes don't: Make sure you have an environment in which and a staff with whom everyone can work.There's more, but these are the practices that speak the loudest to me.When you create projects that use agile techniques, you break down artifical barriers (hierarchy) and create working teams who develop and release working product. Sounds good to me.