12 ms·
On the nature of computing science (1984)
- chromanoid 2y agoWonderful quote! Thank you! Somewhat dealing with "frontend fatigue" right now. This totally hits home.
- NoZZz 2y agoWatch out, sometimes simplicity carries a higher time cost... creating it.
- tmtvl 2y agoWas 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.
- ColinWright 2y agoUsually attributed to Blaise Pascal: Quoting from https://quoteinvestigator.com/2012/04/28/shorter-letter/ https://quoteinvestigator.com/2012/04/28/shorter-letter/ "The French statement appeared in a letter in a collection called “Lettres Provinciales” in the year 1657: "Je n’ai fait celle-ci plus longue que parce que je n’ai pas eu le loisir de la faire plus courte. "Here is one possible modern day translation of Pascal’s statement. Note that the term “this” refers to the letter itself. "I have made this longer than usual because I have not had time to make it shorter."
- pclmulqdq 2y agoThis quote is often attributed to Mark Twain and Benjamin Franklin as well. In one form or another, it actually goes back to Cicero, who I believe is the earliest writer of this idea.
- dcminter 2y agoTwain and Franklin were born after Pascal's death. Which specific quote of Cicero did you have in mind?
- ColinWright 2y agoThis is all covered in the Quote Investigator link given. Certainly it is documented as appearing in Pascal's writing, and both Twain and Franklin postdate that. Certainly if Cicero said it then that would be earlier, but while it is (later than Pascal) attributed to Cicero, there are no writings quoted by Cicero as containing the sentiment. Again, all this is in the lunk page, so I'd be interested if you could provide an earlier reference. Do you have a reference to Cicero's writings where he says this?
- pclmulqdq 2y agoThis appears in his dialogue On Oratory, and the attribution of the modern version of the direct quote to him is a bit of a misattribution because he doesn't say it (ironically) in so few words. The parent I responded to gave the exact Pascal quote, but it has been given in many forms by many writers, all of whom had likely read quite a bit of Cicero. Martin Luther also talked the same way about his sermons far earlier than Pascal. The well-known Shakespeare quote, "Brevity is the soul of wit" is also another (loose) translation of a passage from On Oratory.
- hinkley 2y agoIf you want it to sound intelligent, attribute the quote to Benjamin Franklin. - Benjamin Franklin
- deleted 2y ago[deleted]
- CharlieDigital 2y agoHow microservices are still a default systems design architecture in anything but the largest orgs still puzzles me.
- sgarland 2y agoBecause it gives teams the illusion of fast progress, without being burdened by pesky things like “a consistent API,” or “not blowing up shared resources.”
- hyhconito 2y agoMostly because people are isolated from the consequences of their shitty architectures through the joys of being employable somewhere else.
- BlackFly 2y agoBecause microservices have a granularity that allows a sort of distinction as an architecture that a big ball of mud cannot provide. The sign that the design is bad in the first case is that the services are far too chatty, but that is not a bright line distinction: it is always subjective if the services are chatting too much or not, when is the messaging some kind of messaging spaghetti? The mere fact that you developed your monolith into a big ball of mud is bad design manifest. So microservices make it harder to identify bad design. Designing a modular monolith from the ground up will feel like overengineering to many, until you arrive at the big ball of mud and it is too late. Simplistic is often sadly seen as an effective replacement for the difficult achievement of simple.
- athrowaway3z 2y agoConway's Law was written about 57 years ago. Theoretically, microservices allow for each team to deploy independently, thus the choice is made up front, before any part of the system is designed, because it looks like it reduces the effects of inter-team communication lag. i.e. Docker lets you better push the org chart into production.
- User23 2y agoI always view it as a very good sign when senior leadership is aware of Conway’s Law.
- rramadass 2y agoIt 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.
- hotyuo 2y ago[flagged]
- antirez 2y agoFor 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...
- BadHumans 2y agoPeople are very capable of good design but are not given time to do good design. Temporary band-aids become permanent fixtures and eventually the company is drowning in tech debt. It is a tale as old as time.
- antirez 2y agoTime is one of the dimensions, but I often see (bad) designers to stick with the first idea they have (and if they are not very good, the first idea is likely very bad), then as the idea shows the weaknesses, instead of understanding what is going on, they invent more broken "fixes" complicating even more the original idea. So there is a multiplicative effect of this going on and on. This is why the 10x programmer is not a myth: it would be if we were talking about "I can do 10 times what you do" and that would be impossible if you compare a top programmer with an average one. What happens is instead that a 10x programmer just avoids design mistakes one after the other, so they find themselves doing less and less useless work that in turn complicates things more and so forth. Being a 10x coder is about design, not coding.
- gmm1990 2y agoIt’s strange I started to observe some of this, but seems like the “bad designers” have no concept of design. They’re happy to have their code reviewed but won’t go over the design before starting to write code. I still think you could have multiple levels of skill across design and code implementation though
- mattgreenrocks 2y ago
- recursivedoubts 2y ago> 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...
- udev4096 2y agoInspirational. 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
- mattgreenrocks 2y agoYes, let’s all just give up and stop trying.
- dennis_jeeves2 2y agoNot 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.
- EVa5I7bHFq9mnYK 2y agoSystems 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.
- peterkelly 2y agoAnother great Dijkstra essay: On the foolishness of "natural language programming". https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667.html https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667...
- api 2y agoI 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.
- mrkeen 2y agoI've been doing mostly backend dev, and watching from the sidelines as buzzwords come and go: vmware, virtualbox, puppet, vagrant, ansible, zookeeper, mesos, docker-compose, chef, etcd, docker-swarm, terraform, helm. I don't know what half of them do. But honestly two of them stand above the others: docker and kubernetes. Docker is what your program is, and kubernetes is somewhere for it to live while it's running.
- api 2y agoMy beef with Kubernetes is how hard it is to run and how complex its configuration is. The thing it does is good but something much cleaner seems possible.
- mwcampbell 2y agoWhat are the simpler, more fire-and-forget, approaches that you have in mind as alternatives to Kubernetes?
- slow_typist 2y agoAlso, once a certain technology X is established within an industry, sticking to X can be understood as risk management . Since everyone does it, X can’t be all that wrong. And if X fails, all competing business are relying on it, too. Then, universities include X in their curricula… The result is a market where more grounded approaches to development are outcompeted by stacking abstractions on top of each other, leading to systems that are mediocre in the best case, and killing people in the worst.
- astarbstarcstar 2y agoIronic given the complexity of Dijkstra's various algorithms.
- norir 2y agoFor all of E.W. Dijkstra's brilliance, he had a real problem with misrepresenting opinion as fact.
- OldGuyInTheClub 2y agoI am not a computer scientist but I acknowledge Dijkstra is an honored name in that field. Yet for his shots against academia and industry, he signed it 'prof. dr.' and 'Burroughs Fellow.'
- AnimalMuppet 2y agoTo put it charitably, Dijkstra was unusually sure that his opinions were objectively correct.
- jazzypants 2y ago"I don't know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras." -Alan Kay
- draw_down 2y ago[dead]
- jarbus 2y agoIncredibly well-written. Not all of his opinions stood the test of time, but a pleasure to read nonetheless.
- kardianos 2y agoI feel like this is philosophy in a nutshell.
- revskill 2y agoComplex software is legacy software because you won't have enough money and efforts to keep it more complicated.
- cs702 2y agoA 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.
- 0xbadcafebee 2y agoSo, 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.
- mjburgess 2y agoMy 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.
- blast 2y agoWhat does "materiality" mean here?
- mjburgess 2y agoThat syntax has a semantics -- or, if you prefer, that all useful algorithms have operations which require devices Computer science is not constructive mathematics -- it is not mathematics at all, since `f(x)` means the spatio-temproral state `x` is operated upon by the IO/device action `f`
- woopsn 2y agoThe notion of mathematics as "the art and science of effective reasoning" is grandiose and blatantly wrong, both in the sense eg no mathematics is performed when an animal correctly flees from a fire, and also that this definition would exclude computer science from mathematics when his whole point is to incorporate it (for almost all formal systems are unreasonable). Math and computer science at their core are more it less the same. Both are concerned with manipulating "digital" equipment that is assumed to respond predictably. Equipment is a prerequisite even for pure mathematics - it is interesting in this case because it is the mathematician themself, who agrees to act that way and respond predictably. Physics is implicated in this in that it forms the basis of that agreement. Certainly it did historically. In the 20th century serious attempts were made to justify it on the basis of notions like consistency and completeness; the failure of that project is not yet fully absorbed. To be fair, the results are devastating because they can only really be understood by students after they have invested greatly in mathematics with the idea that all but a few "facts" derive from reason - when in fact almost none of them do.
- asimpletune 2y ago> 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.
- Nevermark 2y agoBut it is a false dichotomy, and a tragic one at that. More constraints can push us to find the better solutions. In our work. And in our life too. [0][1] [0] https://en.wikipedia.org/wiki/Ikigai https://en.wikipedia.org/wiki/Ikigai [1] https://www.japan.go.jp/kizuna/_src/7994686/ikigai_japanese_secret_to_a_joyful_life_pic.png?v=1734339890720 https://www.japan.go.jp/kizuna/_src/7994686/ikigai_japanese_...
- shenbomo 2y agoAnyone knows what paper he was referring to "to be rejected"?
- lincpa 2y ago[dead]
- seltzered_ 2y agoSee also Edsger Wybe Dijkstra's 'On the cruelty of really teaching computing science' http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html 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 https://www.paulgraham.com/road.html (2001)