Intuitively, software is like magic. An incorporeal force that nevertheless gets stuff done
It seems so impermanent, so liquid, so malleable that it's obvious it's the place to intervene in things. The way you change the world is by writing software. After all, it's so much easier and cheaper to change software than push hardware around. To construct a web-site rather than a building; to manage a database rather than a company.
And yet, software resists. It's aparent lack of solidity is an illusion, it reveals an iron strength. It takes a huge effort to push software around. To make changes through software. Maybe it's easier to change the physical structure of a city than the temporary connections and flows through it.
Is it easier to change laws than seize factories? Easier to change the nature of money than plant fields?
I sort of rewrote this over on Tribe in answer to a discussion on why software is bad.
I think software is hard.
We think it isn't, because it looks, superficially, so simple. It's like, "hey, it's just made of words. And words don't rust or develop mechanical faults, must be a lot easier than a complex machine"
But actually, software has so many more degrees of freedom and interactions than physical machines. In a machine, the components are fixed and can't change. We realize that the only way to change them is to rip them out and throw them away.
Also, machines are physically connected together in 3-dimensional space. There's a limit on the number of things you can plug together and make interdependent. Because there's only a certain number of parts that you can fit into the box. The cables and pipes only carry so much electricity or water.
And the power supply only has enough juice to turn x number of wheels etc.
The spatial and physical constraints limit the complexity you expect to cram in.
With software, these limits go away. You think that one small routine can carry the weight of as much extra processing as you can pile onto it. You hope to get away with re-using components again and again in different circumstances, even when they aren't such a good fit.
In fact we have far more "moving parts" in a piece of reasonably sized software than any complex mechanical device.
The only things comparable to software are things like economies and cities and legal systems which are also made of words. And these things are also very hard to make work well. And they're always continuously needing maintainence and repair.
See also :