I wanted to write on this topic for a long time, but recent piece by Joel Spolsky has made me do this.
Joel talks about having less conversation in a project and communicate less during software project. The point is logical: the more people involved in decision making, the more time it takes to reach a decision and the less chances of success the project has. Proposed solution is logical as well: limit communication. Do not tell everyone what you are doing and ask their opinion. Decide in small numbers.
I am all for small numbers. Let me decide my own fate. There is one small correction though…
There is a difference between duplex and half-duplex communication. Computer networking distinguishes between those two, however, in a day to day life we tend to forget about half-duplex communication as full duplex is a default:
- Face to face conversation is full duplex.
- Phone is full duplex.
- IM/email is full duplex. This one is not trivial, but the information flows both ways.
- Even web blog/twitter/facebook, that once was half-duplex now is full duplex, as everyone can leave comments.
We are so used with full duplex communication that there is a tendency to think of it as the only type. How it is related to software projects?
I had virtually joined another team during last project. This team held daily sync as the deadline approached and it appears that I misunderstood the purpose of those meetings. I thought that the meetings are there to sync team members regarding their doings, plans, what they did and etc. However, the moment I said: “I am working on a problem A”, the immediate reaction was: "Why don’t you try this”, “You should do that”, “Try to turn this flag on” and etc.
I wasn’t asking for help or directions! I was telling my status so they would know.
This the major difference between full duplex and half-duplex communication. It is good and desired to communicate out your status, plans, what you did, why you are doing this and that. However, this communication is half-duplex. You are not interested in other’s opinions, unless of course you are going full speed into abyss. People have to understand that their opinions are not required, however, they do need to know what their peers have been up to. This knowledge is essential both to prevent duplicate work and to provide a bigger picture.
Communicate out. Do not ask permissions.