Thursday 8 October 2009

Fried Eggs

When I was 24, I was asked to attend an emergency breakfast meeting to discuss the then current project. The Director had heard that the project was 1000 times slower than it needed to be. The Salesman's hands were shaking as I explained the performance results and their implications, in front of a group of people all more senior than myself. It was heresy, but once said, everything changed for the better, though I didn't know that as I spoke. I learned a lesson that day that I have never forgotten.

We try to work on a consensus basis on the PostgreSQL project. Some people assume that to mean that we must all agree. Others complain that this means everybody has a veto.

The committers are the eventual decision makers on the PostgreSQL project. Good decision making processes require collection of information prior to making a decision. Sometimes we don't have time for that, sometimes we do. "When" is always part of decision making.

Opinions must be openly disagreed with, if there is a clear and important reason and you are qualified to do so. That is the only way to give a decision maker all the information they need to take the right decision. Those decisions may require overruling an objector. Once a decision has been reached, it is best to quieten disagreement, since we don't have endless time and must move onto other matters. It is sometimes difficult to know when a decision maker speaks whether it is a decision, or an opinion. If we all (including, most importantly, a decision maker themselves) assume that every word spoken by a decision maker is a firm decision then that quickly leads to poor quality decisions. Consensus does not imply acquiescence, it requires both speaking and listening, in all directions.

Mahatma Gandhi said "Honest disagreement is often a good sign of progress."

If your disagreement is honest, then speak it clearly, politely and impersonally. Once decisions have been made, that disagreement should be put to one side, at least for this release. Honest disagreement is not a challenge to authority, it shows respect for the goals we all work towards.
Honest agreement is also important. If you agree, do not withhold that for partisan or political reasons.

All easy to say, much harder to do.

(The lesson? Never eat fried eggs while trying to say something important.)