Communication in Engineering, Software, and Open-source
Tuesday, September 27th, 2011Engineers and developers are not known for being the best communicators. Technical details? No problem. Explaining things in plain English? Err, that’s a different story. I’ve seen entire projects flounder from ineffective communication through my career as an engineer.
Since transitioning to the role of startup founder and open-source developer, communication has become an even larger part of my day. Below is an analysis, including my humble suggestions, for improving the state of your projects by improving your team’s ability to communicate.
A special thanks to Cory Flanigan (@seeflanigan), who gave a talk at Great Lakes Ruby Bash 2011 entitled, Communicating Effectively for Fun and Profit, which prompted me to write this, and also for providing feedback on this article.

Communication is about winning. Whenever you engage someone in communication, it is a competition. Who has the better story? Who can talk/write more? Who has the better code? And if you don’t win, you lose.
False.
Fact: if you win a conversation, then you also lose. This is especially true when your conversation must accomplish some achievable goal.
Actionable discussion
Let’s first define “actionable conversation” as that in which we are trying to achieve some explicit goal, whether to persuade someone of something or to find a solution to some problem.
Now, let’s divide actionable conversation topics as one of two types:
Opinion vs opinion
The majority of the time, there is no right or wrong, only opinion and differing opinion. To consider yourself right here is to disregard the differing opinion as decidedly wrong. Be careful, doing this makes it difficult to ever grow and learn.
Fact (true vs false)
Then there are topics for which there is a right and wrong. Let’s say you and I are arguing the solution to 1 + 1 = 2. You say it’s 2, but I say it’s 3. In a technical sense, you are right and I am wrong.
