Software

Houses

The Clan Domeshaven have lived in their valley for centuries. Millenia, probably – there are no written records. The old woman says there were as many as 500 households at one time, but there were also as few as 50 after disasters hit. Today it’s 150 or so, and actually it wasn’t much different when she was a small girl.

Wulf the builder is an important member of the Clan. Each year, 1% of the houses fall down, and the Clan needs to build new ones. Everyone helps out if they can, but without Wulf’s expertise it would be a mess. He learned the right way to lay out foundations and mix mortar, taught by his father and his grandfather. Wulf was only 18 when his father was taken by the ague and he had to take over the responsibility himself. He’s glad that his son Beorn is already 25 and could take over from him whenever needed.

Suppose now that the climate undergoes a durable shift, the valley gets more rainfall, and harvests become more plentiful. More babies than ever survive their first winter. The population starts increasing, 1% a year. And these people need houses. So life is rather different for Beorn than it was for Wulf. Building houses is not just something for the summer when the weather is good, he needs to keep it up all year round. Practice and overwork mean Beorn is forced to invent new techniques – innovation! But the inexorable exponential progress means it’s still not enough. More people are recruited into the building profession. They share techniques. It’s not just about building, it’s about building for the future. It’s about integrating the constant flow of new ideas into a holistic building concept. Domeshaven 1000 is coming. Are you ready?

Or then again, perhaps the climate shift left the clouds shedding their rain on the other side of the mountains. Harvests are not good, and the birth rate falls. 1% per year, the population is shrinking. There is no more need to build houses. When a house falls down, the family moves into one of the vacant ones. Beorn abandons the trade of his father. Instead he uses his strength in the fields, trying to do something to improve the hardening soil. His own son, if Beorn ever marries, will never learn how to lay foundations. After a few generations, the seventy or eighty households remaining have no memory of how the houses they occupy ever came to be.

The point? If you are in the business of making durable goods, don’t get comfortable. You live on the margins. Even small shifts in the economic winds can turn your profession into something huge and baffling overnight. Or wipe it away entirely.

Software is an exceptionally durable product.

Moore

In 1965 Gordon Moore observed that the number of transistors on a single chip was doubling every year. That initial burst was later revised to every two years. That trend has held up for the past 50 years and continues to be true, scaling more than a million times. Here’s the picture from Wikipedia:

Graph of Transistor Count vs year from 1970 to 2020.  The vertical scale is logarithmic, showing a smooth transition from about two thousand to fifty billion over that time.
Max Roser, Hannah Ritchie, CC BY 4.0 https://creativecommons.org/licenses/by/4.0, via Wikimedia Commons

50 years is at least two human generations. It also happens to be my age. I have never experienced a world in which “technology” did not mean silicon chips. By the time I entered the workforce, writing software that would stand under its own weight was a solved problem. My career, and the career of every other software engineer, has been entirely occupied with the second-order effects. Primarily: how to manage change. Why would things change? Because Moore’s Law. As new possibilities are unlocked, inevitably every system bumps against a new way of working. “The only constant is change”, I heard a post-middle-aged board member tell us assembled engineers this year. The cliché is cringe only because it’s been repeated so often.

But the graph above is a lie, and this has been obvious for years now. Gordon Moore made an observation about individual chips. But that chart shows microprocessors. These days microprocessors are many chips wired together and glued in a big blob. So the only way to keep that line going up is to change what you measure. Transistors are not getting smaller according to the old schedule. Instead they are squished together, stacked on top of each other. Here’s what’s actually been happening:

Graph collecting several microprocessor trends from 1970 to 2020 on a logarithmic scale.  In yellow is a count of transistors, showing the expected regular doubling every two years.  Below that in blue is single-thread performance, with a noticeable downward kink to about half the growth level around 2005.  Below that in green the frequency becomes dead level.  In red, the typical power has been increasing more slowly, and is gently slowing down to become almost flat.  By contrast, in black, the number of logical cores was stuck at just one until about 2007, and has been doubling even more quickly than transistor count to reach the hundreds.  To the right a box warns: "All trend data shows a flattening.  Flattening of the number of transistors curve is imminent.
Software Engineering Research and Practice and e-Learning, e-Business, Enterprise Information Systems, and e-Government. 22nd International Conference, SERP 2024, and 23rd International Conference, EEE 2024.

The number of transistors was never the point. More transistors on a chip used to mean that the transistors were smaller. Smaller transistors switch faster, and use less electricity when they do so. The transistors were more powerful, more useful, because of their size, not their number. In principle you could take an old design, put it through next year’s factory, and enable whole new categories of tasks. The number of transistors used to be a useful proxy for that. Today’s engineering has broken that connection completely.

My first computer was a 486-SX running at 33MHz. For a decade afterwards, I expected each new computer to run faster than the one before. Today my 15 year old Raspberry Pi Zero, $8 at the time, runs at 1GHz. The laptop I bought two years ago for close to a thousand Euros tops out at 4GHz. Now, my laptop is doing very different things to the Raspberry Pi. Measuring processor performance is complicated. But we can say something very clearly: what Gordon Moore described, is over.

Foundation

Generations of programmers, including myself, were brainwashed into a particular ideology. Change is constant. Disruption is good. Innovation is a goal in itself. You can safely ignore what your parents told you, what your professors told you, the stacks of dusty conference papers in the library. What the world needs is individual genius freed from the shackles of tradition. Trust your own judgement. Pursue your idea as far as you can. Ignore the naysayers. Don’t let the perfect be the enemy of good. Build the minimum viable product and launch with that. Release early and often. You can fix the bugs later.

And this is right! In a world governed by exponential growth, new opportunities are lying around for anyone with an analytical mind to pick up and exploit. The world never saw a processor with a billion transistors before, so who can tell you your idea would be too slow to run? The one thing you can’t do, is hesitate. The institutions of the world really were built to slow things down. Our present world was built by, defined by, the people who ignored those institutions. They got rich, and we all benefited.

So what happens if the exponential growth really does last, and iconoclasm is handed down as established faith over multiple generations? What kind of culture does that nurture? And what happens to that culture when the weather changes?

Software

Change in the software industry is slower than the boasts. Still, looking back, I’ve seen some things. In my first job I was was very happy to learn that the project I was taking over used CVS – source control was relatively enlightened for the day. I’ve seen production code that extensively used single-letter variable names. Code reviews, unit tests, static analysis, continuous integration. My younger self would have been appalled at how bureaucratic and convoluted software development has become in 2026. But introduced one-by-one over decades, after learning the hard way exactly what problems they solve… Well, I got used to the new best practices.

None of it made any difference.

Is software more reliable than it was in the days you had to peel off the cellophane in order to use it? Of course not. What’s happened is that complexity was piled on top of complexity. We were taught not to re-invent the wheel. You need to launch that product, so if there’s existing software you can build on top of, do that. It runs slower, but Moore’s Law accelerates everything. So your product ships with millions of lines of code that will never make any difference to your users, which are run anyway. Just in case. Over and over and over and over and over. Until they hit the bug, and the whole tower collapses.

The current state of software, all software, is a disaster. You see this in developer tools watching a typical webpage load. The page contains a small amount of text, some images, and some buttons to do something useful. To make that work, your browser downloads many megabytes of compressed code. That then runs in your browser, an entire fake computer with gigabytes of its own code. All to run a login dialog. Far too often, the machine collapses before you can log in. My Commodore 64 went from cold to a Basic programming environment in less than a second. How can modern software be so bad? It’s embarrassing.

Abstraction

You don’t get paid to write software for yourself. You write it for others. Specifically, you write software to empower others. That’s the brief.

How can you empower people by building ever more complicated machines? The key is abstraction. First, recognise that a set of specific tasks are all variants of a single abstract task. Then you can codify the abstract task, and build a machine to solve it. Finally, teach people how to map their specific tasks onto the abstract task. For example, defining the cleaning roster for the sports club is, if you squint, sorta the same as calculating how much it’s prudent to spend on the Halloween party. You put the numbers in a squares in a grid, and calculate other squares. It’s a spreadsheet! And that’s a genuinely important technology.

But I didn’t invent the spreadsheet. No software I wrote is that useful.

I presented the sequence as a simple and obvious process. I didn’t describe the gamble. Abstractions are always more difficult to understand than immediate problems. So your elegant abstraction always makes things harder for the people around you in the short term. The gamble is that the benefits will, eventually, be worth the costs.

For many decades, programmers have placed that bet on the table and doubled down over and over. Again, Moore’s Law is the reason. There are so many new opportunities on the horizon, and it’s impossible to guess which particular abstraction will pay off in the near future. So if you even see a hint of a possibility, build it! And programmers didn’t hestitate to force their solutions on the people around them. If you know that you can see further over the horizon than others, why would it bother you if they express doubts that your gamble will pay off?

But the software industry did not empower its customers. We put everyone on the planet in an individual rat’s cage, endlessly prodded and provoked by inexplicable machines.

TNG

My life is the story of Moore’s Law: its codification, its consequences, and its demise. I wasn’t around to see computers with repurposed radar screens for output – my father remembers poking his nose into the computing lab and seeing that. But I started out as a child watching my mother write Basic programs on that Commodore 64. Eventually I owned a reset cartridge that allowed me to dump RAM as ASCII and edit it, and used that to modify the game Manic Miner. My first level editor! I experienced a computer as inescapably hackable, because there was no other way to use it. And then I saw that playground sealed below layer upon layer of asphalt. It’s not that you couldn’t make the computer do what you wanted. But the morbid complexity of the computer industry made it impossible to understand what was happening under the covers. Not to worry though, we built a new playground on top! One with strict rules, and carefully described boundaries.

I went on to study both Computer Science and Electronic Engineering at university. Not out of any particular life plan, that just seemed to be where the system put me. But at one point the lecturer discussed Arithmetic Logic Units, and I realised that was the last piece. I’d passed courses covering quantum physics, materials science, semiconductor junctions, digital logic, processor design, operating systems, and everything up to web development. There were no black boxes left. I didn’t know everything in depth, but I knew where the answers were. That’s the position I started from, as wave upon wave of new software development best practices crashed over the industry. Nothing was easy, but I instinctively understood that nothing was ruled out either.

Over the last decade, as my work has increasingly involved training up new joiners, it’s become striking how little I have in common with these people. You bump into things that seem odd, that you can write off as old-man-yells-at-cloudism. Why are you installing an app when there’s a command line tool to do that already right there? But then, how does working with a computer feel, when you start with TikTok and try to reverse engineer your way down to understanding memory layout? Does that actually work?

I’m starting to think that it doesn’t. The experience of studying Computer Science in 2026 is a bunch of dry academic documents that have no connection to your daily life, coupled with a barrage of incomprehensible jargon for ideas that didn’t exist in 1993. Pull Request! Agile! Test-Driven Development! Receiving objects: 5446/27223! Upates are Available! Enter the code from your authenticator app! How on earth could anyone get a grip on all of this in a 3-year degree? When would you ever have the chance to concentrate on actually implementing an algorithm? And what would even be the point, when you can apt install the answer in a few seconds anyway?

The reason I keep coming back to this diabolical machine over and over again, like an addiction, is the feeling it gives me that I’m in control. That may be an illusion. But that hubristic confidence inspires me to solve problems that other people would regard as too difficult to contemplate. I’m now far too arrogant to waste time wondering if my abilities are actually up to the job. And that has made it worthwhile for companies to pay me a remarkably inflated salary year after year for decades. How on earth could a 20-year-old build that confidence today?

The software industry has already eaten its own seed corn.

Intelligence

All of this is the background to the AI revolution.

A computer science student today never needs to change a single quote to a double quote to fix a compilation error. They didn’t write any of the code. Deep in a data centre somewhere hot and dry, several rounds of agents already made outrageous mistakes, failed to compile them, asked each other how to fix it, failed to compile that too, made more corrections, and finally spat out immaculately-formatted code that compiles perfectly. That student will never be able to write code themselves. It’s impractical and unfair to expect them to.

So that student will only ever experience a computer as a black box. Sometimes it does what you want. Sometimes it does not. To me that would be an exasperating way to live. But that’s because I’ve been walking around with my eyes shut for 20 years. Everyone around me has been experiencing every computer exactly that way all this time. In retrospect, I barely lifted a finger to help them.

LLMs can’t write code. I know, I know. And I don’t care. It compiles. It runs. It spits out a result. It’s usually the result you wanted. But it was not built from an understanding of reality, and it can’t support serious work. 99% is not good enough, because a hundred layers of your stack all need to work flawlessly. It will take years, perhaps decades, for the slop code seeping into the foundations to ruin the superstructure. But it’s already screamingly obvious that this is not sustainable. At some point, the machine will stop. If it matters, you will run the software as it existed in 2023. If it doesn’t, you will do without. When your house falls down, move into one of the vacant ones.

But this warning would carry a hell of a lot more weight if human-written software had ever been measurably better in any way at all.

Stagnation

I think it’s important for people like myself to really get to grips with how useless we all are.

Software can be copied perfectly, indefinitely. This means there is no value in writing software that has already been written. Therefore, writing software professionally means writing software that never existed before. Otherwise what is the point?

And while society might benefit from software that previously did not exist, it can’t possibly be necessary. Civilisation got by just fine for millenia without it.

As software development explores more and more of the frontier of the possible, the returns inevitably diminish. The big breakthroughs come early. Further breakthroughs become possible thanks to Moore’s Law. When that runs out, the marginal utility of what remains become questionable.

Running a software development organisation is not cheap. Mostly due to the expensive and poorly-socialised employees required, but a not-insignificant cost is the offices, equipment, and services they require.

So the mathematics of this are straightforward. You can massively improve productivity by using a word processor and automatic typesetting, or by using a relational database instead of an army of clerks. You can exploit advances in communication technology to pump a civilisation’s worth of knowledge into your home. But after a while you’re left with only extremely dubious ideas. The Metaverse. Bitcoin. Or ideas that were always obvious, but equally obviously unjust. Ride-sharing. Surveillance. “Fintech”. And it gradually becomes clear that there are no real societal benefits that would justify the salaries required to realise these ideas.

Monopoly

Without wanting to launder Bill Gates’ reputation, Mark Zuckerberg built a very different business. Bill Gates built software that advanced the technological capabilities of the general public, triggering a new wave of economic productivity that benefited everyone. Excel, not Linux, is where the world does its computing. He then turned that into a monopoly and extracted an unreasonable portion of the benefits for himself. Mark Zuckerberg skipped the bit with the advancement of the the public’s technological capabilities. He solely created a monopoly, and triggered a feedback loop of money and political power.

The result is that when Moore’s Law fizzled out, journalists and the wider culture barely noticed. They still gasp and tremble before the technological titans, smirking as they pull the veil off the next slice of the future. The habit of mind is that these are the prime movers that spontaneously emit wonders into our society. As an ordinary human you cannot hope to understand any of it. But history tells you it must be wonderful, the fountain of a new productivity wave. And look at how rich they are getting! That wouldn’t happen unless they had tapped into something valuable, surely?

But that’s exactly what happened. The vein of economic benefits that drove this industry to its current position was tapped out years ago. Instead, the façade of enormous wealth was propped up with every more rapacious extraction from the crumbling real economy behind. As I type this, the streets of Paris are on fire. They are full of young people who cannot any longer ignore that something, somehow, has been stolen from them. They believe the thief is hiding in the Élysée Palace. In reality, he is on a stage, wearing a black turtleneck, in front of a video screen six times his height.

Justice

In an important sense, I lost my job in the last year. I chose to walk away from my employer, but it was not an option to continue doing the work I enjoyed. And I have to admit: I deserved that.

I was supposed to be empowering the people around me. Instead I made the working world confusing, complicated, and slow. At the same time I carefully cultivated my own technological playground as a place to empower myself. It’s no wonder that people are heartily sick of me, and find LLMs a breath of fresh air.

But if people are sick of my bullshit, we need a new word to describe how they feel about the current wave of “technology” billionaires. For every one person who genuinely loves LLMs, a hundred more chose them as the least-worst option in a poisoned landscape. It is getting harder to maintain the illusion that the great captains of the technology industry know what they’re doing. Even journalists are starting to notice.

Revolution

There is a new industrial revolution underway, and you’ve got your head in the sand if you can’t see its historical importance. It started in the 50s, and has been on an exponential curve all this time. It’s called “the energy transition”. It’s the only industrial trend that matters now.

It’s no longer a technology-driven revolution. The basic ideas are known. In 2026 we have more efficient motors, more efficient solar panels, more efficient wind turbines, longer-lasting and more energy-dense batteries. But if we were making do with the technology of 2000 it wouldn’t change the calculus at all. You can store energy perfectly well hoisting a lump of concrete out of a mine shaft with a windmill. And if we don’t, if we keep burning Carboniferous forests, we will die.

If you have a trillion dollars of capital that you don’t know what to do with, buy solar panels. Buy a solar panel factory. Buy a polycrystal plant. If you have change left over from that, buy a materials science lab too. But get the job done. Yesterday, please. There is no time for side-quests.

By contrast, the IT industry has nothing of value to contribute.

Future

It’s not a bubble if it never bursts. We could, if we as a civilisation so chose, keep the AI castle inflated indefinitely. We would need to permanently impoverish ourselves. We would need to trade away our chance to mitigate global heating. We would need to live in a fragile fantasy, pretending that shovelling money ever upwards from the poor to the rich is a good idea for some reason. We would have to vow never to closely examine the numbers. But we could do all of those things. Wouldn’t be the first time.

More likely, I think the bubble will burst. I also think I can afford to hunker down and stick to my old-fashioned work until that happens. The real question for me is, what kind of software development industry will be left behind afterwards?

What I can’t sustain, is the idea that it will all go back to how it was before. There’s a comforting notion that we will all be hired again to clean up the mess the AI made, rolling up our sleeves and doing a hard day’s work based on sober experience and common sense. But that won’t work. The industry I’ve worked in, with its best practices that I zealously followed, was already failing long before ChatGPT showed up.

Instead, the conservative case is that we’ll all use modest local models to “do the gruntwork” for us. How exactly you can still usefully modify and repair a machine that you no longer understand, well that’s a problem that we’ll solve later. The Icaruses may fall from the sky, but pedestrians like us will keep plodding along. The work will change, but as a software architect whose mind inhabits a separate plane of magnificent abstractions, there’s no reason I need ever be made uncomfortable.

But I would rather choose to be optimistic. I think we can, and will, just end it.

Leave a Reply

Your email address will not be published. Required fields are marked *