I don’t know if this is a new idea, but I’m going to define it to make discussion easier.
Software Gravity - the force that pulls features, complexity, and resources towards a software system over time.
Software tends to grow in complexity over time. Feature requests and user expectations create gravity around software.
That gravity pulls complexity towards software. Complexity requires resources.
Everything around software gets bigger over time. It is inevitable. Software gravity is always at work.
Unless you fight against it, software gravity will force you into a large and complex system. In fact, software creators are rewarded for embracing software gravity.
Most software business advice comes down to building what your customers are willing to pay for. That means building more features to make more money.
Features beget features. Customer requests beget customer requests. This drives software business forward.
Katamari Damacy Effect
This creates what I call the Katamari Damacy Effect.
This is unfortunate because software starts out small, nice, and purposeful. Eventually software of any significance is doomed to be unwieldy and unrecognizable compared to its original design.
The Circle Of Life
In response, small, purposeful new software comes along to right the wrongs of large, old software. Eventually software gravity takes over and the new software looks a lot like the old software.
We see this over and over again with spreadsheets, browsers, word processors, and operating systems.
The evolution of software - new replacing old, replacing new, replacing old in a circle of life.
It never ends.
As long as software gravity is a constant force in software development, software will continue to evolve in predictable patterns.
What we might see as progress is really an illusion. Every generation gets tired of existing software, tears it down, and rebuilds it in their own image.
I believe this is the way of things. We are no more able to change it than we are able to change gravity.
P.S. I unpack more ideas in Creative Genius