Just around the corner at Strange Loop Canon Rohit Krishnan has an interesting “Ode to software.” Some bits:
Total man hours invested
Software is also incredibly complex. Far more so than anything tangible we produce. The great Cheops pyramid took around a decade and half with a peak workforce of 40k workers, maybe 1 billion man hours. Parthenon around 36 million. The Colosseum maybe 100 million, same as Notre Dame, that gorgeous cathedral.
However, Facebook, how many man hours do you think that took? It’s the same app, there are some percentage of employees who helped actually write the software, and this changed across the company’s life, and yes there are rewrites but the rewrites are part of how you learn what you should have written in the first place. And there’s a hell of a lot of maintenance, and continuous development, because both the product and the very environment it’s created it constantly changes. The rather crazy answer is that it probably took close to 200 million man hours. Even Uber is close to a hundred million. Microsoft? Partly because of the number of iterations, probably it’s a billion by now!
Complexity & Maintenance
The things we’re making with software are far more intricate, interlinked to other pieces of software and hardware and user input and more, than any we’ve created before. The complexity of a piece of code can be equivalent to the complexity of an entire culture, in its myriad dependencies and the long tail of knowledge that’s needed to truly understand it. [...]
And what gets built rarely stays built. There was a while where everyone thought investing in software was the easiest way to make money, because they got seduced by the gross margin (selling an additional unit of software is extremely cheap). But the implicit depreciation in software is incredibly high! You have to run extremely fast all the time, or you get beaten.
Some wide-ranging comparisons
Empires, cultures, cities. They're similar. They’re path dependent, built on top of what came before, constantly evolving. And they require incredible effort to build and sustain.
If software is “softer” it’s only because that’s a function of iteratively building solutions and then dealing with the problems that resulted from building things, basically sounds a lot like running an organisation.
Looked at this way you might think the Roman empire might have seen over half a trillion man hours dedicated to its maintenance. Egypt, which lasted longer, might have been as much as 2-3x more than that. However, only a tiny fraction of that was in actively building up a superstructure atop which it could grow.
Software as process
So if software is essentially a form of congealed decisions, then it’s not a product, it’s a process. There is no idea of a perfect product, because there is no perfect thought, the point at which you just stop thinking or when you’re done. And we live in the middle of the Eternal Refactor. That’s what software eating the world actually means. A new information supralayer on top of everything else we do.
That’s the magic of software. It makes historic decisions part of the legible firmament, even as it remains the most fleeting ephemeral medium we’ve devised, because decisions change and morph all the time.
It creates entire in silico civilisations with its history writ within its fundament.
And so forth.
[BTW, you might want to read Rohit's article through the lens of the rank theory of the cognitive evolution of culture that David Hays and I have elaborated.]
From software to AI
I blitzed my way through it and made a comment:
As I was reading this I got to thinking about what I want from my personal AI assistant. First of all, I want it to keep my software in order. I hesitate to say that I want it to connect it all together in a seamless web because, well...Of course that's what I want. But I have my doubts about the “seamless” part. I think the nature of the beast is such that the AI might be able to connect it all, but “seamless,” that’s something else. So, it’s got everything connected and does updates and adjustments and every once in a while hits a snag and asks me what it should do. I may or may not have a useful answer, but I can poke around and perhaps the two of us will come up with something.
Generalizing, isn’t that more or less what we want of the whole bloody mess of software? Can the right collection of AIs do something about all that legacy COBOL code that’s still all over the place? [A Google search on “legacy COBOL” got almost 15K results.] What about “legacy FORTRAN” [14K hits]?
Once we've got all that under control, then maybe we can worry about recursive self-improving AIs that solve everyone's problems everywhere and then take over the world.
That is to say, LLMs seem to be fairly good at coding, and perhaps more generally useful in coding than in their language capabilities. Can that capacity be put to work is organizing, integrating, and maintaining the existing body of code? I don’t think that would be a matter of cranking out a bunch of apps. It’s more difficult than that. The legacy code problem, for example, is a BIG one. Why not go to work on that?
I realize that there are “alignment” issues. Given the nature of the machine-learning monoculture that seems to dominate AI these days, sorting those issues into two classes – REAL issues having to do with reliability and performance, and FAKE issues having to do with the projective SciFi fantasies of TechBros – will take some time. But it should shake out in time.
More later.
No comments:
Post a Comment