Here is Richard Feynman writing on the ease of criticizing theories,
and the difficulty of forming them:
The problem is not just to say something might be wrong, but to
replace it by something — and that is not so easy. As soon as
any really definite idea is substituted it becomes almost immediately
apparent that it does not work.
The second difficulty is that there is an infinite number of
possibilities of these simple types. It is something like this. You
are sitting working very hard, you have worked for a long time trying
to open a safe. Then some Joe comes along who knows nothing about
what you are doing, except that you are trying to open the safe. He
says ‘Why don’t you try the combination 10:20:30?’
Because you are busy, you have tried a lot of things, maybe you have
already tried 10:20:30. Maybe you know already that the middle number
is 32 not 20. Maybe you know as a matter of fact that it is a five
digit combination… So please do not send me any letters trying
to tell me how the thing is going to work. I read them — I
always read them to make sure that I have not already thought of what
is suggested — but it takes too long to answer them, because
they are usually in the class ‘try 10:20:30’.
(“Seeking New Laws”, page 161 in
The Character of Physical Law.)
As a sometime designer (and longtime critic) of widely used computer
systems, I have seen similar difficulties appear when anyone
undertakes to publicly design a piece of software that may be used by
many thousands of customers. (I have been on both sides of the fence,
of course.) The design possibilities are endless, but the deep design
problems are usually hidden beneath a mass of superfluous detail.
The sheer numbers can be daunting.
Even if only one customer out of a thousand feels a need to express a
passionately held idea, it can take a long time to read all the mail.
And it is a fact of life that many of those strong suggestions are
only weakly supported by reason or evidence. Opinions are plentiful,
but substantive research is time-consuming, and hence rare.
A related phenomenon commonly seen with software is
bike-shedding,
where interlocutors focus on surface details like naming and
syntax… or (come to think of it) like lock combinations.
On the other hand, software is easier than quantum physics, and the
population of people able to make substantial suggestions about
software systems is several orders of magnitude bigger than
Feynman’s circle of colleagues. My own work would be poorer
without contributions — sometimes unsolicited, sometimes
passionately urged on me — from the open source community.
If a Nobel prize winner thought it was worthwhile to read his mail on
the faint chance of learning a good idea, I am certainly not going to
throw mine away.
(In case anyone is still reading this, and is wondering what provoked
a meditation on the quality of one’s inbox contents,
I’ll simply point out that the volume has been very high, for
many months, on the
Lambda-Dev
mailing list, where the next version of the Java language is being discussed.
Bravo to those of my colleagues who are surfing that wave.)
I started this note thinking there was an odd parallel between the
life of the physicist and that of a software designer. On second
thought, I’ll bet that is the story for anybody who works in
public on something requiring special training.
(And that would be pretty much anything worth doing.)
In any case, Feynman saw it clearly and said it well.