Recovering from failure is often easier than building from success.
Even with good programmers and wonderful organization, you can still have a dysfunctional team. Teams fail to produce results for many reasons, and just as we stereotyped different species of programmer, we can also identify categories of doomed development teams—to see what we can learn from them.
Here are some of the classic team disasters. In each case we'll see:
The particular road to ruin
The warning signs (so you can recognize when you're headed in this direction)
How to turn around a team stuck in that particular rut
How to be a successful programmer in that team situation (sometimes despite the team)
Hopefully you won't recognize your current team ...