Very nice, stephen; insightful and well-written, ++
I've learned these lessons in over mumble years in the profession, and the sad part is that sometimes I still repeat the mistakes.
Ultimately, you have to keep in mind that computer programming is a human activity, and people are people, whether they be programmers, managers, testers, or what-have-you. Their motivations may be different than yours, but equally valid nonetheless. Unless and until you learn to deal with your collaborators on a human level, your project won't succeed. Open-source types (for lack of a better term) who've been around a while end up learning this lesson in very public ways. ;-)