Nikita just published Software disenchantment, and here is my rant-y reply. Please, read his post first.
TL;DR: I agree with Nikita and I am equally frustrated with the current state of the industry. We started grumpy.website together, after all. But I don't believe that situation will significantly improve until the general public's standards increase. Along with the responsibility to make better software, we have a responsibility to educate the public, so that they don't get used to the idea that computers suck.
Would you buy a car if it eats 100 liters per 100 kilometers? How about 1000 liters? With computers, we do that all the time.
The thing is — yes, people would. It all comes to the micro economic level. If a car eats 1000 liters per 100 km and fuel is cheap (and cars hold enough liters to drive around everyday), people will buy them, use them and rarely think about it. Just like they do it today with 6 liters per 100km cars and don't think about how the combustion engine system is inefficient in terms of pure energy output. A lot of that energy goes into useless heat and noise. 6 liters of matter has the potential to fuel the planet for weeks if we were to extract it efficiently.
It doesn't matter if something is efficient or optimal when it comes to general consumer market. And, whether you like it or not, technology and software is now in the general consumer market, in the same area with clothing, cars and such.
Have you been noticing how annoying the clothing industry is? Home items? Furniture? I've never seen a laundry detergent or a hand cream bottle that wasn't downright obnoxious. I've used a potato chips package that was easy to use. It's everywhere: unusable, badly designed, over bloated with unnecessary solutions and optimized for marketing and fast development, not for good use. The things you're describing are not specific to software, it's about design in general.
The only places where things are truly not too damn awful are some parts of military and super high level industrial solutions, where stakes are wa-a-a-a-y higher and general consumer is a non-existent agent altogether.
Yet half of webpages struggle to maintain smooth 60fps scroll on the latest top-of-the-line MacBook Pro.
You care, I care, but most people don't. Not because they're stupid, they just don't notice these things. And we can dream all day long that engineers finally wake up and realize the scale of the crap-monster we've been building for years, but I don't think any significant change will happen until the general population starts to care.
I've seen this just a few weeks ago: a professional marketing specialist is using a high end laptop with some bloatware in the browser. Forget 60fps, his pages were doing 10-12 fps at best, and every time he moved the cursor to close a tab, an antivirus popup appeared on top of the button. He says “damn!", moves the cursor away, then slowly moves it back again from a specific angle, carefully trying not to invoke that popup. He succeeds and carries on with his task. I asked him, it's been months like that. Hundreds of times. Every day. He just doesn't know better, this is what computers are.
When a car makes barely works, we think it needs to be fixed asap. When a computer barely works, we think “those damn computers!".
The things that contributed to your depression are often minor annoyances to the people. Sorry. This whole statement is a good catalyst for a whole another mental issue, fuck.
This is why I stopped pleading to the developers and started pleading to the users. I want users to demand more and be angrier with the promise of computing.
But this is a wrong battle anyway, I think. You, me and our peers are in the 0.1% of the world population when it comes to opportunity, wealth and availability of technology. We care about browsers’ fps because we don't think about whether or not our children will eat tomorrow. Not to dwell on the “first world problems”, this is how global economy works.
Today when we say “the population is growing” and “the internet is growing”, we actually mean “China, Asia and Africa are growing and connecting to the global economy and the internet”. Software industry is as global as globalization goes, and, like any other industry, it often adapts to the lowest denominator with the best margins.
Millions of people move from powerty to middle class, and they are “the big wave” of new users for technology. If your father died of hunger, but you suddenly found yourself having a job and buying a smartphone, I bet it'll be a long time until you start caring about Android core size and Chrome's render speed. Even if you know a thing or two about technology.
What I'm trying to say is:
- Most users in the developed countries are used to bad software.
- Most users in the developing countries are conditioned to bad software from the beginning.
This is weird! An average Western European family has very different notions of “enough food” and “a good job” and “nice life” to an average rural family from a developing country. But when it comes to, say, Android apps, both families have pretty similar experience and expectations, I guess.
Insert equality rhetoric.
Why software 20-40 years ago was actually faster, more stable and nicer to use (as long as you invest some time to RTFM)? Because it wasn't built for the general public and wasn't built by the general public, it was very limited in both audience and developers.
Today there is no good incentive to make good software unless it's some highly specific professional product.
One can easily interpret this in a wrong way, I believe. Software becoming a mass product is ultimately good, but comes with some harsh transition periods.
Google Inbox, a web app written by Google, running in Chrome browser also by Google, takes 13 seconds to open moderately-sized emails.
Well, Google inbox is discontinued next Spring, so, that's not a problem anymore. Especially for Google.
But, here comes my second point: even if you care about this stuff, you still use it, and as far as Google is concerned, that's a success. I asked you recently why did you switch away from Firefox back to Chrome, even though so many Google's design decisions are appalling for you and me. And I knew the answer: we don't have much choice. There are just a handful of alternatives, and everything is bad.
Individual developers at Google will probably agree with you, they probably care a lot about all that stuff. But Google-the-company is not the collection of those developers, it's another organism altogether. That organism, just like any other evolutionary being in a competitive global economy, tries to do the least to get the most. It's a corporation, it wants to make… no, scratch that, it wants to have money, but not necessarily make it.
Windows 10 takes 30 minutes to update. What could it possibly be doing for that long?
Yeah, so? Is Microsoft having any difficulties because of that? Maybe, but I don't think they believe that. What can you do? Switch to Linux, ha?
Yeah, if that update takes 24 hours, I bet not much changes, people will still use it, because for the majority of people Windows = Computers. It's not “windows is slow”, it's “this is what computers are”.
And organizations will develop special routines and systems to deal with that “intrinsic nature of computation”: have “windows update” weeks. As long as everybody in the world suffers, there is no competitive advantage of having faster updates. Or better software.
Android system with no apps takes almost 6 Gb. Just think for a second how obscenely HUGE that number is.
Look at plastic and garbage in general. The amount of packaging is staggering, but only a handful of activists care. It's hidden and doesn't really affect us. Yeah, you need larger garbage bins, whatever. Just buy them.
Just like you need a larger SD card or a new phone. Just buy them.
My third point is that software industry consists of amateurs, mostly (see https://rakhim.org/2018/07/software-shouldnt-fail/).
“The Web was the first global technological phenomena that was built and maintained by the amateurs. Computer hardware, software, and the internet itself were built by mathematicians and engineers. The Web was built by people like me."
And that middle class thing comes into play again. Being an amateur web developer is a way to bring your family out of poverty for many people. See success stories of many boot camps and such. If I couldn't provide for my family, but then I learned how to combine 10000 node modules into an electron app, and some company pays me money for that, I will happily make a lot of electron apps long before I start worrying about problems that most of the users don't have.
Bad sofware design and bad UX are ethically acceptable.
The machine is self-supporting and recursive: the more amateurs build software, the more developers we need to support it, thus creating more demand for new people becoming developers ASAP. More amateurs building software creates more amateurs building software.
Keep in mind that this is a net positive result for the individual lives of people and communities in the short term, even though it might be a net negative for the civilization at large. Considering this, talking about this is very difficult.
A 3D game can fill whole screen with hundreds of thousands (!!!) of polygons in the same 16ms and also process input, recalculate the world and dynamically load/unload resources. How come?
Several things:
- Gamers care. See millions of views and comments to videos about minor differences in gaming performance.
- A game costs 60€. People can return games if they're slow or bad (because they care). An iPhone/Android app costs cents. You can't return them. Free apps cost nothing and have miniscule margins of profit for devs (ads).
- Slow games are actully unusable. You can't play at 15fps, it's just physically uncomfortable. But reading web at 10fps is, well, like Kindle. It's fine.
Another big idea about games I wanted to refer to is console games. This is the industry we can learn a lot from! Unlike PC games, console games seem to be much more stable. Because when Sony unveils a new PS, it says “this thing is THE console for the next 8 years. Have fun!”
Game devs know the schedule, and can take their time to tailor code to that particular, immutable and stable system. This is why every year new console games look better and better, even though the underlying hardware doesn't change at all. Devs squeeze the shit out of the resources.
Compare first PS3 games and last PS3 games. It's crazy. Same hardware!
Web developers don't care that much, next year their product will probably work faster (given it doesn't break due to browser update or API deprecation), because next year the average smartphone CPU will be faster.
A simple text chat is notorious for its load speed and memory consumption. Yes, you really have to count Slack in as a resource-heavy application. I mean, chatroom and barebones text editor, those are supposed to be two of the less demanding apps in the whole world. Welcome to 2018.
Notice how the biggest and probably one of the most complex software projects in the history is being developed without Slack. Those Linux kernel devs, how can they work like that?! Without real time chat! Without Slack integration with CI and github?! Without notifications?! They still communicate via email, those weirdos!!!
I often hear this: “Slack is great because of integrations, we see errors and status updates and CI live in our chat!".
When the whole world is updating like crazy because everyone else is doing this, not necessarily because it's intrinsically good for the users, and the teams have to grow big to cope with the speed, and the technology has to be fragile and complex because Lean and Agile… you have no choice but to monitor and react to the system updates like a team of military doctors.
This doesn't make Slack an intrinsically good product. But it's necessery given the state of things.
“This complex portable surgeon robot is great, it allows us to move fast every time we shoot ourselves in the foot!"
So, you can't make truly good apps because you're a team of amateurs in the world full of similar competition, and to be able to move you NEED slack. If slack is 2x slower tomorrow, you take it, you NEED it.
Nobody understands anything at this point. Neither they want to. We just throw barely baked shit out there, hope for the best and call it “startup wisdom”.
Yup. 100% this.
It seems, individual users don't matter anymore. As long as the final majority of users end up in the “okay, I guess it works” state, we're golden.
I'm all for your “Better world manifesto”, sign me up. But I think that developers are not the bottleneck, the users are. We do have the responsibility, but this is an industry change we're talking about, and only markets seem to be able to effectively change industries.
Until we all live in some perfect society, there will be huge markets full of users with “other problems than your stupid app”. And as long as it makes economical sense to produce cheap crap, it will be produced.