But I've worked with guys who spent most of the time surfing the web or were really territorial with their code. Or teams that were just shitty at communicating with each other so you had frequent misunderstandings or blocking. Or people who said "Yeah, this will be done in a week" and then after one week they say one more week etc.
Some are personal issues that should probably be handled by a boss and some are just shitty engineering practice that could be fixed by conversations (provided someone actually knows good engineering practices). But that also requires people not to get defensive and say that we have always done it this way and it works or become angry because they think you are calling them out.
Instead agreeing about things like these:
1. The work we do is agreed upon by all and is visible on a board or website.
2. Every day in the morning we chat for 15 minutes about how things are going and if we need help.
will fix some of them in my experience and the angry people can whine about the process for a while instead of directing that anger at team mates.