Wittgenstein 3. Implementation
The previous post cleared out of the way the most complex aspect, so far, of my impression of Wittgenstein, which was captured in his letter to Ludwig von Ficker: “my work consists of two parts: of the one which is here, and of everything which I have not written. And precisely this second part is the important one.“
In this post, I would like to stay in the more familiar territory and get out of the way the nagging feeling of a very familiar pattern of behavior I observe in Wittgenstein’s writing. I am a programmer, and almost every day I need to understand what business folks need (often not what they say) and how to implement it in an automated process (a program).
One of the traps every programmer gets ones in a while is creating software that does not what was required, but what the programmer could do. We like to apply our technical skills and use any pretense to do it. Otherwise, why we studied other programs for so many years, learning from the best and setting aside the best and the most elegant solutions?
As soon as we see the opportunity to apply what we know, we decide that’s it, that is what we are going to do. Although the business rep continues talking, we do not listen anymore and design already a new system in our mind, convinced that is what was requested. Then we implement it and get quite annoyed when the business says that it is not what they had in mind, not what is needed. We then argue and try to convince them it is the best solution. They push back. We think they do not know themselves what they need. And so on. Every programmer can relate to such a story. Only with experience, we learn to listen to the end and repeat and ask, is that what is needed, and listen again, then do a prototype and ask again, staying in touch with the business all the time in short iterations idea-implementation-validation.
There are also another two good reasons for programmers being eager to write code. First, that is what we were trained to do (or trained self). Second, the more time is spent on understanding the context, the less time left for actual programming. So, when a business person talks about the problem they need to solve, the programmer runs in the head possible approaches trying to re-use already known solutions and to use the familiar tools. As a result, more often than not, the implementation the programmer comes up with is imposed on the problem and the problem is squeezed (and pressed, and twisted, and turned until fits) into the “solution” the programmer can do, not the necessary one.
After writing it, I have realized that this problem is not specific for software development. Every professional is biased towards the means available already. “I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail“, Abraham Maslow said his book The Psychology of Science, published in 1966. The term “Law of the instrument” or “Maslow’s hammer” or “the golden hammer” was widely used since then. Meanwhile, Abraham Kaplan made a similar observation two years earlier in his book The Conduct of Inquiry (1964): “In addition to the social pressures from the scientific community there is also at work a very human trait of individual scientist. I call it the law of the instrument, and it may be formulated as follows: Give a small boy a hammer, and he will find that everything he encounters needs pounding. It comes as no particular surprise to discover that a scientist formulates problems in a way which requires for their solution just those techniques in which he himself is especially skilled.“
And that is what I have noticed, I think, in Wittgenstein’s writings too. The bulk of his two books, especially the first one — Tractatus Logico-Philosophicus — is consumed by the seemingly formal derivation of one statement from the other. But now, when people discuss Wittgenstein’s ideas, they do not talk about the correctness of those derivations. The focus is on the basic premises and the final conclusions.
Even the author himself had to revisit those premises and attempted to write the second book that was supposed to deal with the deficiencies of the premises of the first one. He never finished it. It was finished by his disciples posthumously.