Edsger dijkstra interview

Edsger W. Dijkstra was an influential computer scientist and is well known for his contributions to graph theory algorithms. But, in fact, he also had a deep programming perspective. Here are notes extracted from one of his interviews that give us so much insight.

  1. Software version numbers 2.6 or 2.7 are nonsense. While version 1 should have been the finished product, software companies always try to sell incomplete versions first. It needs not be any good. As long as they can fool people into buying it, you can always make better versions later.

  2. There are various schools of programming. I tend to see them as Mozart versus Beethoven. When Mozart started to write, the composition was already complete. His manuscript was done in one go, in beautiful handwriting too. Beethoven was different, he was always doubting and struggling. He started writing before he finished the composition and then glued corrections onto the page. Once, he did this nine times and when they peeled them, the last version proved identical to the first one. That iterative method of programming is somehow a very Anglo-Saxon custom which permeates British education. People learn, when they write, not to try to get it right the first time. Just write what's on your mind and then rewrite repeatedly to get the product you want.

  3. Competent programmers know that the size of their heads is limited, so they approach their work with humility, avoiding cleverness like the plague.

  4. In 1970, I first went to explain to companies how to develop programs. First, I went to Paris and then to Brussels. In Paris I delivered a lecture at the Sorbonne and people were very enthusiastic. On the way home I gave the same presentation at a big software company in Brussels, Belgium, and it was a huge failure. That was probably the worst speech of my life. Later I found out why: their management didn't like flawless procedures because the company survived on contracts to "maintain the software". Programmers aren't interested either, because the thing that excites them the most is not knowing what they're doing. They feel that if they know exactly what they are doing, it is not challenging, just boring work.

  5. In 1969, shortly after the Apollo moon landing, I met Joel Aron, the software lead for the Apollo program, at the NATO Software Engineering Conference in Rome. I know that each Apollo spacecraft will have 40,000 more lines of code than the previous one. I don't know what a "line" is for code, but 40,000 lines is definitely a lot. I was amazed that they could get so much code right, so I asked Joel: How did you guys do it? He said: Do what? I say: write so much code right. Joel said: "Right?! In fact, just five days before launch, I found an error in the code that calculated the orbit of the lunar lander. The code reversed the direction of the moon's gravity. It was supposed to attract, but it turned out to be repelling. I found this mistake by chance." My face went pale and I said: How lucky are these guys? "Yes." Joel agreed.

  6. Software testing can determine that software has bugs, but it cannot be used to determine that they are bug-free.

  7. The elegance of a program is not an optional luxury, but a factor that determines success or failure. Elegance is not a matter of aesthetics, nor a matter of fashion taste, elegance can be translated into feasible technology. The Oxford Dictionary's definition of elegant is: "ingeniously simple and effective". In fact, a program is manageable if you make it a truly elegant program. The first is because it is shorter than the most alternatives, and the second is because its components can be replaced by other solutions without affecting other parts. Strangely enough, the most elegant programs are often the most efficient.

  8. When there were no computers, programming was no problem. When we had a few weak computers, it became a medium problem. Now that we have gigantic computers, programming becomes a huge problem.

  9. My first programming years were a bit strange compared to now because I was writing a program for a computer that had not yet been built. While my friends built the machine, in the meantime, I wrote the relevant software. I was used to not testing a program because the machine to test it on wasn't finished. I Knew that you had to create something that you could keep under your intellectual control.

  10. Professionally, I was strongly influenced by my mother. She was a brilliant mathematician. Once I asked my mother if geometry was hard. She said: not at all as long as you understand all the formulas by heart and if you need more than five lines, you're on the wrong track.

  11. Why do so few people pursue elegance? This is the truth of it: If there is a downside to elegance, it's that you need to work hard to get it, and good education to appreciate it.

References

sticker #3
Subscribe to Dwarves Memo

Receive the latest updates directly to your inbox.