Ask HN: How do you explain the sloppiness of modern software?

157 points by etamponi ↗ HN
This is a recurring theme on HN, so I think you all have very good opinions on this topic: why does modern software seem so unpolished, slow, bloated, unprofessional?

Let me provide a (frustrating) example: the last straw for me has been OneDrive. I am using it to select and share photos from my wedding. It is an app written by one of the largest and most ancient software companies in history, so they should know something about making apps. And still:

1) The directory list view keeps "losing" the position at which I am, so every time I share a photo, I have to scroll down to where I left (in a directory with 5000 pictures).

2) If I screenshare using the Google Cast functionality, after a few dozens photos it loses the signal and I have to wait a few minutes before reconnecting. The entire app becomes extremely slow in the meantime.

3) The app in general is inconceivably slow. What is taking so long? I am viewing the same directory for 2 hours, why is it still so slow to load?

So at this point I am struggling to understand: how comes such an app got released? Are the incentives given to developers so at odd with app quality?

248 comments

[ 6.1 ms ] story [ 236 ms ] thread
It's the TODO that's the killer. We are constantly adding tech debt, and never paying it back.
The amount of times I've come across a TODO I added that I could have just done in 2 minutes instead of leaving future me an annoying note makes me want to slap myself!
But would you be allowed to do that?

Minor renames and similar fixes would be fine, but at work I'd get in hot water sooner or later if I added (more) random fixes to my pull requests.

While this is not the case all the time, a very good reason is that some times one persons bug might very well be another persons feature.

Move fast and break things. The cicd model of delivery means that engineers are encourage to deliver functionality and polish things only if they are critical. The consequence is that people tend to reuse solutions of intermidiary problems no matter if those solutions are optimal. This accumulates technical debt that nobody really wants to repay because it is not a solution of a business requirement.

Additionally, the Moor's law and the well-paid jobs of developers mean that the machines where the code is written are not the machines where it is ran with the difference often being a few generations of processors, graphic cards, and monitors.

Jonathan Blow has interesting ideas and views to share.

Please watch the [Preventing the Collapse of Civilization (1 hr)] presentation by him going into details why it is happening what you observe.

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

Edit: Corrected the uppercase spelling of person's name.

For those that enjoyed the video you linked, Joe Armstrong's "The Mess We're In" talk could be interesting as well https://www.youtube.com/watch?v=lKXe3HUG2l4
I second this, this video is amazing. It had a big impact on my thinking the first time I saw it
I saw this years ago and it's really appealing. I still don't understand if the thesis here is true (are things really getting worse or are we just seeing software of the past through rose tinted glasses). But it feels like we could do things much better with better incentives and if we aligned our efforts much better across the industry.

It feels like it could be a possible scenario that we otherwise end up in a situation where software in general become unmaintainable in practice.

Ultimately: our version of capitalism. Which focuses on growth. Which translates to features. Which rewards proofs of concept. And devalues things like longevity, maturity and stability.
Because it doesn’t matter, and none of this is a labor of love anymore.

Quality is a cost, and users don’t generally pay for the marginal value of a less buggy app, they pay for the massive value of the categorical problem being solved.

You sat there for two hours viewing a single directory, clearly making the page faster doesn’t mean you’ll use their service more, so why should they make it snappier?

You’re not entirely wrong but I would push back a little and say that as a user, in a lot of situations I’m not given an actual choice and need to use a particular piece of software for one reason or another.
I've noticed this in the educational sector. It's technically not that hard to produce good software for it.

It has mainly settled at a local maximum. The software is good enough, money is tight, the priorities are different and procedures are bureaucratic.

Switching to new and better software means, first making it a priority. The procedure for larger schools also mean getting legal on board, writing an invitation to tender, etc.

> users don’t generally pay for the marginal value of a less buggy app

Do they get the choice to?

It's not like I can get a less buggy version of MS Windows by paying an extra $20.

And while many open source projects accept donations, and many enterprise products offer support contracts, it's not like $20 gets you a guaranteed bug fix.

I agree with your point that companies don't always have a good business case to produce quality software - but we can hardly blame customers for not buying things we aren't selling :)

Of course $20 doesn't get you a bug fix, it costs a few orders of magnitude more to actually implement it.

For an open source project, consider what it would cost to hire a contractor to implement the fix and get it to a state where the fix would be accepted by the project.

If the customers are still buying it, it can't be that bad can it. Yeah I'm a bit sarcastic too, but I'm convinced the reasoning is similar - if it kinda works throw it at people and move to building the next shiny facade. Quality is simply not directly translatable to money, so we're living with this half-baked everything. And I'm not blaming the developers, they produce exactly what they're asked and fix only the bugs they're assigned.
> If the customers are still buying it

In a lot of cases, the customers aren't buying it, it's "free" (the cost being not monetary but elsewhere) and no new entrants can compete with the giant piles of cash the incumbents are sitting on

> Do they get the choice to?

Yes. At least somewhat. There's a reason lots of competing products become popular, e.g. Google Sheets taking some of the popularity of Excel. New features like live sync actually matter. And to the extent that users actually care about quality, software with better quality will evenutally also win.

I mean, I'm using an iPhone. I'm using a Mac. I'm paying a huge premium over someone on Android and Windows. I do it largely for the quality of the Apple ecosystem.

But yes, there are still problems. The world of products is hard. :)

With services you get a lot of lock-in/exclusives. Two examples are Discord and Netflix. I wouldn't say you have much of a choice if you want to join a popular place to chat or if you want to watch Stranger Things. The user experience doesn't matter so much if there's no other way to do something. This is what I think the person you were replying to means.

On that note, Google Sheets became popular because you can use it in your browser and because of Google Drive which is what locks you in. Sheets is much more open than my examples.

Quite a bit more than $20, but the option to pay more for Apple products and get a better experience has always been there. I don't want to come across as a shill or anything, of course Apple has made blunders and many people have always been locked into Windows. But it does seem relevant, that despite network effects and lock-in, they've been able to provide an alternative ecosystem all these years primarily by having slightly-less-worse products that people are willing to pay a premium for.
You do get the choice, in the form of moving to another piece of ostensibly less buggy software or not using the service at all.
Short answer: features above all. Yes, modern software and technology in general are irrevocably broken and will only get worse. The good news is, they are not essential to our everyday lives… right?
HDMI ARC being out of sync etc etc
Did you pay for that app? If you did pay, did the license allow you to hold the seller accountable for any bugs? No? Ok then.
Talking about OneDrive type apps - lets discuss Dropbox. Who's idea was it to make file revisions - even as a paid subscriber, limited to 30 days (or whatever it is). This essentially makes one of the best features of Dropbox (sharing files and not having to create "v2 final final final.doc" copies), useless unless you're on the highest tier. Well they lost my business pretty quickly after that.
I'm not sure how far back you'd consider "modern" but back in 2000, Microsoft Office was unreliable, bloated crap that would occasionally refuse to open, reinstall or be repaired; I had to occasionally resort to reinstalling Windows entirely. Adobe Flash would randomly chew up the entire CPU after playing certain applets, even after the browser closed. Browsers? When they crashed, which they did often on some machines, they had no session restore. Boom.

Sage Payroll across a network - even a 100Mpbs/switched setup was laughably slow because it would IO bytes at a time.

Symantec's antivirus would refuse to update, even on freshly-installed servers. Norton had official instructions on troubleshooting LiveUpdate which included having to unplug the modem to fool it into thinking you were offline.

Windows would hang, crash, run like treacle, die if you plugged in a printer, insert a blank CD-R that hadn't been formatted properly.

When iTunes first came out? Oh god, one early version broke the Windows Installer somehow, killing all MSIExec-based software in the same way.

IME, software is just as bad as it always has been. Microsoft still ignore their own best practices, design guidelines and even user consent recommendations. Electron may be new but it's as efficient as software has always been: insultingly, laughably so. Installing printer drivers seems easier until you realise, three months later that it's pointing to an IP address, not a host name, when it's given a new one. Forced to set up an online account to scan, or even just login to your computer.

I don't even have to work on enterprise software which is why I do not have grey hairs :-)

Agreed, when you look back to early 2k years, we might as well view current age as a renaissance.
> back in 2000, Microsoft Office was unreliable, bloated crap that would occasionally refuse to open, reinstall or be repaired

I hope you are not describing Office 97 which is widely regarded as the best version of the Office suite. As for being bloated - today's "apps" would like to have a word with you ;)

Office 2000 was not particularly stable, or fast, and if it managed to corrupt a document in some way, it'd always crash trying to open it.
Just don't try to use cross document embedding (like putting an excel chart in a word doc) - that would blue screen my PC fairly reliably
Up till now, MS Outlook still has a Safe Mode with limited functionality that would activate in case normal Outlook won’t boot properly - I think this speaks heaps about their software quality.
I think most apps with plugins have a safe mode.
> Office 97 which is widely regarded as the best version

Only in retrospect. I was in high school when it came out, and I vaguely remember one of my classmates griping about it being slow and/or bloated.

It still had its complexities but it was markedly more reliable than Office 2000, certainly. It also didn't take three days to install!
Regarding Sage. Sage provide the software for the card reader machines at my local SPAR. Frequently lunch time many of the employees on the tills are waiting for card payments to complete which slows down serving customers.

As for the rest. I don't specifically remember many issues with Windows XP, if the install was kept tidy. Symantec was probably the source of your woes and many people used to use AVG.

When XP came out I remember many people vehemently staying on Windows 2000 since Windows XP just added a bunch of "fisher price bloat". It wasn't until some service pack (SP2?) that people upgraded.
People used to say a lot of nonsense back then. The thing that slowed down XP a lot was ClearType (which was off by default) and the animations. If enabled Windows Classic theme (I forget what it was called) it was as fast as Windows 2000 and looked exactly the same.

The other problems that people frequently had was that a lot of software used Win 95/98 only hacks which wouldn't run on XP (or anything NT based).

XP definitely improved with age, any by SP2 was a pretty decent operating system. Other than the fisher-price approach to the GUI and naming schemes I don't have a book of gripes against it :-)
The GUI could be set back to classic Windows quite quickly. There was also the Zune, Royale and Royale Dark (unofficially leaked IIRC) themes that looked nice.

XP 64bit (for x64 machines) however was the best Windows OS I've ever used. Fast and super stable.

People used to complain about Vista being bad. However that was mainly a problem with 32bit Vista. 64bit Vista was again amazing.

Oh yeah, and buying a video game usually entailed an afternoon of troubleshooting to get it running.
> back in 2000, Microsoft Office was unreliable, bloated crap

Sadly, it did not stop there. When I worked as Windows sysadmin / helpdesk monkey, I had to install Windows 2013 on several machines because it just stopped working for no apparent reason.

On one machine, an update to Office 2013 broke Autodesk Inventor (by replacing/updating some vbs file, I suspect); reinstalling Inventor kind-of worked, but it caused MS Outlook to crash whenever the user tried to write an email (some might consider this an improvement, but not everyone agrees). Reinstalling Office fixed that without breaking Inventor again.

The worst part - from a helpdesk perspective - was that there was no rhyme or reason to it, this type of problem would pop up randomly on some machines, while other machines with practically identical hardware, OS, and applications installed ran perfectly fine.

I agree with all, but this is a misrepresentation:

> Electron may be new but it's as efficient as software has always been: insultingly, laughably so

Electron is definitely bloated, but it's possible to write sufficiently fast¹ software like Visual Studio Code. It can't be put on the same basket ("insulting") as Sage Payroll.

¹="sufficiently" fast, not "blazing" fast

As far as I recall, VSCode had to fork electron in order to make it acceptably performant. The team tried to use stock electron but the performance was not good. And they're probably going to move to because electron is still slow and terrible.

https://github.com/microsoft/vscode/issues/118308

> The team tried to use stock electron but the performance was not good.

Can you provide references of this fork? It you actually look at the VSC manifest, you'll find that the vanilla "electron" is a dependency.

> And they're probably going to move to because electron is still slow and terrible.

I take you haven't used Visual Studio Code. As I wrote, it's certainly not the fastest editor, but it's fast enough for professional usage. It's actually faster (or comparable at least) to other "famous editors".

> https://github.com/microsoft/vscode/issues/118308

This doesn't have any actual technical content; it's essentially a variation of Rewrite It In Rust.

Much lower memory consumption and startup time cut down to ~50% sound like technical enough reasons to me.
So I know that currently they use electron, but I vaguely recall them working on a fork of electron to replace chromium etc. across all their products (edge, code, others?). I can't seem to find public references to it related to code, it might have been discussed more in regards to the edgehtml/chakra implementation. I may also be mixing things up, that was around 2015 I think.
Untruths.

https://github.com/microsoft/vscode/blob/main/package.json -> "electron": "13.5.1",

Referenced github issue seems to have only random people unaffiliated with the project team.

Yes I'm aware that they currently use stock electron, I was referring to earlier development. Maybe like 2015 or so. Could be mistaken, I'm not sure that work was ever published.
I've recently installed Visual Studio for the first time and it uses up 3-5% CPU while doing nothing. It takes an age to load. It uses heaps of RAM with no projects open. I'm not sure if VS is also Electron but it's another black mark against Microsoft either way.

I beg to differ on Electron: I have never seen a single use of it where it doesn't use an extraordinary amount of RAM and there mere concept of using an embedded web site browser for a GUI is simply an unacceptable thought, let alone a realisation of modern-day software. It should have never have happened.

> it uses up 3-5% CPU while doing nothing

This is meaningless without context, as editors typically run indexing processes in the background. I used to use $beloved_native_editor, which in some cases ran at 100% single-thread for extended amounts of time (due to indexing).

> It takes an age to load. It uses heaps of RAM with no projects open [...] I have never seen a single use of it where it doesn't use an extraordinary amount of RAM

I've taken some real-world measurements, with the disclaimer there is no universal interpretation of measuring memory:

  >  Private  +   Shared  =  RAM used
  >
  >   8.9 MiB +   9.1 MiB =  18.0 MiB
  >  17.0 MiB +  17.3 MiB =  34.3 MiB
  > 119.2 MiB + 149.4 MiB = 268.6 MiB
  > ---------------------------------
  >                         321.0 MiB
  > =================================


  >  Private  +   Shared  =  RAM used
  >
  > 332.1 MiB + 519.2 MiB = 851.3 MiB
  > ---------------------------------
  >                         851.3 MiB
  > =================================


  >  Private  +   Shared  =  RAM used
  >
  > 124.0 KiB + 176.0 KiB = 300.0 KiB
  >   1.1 MiB +   1.1 MiB =   2.1 MiB
  >  95.5 MiB + 200.2 MiB = 295.6 MiB
  >   1.3 GiB +   1.3 GiB =   2.5 GiB
  > ---------------------------------
  >                           2.8 GiB
  > =================================
Startup times (approximate), before being able to type: 0.3", 1.2", 4.7".

The editors are vanilla installations, and I've opened the directory of a relatively large project. The machine is a modern desktop one.

The editor that people love to hate is not the one you'd expect.

I think companies like Google, Apple and Microsoft have realized that QA departments and software quality aren't worth it. People have gotten used to buggy software. At Apple, there's no Steve Jobs that cares about whether things actually work. Releasing new features to get media attention is more profitable than making sure the features actually work. We'll never see something like Snow Leopard again with its "no new features". Internally at these companies, there's also no reason for developers to care about quality. It's not rewarded by the managers.

Additionally, we as developers keep building software using more and more complicated tools that seem fancy and new to us, but are brittle and don't deliver good software in the end. We keep adding more and more layers of abstraction, both on the frontend and backend. Why? To put it on our CV. Things are moving so fast that we're afraid to get left behind. We're at a point where things just keep getting more and more complicated – actually keeping something alive (let alone building new features or making those features work) takes more and more man hours.

This comment made me sad. I always believe in excellence as an art and something that is good to strive for as part of a pursuit interest, and what makes life more meaningful, and beautiful.

Steve Jobs probably understood that.

Did he? To quote Steve from the iphone4 antenna issue: "You're holding it wrong."
I think that was just his asshole-businessman side trying to save company from a PR disaster and billions in lost sales.
You know I am coming to hate the word "just". Mainly because in modern vernacular it is always used to excuse behaviour that would otherwise be described as wrong. Just is the one word that the normalisation of deviance relies upon.

If Steve cared about the user he wouldn't have had to say it. Because they would have found that bug in testing. So either they knew were incompetent and didn't know about it or they were incompetent knew about it and said fuck it the idiots would buy it anyway.

I have always considered myself to be a craftsman, as opposed to a programmer.

I take pride and joy in the sheer Quality of my work. I am quite aware that most corporations consider the way that I develop software to be “inefficient” (i.e. doesn’t result in inbound cash flow).

But I work surprisingly fast. I often have to pause, in order to let the team catch up. That is what comes from over 30 years of programming experience, where Quality techniques become rote habit.

My approach doesn’t always win friends. The people I work with, absolutely love the results, but everyone else seem to think that I’m a “snob” (may have a point).

I’ve learned that it’s best to just keep my opinions to my own work (or the work of others, that I plan to integrate into my work).

For some reason, the term "craftsman" has come to mean "obsessed with quality" in programming circles. I'd just like to point out that most traditional crafts (ie tailors, carpenters, metalworkers, etc) both today and in the past are absolutely not obsessed with making heirloom quality stuff all of the time. As long as the customer is happy and they get a competitive price for their time, they will be happy to take your project on.

Also as any historian will tell you there was a LOT of shitty quality stuff produced back in the day as well. It's just that nobody bothers to keep a wooden cabinet or a woolen greatcoat for multiple centuries unless it is absolutely magnificent. You can still get great quality bespoke furniture/clothing/etc today btw, but don't expect IKEA prices.

I'm not necessarily "obsessed" with Quality, but I have learned that Quality today, means less time spent, scooping up kitty litter, tomorrow.

I also worked for a corporation (Japanese) that is pretty much synonymous with "Quality." It was a religion, there.

In most American companies, the running joke has always been, that if you have "Quality" in your job title, your career is over.

At this company, it meant that you were a high priest.

In most American companies, having "Quality" in your title means you're never thanked, it was never your idea despite being mentioned and repeatedly shot down 9+ months ago, you're either tolerated or downright feared, and fenerally you can target no shortage of intrigue in the enterprise, but no one wants to acknowledge it.

Amusingly, my career actually started with a Quality bearing title.

Maybe I should try a Japanese company one of these days. See how the real adherents of Demings-san do things.

I suspect that a lot of the other cultural shenanigans would drive you nuts.

For example, we used to joke about "The Japanese 'Yes.'"

This was where we would patiently explain how some command/policy/idea would not work, and the person that we would explain it to, would understand perfectly, and say "Yes, you are correct."

Then, they would instruct us to do it, anyway, because some higher-up said "Make it so," it was in the project plan, or it was corporate policy.

...This may sadly be a refreshing change in my book. I think I might be able to handle face saving and climbing the ladder and being repetitive about it. I've honestly gotten kind of used to that.

I'm much more tolerant of the straightforward "Yes, because..." than the American "but I can't".

One is still potentially a productive conversation, the other is a platitude, and exhausting. I will take that into advisement however.

Yes, and worth emphasizing: this "surviorship bias" phenomenon is common in comparisons of the present to the past. People imagine quality was higher, standards were higher long ago.. they weren't. We just don't retain the vast majority of low quality stuff for centuries, we only retain the top 1% or 0.001%, while the low quality stuff is forgotten.

Analogously, people sometimes ask why the average perceived quality of classical music written in 1810 or so is so much higher than the quality of music being written today. Well, the real average quality of 1810 music wasn't higher; we just don't bother performing or listening to the bottom 99% of music written in 1810 that was not very good. We only listen to Beethoven and a few others who were at the very top. This creates the inaccurate perception that "most music was really great in 1810, much better than today; standards have slipped and nobody cares about quality music now."

It’s just great you find pride and most of all joy in your work. It makes going home after a day or enjoying the results so much better. Lots of companies (business school drones most of the time) simply don’t understand it.
He knew. Below is a quote from Isaacson book.

Fifty years later the fence still surrounds the back and side yards of the house in Mountain View. As Jobs showed it off to me, he caressed the stockade panels and recalled a lesson that his father implanted deeply in him. It was important, his father said, to craft the backs of cabinets and fences properly, even though they were hidden. … In an interview a few years later, after the Macintosh came out, Jobs again reiterated that lesson from his father: “When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood in the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”

On the other hand, when push came to shove, an arbitrarily chosen deadline trumped all else. Taking the original Macintosh as an example again, see chapter 7 of Steven Levy's book _Insanely Great_, which describes how the Mac software team scrambled to get a barely working version of MacWrite done in time so the Mac could be announced at Apple's yearly stockholders meeting and available in stores the day after.
> “When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood in the back.”

As a professional programmer and amateur cabinet maker, this is a weird quote. I get the point of what he’s trying to say, but the truth is that all the most beautiful wood goes to the veneer mill to make very expensive, very nice plywood. Plywood is not MDF or particle board and there’s absolutely no reason not to use it for the back of a cabinet.

While I agree that bugs can be infuriating, the big question is when a feature is "good enough" to be marked as done. You just have to set a goal post somewhere, otherwise we'd still be in the software stone age.
New features have diminishing marginal utility. Everyone using Word notices if typing words has lag before letters show up, most people notice if you can’t set the font, fewer people notice if it can’t set the margins, down to features that almost nobody is aware it has.

Raising the quality bar quite high before you call a feature done is generally the correct call. Yes, your software might not check off every box on some list, but you can ensure the features people care about work well.

That only works if the ones purchasing it care about quality instead of which one checks the most boxes.
> actually keeping something alive (let alone building new features or making those features work) takes more and more man hours.

And the people who made the brittle architectural decisions aren't the ones suffering the fallout increasingly often; with companies shunning internal promotions and substantial raises, more and more developers turn into nomads who switch companies every other year just to keep up with inflation. They rarely if ever get a chance anymore to grow with a single codebase and learn what makes it stable and easy to iterate on long term.

> And the people who made the brittle architectural decisions aren't the ones suffering the fallout increasingly often;

Ugh. Ain’t this the truth. I’m stuck working with Laravel because of this. The two people that pushed for Laravel the most are now gone.

> And the people who made the brittle architectural decisions

Bitrot is unavoidable, unless code is rewritten from scratch. Complexity rises proportionally to the number of links, which is `n(n - 1) / 2`, where n is a number of nodes, or `n²/2` for large n.

It takes significant effort and lots of experience to beat n², to keep code simple. The easiest way to reduce complexity is just to rewrite code from scratch. The harder way is to drop some old nodes (concepts, files, database columns, cases, fields, steps, etc.) when introducing new ones, which may shock somebody who has no formal training in software engineering.

> Steve Jobs that cares about whether things actually work

Did he? at least according to my experience Apple cared about the looks of things and not whether they actually work flawlessly.

Jobs cared deeply about the details, both UI and UX, it's just that the details he cared about and how he prioritized them might be ones you and me disagree with. He almost never sacrificed form for function, but he certainly did care for both.

That attention to detail was one of the reasons people loved Apple products and why so many Mac-only or truly Mac-native apps exist. Contrast with windows where most "native" apps are either Qt-based or some WPF monstrosity full of custom controls. Microsoft Office has its own UI stack ffs.

That doesn't mean his vision was always good though, or that he was a good designer (he was good at picking things and making sure they fit, but he didn't come up with them himself)... Some decisions are just baffling to me, seriously how long did macs stick with 1 button mice?

“It just works” used to be a motto. One of Jobs’ most quoted phrases is “design is not just what it looks and feels like; design is how it works”. Snow Leopard was advertised with “zero new features” because the focus was on improving what existed.

There are plenty of other examples, in interviews and stories from internal events, which corroborate he cared deeply about Apple products working well.

Jobs as a QA engineer would be doing smoke tests by "eating his own dog food". He would make sure that at least the fundamental tasks of software/hardware work flawlessly.
Big projects, big turnover of people. Each team develops its own unit. Maybe they don't even see the final product. I wonder how many of then even try to run it once it is done?
The hiring process is bad. Real skills get rejected while leetcode gets a job.
Software development seems very vulnerable to cargo culting. People are not deciding the tool that they need and the architectures of their applications because of what technically makes sense but because of what is popular. One could start to suspect that what requirements the customer has actually has no influence on what architecture is chosen...
Yeah cargo culting with the majority of developers having not many years experience and doing resume driven development.
(comment deleted)
Comfortable office workers and computer users are more aware now than ever of the billions of people in the world less fortunate than them. It just feels gauche, these days, to get too upset if the loading spinner on your diet tracking app freezes for one frame when the animation loops.
BS. You inflict terrible software on one user, you've inflicted it on them all. We spend more of our day dealing with facing the burden of other's lack of care than we do making things that unequivocally work.

I can't fix that employers are exploitive due to prevailing incentives; I can't get rid of the Jack Welch wannabes, the unethical fintechs or feature mills, the daftness that is the perpetually inflating asset bubble, etc... Yet despite that I try hard on a real regular basis to help people navigate an ungodly complex networked world a smidge easier every day; and all I've gotten out of it is trauma, hate, discontent, and a precious handful of really amazing people that all try to keep each other sane while we watch the world seem to burn down around us.

I never sacrificed, nor accept the sacrifice of standards, and I will continue to pound those into to anyone mildly receptive. Until everyone stops seeing Software as the latest lottery ticket though, this isn't going to stop. At all.

The answer is there is low ROI on quality and businesses are hyper optimised for ROI. Only when the customers lose their shit publicly it affects ROI and quality will improve.

We got into a situation where people are so disempowered by design and poor access to routes to complain and demotivated to complain so poor quality is the norm.

If you want this to stop we have to collectively rip a new asshole in every half baked pile of muck out there loudly. Really loudly. Start burning up people’s ROI. Buy an app and it’s shit? Get a refund and then tell everyone everywhere exactly how bad it is.

When I do this I am repetitively told that I’m negative and this is not a productive attitude but I disagree and see this as a defence of the improper norm. The first step of quality is acknowledging you have a problem which needs to be shouted in most companies faces until they can hear through the fingers in their ears.

I'm not sure this is true. I think there is an ROI on quality, but the incentives are set up not to value it. The problem is that "quality" - even "performance" - is quite a nebulous, holistic property of the project as a whole. It doesn't fit neatly into a bullet-point of features which all link back to predefined OKRs for the product management team. It's also a nightmare to measure.

One thing I've been banging on about at web teams I work with is to measure the relationship between time to first contentful paint against propensity to buy/click/watch/spend time-on-site/do whatever the relevant value metric is. For the analytics tooling that teams usually have in place, that's crossing two completely disconnected toolsets: you've got the behavioural analytics tools, which are typically owned by someone else in the business, and then you've got the technical observability tools, which are usually owned by the development team, and marrying the two up can be astonishingly hard to make happen.

> When I do this I am repetitively told that I’m negative and this is not a productive attitude but I disagree and see this as a defence of the improper norm. The first step of quality is acknowledging you have a problem which needs to be shouted in most companies faces until they can hear through the fingers in their ears.

I don't think you're negative at all, but the "fingers in their ears" is based on a misunderstanding. Companies have their ears wide open and their customers are telling them -- mostly indirectly by voting with their wallet -- that they want quick and dirty features over quality. Your suggestion to punish bad quality would actually help these companies by removing those perverse incentives.

Software now is too complicated. Too many things are taken for granted. Methods like agile / scrum often force developers to do things a certain way to keep up the impression of speed. There's rarely time to think carefully.
In the end, you need to decide between features and stability. You can certainly write a very stable, simple app without all the extras that make it complex, stuff like Google Cast. But unless users demand it by paying more for a simple but stable app than a fully-featured app, there is no incentive to invest in stability instead of features.
Fail fast culture.
No one in the comments mentions complexity.

The complexity of the interactions you described is orders of magnitude anything software in, say, the 80s had to deal with. Just imagine how many technologies you are using to display photos from "somewhere in the cloud" into your TV.

Now we can discuss how much is essential and accidental complexity, what alternatives are there, and whether the tradeoffs are worth it.

> Just imagine how many technologies you are using

Indeed. I weep every time I see how many layers of layers today's software is build upon.

> It is an app written by one of the largest and most ancient software companies in history, so they should know something about making apps.

I think tradition and collective experience matter very little with the issues you're describing. It is hard to form and keep a team that is both technically excellent and will make sensible UI choices.

Additionally, I don't know if this is true, but I get the feeling that pulling "product" and "UX" into totally separate professions has meant that ownership of the overall quality is now theoretically in the hands of people who can't ensure it. A similar idea to the principal-agent problem, although in reverse.

> I get the feeling that pulling "product" and "UX" into totally separate professions has meant that ownership of the overall quality is now theoretically in the hands of people who can't ensure it.

Of all the answers proposed in this entire thread, this is the one I agree with the most. You put into words exactly what I’ve been thinking for years.

The fundamental problem is the lack of accountability for the product owner.

Consider the film industry: A reputable film director owns the film in the sense that their reputation and career depends on the quality of the final product. They still hire/outsource massive swaths of the work needed to produce a movie, but they are the person held ultimately responsible.

Contrast that with some well-known software like Microsoft Teams. Teams is probably the worst piece of shit software I’ve used in 30 years. Who the fuck owns Teams? Not Satya. I have no idea. I bet no one at Microsoft can answer that question. The answer is probably nobody at all.

> They still hire/outsource massive swaths of the work needed to produce a movie, but they are the person held ultimately responsible.

I sort of wonder whether software engineering is just weird, in the sense that in theory a director could probably do most of the jobs in a movie production, e.g. point a camera, select cast members, acting, set construction. They would do them badly, but they would have some idea of what is involved and what they want.

Software is so iceberg-like that such equivalent direction seems impossible without a technical background.

It's easy to forget how bad software was back in the '90s. Third-party software on Windows 95 was horrible--crashes due to drivers and such were a constant source of headaches that we just don't deal with to anywhere near the same frequency anymore. You could WinNuke anyone connected to an IRC server. A Web page could blue screen you by embedding c:\con\con in an image. "Microsoft Word crashed" was just a constant thing people had to live with; there was no good way for Microsoft to know about the crashes before telemetry. "Starting Java..." would regularly kill your browser. Over on the Linux side, forgetting to run LILO after recompiling a kernel would render your system unbootable. XFree86 was a nightmare to configure. Etc.

Modern software is in fact more reliable than older software.

> Over on the Linux side, forgetting to run LILO after recompiling a kernel would render your system unbootable. XFree86 was a nightmare to configure

I'm not sure those are reliability issues.

I wanted free photo editing back in the day so I could learn to be a graphic artist. Six months of messing with Xfree86 and I got a career in programming and sysadmin
Yep, constantly restarting PCs, having to kill random rogue processes in Task Manager (even explorer for some reason), having the alert come up in internet explorer that a script was taking too long, the list goes on and on.

There have been a lot of improvements in the meantime that have led to better software, amongst others: version control, automated tests, automated deployments and more useful programming languages.

I totally disagree with that. However, I was a Mac user during the 90s. In my experience, software was very reliable then. Of course, you had to be careful with extensions and other software that could crash the whole system, but once you got a stable system it remained fast and stable. Weird things only happened after Apple transitioned to OS X -- the first versions of OS X with their spinning beach ball of death really were awful.
The Mac didn't even have memory protection before OSX iirc? I seem to recall that people would have to restart their Mac if something crashed, since it wouldn't be just the application that would crash - it would be the entire OS.
restart their Mac if something crashed

Perhaps the lack of memory protection and the catastrophic consequences of an app crashing made Mac developers more careful and aware of the importance of stable software.

I think you might have a bit too much nostalgia (or maybe we just had very different experiences), but I remember Mac OS 8/8.6 crashing a lot, with the dreaded bomb icon.

Everyone I knew with an iMac had a toothpick or paper clip in the top handle, due to how common they needed to press the reset hole.

At the time my father used to edit a local news paper in PageMaker and it was particularly bad.

Reset holes for paper clips? I can't remember any of my Macs having a reset hole like you describe. In any case, I never had to use one. There was a key combo for resetting the OS.
>Everyone I knew with an iMac had a toothpick or paper clip in the top handle, due to how common they needed to press the reset hole.

What kind of Mac were you running?

The straightened paperclip was only there to eject recalcitrant floppy disks (early on), and then recalcitrant CDs later

Restarting the machine was always a menu option or physical button

I don't know why people are downvoting you.

I went to a middle school that was "mac only" in the 90s. They were complete and utter crap.

They crashed constantly. The spinning pizza of death made a near hourly appearance.

We had two machines issued to each classroom, and most times the kids wouldn't even turn them on they were so bad.

As someone doing web development in 2001-2003 and still testing stuff on OS 9... No. It crashed all the time in the office. Several different machines and all I did was open a few web pages and sometimes write down some notes.
Thats why we got AutoRecovery as a feature! /s
Nearly spit out my coffee at this XD
Win95 was a mess. However the Win2k I had, as I recall, was stable, solid and performant, esp. considering that it was running on much less than the weakest Raspberry Pi (IIRC I had a 450Mhz Pentium3 machine with 128 MB of RAM and a 5400 rpm HDD).
Win2k was really great. Super-stable and efficient. But we have to ignore the wide open security holes before the first few service packs.
> It's easy to forget how bad software was back in the '90s

> Modern software is in fact more reliable than older software.

Putting this as "90s vs now" is borderline strawman IMO.

I genuinely believe the peak in terms of performance and polish was somewhere in the early-mid 2000s; developers of the time had experienced the 90s and true shortage of CPU time and other resources. The mindset was still alive, even if PCs had gotten very powerful by 2005.

Mid-to-late 2000s mark the start of mass webification and mobilification of software. "Mobile eats the world" and "nobody wants to install software." In my experience it's been downhill from there; software started being developed with a completely different mindset and completely different approach.

During the early phase of this transition, your bottleneck was invariably network I/O; so developers didn't really need to give a crap about CPU cycles or RAM. Lack of UI polish could be blamed on the web being what it is, a document platform coerced into becoming an application delivery platform. Most of the early "app web" applications were truly horrific compared to "native" software, but no matter, the web was considered more accessible and a better platform for developers. And users didn't have to INSTALL SOFTWARE! Woohoo.

Of course the constraints are not the same today, but the original mindset that held until early 2000s is long gone. For example, instead of trying to stick to your platform's long established UI conventions as you would if developing Windows software in 2000, designers nowadays are more concerned about branding and making up their own experience; every "web app" looks and feels and behaves different.

Now as for reliability, I can't say whether the mid 2000s were worse or better than today. 90s software definitely had a lot of issues, but I had no trouble running Windows XP SP2 with months of uptime. The nature of software failures has changed, and today you have less crashes (though they're still there), but on the other hand, I regularly see applications being confused about their state, being stuck trying to do something that evidently doesn't succeed, infinite spinners, "whoops, something went wronk", "we can't serve your request at this time" and "please reload and log in again." If we consider all these to be failures, then I think software in general isn't any more reliable than it used to be. Updates are another interesting phenomenon; back in the day, I wasn't forced to update. I never lost work or had to reboot and restart everything because of updates.

I just want to point out that you're saying windows ME was the peak of software performance and polish.

And following that - I call complete and utter bollocks.

Did I really say that? From any given era, you can find gems and garbage.
You could almost even say that the past is just like today! :D

It turns out it's not all roses and bliss. It's basically the same half-baked, mostly unusable, bucket of dirt you dig through to find the diamonds.

But everyone only ever remembers the diamonds.

No-one said it's all roses and bliss. My argument is that mainstream software was, on average, more performant and more polished (and not considerably more buggy or unstable; possibly less buggy due to being less complex) than it is today. I was relatively happy using mostly the same software that everyone else was using too. Today, not so much; I find most mainstream software unbearable, repulsive, slow, full of annoying quirks & rough edges. I'm not happy using it so I don't. For me it's a completely different era.

I don't know if anyone is measuring this objectively, and I assume not. So we might not ever be able to say whether the claim is objectively true or just my subjective experience. But it's not fair to dismiss the whole argument by mischaracterizing it.

The GP actually praised Windows XP SP2, not Windows Me. Now one could argue that in some ways, Windows XP was a regression and Windows 2000 was the peak. But not Windows Me; that's widely regarded as the worst of the doomed 9x line.
Right, I don't really know anyone who seriously used ME. I guess some people who bought prebuilt computers at an unfortunate time might have been stuck with it for some time. The people I know held on to 98 (or 98SE) for as long as it served them, and then switched to 2000 or XP. I also never saw ME in schools, libraries, corporate settings, etc.
Sure - and apparently we're all happy to claim that "today is the worst - yesteryear was fantastic!"

And then ignore all the stinking piles of garbage that actually made up the past.

This is nostalgia in action. Those rose-tinted goggles have slipped down over your eyes. You remember "Windows 2000 was great", you don't remember "Windows ME was so bad it was literally (not metaphorically literally - literally literally) unusable, and Microsoft STILL SHIPPED IT!".

> Those rose-tinted goggles have slipped down over your eyes.

I never actually said I agreed with the nostalgia; I was just clarifying the position of the person you were replying to, and what I perceive to be widely held opinions.

> Windows ME was so bad it was literally (not metaphorically literally - literally literally) unusable

Perhaps it was that bad for some people. If so, that's unfortunate. But I ended up with Windows Me sometime in college, and it was usable enough that I used it to develop and ship the first few versions of the first commercial software product that I was hired to develop. So it wasn't that bad. Still, once I could afford a PC with Windows XP, I got one and never looked back.

Windows ME was strange. In some computers it was a modernized Win98, not really better or worse. On others, it caused all kinds of crashes, including total irrecoverable data loss on hard disks.

One of the weirdest examples I know of was a particular series of desktops, sold in the supermarket with ME. I knew 2 people buying identical machines in the same week from the same supermarket. One of them worked flawlessly. The other one was such a miserable crash prone machine. We forced Win98 on the crasher and all was well again.

My recollection of software from the Windows 95 era is different. The reliability of desktop apps varied depending on the type of software but problems were often related to hardware. Today, hardware is much more reliable and adheres to widely adopted standards.

Faster, more capable hardware hasn't necessarily made modern software better. In many cases the opposite: apps are slow and gobble up computer resources with no restraints.

>Faster, more capable hardware hasn't necessarily made modern software better. In many cases the opposite: apps are slow and gobble up computer resources with no restraints.

Not exactly a new phenomenon: applications always grow to exploit new features offered to them

Yes, that's very true. But in the 90s, both developers and users would not tolerate slow or memory-hungry apps. The hardware and memory constraints meant developers chose languages and tools for that purpose.

Today, developers choose languages and tools that suit their comfort first. The user's comfort often takes secondary consideration.

We have very different memories of the 90s. I remember it being full of slow, memory hungry and buggy apps.
Your memory of the 90s isn't mine - memory-hungry apps have been a thing for over 50 years, my friend
I switched to Linux because of Windows 95. And getting Linux up and running back then was a real pain. But once it was running, it was way better than those bluescreens of death.

So in my memory it was not the hardware.

> The directory list view keeps "losing" the position at which I am, so every time I share a photo, I have to scroll down to where I left (in a directory with 5000 pictures)

It was not tested with that large folders.

Start with your base assumption first, is software now worse than it used to be?