njms.ca

Software development is antiscience

Published on 2024-05-10


Sometimes I like to think I'm a scientist. Not always, but sometimes.

Scientific apostasy

What I think it means to be a scientist is that you use and believe in the scientific method. The scientific method is a handy tool for revealing useful information about our world¹. It gives us a repeatable algorithm we can use to demonstrate that something is true in different circumstances.

Sometimes I like to think of the world as a tree of knowledge. On the outer edges of the tree—the furthest leaves from the root—we have the most self-evidently true things about the world. One of those outer leaves is the observation that when you drop an object, it tends to move towards the ground until obstructed. The scientific method is like repeatedly asking the question "why?" Eventually, you may find that all objects accelerate towards the ground at the same rate, and if you go a bit further you might notice that not only is the object being drawn towards the Earth, but that the Earth is also being drawn towards you. The scientific method incrementally and asymptotically works its way down the tree and towards the cosmic horror of empirical truth.

Three interesting ways of knowing

But I'm also a software developer, for one reason or another, and software development is nothing like science. In fact, I'd go as far as to say that it's antiscience. There's nothing scientific about the spirit in which we approach building software.

Scientists built the first computers; they made a cosmic horror of our own design, and software developers wanted nothing to do with it. Computer scientists gave us the first instruction sets with which we could direct their machines, and so we made the first assembly languages to hide it behind familiar English words. Then, a new generation of software developers used their own assembly languages to abstract away the complexity even further in the first high-level programming languages. Then, we built virtual machines to run on our machines to make sure we'd never have to think about their inner workings ever again. And then we made high level programming languages to instruct them.

While the scientific method enables us to unveil complex inner workings, the history of software development is characterized by nothing but hiding it. This can be a problem for all the same reasons not having germ theory was a problem for plague doctors. Importantly, it's a problem we might not even notice we have.

To me, software development is antiscience because in practice, software development is a rigorous approach to identifying exposed complexity and hiding it under layers of abstraction.

That's not to say all people who build software are practising antiscience. We have a lot to learn from Hundred Rabbits among others in that regard.

"An Approach to Computing and Sustainability Inspired From Permaculture" by Devine Lu Linvega (100r.co)

Footnotes

¹ Objective, empirical reality is useful as a concept because it gives us all the comforts of modern science. It's not the only way to approach understanding the world, however, and not always the best way either.

Respond to this article

If you have thoughts you'd like to share, send me an email!

See here for ways to reach out