I am now on Twitter! Meet me on Twitter here (my nick is pkrumins.)
Or on Google Buzz and Facebook.

I found a great video interview with Edsger Wybe Dijkstra. You have probably heard of Dijkstra’s algorithm. He invented it.
In the interview professor Edsger talks about his thoughts on software development. He compares two very different styles of programming - Mozart style of programming vs. Beethoven style of programming. When Mozart started to write, the composition was finished. He wrote manuscript in elegant handwriting in one go. Beethoven was a doubter and a struggler. He started writing before he finished the composition and then glued corrections onto the page. In one place he did it nine times. When they peeled them, the last version proved to be identical to the first one.
From the video one can understand that Edsger preferred Mozart’s style of programming. Not just programming, but Mozart style of doing things. He says that the most important thing has been the daily discipline of neatly writing down his thoughts.
His daily discipline lead to hundreds of crystal clear scientific papers, which have now been archived in EWD Archive.
You are welcome to watch interview with Edsger Dijkstra:
At the beginning of video Dijkstra criticizes current software release methodology. He says that version 1.0 of should be the finished product. I don’t think he’s right. It’s like Tannenbaum saying Torvalds that Linux is obsolete. Also see “Release Early, Release Often.”
Edsger Dijkstra’s quotes from video:
- Computer science is no more about computers than astronomy is about telescopes.
- The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task in full humility and avoids clever tricks like the plague.
- We should not introduce errors through sloppiness but systematically keep them out.
- Program testing can convincingly show the presence of bugs but it is hopelessly inadequate to show their absence.
- Elegance is not a dispensable luxury but a factor that decides between success and failure.
I found a funny poster of Dijkstra:
Did you like this post? Subscribe here:
If you really enjoyed the post, I'd appreciate a gift from my geeky Amazon book wishlist. Books would make me more educated and I could write even better posts. Thanks! :)

(11 votes, average: 4.36 out of 5)
|
|
|


November 5th, 2008 at 10:32 pm
Wow how does that dude come up with all the cool stuff.
Jiff
November 6th, 2008 at 12:13 am
Ah Edsger Dijkstra, I have so many mixed feelings about this guy.
I’m Dutch myself (and a programmer for that matter) and really admire his theories and papers on programming. He left a great body of work and much of his ideas are timeless.
But in this interview he seemed to be a bitter, patronizing and disdainful old fart who can do nothing else than speak of the evils in commercial software development.
And goodness, how sour he looks in this video. I probably couldn’t stand a day near him.
Lighten up old man, life’s too ffing short to be grumpy. Smoke a joint, empty a bottle of whiskey, get laid and write another amazing algorithm or two.
But please stop whining about how everything used to be better and how you alone know it all.
November 6th, 2008 at 12:18 am
FYI:
s/Professor Edsger/Professor Dijkstra/
s/Tannenbaum saying Torvalds/Tannenbaum telling Torvalds/
Your readers may also have heard of Dijkstra’s essay “Go-To Statement Considered Harmful”.
http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF
November 6th, 2008 at 1:29 am
From vBharat.com » Discipline in Thought - good coders code, great reuse
In the interview professor Edsger talks about his thoughts on software development. He compares two very different styles of programming - Mozart style of programming vs. Beethoven style of programming.
November 6th, 2008 at 5:36 am
I am a programmer myself and I wonder how someone as achieved in academia and intelligent as Edsger Dijkstra would cope in a commercial environment with things like ever changing requirements and time constraints, budget constraints etc. Would the “complete” v1.0 ever get out of the door in time to be competitive or meet the clients’ deadlines?
November 6th, 2008 at 6:10 am
A very interesting video.
I disagree that a program should be born perfect as if it sprang from Zeus’s forehead. Maybe it works that way for a genius like him, but the rest of us have to bash away at it for a while.
I mean, certainly we make outlines of what we want and how we expect to achieve those ends, but very often we encounter limitation or unexpected enhancements that we could not have conceived of before we started coding.
November 6th, 2008 at 8:30 am
I think people here are taking him out of context. When he says a program should be finished at 1.0, he means that it should be bug free, especially as not so long after, he uses the Mozart / Beethoven comparison.
Altogether a very insightful video, I see value in his interview since today’s programmers tend to have more of a ‘code first, think later’ mindset these days, myself included at times.
I don’t like his use of the word “elegance” in programming - elegance is very much dependent upon one’s personal view of what elegant code is.
November 6th, 2008 at 8:59 am
Wow, excellent post. I’m going to read further about this…thanks!
November 6th, 2008 at 11:28 am
First of all: I’m biased, I have such a profound admiration for EWD that my judgments will be clouded, so I’m not going to make any of them. ;-) On the other hand, I’d like to help clarify few things.
@Chris Koo
He had a very clear ideas of what elegance is for him. Not only in programming, but in everything involves thinking; this paper should clarify what he meant with elegance, or better, with mathematical elegance:
http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD896.PDF
or http://tinyurl.com/6dhp5y (HTML version)
This one is a bit longer, but even more explicit, still on the topic of mathematical elegance:
http://www.cs.utexas.edu/users/EWD/ewd06xx/EWD619.PDF
or http://tinyurl.com/6g9v5x (HTML version)
@rougy:
More than “spranging from Zeus’ head”, a metaphor that would describe the way he wrote programs is that he was building up mathematical proofs; in fact, more than a metaphore, it is truth. His research involved deeply axiomatic formal methods of programming. To get a feel of what it involves you can check out this very long paper:
http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD316.PDF
or http://tinyurl.com/6gj2yn (HTML version)
November 6th, 2008 at 7:19 pm
Nice video.
I have a unix related question. Could not find a relevant post, so just asking it here. Apologies for that.
How can I pass a variable to a child korn-shell? I often do rsh to different servers using their alias.
ex. rsh box1 (where box1 is the alias for the physical hostname xxyyzz123). Now i want the new shell to remember the alias I used to come here (i.e. box1).
Is there a way I can achieve the above? I tried exporting box1, but obviously it didn’t work.
Will appreciate any help.
November 8th, 2008 at 8:53 pm
I think the fundamental issue that Dijkstra is bringing to the table with “it is finished before you start” is that to be finished means you grok the problem fully, have solved it, and your solution is 100% correct. For me the crux of this is that our brains are too small to really grok much of anything so extreme elegance is our only path to success. This is very hard, but if we don’t solve it then we are stuck launching people into space “on hope”.
Thank you for sharing this video with us!
November 10th, 2008 at 7:02 am
~ fuffz
http://www.catonmat.net/blog/edsger-dijkstra-discipline-in-thought/#comment-6175
~ Dijkstra
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD619.html
@fuffz: The doctor wrote essays on ‘thinking effectively’ and how rarely it can be found in practice. Your comments reek of ineffective thought. What a shame. Silence is a virtue.
November 14th, 2008 at 10:42 am
November 14th, 2008 at 3:24 pm
nice, really interesting
December 5th, 2008 at 8:14 pm
[…] found a funny poster of Dijkstra: Source: http://www.catonmat.net/blog/edsger-dijkstra-discipline-in-thought/ Posted in Algorithms, Software engineering. Tags: Algorithms, Code, Programming, […]
March 27th, 2009 at 9:29 pm
The video contains an error: the english translation “these are two very different programming styles” should read “You should not give the world what she asks for, but what she needs”.
March 27th, 2009 at 9:40 pm
Another error:
The translation of “We mogen niet uit nonchalance fouten in een programma aanbrengen. Dat moeten we systematisch en met zorg doen.” is not “We should not introduce errors through sloppiness, but systematically keep them out”, but “We should not introduce errors through sploppiness, but systematically and with care.”. So it’s nearly the opposite.
May 13th, 2009 at 3:17 pm
[…] thank you to Peteris Krumins for blogging on this) Share and […]