Awesome topic, I've been very busy the last few days and haven't had time to participate.
What we've learned with web development teams is that the optimal mix is:
1) A project manager who started out as a developer. This earns him respect, which is the cornerstone of effective management.
2) A senior level resource who's ego isn't too large
3) One or two mid level developers who are young enough, and passionate enough that they will put in extra effort to learn new and better ways.
4) A junior developer who is aggressive and will soak up the skills of the mid level and senior resources.
5) A good external supporting cast - A good tool set, easily accessible System Administrator, responsive and non condescending Q/A, and a leader who sets broad strategic objectives, inspires people, and is fair, honest, and genuine with people.
The worst development teams are:
1) A leader who is dishonest, over states capabilities, and tells clients and stakeholders what they want to hear.
2) A PM who's main objective is revenue maximization over client satisfaction.
3) A mid level developer sold as a senior who has never been the lead on a project of this size/complexity with an enormous ego and an immature approach to teach playing.
4) Juniors with limited training who are left without instruction while the lead struggles mightily with problems
5) Developers doing Q/A on their own stuff
6) No toolset/supporting cast, or the toolset exists but is ignored when the first fire breaks out, which occurs after the first real deliverable.
Anyone who's done software development has experienced the second team more than once in their career. While my experience revolves around software development the principles apply to any endeavor where humans are involved. What continues to amaze me after doing this 30+ years is the synergy that occurs when you have the optimal mix - which is directly proportional to the size of the disaster created when you have the opposite....