Programmers at Work – Follow Up

It is fascinating to read things I said 20 years ago. The good news is that there is nothing terribly embarrassing in the interview. Hardware has developed incredibly since then: terrabyte memories, the Internet, GPS, cellular infrastructure was not even dreamt about. With software the progress has been disappointing, for example the boot time for a PC has not changed much despite of a factor of thousand improvement in chip speeds. Two areas where software has been incredible: games and search engines – these I would not have believed then. 

With the end of the Cold War and having traveled more, I could reconnect with my earlier experiences with the Ural-2 and the Danish Gier and I now remember more details. I was astounded to learn for example that both the Ural and the Gier were descendants of the original von Neumann computer from the Institute for Advanced Study. There were some superficial differences in the architectures that prevented me from recognizing the underlying architectural unity.

Computing has always been a sensual experience for me – in the interview I refer to the “exhilarating thunk” sound of the Ural’s keyboard, and the “firm click” when touching the buttons. Later I describe the visuals and the smells. I could have added that I even saw a Russian engineer tasting the bits – at 200 volts for a true value, he simply licked his finger and lightly touched the pins on the back panel to see if they were tingling or not. Today the visuals are much better, but about the only other feedback we get from the machine is that the fans turn faster when the computing load increases – it is as if the fans were doing the work.

Talking about early influences, I gave a talk a few years ago “Everything I needed to know I learned at Regnecentralen.” This was a little exaggeration for an anniversary celebration, but it is fundamentally true. Our kindergarten experiences, so to speak, affect us the deepest. In the interview I gave the example of the Gier Algol compiler – I talked about it later in a talk “The Rosetta Code”. I also learned – thanks to Google – that Dijkstra called this compiler a “masterpiece”.

I am surprised why I did not come out more on the side of “trade” in the issue whether programming is and art, a science, or a trade. But maybe this is a sign of progress. We do not call surveying a science – it is clearly a trade – even though Gauss himself was once a surveyor. In the same vein, programming today is much more a trade than art or science.

I stressed that the cleanliness of the code has to start with physical cleanliness. With today’s development environments it is easier to get clean looking code, but it is still pretty easy to decide at a glance that the code is bad – by the identifiers, by the juxtapositions, by the size of the expressions, or by evidences of code copying.

We talked a bit about Hungarian naming conventions. This is something that we still use, if anything more intensively than before. It is still controversial, but also still valid. Especially valid is the idea that it is very difficult to talk about abstract things without giving them names. I am amazed when applicants who graduated from the best colleges struggle with simple problems all the while failing to name anything. This comes back in the interview several times, for example when I recommend the Polya book “How to solve it”. In the problem solving checklist on page 1, Polya clearly says: “Introduce suitable notation” as one of the first steps – after “What is the unknown? What are the data?” Yet this is still something not taught well.

I am happy with the discussion of the programming process with the emphasis on data structures and invariances to be maintained, rather than the details of the code. Doug Klunder, who wrote most of Excel, was great at that. Again, I am amazed how programmers today still start writing complex code when solving a problem without ever deciding what the state is and what the invariances are. OOP should have helped in this regard, but unfortunately it just created a separate focus to the methods which then give the programmers an illusion of orderly progress.

I predicted that Excel would move from Mac to Windows – not that it was a difficult prediction. Today few people realize how Excel was the first major business application for the Mac while hundreds of millions of people use Excel on Windows. This was success beyond our wildest dreams.

I am happy for having pointed out that hanging onto “simplicity” would make us poorer. Just look at the early mouse wars whether they should have one or two buttons. At Microsoft we fortunately bet on two buttons and let Apple do the popularization work with their junior offering with one button. In contrast, at this moment I happen to use a Logitech wireless laser mouse with the two classic buttons, two wheels that click and three other smaller buttons. Admittedly this is a little too much, but I could not live without the scroll wheel, for example. But simplicity is a still a continuing pathetic excuse to cling to the status quo.

I was just starting to fly helicopters at the time of the interview. Since then I managed to continue flying fixed wing, instrument rules, jets, and – something I would not have believed at the time – even spacecraft as a spaceflight participant.

I’ve read some of the comments on my interview and on the whole book and it is very gratifying to know that so many people were influenced by it in positive ways. Now if only the computer science instructors at the colleges would read, if not this book, but Polya at least!