Alistair Cockburn’s 1999 paper, “Characterizing people as non-linear, first-order components in software development,” argues that the people involved in making software affect the project as much as any method or practice. Although Cockburn calls this “stupendously obvious,” he rightly describes it as often overlooked.
Almost every challenge in building great software is, in some way, a people problem. That challenge may be communicating effectively, dealing with the unpredictability of moods and motives, or figuring out how to harness people’s desire to do the right thing for the team and the project. Few problems are solely technical.
Agile methods put people and their interactions at the center of all decisions. How can we best work together? How can we communicate effectively? Successful software projects must address these questions.
Unless you’re writing software by and for yourself, you will have to deal with at least one other person somewhere during the process. A grudging détente is not enough; you need to work together effectively. This means forming solid working relationships that are built on honesty, trust, cooperation, openness, and mutual respect.
You can’t force people to do this. The best your agile method can do is support these sorts of relationships. For example, one way to engender healthy interaction is to have people sit together and collaborate in pursuit of common goals.
It’s far easier, unfortunately, ...