The Technological Challenge

I consider myself a technology critic. When people hear that, they tend to think I'm against technology, but the truth is more nuanced than that. If anything, I'm against the way we conduct business around technology. So maybe a better term would be "techno-ecologist" - one who studies the relationships of organisms to their technological surroundings.

My studies have lead me to some interesting observations. For instance, that the reaction between society and technology is a chemical one - once a tech enters society, it cannot be taken out, only changed and hopefully improved upon. In other words, we can shape the trajectory of technological development by building better and more sustainable alternatives.

Values

One of the fundamental issues with our relationship to tech is that it lacks moral guidelines. Technology is primarily driven by corporate entities which are amoral by nature. People on the other hand are highly moral creatures - definitions of right and wrong are part of the foundation of humanity and civilization. With that in mind, I would like to propose some values to base our technological society on, namely: diversity, resilience, simplicity, modularity, efficiency and accountability.

Diversity

I would like to see much more diversity in our technological ecosystem. Technology is - among many things - a grand competition of ideas, but one that's sadly been dominated by the same handful of products, services, companies and paradigms. Which is not to say that alternative ideas aren't out there - they just tend to get drowned out by the mainstream.

We should have thousands of different communication platforms to choose from, not just a handful. Diversity promotes experimentation, interoperability and standardisation. Nature abhors monocultures and tech should too. Centralization of power tends to lead to stagnation and corruption and technology is not immune to this tendency.

Diversity of ideas is the essential prerequisite for all the following values which is why I believe technology policies should focus on promoting diversity. In addition to holding Big Tech's feet to the fire, we should be doing all that we can to promote new ideas and help them thrive. Letting the private sector handle most of the funding tends to skew the priorities and select for disruption and ultimately for monopolies.

Resilience

Our QA processes for software development are woefully inadequate. We should devote much more effort on making existing tech work better instead of constantly trying to push for something new. Just throwing more and more management and monitoring systems on top of an already unsustainably heap of complexity just makes things more unstable and insecure.

Being resilient also means being less dependent on technology.

Simplicity

Tech should be as simple as possible. This applies not just to the user interface, but the entire architecture of the system. "As simple as possible" is difficult to achieve mainly because to know what to leave or take out of the system requires much more insight and experience than adding things into it.

Our main tool for achieving simplicity is of course design. Design in the broadest sense possible - the modeling of something.

Modularity

One of the reasons we keep seeing growing complexity in our technology is because we cannot recombine what we already have in useful ways. So instead of combining A and B to do C, we resort to writing C from scratch or bolting it onto A or B. The big reason we spend so much time on the error-prone process of maintaining and extending existing systems is because those systems were never designed to be modular and extensible. We have come a long way in modularity on the code level, but this is more about modularity on the application level. I would even argue that modularity on the code level results in several problems with simplicity and resilience because it incentivises us to write more new code.

For a good example and excellent blueprint for how to build large, complicated systems from modular parts, look no further than the *NIX architecture.

Efficiency

The technology we use should use as little resources as possible. This goes doubly so for critical services. Yes, developer time is also a valuable resource, but natural resources are more important. I would like to see us move away from running what are essentially rapid prototyping tools (stacks of highly dynamic interpreted languages) being used in production on a massive scale. Moore's Law was an anomaly and an unprecedented privilege, not a law of Nature. A newer version of a system should always use less natural resources than the system it supercedes.

Case in point - we should replace most of our WordPress installations with static sites.

While we should increase our efficiency in our systems, we should decrease it in our organisations. Designing efficient systems requires creativity, but creativity is at odds with efficiency. Creativity may thrive in scarcity, but scarcity and efficiency - while related - are still two completely different things.

Accountability

Tech vendors should be held accountable for the stuff they release and push onto society. The current uncontrolled experiment on the public simply has got to stop. Commercial software should come with a warranty.

Engineering schools should adopt the Archimedean oath as part of their graduation process.