Ask HN: How do you explain the sloppiness of modern software?
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 ] threadMinor 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.
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.
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.
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.
He's also often collaborates with Jonathan Blow.
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?
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.
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 :)
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.
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
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. :)
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.
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 :-)
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 ;)
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.
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.
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 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.
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.
> 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
https://github.com/microsoft/vscode/issues/118308
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.
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.
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.
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:
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.
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.
Steve Jobs probably understood that.
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 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).
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 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.
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.
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.
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.
https://dilbert.com/strip/1996-06-02
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."
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.”
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.
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.
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.
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.
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.
Did he? at least according to my experience Apple cared about the looks of things and not whether they actually work flawlessly.
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?
There are plenty of other examples, in interviews and stories from internal events, which corroborate he cared deeply about Apple products working well.
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.
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.
this
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.
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.
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.
Indeed. I weep every time I see how many layers of layers today's software is build upon.
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.
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.
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.
Modern software is in fact more reliable than older software.
I'm not sure those are reliability issues.
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.
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.
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.
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
Never heard of someone needing to reset any of them with a paperclip before
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.
> 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.
And following that - I call complete and utter bollocks.
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.
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.
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!".
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.
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.
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
Today, developers choose languages and tools that suit their comfort first. The user's comfort often takes secondary consideration.
So in my memory it was not the hardware.
It was not tested with that large folders.