There’s a story I like to tell, which I vaguely remembered as originating at Bell Labs or Xerox PARC. A researcher had a rubber duck in his office. When he found himself stumped on a problem, he would pick up the duck, walk over to a colleague, and ask them to hold the duck. He would proceed to explain the problem, often realizing the solution himself in the middle of the explanation. Then he would say, “Thank you for holding my duck”, and leave.
I love this story. Years ago, Tamar Shinar and I agreed that the “Thank you for holding my duck” expression is better if it is understood to not mean the colleague didn’t contribute, as then it can be used in boundary cases without slight. But finally, someone asked for the source, and I looked for one and failed.
This is a gentle step-by-step guide through the abstract and complex universe of Fragment Shaders.
This means that, if engineering organizations naively adopt an RFC process without bolting on some sort of explicit decision-making step, the process quickly breaks down. Without some sort of process to move towards a decision, the default outcome of an RFC is "`no`" — so you end up with the kind of inaction the person I quoted up top was frustrated about.
In corporate settings, RFC processes tend to lead to endless discussion, especially as the organization grows. At one place I worked, the entire 150+ person engineering org was invited (and encouraged!) to comment on RFCs. This means there’s always someone who has another question or another concern, so discussions tend to run long enough that they fully burn out whatever initial energy to get things done was there at first.
This in turn rewards people who can write to exhaustion. I know one engineer who bragged that his trick of getting his proposals accepted was that he would write RFCs so incredibly long that nobody would want to spend the time to read the whole thing, thus making sure nobody objected. (He was pretty proud of this “hack”; I was horrified.)
Further, these processes are insensitive to expertise. Since everyone is invited to participate, they tend to put experts in a domain on even ground with everyone else. That seems really backwards to me: why go to the trouble of hiring or developing domain experts if we don’t give them the power to exercise their expertise?