6 ms·
This reminds me of Jonathan Blow's talk. Software decays just like everything else if we don't tend to it. Preventing the Collapse of Civilization / Jonathan B
by nthingtohide 2y ago
This reminds me of Jonathan Blow's talk. Software decays just like everything else if we don't tend to it.
Preventing the Collapse of Civilization / Jonathan Blow (Thekla, Inc)
https://www.youtube.com/watch?v=ZSRHeXYDLko https://www.youtube.com/watch?v=ZSRHeXYDLko
Software technology is in decline despite appearances of progress. While hardware improvements and machine learning create an illusion of advancement, software's fundamental robustness and reliability are deteriorating. Modern software development has become unnecessarily complex, with excessive abstraction layers making simple tasks difficult. This complexity reduces programmer productivity and hinders knowledge transfer between generations. Society has grown to accept buggy, unreliable software as normal. Unless active steps are taken to simplify software systems across all levels, from operating systems to development tools, civilization faces the risk of significant technological regression similar to historical collapses.
- _hao 2y agoI think that talk might be Jonathan Blow's most important work to date actually. I love The Braid and The Witness, but "Preventing the Collapse of Civilization" managed to articulate what at least me and my circle of devs have talked about and discussed for long time, but were never quite able to put into words. I'm very grateful for people like him and others like Casey Muratori, Mike Acton etc. who continue to point this out very real danger in the (at least) last decade. Unfortunately my stance is that fundamentally things won't change until we get hit with some actual hardware limitations again. Most devs and people in general prefer a semblance of a working solution quickly for short-term gains rather than spending the actual time that's needed to create something of high quality that performs well and will work for the next 30 years. It's quite a sad state of affairs. With that said I'm generally optimistic. There is a small niche community of people that does actually care about these things. Probably won't take over the world, but the light of wisdom won't be lost!
- bathtub365 2y agoOftentimes there isn’t a need for something to work for the next 30 years as the business will change in a much shorter timeframe and software exists to serve the business. While I agree that software quality varies wildly if the business can’t get off, the ground because the software isn’t ready, the software team will quickly stop existing with the rest of the business.
- 1dom 2y agoThe way I interpret the decline of software is that part of the problem is because more software has been written with the mentality that it doesn't need to last 30 years. It's a self-perpetuating issue: people build stuff saying "it won't/can't last 30 years" for various reasons (money, time, skill, resources, expectations, company culture, business landscape etc). So then software doesn't last 30 years for those same various reasons. The idea that we think systems did used to last longer is probably some survivor bias. However, software that has survived decades was probably created with a completely different set of methodologies, resources and incentives to modern software.
- BobbyTables2 2y agoPractically speaking, software should at least outlast one’s employment at a particular company. Writing bad code to just get past the next sprint or release is madness.
- naasking 2y agoWriting bad code for any reason is bad, the question is whether you can write good code to get the next release out. Or are you saying there's no such thing as good code that meets the next release' requirements?
- BobbyTables2 2y agoI think many people write sloppy code blindly thinking they won’t have to worry about it again.
- bigiain 2y agoThat's kinda the wo9ld business model of outsourced development teams...
- eastbound 2y agoLinux and Java has survived since 1995-1998, which is the dusk of times. We swap JS frameworks constantly, but when we’ll reach a good paradigm, we’ll stick with it. At one point, React might be the final framework, or rather, one of its descendants.
- dinkumthinkum 2y agoIt’s interesting that all three of the people you mention are very concerned with performance, something most programmers don’t even think about anymore or think they aren’t supposed to.
- FridgeSeal 2y agoAs a group, we have trained many, many programmers out of even considering performance with the proliferation of quotes like “premature optimisation is the root of all evil” ands ideas like “who cares, just get a faster computer/wait for hardware”. Premature optimisation is bad, but there’s now so many devs who don’t do _any _ at all. They don’t improve any existing code, they’re not writing software that is amenable to later optimisation, inefficient architectures and unnecessary busywork abounds. Are we surprised that years of “product first, bug fixes later, performance almost never” has left us with an ecosystem that is a disaster?
- anymouse123456 2y agoAs someone who used to quote this quote, I've come to believe this one line has caused nearly as much damage as the invention of NULL.
- _hao 2y agoYes, people think that writing performant software is something that's nice-to-have when in fact if you program with the intention of things being performant then that branches out to better overall design, better user experience, better quality etc. It means you actually care about what you're doing. Most people don't care and the results are apparent. We're surrounded by waste everywhere. Bad software wastes resources like money, electricity and most importantly - time. The fact that people don't stay long enough in companies or work on a long project themselves to see the fruits of their labour down the line is a point that is discussed in some of the other comments here in this thread. I agree with it as well. In general if you job hop a lot you won't see the after effects of your actions. And the industry is such that if you want to get paid, you need to move. To reiterate - it's a sad state of affairs.
- cageface 2y agoYou can get all the software quality you want if you're willing to pay for it. Users have now been taught that $10 is a lot to pay for an app and the result is a lot of buggy, slow software.
- 0dayz 2y agoThe problem is that we generally don't have anyone a good track record of what good software is valued at, it USED to around 300-500$ and with companies being incentivized to go subscription based who knows intuitively what that is.
- dartos 2y agoWe’ve also taught users that extremely expensive software like SAP and Blackboard are also crap (at least from an end users perspective)
- 59nadir 2y agoI work in a two man team making software that is 500-1000 times faster than the competition and we sell it at ~40% of their price. Granted, this is in a niche market but I would be very careful in stating price/costs are the entire picture here. Most developers, even if you suddenly made performance a priority (not even top priority, mind you), wouldn't know how to actually achieve much of anything. Realistically only about 5% or so of my former colleagues could take on performance as a priority even if you said to them that they shouldn't do outright wasteful things and just try to minimize slowness instead of optimizing, because their entire careers have been spent optimizing only for programmer satisfaction (and no, this does not intrinsically mean "simplicity", they are orthogonal).
- thefz 2y agoI can't take Blow seriously after his meltdown on how difficult it is to test games on different OSes while some developers already released on multiple platforms... all in a one man's band (i.e. https://www.executionunit.com/blog/2019/01/02/how-i-support-windows-mac-and-linux/ https://www.executionunit.com/blog/2019/01/02/how-i-support-...). Aside, he's treated like a celebrity in the game developer niche and I can't understand why.
- ryandrake 2y agoLink to the meltdown? I could use a good chuckle this morning.
- jhatemyjob 2y agoLook up Indie Game: The Movie
- JasserInicide 2y agoHe has some good takes (like the talk he gave in the OP) but also has some questionable ones. How he feels on work-life balance comes to mind. He seems to legitimately hate having to employ other people to help create his games.
- the_mitsuhiko 2y agoIt can be difficult and at the same time be possible. Clearly he also released his games on multiple platforms. Braid I think was everywhere from Xbox 360, Windows, Mac, Linux, Switch and mobile phones.
- 2y ago
- williamcotton 2y agoThere are maintenance costs and then there is depreciation/amortization.
- alabhyajindal 2y agoAll Jonathan Blow talks, or rants more accurately, are the same. He personifies old man yells at cloud.
- chrz 2y agoAn opinionated ontake from a veteran is the best content mate
- washadjeffmad 2y agoThat's a feature. Permanent systemization of short term worldviews and lenses is pretty horrifying. That's how those techno-theocratic civilizations in pop culture happen. Imagine if a company had been able to systemize the whims of a paranoid regime, allowing them to track and spy on their citizens with impunity in secret, and the population became so inured to the idea that it became an accepted facet of their culture. Or what if a political party dominated a state and systematized a way to identify and detect oppositional thought, stamping it out before a counterculture could ever arise. Maybe that thought was tied to a particular religious, ethnic, and/or cultural group. What if these companies are here today, selling those products to the highest (nation-state) bidders, and the methods they're employing to keep the conceptual wheels turning at scale rely on filtering that selects for candidates who will gladly jump through abstract hoops set before them, concerned only with the how and never the why of what they're doing.
- jack_h 2y ago> Software technology is in decline despite appearances of progress. While hardware improvements and machine learning create an illusion of advancement, software's fundamental robustness and reliability are deteriorating. Modern software development has become unnecessarily complex, with excessive abstraction layers making simple tasks difficult. This complexity reduces programmer productivity and hinders knowledge transfer between generations. Society has grown to accept buggy, unreliable software as normal. Unless active steps are taken to simplify software systems across all levels, from operating systems to development tools, civilization faces the risk of significant technological regression similar to historical collapses. I haven't watched that talk by Blow yet so maybe he covers my concern. I think you have to be mindful of incentives structures and constraints. There's a reason the industry went down the path that it did and if you don't address that directly you are doomed to failure. Consumers want more features, the business demands more stuff to increase its customer base, and the software developers are stuck attempting to meet demand. On one hand you can invent everything yourself and do away with abstractions. Since I'm in the embedded space I know what this looks like. It is very "productive" in the sense that developers are slinging a lot of code. It isn't maintainable though and eventually it becomes a huge problem. First no one has enough knowledge to really implement everything to the point of it being robust and bug free. This goes against specialization. How many mechanical engineers are designing their own custom molding machine in order to make parts? Basically none, they all use mold houses. How many electrical engineers are designing their own custom PCB(A) processing machines or ICs/components? Again, basically none. It is financially impossible. Only in software I regularly see this sentiment. Granted these aren't perfect 1-to-1 analogies but hopefully it gets the idea across. On the other hand you can go down the route of abstractions. This is really what market forces have incentivized. This also has plenty of issues which are being discussed here. One thought that I've had, admittedly not fully considered, is that perhaps F/OSS is acting negatively on software in general. When it comes to other engineering disciplines there is a cost associated with what they do. You pay someone to make the molds, the parts from the molds, etc... It's also generally quite expensive. With software the upfront cost to adopting yet another open source library is zero to the business. That is there is no effective feedback mechanism of if we adopt X we need to pay $Y. Like I said, I haven't fully thought through this but if the cost of software is artificially low that would seem to indicate the business and by extensions customers don't see the true cost and are themselves incentivized to ask for more at an artificially low price thus leading to issues we are currently seeing. Now don't misread me, I love open source software and have nothing but respect for their developers; I've even committed to my fair share of open source projects. As I've learned more about economics I've been trying to view this through the lens of resource allocation though and it has lead me to this thought.
- nradov 2y agoThe notion that software defects could destroy civilization is just so silly. I think some people have the impression that the quality of tools and technologies was somehow better before. But since the beginning of the industrial age, most of our stuff has been kind of crap. You might see good quality stuff preserved by enthusiasts or museums but that's survivorship bias and what most people used was worse. People muddle through somehow.
- bdangubic 2y agoexcept everything fucking runs on software now mate…
- nradov 2y agoIt used to be everything ran on mechanical machines and analog electronics. That stuff failed all the fucking time. We're no worse off today with software.
- bdangubic 2y agoI wonder if there is a mechanical thing that can launch a nuclear missile or fuck up X billion devices that rely on GPS… mechanical shit was local, electronic shit is global, not comparable at all
- SamPatt 2y agoDropping nukes on Japan was about as mechanical as you can get. The first half of the 20th century excelled in mechanical destruction. Thus far, the electronic age has been much less bloody.
- bdangubic 2y agoit is remarkable we are comparing this but hey, we’ve done crazier things on HN :)
- 2y ago
- turdprincess 2y agoAs an opposite view point I work on a 10 year old legacy iOS app which has almost no abstractions and it’s a huge mess. Most classes are many thousands of lines long and mix every concern together. We are fixing it up by refactoring - many through adding abstractions. I’m sure code with bad abstractions can scale poorly, but I’m not clear how code without abstractions can scale at all.
- epolanski 2y ago> Most classes are many thousands of lines long and mix every concern together. That's quite unrelated to abstractions. It's just poorly written code, for whatever reasons may have led there.
- turdprincess 2y agoAbstraction is a an abstract word, but as an example, I would consider the process of refactoring a big piece of code which mixed together api requests and view presentation into a 2 classes (a presenter, and an api client) as adding abstraction, especially if those new components are defined by interfaces. And I’d rather work in a codebase where the owners are constantly doing such refactors than not.
- sethammons 2y agoI'd call that separation of concerns. I call that design more than abstraction.
- danparsonson 2y agoBut how do you define "poorly written"? edit: if you feel the need to downvote, feel free to share why you think my question is problematic - I think that "poorly written" to describe excessive code file sizes is such a wooly phrase as to be basically useless in a discussion like this, and when examined more closely usually comes down to "poorly abstracted". But I stand to be corrected.
- 2y ago
- ChrisMarshallNY 2y ago> Society has grown to accept buggy, unreliable software as normal. That’s really the entirety of the issue, right there. People aren’t just accepting bad software, they’re paying for it, which incentivizes a race to the bottom. It’s like “The War on Drugs,” that looks only at the suppliers, without ever considering the “pull,” created by the consumers. As long as there are people willing to pay for crap, there will be companies that will make and sell crap. Not only that, companies that try to make “not-crap,” will be driven out of business.
- Animats 2y ago> Society has grown to accept buggy, unreliable software as normal. That's easy to stop. Disallow warranty disclaimers.
- immibis 2y agoBye bye FOSS. The EU has something like this, the Cyber Resilience Act, and it has an exception for FOSS.
- BeFlatXIII 2y ago$0 paid = $0 worth of guaranteed correctness. Paid software = implied guarantees of functionality. As it should be.
- immibis 2y agoWell, the EU recognized this after pushback, but not all lawmakers do! It works out okay to require compliance from paid vendors - if it costs more to comply with security regulations, that will be included in the price. But it's not reasonable to impose requirements on volunteers that way. After the modification, the EU regulation puts the burden on paid vendors who use free software (who can afford to pay for it), not on free software volunteers.
- lproven 2y ago> Bye bye FOSS. Don't be silly. Paid software == a requirement to be of merchantable quality: to do what it claims, do it reliably, and keep doing it, so long as clearly stated requirements are met. If this means all paid apps become tiny simplistic things in weird restrictive type-safe languages like Ada -- win! Free software == you break it, you get to keep both halves. Our liability is what you paid, nothing more.
- danparsonson 2y agoI think this is a straw man personally. Think about what happens when two people video call each other from opposite sides of the world. How many layers of hardware and software abstraction are they passing through, to have a reliable encrypted video conversation on a handheld computer where the majority of the lag is due to the speed of light? How much of that would you like to remove? I would venture an alternative bogeyman - "move fast and break things" AKA the drive for profits. It's perfectly possible (as illustrated above) to reliably extract great performance from a tower of abstractions, while building those abstractions in a way that empowers developers; what's usually missing is the will to spend time and money doing it.
- chrz 2y ago> How many layers of hardware and software abstraction are they passing through, to have a reliable encrypted video conversation on a handheld computer where the majority of the lag is due to the speed of light? And then the video player crashes trying to play an ad
- deleted 2y ago[deleted]