Since a project of mine recently changed hands I have been thinking a lot about how I would like to collaborate with other people, and what it takes for it to succeed - and how collaboration is killed.
Collaboration in open source
Open source is an interesting place to study collaboration because the people who interact within open source projects often have different backgrounds, work for different companies, come from different cultures, and might not know each other very well.
These are difficult circumstances for successful collaboration, as it is easy to misunderstand what somebody is trying to say or read too much into a statement.
In addition to that, open source rarely offers money, and power is fleeting, as anyone can fork a project and try to do a better job. A person in charge of an open source project wants to attract good contributions, but that means the collaboration has to be successful, and the different opinions and backgrounds have to be taken into account. Some projects make decisions as a group, so you have to convince a majority or often even a supermajority of the group members, making collaborative discussions paramount.
Rules of engagement
While increasing my efforts in open source within the last years I initially had some rough interactions, and even though I was not the only one responsible for some bad experiences, looking at it now I could have done better. Since then I have come up with guidelines to better handle disagreements:
- Act friendly: The nicer and more helpful you are to other people, the more likely it is you will get treated nicely in return.
- Stay calm: If somebody seems snippy or arrogant, do not get antagonistic, as this will only escalate the discussion and move it away from a constructive conclusion.
- Be curious: If somebody argues a point you find obviously flawed, assume they know something you don’t, and try to find out why they have a different opinion.
- Accept differences: Try to find middle ground in cases where different opinions cannot be resolved, and if no middle ground exists, accept that having different opinions is not the end of the world.
- Stay focused: Steer towards the aspects you find most important, as arguing too many things at once easily detracts from what you actually want to achieve.
- Improve yourself: You can always do better, both in terms of discussion arguments as well as discussion style.
- Stop if necessary: If somebody clearly is not ready for a merit-based discussion or you become too frustrated, do not continue the discussion.
You might think these rules are trivial, but the challenge is to follow them even under difficult circumstances. Even when you think you have the right answer you have to stay humble and be open to changing your mind, and these rules remind me do that. And do not underestimate the power of stopping a discussion, or at least pausing it, if things get too heated.
According to my experiences collaboration is sabotaged by just a few bad behaviors:
- Pulling rank: Ordering people to do something they object to without first resolving the argument can be bad in so many ways. You are giving up on the discussion and setting a precedent that other opinions (except yours) do not matter, reducing constructive discussions in the future.
- Selfishness: Objecting to doing the heavy lifting yourself while having no problems offloading that work to someone else. Collaboration only works if you treat others as well as you treat yourself, maybe even giving other people some leeway while being strict with yourself, therefore setting an example for others to follow.
- Ignorance: Not engaging in the discussion, instead persisting on what you want or think, even though you do not substantiate it. You are not listening, just talking.
While pulling rank is very obvious, the other two are often only noticed over time and can slowly erode collaboration the longer it is going on. Looking back I have had a few interactions where people were totally ignorant, yet I didn’t notice it at the time. In a way this is good, as it is better to assume the best in people. Being overly pessimistic in collaborations is another collaboration killer.
Agile software development incorporates many of the positive aspects I noticed in open source collaboration. It focuses on more merit based discussions (and more communication between team members), making decisions and plans as a team (instead of only one person deciding) and more closely defining how plans are made and how to follow through on them.
While I have not worked in an agile team so far, it seems like a big step in the right direction. The more self organizing a team becomes, the less likely it is that collaboration killers are tolerated.
Until recently, I was involved in a project that was based on what I would call “true collaboration”. Me (with my company) and a friend of mine (with his company) had a joint-venture going where none of us were in charge, we only made decisions together.
At first this seems tedious - what if we just cannot agree on something that is important? The reality was that we had quite a few heated arguments, yet because we had to find a solution, we always did. Sometimes it was a compromise that nobody was happy with, sometimes one side gave in, sometimes there was a sort of “trade”. Over time I noticed the solutions we came up with were better than any one of our opinions on their own. Taking both sides into account created a better outcome, as we came from different backgrounds and together the solution was more complete.
I hope I can find more true collaborations like this, where you can work with people you respect, have intense disagreements at times, finally achieve some compromise and then have a beer together to celebrate. Unfortunately the above mentioned joint-venture has already turned sour since my friend left the project and the new people in charge have shown all three collaboration killer traits.
On the bright side, if you are looking for somebody to collaborate with, I am looking for new projects to work on.