The Database Doctor
Musing about Databases

Greed vs Bravery Based Engineering

It is difficult to find words that accurately describe the cruelty and evil on display from the White House last night. The guiding principle of Gordon Gekko: "Greed.. is GOOD", has finally reached a crescendo.

I think we must accept that it is possible to have a coherent world interpretation through the lens of "Might makes Right". Its the way sociopaths view others, it is the system that dictators will have you accept. In such a world view, "trust" simply does not exist - except in the short term wielding of power to create fear. In a might makes right world - every transaction is a zero sum game. To have a winner, there must be a loser.

You can choose to submit yourself to might - or you can fight back. Today, I want to talk about a few bugs in the "might is right" and greed based world view that we can exploit as engineers. Hopefully, we can grapple together on how we can collectivity fight back!

Credit - Where it is Due

The American Tech industry has tried to portray an image of are building companies which will make the world better. We don't have to look back very far to see that this wasn't just an image - it was a reality.

Credit must be given when it is due. Some examples of what we got from the US.

Innovation thrives in an environment where hard work translates either profits or to the simple delight we get from helping of fellow human beings.

But technology has an interesting interaction with greed: It aggregates more power to those who already have it.

Power Aggregation and the end of Capitalism

Capitalism in the US, the direct correlation between hard work and flourishing, ended during the banking crisis of 2008.

Computers and algorithms had at this point put an enormous amount of monetary power into very few hands. When the rules of capitaslism required the mighty (bankers) to fall - they instead had the power and political influence to stay standing - at the expense of the taxpayer.

With the bailout of the bankers, greed entered its next, logical phase. The world was taught an important lesson: "If you have enough monetary power - you are above the law and the rules of capitalism". In 2008, the US transitioned from a capitalist society into a system powered by the ability to print more money on demand.

It was around this time that Bitcoin was invented. We often her crypto fans (or "cryptards" as I like to call them) talk about how Bitcoin is backed by compute, but the USD isn't backed by anything. But this misses a crucial point: While you the US government can create more USD as they see fit, the dollar itself is backed by two things: military might and "production".

The US needs to keep producing stuff that people want. You support your nation by buying things. The system has to generate more demand - even when that demand is pointless. "It's the economy, stupid!".

Here, we encounter the first bug in Greed:

The end of Quality

With globalisation, most western nations moved large parts of their production chains to Asia. We could not mass produce products are a fraction of the price they used to cost.

But, if you can buy things cheaper - how do we keep the engine of greed running? One way to achieve it, is to reduce quality. Make sure obsolesce is a planned part of your product lifecycle. A good example of that is your iPhone - you may have noticed how it eventually becomes obsolete, forcing you to buy a new one.

Another way to keep greed going in a market that does not desire new things is to pretend you innovating - when all you are doing is recycling old ideas. This process of stacking irrelevant features on top of an otherwise useful product is what we call "enshittification". A good example of enshittification is Microsoft Outlook, now an almost useful email client that is slower, less stable and harder to navigate that it ever has been. Another example is the public cloud, inferior in nearly every way to traditional servers (we will get back to this later)

Of course, such malcious behaviours to fuel greed are only possible if you are a monopoly. But capitalism had already been put out of business in 2008 - so being rich also meant having influence. And thus, the tech giants were born.

Think, for a moment, about how little Apple, Google, Meta and Microsoft has achieved the last 15 years. Consider the amount of capital they have deployed and how that capital has produced almost zero, beneficial outcomes for humanity as a whole. These companies have enormous workforces. They are full of HR processes, management theories, organisational complexity and highly skilled people. Yet, very little of civilisational value comes out of them. In fact, they are actively harming the economy by vacuuming up talent and putting it to work on pointless ideas.

Consider, by contrast, the incredible work done by a dedicated group of hackers who made the Linux kernel. Think of the success of Factorio due to its high stability - made by a tiny team in the Czech Republic. Or "The Witcher 3" - made on a fraction of the budget of a large game studio. Or Spotify, a small Swedish company challenging the entire music industry. Saxo bank, almost dominating world currency trading and established by a small team. More recently, we saw the movie "Flow" (nominated for 2 Oscars) made on a bugdte 20x smaller than a Disney animation - yet superior in nearly every way.

Greed is inefficient - particularly when it operates in a market dominated by large players.

The end of Markets

The rise of Amazon was the final death blow to capitalism in the US. Here, a simple book store was allowed to dominate nearly all of retail - unchallenged by regulation. At this point, Greed had already estalished the principle that "if you are big enough, you can get away with anything". Amazon, not satisfied with having destroyed traditional retailing, needed more. And that more was the cloud.

You may remember the initial, false analogy of the cloud as a utility: "You don't operate your own power plant, why would you operate your own data center". Well, ask the Germans whether outsourcing power production to Russian gas oligarch is a good idea. Amazon could easily have made the cloud the equivalent of traditional servers, just running on someone else's server room.

But, remember Bug 2: Greed favours low quality. This led Amazon to invent a series of services that don't really do anything good to their customers architecture - but which favours burning more compute running wildly distributed system. For no good reason except making more money for Amazon.

To make people buy the services provided by Amazon - they needed software engineers to look up to them. Fortunately for Amazon, Social Media had at this point embedded itself into every industry. All they needed to do was to plant stupid ideas of cloud services into the minds of useful idiots. Idiots who would then start spreading the Web 2.0 architecture as gospel and best practise to be applied without thinking.

And thus, Microservices, object stores, NoSQL, complex message queues, serverless computing and other stupid ideas spread - casting a grim show shadow out the perfectly fine IT architecture that had served us so well until the collapse of capitalism. Defending the "old ways" was now delegated to grump old men like myself who still remember a time when you could run your entire company on a small server with software that is easy to debug.

With Amazon, feudalism is back and we are vassals in their ownership of the digital marketplace and mindless slaves to their ideas about software architecture.

More companies mimicked Amazons way of deploying "money as a weapon". Uber destroyed the taxi industry and are now actively working on driverless cars to put their very "employees" out of a job. Social media first destroyed independent news media and replaced it with an echo chamber. It then wielded influence to control political outcomes (no matter what side of the spectrum you are on you will have benefited from this). And now, Elon the Clown is getting away with raiding the very institutions that are supposed to protect us against his will to dominate all life.

But greed did not stop there...

The end of Consumption

Remember, the USD is backed by two things: Military Might and Consumption. Since governments from both sides of the political spectrum has flooded the world with USD - the predictable outcome was inflation.

Inflation, combined with Greed's need to take more from those who have the least eventually drives us to a world where increasing consumption isn't possible anymore. There just isn't enough money in the hands of the many to create meaningful signals about what to produce next. Innovation grinds to a halt, people are miserable and they need someone to blame.

The only way to prop up the USD is now to exercise military might. To bully your neighbours and step on those smaller than yourself to make yourself look bigger.

Might makes right has been established as the final outcome of greed. And we have seen no clearer display of this than the atrocious, undignified treatment of a man who has spent 3 years of his life trying to stand up to his barbaric, green driven, neighbour.

Greed Driven Development

Our industry is now riddled with inefficiency. Systems are built in clouds, with overly complex services. These clouds are owned by tech giants - who have demonstrated that they are willing to be dry humped by a narcissistic megalomaniac - as long as it serves their short term greedy, purposes.

The US handed the keys to secret data bank over to the person least qualified to look at it objectively.

How long until the cloud vendors agree to hand over the keys to your cloud systems?

We have entered an era of greed based development where:

There is another way.

Bravery based Development

Too often, I hear developers follow this line of thought:

Many developers are perfectly capable of engaging with complexity and even embrace it when mindless importing libraries and taking dependencies on cloud services. But when they need to write code that "look hard" they shy away from it and take shortcuts. All in the name of efficiency.

This way of thinking isn't how great software is built. Great software is built by boldly walking into the problem space, properly analysing the complexity there and grinding (yes, hard work) the hours to conquer the complexity. You don't build great software by blindly applying best practices or taking a series of short term moves. Just like you don't play good chess by looking just one move ahead.

It takes balls to do this! And it takes hard work and putting in the hours. But it pays off - big time!

There is a maximum size an effective software team can have (I estimate this number to be less than 50 people). But goodness, you can get a LOT done with 50 people - much more than most large, bloated, greed driven organisations.

Greed can't do this - because greed is lazy and only thinks short term

Call to Arms!

I think the time has come to shed our complex ideas about how to build software. We need to return to the basic building blocks. Some of the greatest achievements of humanity was done with simple tools wielded by people who could effectively work together.

The talent that can pull off bravery based development it limited. But worse, it is fragmented and partitioned by "religous wars" about things that ultimately don't matter.

Examples:

How many Web frameworks do we need? Can we make meaningful interfaces with a minimal amount of JavaScipt if we were willing to accept simpler, but easier to learn and maintain, interface frameworks. Should be put our effort into improving the HTML/CSS standards to better support the core use cases that web frameworks are trying to solve with the needless complexity?

Do we really need yet another markup language? XML, JSON, YAML, etc... Who wins from introducing these new standards and constantly creating new frameworks?

How many Linux distros do we need? Are we better off pooling our knowledge and coming up with a Linux distro (and windows manager) that can once and for all kill off Microsoft and dominate both the server market and the laptops?

How many god damn layers of fancy abstraction does your CRUD applicaiton need to do what it needs to do?

How often do we need distributed state management? Are we better of improving databases with whatever state management feature you feel you are missing (example: tables that act like queues). On that note: Is the introduction of message queue like Kafka really a patch on top of previous, bad architectural choices? How stupidly complex does your app have to be to need a message queue vs talking to a database that is highly available?

Do you really, really need to scale out your application and introduce all the complexities of distributed computing when you can buy a 128 core CPU for almost nothing that will run pretty much anything.

Are many of the so called large scale compute problems even worth solving for you business or are you just employing an army of data analysts because Gartner group told you it's cool. Are you storing data in complicated, tierer How many services do we actually need a cloud vendor to provide? Is it even in our interest (as a civilisation) for cloud vendor to control what services should exist?