Thursday, January 13, 2011

The case of the wise flamer: In Memoriam Edsger W. Dijsktra

If you go to my desk at my current workplace, you'll find a bunch of books on top of each other. As of today, the topmost of them is a hungarian edition of Structured Programming from Ole-Johan Dahl, Edsger W. Dijsktra and Sir C. A. R. Hoare, which was published originally in 1972, although the articles in it are much more older.

Most people would have think that a book from 1978 has nothing to say about our current affairs. Nothing could be further from the truth. In fact, those things which stand for nearly 40 years might be the ones that are universal to our profession. Do believe me, a lot of things do!

On one side, Dijsktra could easily be one of the greatest flamers you've ever met. It's enough to look at this article about programming languages from him - don't forget he got a Turing award for his achievements in that field! - to know what I'm speaking about.

Most of people will remember him by the Dijsktra Algorythm, maybe the disappereance of the Goto statement from modern programming techniques. Not that subsconciously we wouldn't use a lot of his findings when we're writing programs.

One of his greatest misunderstandings I believe was about his rejection of versions, and version control systems. He said in an interview in 2001 that "[programs have version numbers] even with decimals like version 2.6 or 2.7, that's nonsense; while version 1 should have been the final product". He didn't see the need of tracking changes of a software, as they were to be implemented only once, perfectly.

He even wrote his articles this style: on paper, by hand.(In fact, he used a kind of blogging sometimes I'm tempted to use this way :) He gave photocopies of these handwritings out to friends and collegaues, who may have distributed it themselves.

Never forget that he was the strongest advocate of TDD in the early 70s, when Kent Beck, the inventor of unit tests was most probably still occupied by more childish stuff (born in 1961.)

Still, I do believe that his mistake was based upon the perception that customers, or whoever is to order the software from computer scientists - he used this title consequently - had a perfect, clear idea of how the product should look like, even if expressed vaguely. Maybe later we will be able to return and reveal the truths behind this platonian thinking, still it's probably not the way most our industry experiences software specification on a day-to-day basis.

(I do believe this thought has some base to stand, although I feel myself too weak and early to prove its pillars unfortunately)

Another of his mistake was that he didn't count on the externalities: it may be that the environment of the system changes aggressively in the lifetime of the product, wether it be development or production phase. For new needs, one must respond with a set of changes, the quickly the better (or at least faster than the competition does).

Also, it may be that our users have different needs than we may have thought: although we have scientific measurements to prevent this, as with social sciences, there's always a large area of mistake or unexpected things to happen.

His style sometimes makes it harder to understand the deep messages behind his writings: truly a genius of his age, Dijsktra was able to form our just-born-then industry, yet his findings may have much more long-term effect than we would be able to perceive, even today.

So, go and find some of his influental papers and interviews, maybe even those linked in this article. Then think about it: what if the really important things are to stand regardless of the centuries, even if a flamer says them first?

No comments:

Post a Comment