December 23rd, 2024

E.W.Dijkstra: Simplicity is a great virtue ... complexity sells better.

E.W. Dijkstra's discourse advocates for integrating diverse disciplines into computing science, promoting its recognition as a formal branch of mathematics, and emphasizing simplicity and enjoyment in the simplification process.

Read original articleLink Icon
FrustrationAdmirationSkepticism
E.W.Dijkstra: Simplicity is a great virtue ... complexity sells better.

E.W. Dijkstra's discourse at a summer school reflects on the nature of computing science, emphasizing its multifaceted aspects and the confusion surrounding its identity. He critiques the current state of computing education, suggesting that it should encompass various disciplines, including philosophy, psychology, and economics, rather than focusing solely on technical skills. Dijkstra argues that computing should evolve into a formal branch of mathematics, where methodological concerns take precedence over mere factual knowledge. He envisions a future where computing science significantly influences mathematics, akin to the historical impact of physics. However, he acknowledges the challenges of achieving simplicity in a field that often values complexity, both in academia and industry. Dijkstra encourages a shift in perspective, advocating for the pursuit of elegance in computing, which he believes is essential for success. He concludes with a call to prioritize enjoyment in the simplification process, rather than succumbing to the pressures of complexity.

- Dijkstra emphasizes the need for computing science to integrate various disciplines beyond technical skills.

- He advocates for computing to be recognized as a formal branch of mathematics focused on effective reasoning.

- The discourse highlights the tension between the appreciation of simplicity and the prevailing preference for complexity in academia.

- Dijkstra encourages finding joy in the process of simplification within computing science.

- He envisions a future where computing has a profound influence on mathematics, surpassing historical impacts from physics.

AI: What people are saying
The comments reflect a diverse range of opinions on Dijkstra's views on simplicity and complexity in computing science.
  • Many commenters agree that achieving simplicity in software design is challenging and often requires significant effort.
  • There is a critique of the tech industry's tendency to favor complexity, often due to poor design practices.
  • Some express skepticism about the practicality of Dijkstra's ideals in real-world applications, noting that "fun" does not always lead to meaningful advancements.
  • Several comments highlight the philosophical implications of Dijkstra's work, suggesting it raises questions about the nature of computing and its societal impact.
  • There is a recognition that while Dijkstra's ideas are inspirational, they may not always align with the realities of modern software development.
Link Icon 27 comments
By @antirez - 4 months
For the academia reward system, maybe Dijkstra was right. But if you work in tech, you quickly discover that most complexity you find around is not introduced because it sells well, but because most people are incapable of good design. Then, sure: since it sells better there is little pressure in the management to replace them with people that can design...
By @rramadass - 4 months
It is a short paper well worth reading in full. The full quote is;

Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.

Another good quote is;

To which we may add that, the less the new science is understood, the higher these expectations. We all know, how computing is now expected to cure all ills of the world and more, and how as far as these expectations are concerned, even the sky is no longer accepted as the limit.

The analogy raises, for instance, the questions which current computer-related research will later be identified as computing's alchemy, and whether this identification can be speeded up,

Describes the current ML/AI craze perfectly.

By @CharlieDigital - 4 months
How microservices are still a default systems design architecture in anything but the largest orgs still puzzles me.
By @tmtvl - 4 months
Was it Bernard Shaw who wrote something to the effect of 'if I had more time I would have written a shorter letter'?

Whoever it was, I think the same holds for software: creating simple software is harder than making complex software.

By @peterkelly - 4 months
Another great Dijkstra essay:

On the foolishness of "natural language programming".

https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667...

By @norir - 4 months
For all of E.W. Dijkstra's brilliance, he had a real problem with misrepresenting opinion as fact.
By @api - 4 months
I have a weird hypothesis about the “worse is better” phenomenon which is what I think he’s getting at.

In back office / cloud / IT type stuff I wonder if complex things like Kubernetes win over simpler approaches precisely because they are more expensive and labor intensive. As a result of being labor intensive they pick up more users who after investing in climbing their learning curve become champions. Simpler or more “fire and forget” systems require less labor and so win fewer converts.

By @EVa5I7bHFq9mnYK - 4 months
Systems consisting of hundreds of billions of floating point weights whose internal workings no one can understand, sell very well. So he was on point here.
By @recursivedoubts - 4 months
> Hence my urgent advice to all of you to reject the morals of the bestseller society and to find, to start with, your reward in your own fun. This is quite feasible, for the challenge of simplification is so fascinating that, if we do our job properly, we shall have the greatest fun in the world.

I'm pretty much the polar opposite of djikstra, all application almost no theory, but he was a real one...

By @mjburgess - 4 months
My views on Dijkstra have soured over the years. He now represents a high priest of a "discrete mathematics" view of computer science which has wreaked a great philosophical mess over the whole project. He, childishly, associates complexity, materiality, and the human interface with "profit" -- it is by no means profit at all -- it is just a puncture to his platonistic circumscribed project.

Personally, I'd prefer if everything he represented was properly demarcated by 'mathematics', leaving its complex, material, physical realisation to 'computer science'. The failure to do this has indoctrinated a generation of people into a mysticism I'm not found of, to say the least.

By @NoZZz - 4 months
Watch out, sometimes simplicity carries a higher time cost... creating it.
By @asimpletune - 4 months
> Hence my urgent advice to all of you to reject the morals of the bestseller society and to find, to start with, your reward in your own fun.

Honestly that sounds pretty nice.

By @0xbadcafebee - 4 months
So, the nature of computing science should be to have fun. I like that idea, in theory... the problem is, "fun" rarely pushes one to do the really hard work needed for significant improvement, that isn't fun.

The hard sciences seem to lead to more real-world applications quicker. Software science only seems to advance when used by tech companies to sell ads. But there's not that many applications for software to perform that function, so there's not really that many material improvements.

They keep coming up with new ways to advertise (who'd have imagined an interactive navigation map that advertises burgers?). But the computer technology that controls the lives of the common man has not progressed much past the 90s. The hardware has gotten denser, sure, but the software has bloated at the same pace, without providing a significantly improved or different user experience. It's still just clicking windows and paging through media, with basically the same software working the same way, just re-written 20 times over.

These new forms of generative AI certainly have the capability to sort out information more efficiently, and skip a lot of the more manual programming required to provide features. But AI was never necessary to take a prompt and turn it into an action, as all the car nav systems in the world have shown for years. Yet for some reason I can't quite fathom, only cars have audible user interfaces? And we traded tactile interfaces for glass screens... because it's prettier?

I don't care about simplicity or complexity, any more than I care about how antibiotics are produced. I care that I can take a pill and get better.

Similarly, it would be great if it were just a little bit easier to do simple things, like check my bank statement, without worrying about "cyber threats", or jumping through hoops when the next password replacement fails, or having to upgrade my app for the 3rd time this week before I'm allowed to check the bank statement, or having to click through offers for yet another credit card, or navigate a complex tree of "features" that varies from app to app, and month to month. I just want to read my god damn statement.

I don't know if the philosophy of producing this technology will ever be resolved. But I've stopped caring. The state of computer science today is, I've given up hoping for something advanced. I'll settle for something that isn't painful.

By @jarbus - 4 months
Incredibly well-written. Not all of his opinions stood the test of time, but a pleasure to read nonetheless.
By @cs702 - 4 months
A though-provoking essay that makes me think "yes, that's exactly right," again and again, whenever I re-read it. Highly recommended.

Please consider using the original title: is "On the nature of Computing Science."

The essay is about much more than simplicity versus complexity.

By @dennis_jeeves2 - 4 months
Not just true of code but of everyday life. Just look at our financial system : extreme complexity, designed to exploit the masses and benefit the few, it still sells.
By @revskill - 4 months
Complex software is legacy software because you won't have enough money and efforts to keep it more complicated.
By @chromanoid - 4 months
Wonderful quote! Thank you! Somewhat dealing with "frontend fatigue" right now. This totally hits home.
By @shenbomo - 4 months
Anyone knows what paper he was referring to "to be rejected"?
By @udev4096 - 4 months
Inspirational. But I think it's almost impossible to create simpler systems, especially the ones that get updated very often. Sure, in the beginning, it would be elegant but down the line, the cost of elegance keeps increasing and most people will trade if off with complexity
By @kardianos - 4 months
I feel like this is philosophy in a nutshell.
By @seltzered_ - 4 months
See also Edsger Wybe Dijkstra's 'On the cruelty of really teaching computing science' http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036... (1988)

...and compare it to say, Paul Graham's 'the other road ahead' https://www.paulgraham.com/road.html (2001)

By @astarbstarcstar - 4 months
Ironic given the complexity of Dijkstra's various algorithms.