💾 Archived View for schinkel.bevuta.com › rants › against-software-development.txt captured on 2023-11-04 at 11:42:07.

View Raw

More Information

-=-=-=-=-=-=-

[from: http://www.rntz.net/post/against-software-development.html]

Against software development

Take with a grain of salt.

I.

The basic Darwinist tragedy of software engineering is this:

Beautiful code gets rewritten; ugly code survives.

Just so, generic code is replaced by its concrete instances, which are faster
and (at first) easier to comprehend.

Just so, extensible code gets extended and shimmed and customized until under
its own sheer weight it collapses, then replaced by a monolith that Just Works.

Just so, simple code grows, feature by creeping feature, layer by
backward-compatible layer, until it is complicated.

So perishes the good, the beautiful, and the true.

In this world of local-optimum-seeking markets, aesthetics alone keep us from
the hell of the Programmer-Archaeologist.

II.

Code is limited primarily by our ability to manage complexity. Thus,

Software grows until it exceeds our capacity to understand it.

Because of this, creating large software systems requires making and enforcing
decisions about problems beyond any one person's ability to understand. Making
collective decisions is the core problem of society, government, and culture.
After 14,000 years, we still fuck up a lot. As software eats the world, we
should expect our collective decision-making systems to be badly stressed for
the foreseeable future.

Perhaps we should expect true advances in software “engineering” only when we
learn how better to govern ourselves.

III.

To those who have a choice:

Refuse to work on systems that profit from digital addictions.
Refuse to work on systems that centralize control of media.
Refuse to work on systems that prop up an unjust status quo.
Refuse to work on systems that require unsustainable tradeoffs.
Refuse to work on systems that weaponize the fabric of society.

Above all, refuse to work on systems that understand and manipulate people, but
offer no affordance for their subjects to understand and manipulate them.

Work on something that matters, if only to you.
Work on something that helps people, even in small ways.
Work on making things understandable.

Once, software let us escape to virtual worlds, choose our own communities, and
explore alternate realities. These days, for better or worse, software defines
everyone's reality. Let's build one worth living in.