EWD 533

                A Small Study of the Art of Thinking.

"I cannot see that the machines have dethroned the Queen. Mathematicians who would dispense entirely with brains possibly have no need of any."


        This booklet is written by a man that regards himself as a programmer. The plans to write it I have harboured, at least subconsciously, for more than a decade; they came to the surface as the result of a cultural conflict between my professional surroundings and myself. My immediate professional surroundings consisted of pure mathematicians, who, by and large, seemed to ignore automatic computing, and applied mathematicians and numerical analysts, who regarded automatic computers as very useful tools that would have deep consequences for their own profession, but could only appreciate the significance of automatic computers in that specific capacity of being a useful tool. My wider professional surroundings comprised all sorts of "managing scientists" and they, too, considered automatic computers primarily as a tool: first as a device for saving money, later as a device that should give managers a better grip on what they were supposed to manage.

        Without denying the possibility that automatic computers could be used as tools to great advantage, I could not agree and felt very lonely. I had been programming for more than ten years and, as a result of the problems encountered, I was beginning to feel that the automatic computer belonged as much to the problem set as to the solution set. As the years went by, I became convinced that the influence of automatic computers in their capacity of tools would only be a ripple on the surface of our society, compared with the deep influence they were bound to have on our culture in their capacity of intellectual challenge to Mankind that was totally without precedent.

        I came to the conclusion that programming should be considered as one of the most difficult branches of applied mathematics, because it is also one of the most difficult branches of engineering, and vice versa. Obvious as this conclusion is now, it was at the time a hard conclusion to arrive at, for it was then very unpopular. It was a conclusion that met violent opposition when I tried to share it with others. The usual form of rebuttal was pointing to the hundred thousands of people then employed as programmers, the majority of whom had at best third rate intellects —it was a profession that had attracted many drop-outs and people without any formal training at all— : in view of that mediocre multitude the opinion that programming was among the most exacting of all human endeavours was clearly sheer nonsense! (I vividly remember one discussion in which my partner refused to listen to my arguments, and, instead, accused me and all my fellow computing scientists for having failed to design a programming language that would make programming as easy as it obviously should be!) The result was a mental collapse from my side, from which I only recovered when I realized that my considered opinions had been rejected, not because they were wrong, but because they were unpalatable. At the moment I knew that once I would write a little booklet about thinking.

        At last I now embark upon the little project, in spite of the fact that I do not feel quite ready, nor sufficiently equipped for the task. The brutal fact is that I embark upon the project because I need the little booklet myself. The more unusual the problem I tackle, the harder I find it to give a flawless solution. Two of my published papers contain an error, and recently I had to withdraw a submitted paper because a deep error was discovered (this in spite of the fact that it was the fourth or fifth iteration and many others had already studied and enjoyed it!) In retrospect I can see, where I have sinned against my own principles; the only way to prevent me from doing it again seems to make these principles more explicit than I have ever done before, and decide quite clearly for myself what I accept as "a convincing argument". Hence my personal need for the booklet.

*         *         *

        It is now more than thirty years ago when George Polya wrote his "How to solve it.", and I can only recommend his works to everyone who is interested in the process of discovery by the human minds. Polya is very much concerned with "discovery" and gives a kind of checklist of things to try in order that a simple, but somehow unexpected solution is less likely to be overlooked. But, being written in the time they were, his books hardly touch the specific problem of programming that would present itself more and more forcefully as the central one, as machines got larger and faster, viz. how to avoid the unmastered complexity that so easily emerges when we are faced with great multitudes, multitudes of instructions stored, multitudes of variables, multitudes of instructions executed, multitudes of possible computations, multitudes of possible cases, multitudes of possibilities for malfunctioning, etc. By their very power automatic computers created not only new possibilities, but also new problems, problems for which we were not too well prepared.

        In order to get some appreciation for the kind of "multitudes" I am talking about, consider the following numbers. On the one hand we now have machines for which the execution of a single instruction takes about a microsecond; on the other hand it is not unusual that such a machine embarks upon a computation that will take several thousands of seconds. Such a computation will consist of the successive execution of about 1,000,000,000 instructions, and what that means is way beyond our powers of imagination. (Everyone trying to grasp 1,000,000,000 should realize that, while "c" —the speed of light— is the maximum speed possible, continental European cars have speedometers gauged in "nano-c's": one nano-c is very close to 1 km/hour.) In spite of this terrifying gap a programmer has been asked to write the program, i.e. to design the class of computation of which this "unimaginable" one was a member.

        Thanks to the novelty of the programming task, our confrontation with it has taught us a few new things about the human mind. It has confronted us —most rudely, I am tempted to add— with a few of its limitations; it has also forced us to learn to come away with these limitations as well as possible.

        Programmers of the current generation have learned this —if they have learned it at all— the hard way. They have learned it by trial and error, and by —often subconsciously— acquiring the necessary, more effective thinking habits. Since about seven years, these have become the subject of conscious study —usually under the heading of "Programming Methodology"— and since a few years we are gaining (very encouraging!) experience in teaching them. It is now quite clear that a "Course in Programming" should no longer be what it used to be, viz. the teaching of a programming language, but should really be the teaching of programming, i.e. a human design activity in which effective thinking plays a predominant role. With respect to Programming Methodology —to both the development and the teaching of the subject— striking progress has been made, but it is also clear that we have still a long way to go. It is also becoming abundantly clear, however, that this development should not remain confined to the strict limits of the programmer's world.

        For the further development of Programming Methodology it seems desirable that the art of effective thinking is studied in a somewhat wider setting. For, when programmers think about programming, they always want to remain "realistic", and they always keep the overall characteristics of today's existing computers in the dim recesses of their minds. This colours their view of the world of problems and tends to make them blind for human facilities for which today's equipment provides no opportunity for use. But it is exactly the discovery of such human facilities that could provide the incentive to think about new, revolutionary different computer designs.

        The second reason is that already now, what has been discovered and developed for the sake of programming seems to have a much wider significance and to be pertinent to all of mathematics and, therefore, probably a lot more as well.

        All through the ages two educational methods have been used. The one method is that of the guild, where the young apprentice works for seven meagre years under the guidance and supervision of a master, absorbing the necessary knowledge implicitly, by osmosis so to speak, until he may be called a master himself. The result is the craftsman, and craftsmen typically keep their common knowledge as a well-guarded secret among the members of their guild. The other method is the prevailing one at the universities, where the young student studies under the guidance of a professor, who tries to transmit knowledge and skills as explicitly as possible, and who, by formulating them as explicitly as he can, thereby brings them into the public domain. The result is the scientist and his code of professional conduct prescribes to be absolutely open and explicit about his methods and results —a code, which, depending upon the nature of the significance of his work for his employer can cause him grave moral conflicts: it is no accident that in competitive organizations like industries and departments of defense, the craftsmen are more easily employed than the scientists—.

        Up to this day both techniques are used side by side: physicists are mainly trained as scientists, physicians mainly as craftsmen. The training of mathematicians is somewhere in between. Mathematical results are published quite openly and are taught quite explicitly; but how mathematics is done remains largely hidden. To publish besides the results the way (and the order!) in which they were reached, to mention the blind alleys as well, to mention whether the solution was found in three months or twenty minutes, to express the author's personal feelings (of hope, despair, or fascination), all this is regarded as "unscientific", and, therefore, "bad style". (Just try to include such remarks in your publication: if the referees don't object to them, the editor will!) This taboo seems to extend itself over the teaching of mathematics as well. The plain truth is that nearly all trained mathematicians must be regarded at best as self-taught thinkers, most of whom think very clumsily. *)

- - - - - - - - - - - - - - - - - - -
*)     Those who think the above remark too unkind, I refer to the following quotation: "one could not be a successful scientist without realizing that, in contrast to the popular conception supported by the newspapers and mothers of scientists, a goodly number of scientists are not only narrow-minded and dull, but also just stupid. (James D. Watson in "The Double Helix.")
- - - - - - - - - - - - - - - - - - -

        This seems the moment to warn in particular the more competitive of my readers. (The competitive attitude is responsible for much of the misery in this world.) I must warn them that the reading of this little booklet could easily become a very frustrating business for them. The problem is that you cannot read this booklet without realizing that it is also about you that I am writing! To make matters worse, I am not writing about something extraneous —like the colour of your hair— but I am writing about your most intimate, personal and specific aspect: how you think and understand. If your talent for aloofness is sufficiently well-developed, you will have no problem: "Of course I am an amateur thinker! What else could I be? When I come to think of it I have had eight years of piano lessons, but it never shocked me to regard myself as an amateur pianist. And, what is more, my amateur status has never prevented me from enjoying piano playing, nor from trying to improve my technique."

        But past experiences make me fear that a considerable fraction of my potential readers will react more defensively: each step in the transition from craft to science has always been a painful process and has always caused violent reactions from the craftsmen, who feel themselves threatened when what they regard as their private property is made explicit and is brought into the public domain. In this case the easiest defense is to postulate that thinking cannot be taught, as this dogma now fully justifies your decision not to read any further and to write me of as a quack. The alternative is to pretend that you have read and studied my text from cover to cover, but have learned nothing valuable from it, because

  alternative a:    it is just a bunch of trivialities for the simple-minded, but —of course— does not help you in the least with the particularly tough problems you are working on, etc.
  alternative b: it is very valuable, but says exactly what you yourself have been preaching over and over again, but nobody would listen, etc.

So you have your choice; a mixture of (a) and (b), however, is not to be recommended.

Note. Those who feel somewhat offended by the last paragraphs have totally misunderstood them, and should read them again. (End of note.)

        Finally I must warn for one fallacy, viz. that it is vain to think or say anything about thinking in general, because different people are so different: what is easy for the one, is difficult for the other and vice versa, it is all a question of what you are used to, etc. This objection is in essence a confusion between "convenient" and "conventional". Pianists can be —and have been!— trained not to use their thumbs, and for such pianists playing with eight fingers is then "easier", more "natural" than playing with all ten: then their thumbs always come in the way. To conclude from this observation the impossibility of saying anything conclusive about the well-known controversy between the proponents of eight-finger playing versus the proponents of ten-finger playing is nonsense. In a very objective sense the technique of using all ten is better, because more effective, a conclusion which is not belied by the fact that, after the general adoption of the ten-finger technique, there will still be people that will never learn to play a decent tune on the piano. My search for the most effective way of using our brains when thinking is very much like the search for the most effective way of using our fingers at the keyboard. I know that human hands differ from each other —Brahms's hands could do things mine are physically unable to accomplish— yet the well-made human hands are sufficiently similar to each other to admit rather universally valid statements about their application at the keyboard. We all recognize them as well-made human hands, and we also recognize a well-made human brain when we encounter somebody possessing one! The subject of this little booklet is how to use what we then recognize as a well-made brain.


On reasoning, and why to avoid it as much as possible.

        Of all our thinking activities one class stands out very clearly, viz. all manipulations that are formalized —or could readily be so— by techniques such as arithmetic, formula manipulation, symbolic logic etc. I shall denote these activities by the (hopefully sufficiently descriptive) term "reasoning". A single name seems justified, because they have a few common characteristics.

        First of all, whenever they have been applied, in principle there never needs to be an argument, whether they have been applied correctly or not, for each step (which is always one from a finite repertoire) can be checked.

        Secondly, as soon as it has been decided in sufficient detail, what has to be achieved by them, it is no longer a problem, how to achieve it.

        Thirdly —and this is not independent of the first two— we know how to teach them: arithmetic at primary school, formula manipulation at secondary school, and symbolic logic at the university.

        Fourthly, we are very good at doing modest amounts or reasoning. When large amount of it are needed, however, we are powerless without mechanical aids. Multiplying two two-digit numbers is something we all can do; for the multiplication of two five-digit numbers most of us would prefer the assistance of pencil and paper, the multiplication of two hundred-digit numbers is a task that, even with the aid of pencil and paper, most of us would not care to undertake.

        Our emotional appreciation of the various instances of reasoning is quite different, so different as a matter of fact, that quite a few people (I discovered) wondered whether arithmetic should be classified as a thinking activity. But let us be careful: less than 500 years ago a professor of mathematics taught at one of Europe's universities, that for the more gifted and industrious students it was not impossible to master long divisions: his students had to do it with Roman numerals! The majority of us might feel that the introduction of the decimal numbers has reduced arithmetic to a boring routine, but that is probably only, because most of us are so poor at it, and can do no more than laboriously applying the routine steps. Calculating prodigies, however, have many ways of arriving at a result and, as a consequence, can get quite excited by their mental gyrations, excited because they can search for a still shorter way.

        As said: we are very good at modest amounts of reasoning. In many arguments, the amount of reasoning needed often becomes the stumbling block. One of the central themata of this booklet is to relate the effectiveness of the way in which we have arranged our thoughts to the extent in which we have been able to reduce the demands on our limited reasoning powers: lengthy arguments are never convincing!

        Our ultimate goal may be to learn to think as effectively as possible; perhaps we are even more ambitious and would even like to learn how to teach how to think as effectively as possible. But considerations about heuristics —and, possibly, their teaching— should be postponed. Prior to that, we should study a number of "given" solutions. We should study a number of very effective ones, in order to get a clear view of the kind of intellectual elegance we are heading for. In order to satisfy our curiosity, we should compare different solutions for the same problem. In doing so we may hope to discover what to do, what to try and, above all, what to avoid if we are aiming at a reduction of the amount of reasoning.

Note. My very conscious desire to reduce the demands made on reasoning is undoubtedly the result of my professional experience as a programmer, but the seed has been sown nearly thirty years ago, when I received from my mother the shortest and wisest lesson in mathematics. Being asked by me what "trigonometry" was all about and whether it was difficult, she answered "Oh no, it is not difficult: know the formulae, and whenever you seem to need more than five lines for a problem, try something else, for in all probability you are on the wrong track." (End of note.)



Plataanstraat 5
The Netherlands
prof.dr.Edsger W.Dijkstra
Burroughs Research Fellow

(The typing of the above has been completed on 27th November 1975; the manuscript had been written in the summer.)

transcribed by Corrado Cantelmi
revised Wed, 3 Mar 2010