Communication

What matters most in team software development is communication. When problems arise in development, most often someone already knows the solution; but that knowledge doesn't get through to someone with the power to make the change. This occurs internally when I ignore my intuition, but the effects are compounded when communicating between people.

Sometimes problems are caused by a lack of knowledge rather than a lack of communication. There's nothing you can do about these problems beforehand, since you didn't know. "Ctrl-shift-S is already assigned in Polish Windows. Who would have thought?" Once you find a surprising problem, communication can help you solve it. You can listen to people who have had similar problems in the past. You can talk as a team about how to make sure the problem doesn't recur.

Perhaps this sounds like a perpetual coffee klatch with everyone sitting around "caring and sharing" and no one doing anything. Other values held by the team keep this from happening. However, motion without communication is not progress.

When you encounter a problem, ask yourselves if the problem was caused by a lack of communication. What communication do you need now to address the problem? What communication do you need to keep yourself out of this trouble in the future?

Communication is important for creating a sense of team and effective cooperation. Communication, though, is not all you need for effective software development.