Not only is slow software annoying to use, but there are two greater
issues with the absurd inefficiency of some software and its hunger for
increasingly powerful hardware: A social and a environmental issue.
There might be some of us who are lucky enough to be able to shell out a
couple hundred Euros every two years to buy a more powerful computer. But
first of all: Why should we? There are lots of other fun ways to spend
money. Secondly there are others for who the decision to spend money
on a computer is much more difficult. People in countries with overall
weaker economies and/or inflated currencies can not just get the latest
Macbook every year. Some fortunate ones might, but a significant portion
of people can not. Do we want to exclude people from participating in
the digital era like that?! Using information technology, the ability to
gather, manipulate and communicate data, the ability to write code:
Those are important and defining abilities to have in the digital era.
They are enablers of a knowledge economy and societal change. Do we
really want to make it as difficult as possible for people to
participate in this new era by making software so slow that
only the rich can afford to buy the computers to run it?!
If we want to be inclusive to people in more challenging economic
circumstances of any kind then we need to make sure that software runs
on less powerful machines and that it runs on older machines that get
handed down through an aftermarket. The brightest minds might be
precluded from ever learning to code if we don’t care about these
things. That would be a loss for the world if nothing else.
To phrase this even more drastically: Writing inefficient software is an
expression of a (maybe subconcious) western arrogance that ignores the
billions of people who live in countries with overall lower economic
development levels. If one was particularly arrogant, one might say that
people in those countries had more pressing issues to face than using
computers. I would disagree with such a statement; on the contrary: The
power of knowledge and the power of digital communication can be vital
for people in a politically entrenched climate. And the value to be
generated from knowledge workers might just as well help societies with
weaker traditional industrial sectors. Caring about the performance of
software thus becomes a matter of solidarity and social justice!
The fact that it is considered completely normal to buy a new computer
every couple of years is particularly troubling at a time at which we
become increasingly aware of the environmental impact of our way of
life. The production of computing devices might not be a major factor in
global CO2 emissions compared to other sectors and industries. But
emissions are only one piece of the puzzle. Sustainability also relates
to the use of materials with a limited supply here on earth. Not only
are those materials sometimes mined under questionable conditions (to
put it mildly),
but processing and refining them involves a bunch of different chemicals
and lots and lots of water. The environmental cost of each chip might
not be outrageously high, but when we keep putting more chips into more
devices, we might want to consider how that adds up.
A big part of the problem is that recycling computer parts for materials
is not all that efficient or practical. Constantly swapping out
electronic devices that are working perfectly fine just because the
software keeps getting worse is creating huge amounts of avoidable
e-waste.
The amazing technological advances in chip design and manufacturing have
conditioned us to embrace the idea of regularly throwing away working
computers and buying new, more powerful ones. And while I appreciate the
latest and greatest chips as much as the next guy, I do wonder what
happened to “Reduce, Reuse and Recycle”.
I get that computer manufacturers want to keep selling us new hardware,
but what I don’t understand, is why software developers just happily
play along. Without software getting worse, year after year, we wouldn’t
need to buy a new computer so often just to keep doing the same things
as before at the same perceived performance as before.
It seems that when somebody complains about some basic software running
slow on an old device, they are ridiculed for expecting that software
continues to work. The idea that you can use the same computer for more
than ten years without it becoming unbearably slow, seems ludicrous. We
apparently have completely accepted the fact that software gets slower
over time. But it does not have to be that way.
Obviously there are use-cases that very much still benefit from better
hardware and rightfully so: Gaming, video production, 3D modeling,
scientific computing. Those are use cases for which the hardware was
never enough and more computational power is always better. That is why
I would mostly exclude developers of such applications from the indictment
of producing slow software. They are dealing with problems that are
actually computationally expensive and are mostly trying their best to
eek out the last bit of performance from the available hardware.
The expectations that users of these applications have keep increasing:
Whether you are playing the latest AAA-game, color-correcting some 12K
video footage or rendering out a complex 3D scene… For these
specialized use-cases it is absolutely reasonable to take advantage of
the most powerful hardware.1
Specialized use-cases also often show what is possible given a set of
hardware constraints: Game developers are amazing at using the available
computational power efficiently! They are able to create stunning
virtual worlds with high-resolution textures, complex lighting and
particle effects. Compared to the realtime 3D graphics of previous
decades, it is incredible how much engine devs are able to take advantage of
every bit of the tremendously powerful hardware.
But comparing these to other areas of software, the excitement quickly
turns into incredulous disappointment: My computer can
render amazingly detailed 3D scenes at 100fps but there is more than 2s
delay when I change between Slack channels?! What the fuck?!
The developers of applications that have to solve intrinsically hard
computational problems pull every trick to makes things go fast. But plain
old, mostly textual use-cases like chatting or web browsing are still
slow or even getting slower! That is just bonkers! Software
does not have to suck, but sometimes it demonstrably does. If we can
solve hard problems (simulations, AI, 3D graphics) then we should be
able to solve the simple problems as well.
So who’s at fault here? Everyone. Users want new products and features
and thus the market rewards pumping those out quickly and without any
consideration for performance (or security or privacy for that matter).
Developers cave to that market pressure and even if they might know
better: What are they gonna do? When everybody else gets rewarded
for not caring about performance then why should they?2
In order to break this cycle and change software for the better we need
both the creators and consumers of software to be vocal about
performance issues and refuse to use and create slow software.
If users start demanding more performant software, delivering it can
become a competitive advantage. And if developers go above and beyond to
build fast software, they can show users what they have been missing out
on. Non-technical users don’t expect software to be fast because they
are not used to it. They might not be aware of this, but there is no
technical reason why software has to get slower over time. So we
technically minded and educated folk have to tell them that the
status quo of unreliable and slow software is completely unnecessary.
Software that performs better is just nicer to use and absolutely
possible to be run on the computers we have today (and even those we
had 10 years ago). It is a precondition to include more people in
the digital transformation of our society and to let them participate in
the amazing world of software. And it is a piece in the bigger puzzle
of the other transformation: That towards a more sustainable economy in
which things are made to last.