The psychology of collaboration is (in my model, which is of course wrong, just accurate enough to be more useful than ignorance) based on emotions that we've evolved to work together. Most of what I tested and documented over the last decade came from study of failure (most projects fail and you can learn a lot by looking into why), and experience of how to make communities that could survive the kinds of conflict we see. Actually getting a full model for the emotions took a lot longer, finished that a year or so ago.
You can see the results in e.g. the C4 process, our RFC for working together in the ZeroMQ community: http://rfc.zeromq.org/spec:42/C4/
My articles are on http://hintjens.com, starting in 2010 or so.
In professions which are considered more rational and intellectual like programming, there is a danger of discounting the effect of emotions. Emotions are always there under the surface guiding and controlling things.
The more rational the person thinks they are the more they will rationalize their decisions. So when someone proposes using say Protobufs as a serialization mechanism, instead of Thrift, for example, might be doing it because the person who likes Thrift in the group offended them somehow. But that will never come up in the official reason, there will be some benchmark or list of point why Protobufs might be better.
Or maybe they had a fight with their family and they come to work and start shutting down a project and shuffling developers around to feel empowered, and there will always be a seemingly rational reason for it.
Thanks againg for writing that book and sharing your experience. There is just not enough of that, especially focused on open source projects. Some projects naturally converge and discover some of those principles from the toolbox, but having them written down from someone with experience is priceless.
Especially, "how do you feel about what person X is doing?"
It's not a gender thing or even a nerd thing, really. It's the same with musicians, for instance (I used to jam a lot), they can be really reticent about saying what they actually feel about other people.
Basically our fear of being rejected by the group, and shame at having feelings that no-one else is expressing make us unable to speak up. Since few people can debug their own emotional stacks, the fear and shame dominate, and stop the (e.g.) anger at an asshat messing up the project from coming forwards.
So actually asking people the specific question can change a lot. Mostly, I'll start with "are you enjoying this (the way things are going)?" knowing they'll admit "no" and then we can work it out from there.
I believe the correct name for that personality attribute might be 'mature'.
Very interesting. If it is not a secret, can you share a list of guidelines or tips?