I'm curious what the rest of you think of this. Do...
# thinking-together
t
I'm curious what the rest of you think of this. Do you agree that software is in decline (by which the speaker means that it's getting more buggy/less reliable over time)?

https://www.youtube.com/watch?v=FeAMiBKi_EM

e
It's hard to say but it's quite possible. The industry is growing so fast, it's hard to transfer skills fast enough.
j
It's hard to make general statements about an enormous industry. The correctness of distributed databases has improved dramatically in the last 5 years. Multi-language text editing barely existed 20 years ago and is now workable in most UI toolkits. Individual workflows might be more buggy, but overall integrity is a lot better - it's been a long time since I lost data to eg disk corruption. We also expect a lot more from software than we used to. The entry level nowadays is a web app - an always-on distributed system with cross-platform UI. We haven't really figured out how to make that easy yet. It's not like there is generational knowledge that is failing to be passed on - we've never had a culture that consistently made reliable distributed systems with significant shared state. A lot of his examples also seem to be from companies that used to be better at software but are now going into some kind of senile decline. But that has been a pattern throughout history.
p
I agree. I think we try too hard to generate software factory workers instead of competent craftsmen. We create people who can assemble big blocks they don't understand in certain standard ways to solve certain common problems, not people with a deep understanding of their tools and how to solve new problems and create new tools. This is described well at https://wiki.c2.com/?PlugCompatibleInterchangeableEngineers And the prioritization of sticking to some made-up schedule and shipping "on time" over software quality has created a proliferation of bugs at every level of the stack. In the days before the internet was widely available, shipping software on physical media, such as a ROM cartridge, floppy disk, or optical disk, automatically created an incentive for the developers to get the software as correct as possible the first time, because distributing updates was slow and unreliable. Bugs were less common than they are today, and they generally had a smaller impact on the user. The mad rush to ship now and fix later, which comes from the illusion that fixing it later is cheaper because we can just require the user to be connected to the internet and installing updates all the time, leads to code being written more quickly without understanding or planning, and shipped while still error prone and unreliable. Furthermore, as anyone can tell you who has run older operating systems or programs on modern hardware, we have on average gained small amounts of functionality over the years while the software has become drastically slower and buggier. I suspect that the only way to solve this in the long term is to push for a broad societal migration towards Free Software. Free Software authors seem to take more time getting their code as correct as possible before they make an official release. In fact, it's common for them to spend years getting to their 1.0 release, upon which they stake their reputations. On the other hand, 1.0 releases of proprietary software are sometimes broken to the point of being unusable. However, using Free Software will not, by itself, solve the problem. It has its own issues with bloat and complexity over time, but Free Software authors seem, on average, to do a better job of taking the time necessary to pay down technical debt and perform necessary refactoring, so for the moment it seems like our best hope.
t
@Personal Dynamic Media Did you capitalize Free Software because you have a specific definition in mind, or is it just any open-source software? If we consider only projects that take years to get to their 1.0 release because the authors are refining their craft - then yes, I would expect it to be high quality. But very few open-source projects that I've seen meet that bar. Most of the repos I come across on Github were started several years ago, worked on for a few months, and then abandoned. I think whether it's open-source or not, Sturgeon's law applies - "90% of everything is crap."
w
I can't read @Personal Dynamic Media’s mind, but Free Software as such would be a special, value laden subset. https://www.gnu.org/philosophy/open-source-misses-the-point.html
p
Although at a technical level, there are a whole bunch of licenses that count as both (GPL, BSD, MIT, Apache, etc.), from a cultural perspective, the Free Software authors are working to expand and protect the freedom of people who use computers (which these days means pretty much everyone) and care deeply about the usefulness of the software they create, which includes its accuracy and reliability. See https://www.gnu.org/prep/standards/standards.html#Semantics On the other hand, many Open Source projects are just toys that people choose to share or projects that people choose to develop more openly for pragmatic reasons. Of course, these are generalizations and there are many exceptions. My comment above remains mostly true if one substitutes something like "quality Open Source" for "Free Software."
j
While Free Software has an important place in software, I don't see any evidence that the quality of existing Free Software is better than proprietary software when it comes to stability and usability. I think the lack of professionalism in software is a bigger issue, where e.g. programming language and framework adoption is driven by fashion, and education is seen as optional. Shaky foundations makes quality software expensive to produce, and thus supply is limited.
p
@Joakim Ahnfelt-Rønne re "I think the lack of professionalism in software is a bigger issue, where e.g. programming language and framework adoption is driven by fashion, and education is seen as optional." Nicely put! Re "Shaky foundations makes quality software expensive to produce, and thus supply is limited." Can you elaborate? I'm not sure what you're saying here.
j
@Personal Dynamic Media I think that it's fundementally harder to build high quality software from low quality parts (e.g. languages, frameworks, platforms) than high quality parts, and many of the bugs we see are problems with the underlying parts shining through (null pointer exceptions, race conditions, sql injections, buffer overflows, etc.). There is almost no market for paid frameworks and programming languages, so market forces don't work to improve the quality of the parts we build on.
p
@Joakim Ahnfelt-Rønne Okay, I think I see what you mean now. I would add that the quest to always be using the new shiny thing combines with this to drive people away from a language or framework once it has finally become mature and stable enough to build reliable software upon.
t
Ever since watching this video, I have (unfortunately) become even more acutely aware of when software fails, so many times each day... It's hard to say if this is an increasing trend, seem some things improve while others get worse. Based on anecdata, I would say that cloud/infra/systems seem to be improving while anything UI/UX based seems to cause me the most pain. The failures are much harder to understand, like why sometimes the weather is displayed and not others, or why after leaving a backup running overnight, I have to push every key twice 😕
r
A little older, but very much on topic, (albeit in broader strokes) is this talk of his. Good stuff.

https://www.youtube.com/watch?v=pW-SOdj4Kkk