8 ms·
Computers are amazing. So why is software so terrible?
- WantonQuantum 2y agoI think there's some serious rose coloured glasses going on here. I started my first job as a developer in 1994. My first task was to add some XDR to our RPC code to ensure big-endian and little-endian machines could talk to each other. This was in the C language. As in, tiny standard library, manual memory management, etc. No type safety. I wrote a UI using X/Motif. It was a pretty simple UI with a File menu for loading and saving, and some other edit menus etc. It took ages. No type safety meant that accidentally passing a pointer to a button to a Motif library function that expected a pointer to a label caused a segmentation fault. I still love C but not if I'm building an actual application. I absolutely do use C if I'm curious how well llvm can optimise a loop for counting prime numbers or calculating pi. Then along came C++. Now I had some actual data structures and algorithms. Memory management was easier but still error prone. But the compiler we were using was very slow when using a lot of STL code (Standard Template Library) so once our codebase was big enough, building and linking would take over an hour. There were some workarounds but they were clunky and caused their own issues. I didn't like Java when it came along because I thought the whole idea of compiling to JVM bytecode and running a JVM in production rather than a compiled executable was obviously slow and wrong. Java has been around for years and lots of mistakes have been made along the way but it's a really solid environment with access to a HUGE number of libraries and frameworks. Web apps used to be simple - there was only so much you could do. But then javascript and the infamous XMLHttpRequest came along and people could suddenly make really nice interactive sites. That kicked off another years-long period of trying to figure out how best to write large, complex applications with web technologies. But don't kid yourself. The benefits of web apps far outweigh the complexities and "slowness". Other developers would have experienced other journeys. A modern word processor is vastly more complex than early word processors. I used to really like word perfect 5.1 because it was responsive and very capable and never crashed but when Microsoft Word came along, people obviously preferred it, even if it was slow and crashed all the time. So I'd say modern software is complex and has problems that come with complexity but the slowness isn't really it. I used to edit code in vi. It was pretty responsive. You can bet your bottom dollar that it's really fast still. But I prefer JetBrains IDEs. Sometimes they're slow or a little buggy but the trade off is worth it.
- Bluestein 2y ago> when Microsoft Word came along, people obviously preferred it, even if it was slow and crashed all the time I am sure it's "overdetermined" but why -is- that? I'd call it the "tragedy of the losing better option": When two alternatives exist and, often, the lesser/worse/worst wins. You find that all over the place.-
- ForOldHack 2y agoOne word: Microsoft. Two words: shipping crap. Three words: It may get better. Four words: let the users test. Last word: doomed. Where is the system engineer? Why did Macromedia become so great? "In college, Randy's classmate Norman Meyrowitz was giving a presentation when a light bulb on the projector blew out." The rest is history.
- Bluestein 2y ago> Why did Macromedia become so great? Flash filled a need. CSS is just now beginning to achieve feature parity.-
- Qwertious 2y agoFlash filled a need to install software in a single click, which the web browser made possible. Flash unironically became so widespread because Microsoft dropped the ball in OS development.
- armada651 2y agoThis is nothing but a job ad disguised as an opinion piece, there's no substantive argument at all.
- Phiwise_ 2y agoInsubstantive, barely-disguised ads? From Handmaders? Say it ain't so!
- anonymoushn 2y agoIt's not a job ad, they won't pay you.
- sirwhinesalot 2y agoJob? Ad?
- jonatron 2y ago"computers today can do things we hardly dreamed of twenty years ago." It's 25 years since Bill Gates got shot in South Park because Windows 98 crashed so much.
- mg 2y agoA friend of mine has an expensive 15-inch Dell laptop. He does not know much about tech specs, but since much of his work life revolves around his laptop, he simply bought the maxed out version. In the hope it makes his life easier. In the hope that every tool he installs makes his life easier too, he installed so much stuff on it, that the battery in this newish laptop lasts less than an hour. So he lugs around this beast of a laptop, with a beast of a charger. And even when he just uses a browser, after 30 minutes, he gets nervous: "I need a power outlet!". Every time I watch this drama in confusion, I ask him why he doesn't look up what software drains his battery, and what he can do about it. That makes him very uncomfortable, and he proclaims: "No, it's Dell's fault! And I can use the laptop with a power outlet! No problem!". Somehow, analyzing what software does seems to make some people so uncomfortable that they never look into it and therefore never blame bad software for its behavior.
- poisonborz 2y agoThis is a problem that could be solved with better software.
- senkora 2y agoLearned helplessness is a rational response to eldritch horrors. Software is approximately an eldritch horror to most of the population.
- Bluestein 2y agoNext 3T megacorp: "Eldritchsoft" :)
- squarefoot 2y agoThis resonates with my reaction when I read that the 1st step of a project consisting of like 50 lines of code for a 3cmx2cm microcontroller board is "install VSC".
- TheAceOfHearts 2y agoI'm sympathetic to the goal of making software less terrible, but there's no actionable content here. Personally a lot of the code I've written has turned out to be pretty terrible because I didn't know any better. Sometimes an environment is just conducive towards building software products in a certain way which doesn't consider performance as seriously. Copyright has probably hindered the evolution of software as well, resulting in a lot of duplicate efforts to recreate solutions to problems that have already been solved reasonably well by someone. I think what's really amazing is that tech companies worth billions or sometimes even trillions of dollars are still producing trash-tier software. I've heard tons of people complaining about Microsoft Teams being trash. Why can't Microsoft make a good chat app? Big tech companies should really be shamed more in public for shipping terrible products, they have no excuse with their near-infinitely deep pockets.
- Bluestein 2y ago> what's really amazing is that tech companies worth billions or sometimes even trillions of dollars are still producing trash-tier software. The site addresses that, obliquely, and goes to academia, and the way programming is taught - among other causes.- Not only do I totally resonate with the site’s points, the site is pretty substantial with different areas for various purposes, like showcasing projects, joining discussions, and learning from tutorials, all of which adhere to the stated goal and philosophy of the organization behind.- The homepage introduces the site’s purpose and offers links to key sections like projects, articles, and forums. The projects section showcases various software projects created by community members. There are 41 different software projects currently listed. They show - by example - what they mean, in practice.- (These projects range from game engines to utilities and are all focused on being hand-crafted and deeply understood by their creators.-) They have a "symposium" kind of section, where find detailed posts about different computing topics and techniques. This is where members share their knowledge and experiences about developing software, often providing in-depth tutorials and insights. They all come from member-motivated subjects, "surfacing" and "codifying" otherwise ephemeral chats from Discord.- They also have forums are a place for discussions. Members can ask questions, share updates about their projects, or discuss a variety of topics related to the ethos . It’s a community-driven area where people help each other out and share their progress.- There’s also a showcase area, where members post about their completed projects. This section is meant to highlight the work done by the community and inspire others to start their own projects. There are 41 different software projects currently linked on the site.- I love how the whole project is laid out, and how the stated goals are brief, clear, cogent and to the point, with the showcased software and "goalpost" posts making and substantiating everything else.- The site's also organizes events to further the goals, all in all, pretty solid.-
- bradley13 2y agoMany computer science programs begins with high-level languages, and quickly move on to using frameworks. Students don't know what those frameworks are doing - it's all just magic incantations. The frameworks are massively inefficient, and bring in zillions of dependencies, because they are such generic "do anything" tools. Looking at a browser app: putting a character on the screen requires an insane amount of computing power: server side running Spring (or whatever), client side running React (or whatever), plus the browser interpreting insanely complicated CSS. The benefit of frameworks is that they enable low-ability developers to create stuff without understanding the nuts-and-bolts of what they're doing. Eliminate the frameworks, and you eliminate probably 90% of the developers out there.
- kingsleyopara 2y agoI strongly agree with this point and believe there's a generational aspect at play. For newcomers, the knowledge required to avoid being labeled a "low-ability developer" and to write your own frameworks is significantly higher than it used to be. I'm fortunate to have learned in a simpler era, without many of today's bloated frameworks. However, my equivalent challenge is that I find much of what compilers and assembly do to be "magic incantations."
- ImHereToVote 2y agoA framework is just a tool like any other and has its place. I could write my own UI using the browser canvas, but alas, I don't get paid to write code. I get paid for delivering features.
- duggan 2y ago> The benefit of frameworks is that they enable low-ability developers to create stuff without understanding the nuts-and-bolts of what they're doing. Eliminate the frameworks, and you eliminate probably 90% of the developers out there. This is sort of meaningless though, isn't it? The frameworks exist, and will continue to do so. The developers who rely on them occupy a niche – a big one, probably. These developers are out there growing the pie, the appetite for software. Either it's good enough, or, sans anticompetitive forces, someone with a niftier solution comes along and outcompetes them. As we should all be aware though, there's more to building software than just knowing how to code.
- EGreg 2y agoSoftware is terrible because people keep proliferating a bunch of packages from many vendors, any of which can break your stuff or even introduce a backdoor after you run your package manager. The same goes double for websites that pull in a ton of different scripts from who-knows-where and execute them in their “trusted environment”. Instead, one cohesive operating system designed by one group (eg BSD) can be a pleasure to use. If you want to minimize code over the wire, it is also great if it would involve some modularity and tree-shaking.
- sydbarrett74 2y agoDecades of technical debt.
- constantcrying 2y agoI of course agree that a focus on high level abstraction with little knowledge of the underlying layers is a very problematic approach to programming. But I see the problem as something very different. To me the issue are two destructive thoughts patterns, in both developers and users. Developers believe that just because they can make something it deserves to exist. Users believe that just because it exists they are supposed to use it. I believe there is no better example than the "WordArt" feature in Word. It is something which obviously took a very significant amount of effort on the part of the developers, tens of thousands f man hours I would guess. It is also terrible and nobody should ever use that feature, not a single document ever gains anything from it. Instead of making a title large and bold, the existence of that feature tempts users into making it a wave, with an outline and a shadow, instantly making the document worse. So much of software just should not exist, so many features should be removed and users need to stop thinking that the existence of something is justification for its use.
- nopassrecover 2y agoAs much as I’m agreeable to your general observation, I feel WordArt is a really poor example to illustrate your point: few software features have had such an aesthetic, meaningful, and human impact in the course of the Internet Age. Oh how I yearn for a world of Geocities and FrontPage over Admiral anti-ad-blocker and GDPR cookie popups.
- bvisness 2y agoYeah it's a baffling example to me. WordArt was really popular! People liked using it! The fact that it has aesthetically gone out of favor, years later, has nothing to do with software quality.
- cheschire 2y ago"tens of thousands" is a crazy over estimation. The whole point of Microsoft Word is to align stylized text on a canvas. The Word Art feature does not appear to use much, if any, functionality that does have some more mundane purpose elsewhere in the application. On top of that, I think you may be forgetting how common shitty banners were in the early 90's when this feature first came out. There was a clear market for this feature at the time, and they've only made incremental changes to it since.
- n3storm 2y agoBecause of users. They ask all software to do all kind of wild and unrelated tasks. Is like you have a workshop to do your job. Then you want to have a bathroom and shower. Ok, so you can wash up at work. Then you want a kitchen, not only a fridge, so you can make fresh meals. Then you ask for some space for exercising, like a mini gym. Also you want a small garden to plant your own vegetables. They believe everything is related to their primary job so the workshop space should address it and then is when chaos is ensued.
- danparsonson 2y agoI humbly submit that you've got the right idea but the wrong culprit - it's an endless drive to increase sales that leads to feature creep and bloat being pushed down from on high. Or maybe it's both and we're caught in the middle.
- deleted 2y ago[deleted]
- block_dagger 2y agoHumans are incapable of creating the software we need. Methods matter not.
- Bluestein 2y ago> Humans are incapable of creating the software we need. So, the options are ... (?)
- liendolucas 2y agoFor me is because of the nature of software itself as it can be endlessly changed (for good or bad). So the very same property that was looked for at the dawn of CS, it fires back to us each and every single day.
- PostOnce 2y agoToo many trillion dollar companies, not enough million dollar companies, and consumer reluctance to pay for consumer software. We know how to build it, but not how to pay 200k salaries on it. Edit: and developer unwillingness to live on 75k running a lifestyle company. Imagine writing a $29 web browser now. You'd starve.
- Bluestein 2y ago> Too many trillion dollar companies, not enough million dollar companies, Interesting point. Hyperconsolidation.- > and consumer reluctance to pay for consumer software. Indeed.-
- amelius 2y agoI keep getting bit errors over USB3 connections, no matter what computers, cables or devices I attach. So, why are computers so terrible?
- lloeki 2y agoGetting hooked on computers is easy—almost anybody can make a program work, just as almost anybody can nail two pieces of wood together in a few tries. The trouble is that the market for two pieces of wood nailed together—inexpertly—is fairly small outside of the "proud grandfather" segment, and getting from there to a decent set of chairs or fitted cupboards takes talent, practice, and education https://queue.acm.org/detail.cfm?id=2349257 https://queue.acm.org/detail.cfm?id=2349257 Sadly it seems like a lot of software out there sits barely above the "proud grandfather" threshold and well below the "engineering"+ threshold. + as in, "build a bridge that does not crumble at the first gust of wind" or "hurl several metric tons of metal over a mix of gravel and bitumen at twice a cheeta's top speed for several hours and reliably so over 10ish years" or "put a metal can in the air with a couple hundreds occupants and get across half of the third rocky ball from the sun"
- xtiansimon 2y agoServing two masters—Business and Engineering?
- mike_hearn 2y agoSoftware isn't terrible. People just focus on the rare programs that are and then over-generalize for clicks. The Windows calculator app needs a splash screen because Windows has been in a spiral of tech debt and decline for decades, and their new frameworks are all badly optimized. The calculator apps on every other platform start fast and work fine. I just started Calculator.app on an old Intel MacBook and it took less than a second. We all use mountains of software every day that isn't terrible. Think about the gazillions of lines of code that go into anything made by Apple, or Google. It all works well and we don't think about it. The article complains about "language servers", which suck because they were invented for VS Code which is still relatively new and it's all open source so there isn't much of a business model. But that's not "software", that's a poor choice of IDE. Buy a JetBrains IDE and marvel at the fact that it isn't terrible. Reality is that software is way better than it once was. Standards are so much higher now. When I started with computers it was expected that to get any program to run at all you'd need to find a local wizard first. I spent way too much of my childhood frantically repacking MS-DOS 640kb low mem to try and get the latest game demo running, or reallocating IRQs to try and get the new Sound Blaster to work at the same time as my mouse. Five years later Plug'n'Play was mostly working, Windows mostly worked, but it was expected that every app you bought would crash every five minutes. Consumer software that didn't crash like crazy was a sort of mythical science fiction scenario. Additionally, EVERY app had a splash screen, because hard disks were so freaking slow and RAM was so scarce that starting even an app that'd be considered very simple by today's standards would spend a minute just flushing everything else you had loaded out to swap, including things that you probably needed, like the Start button. In 2024 things like starting fast and not crashing all the time are table stakes, which is why programs that fail to meet that standard stick out like a sore thumb. Software that's considered actually good will probably have a gazillion features, be updated every week without ever failing, will back up all your data indefinitely and automatically for free, maybe have collaboration features, be translated into a bazillion languages, have responsive UI, work on every device you own, and be insanely cheap or even free. Computers are amazing. Software is also amazing!
- anonymoushn 2y agoI'm not sure why we should accept that starting Calculator.app is slower than the equivalent operation on a TI-83.
- geor9e 2y agoHardware physically exists. So when you're creating new hardware, you study nature. Software is fantasy. It's like you've been hired to write page 500 of a 500 page fantasy novel. Most of your time is wondering what the heck the people who wrote the other 499 pages were thinking.
- 1vuio0pswjnm7 2y agoWould like to see a blog post like this aimed at end users, not programmers. It might be impossible to get programmers to stop writing garbage software and trying to get other people to use it. It might be possible to get end users to reject it.
- Bluestein 2y agoIndeed. Good point.-
- bvisness 2y agoThat doesn't make sense to me. Unless users are presented with alternatives, they will have no choice but to use the garbage they are given - nor will they be able to recognize how much better software can be. Better software has to start with the programmers. We're the only ones who ACTUALLY know what the hardware is capable of, and the only ones capable of setting those new expectations. This is why we aimed the manifesto at programmers. It is not the user's fault.