I’ve been developing software, from a low level developer, to an applications architect, to a product managemer for over 10 years.
There is a fundamental truth, about software, that many people (even weathered IT insiders) havn’t grasped. I have witnessed this on all sorts of different projects. All software will fall apart. Software is like a car. Once it reaches a certain age, it starts to take bigger and bigger maintenance efforts, until it reaches a point where the maintenance can’t counter the decay.
How can software fall apart?
Its simple… software is never finished. Bugs are constantly being fixed and features are constantly being added. Constantly. For ever.
After a certain “critical size”, every line of code changed or added to a code base adds to its complexity. The more complicated a piece of software, the more likely a new feature will introduce a bug. Undiscovered bugs get built upon, making the bug harder to resolve, and more likely that the bug fix will introduce other new bugs.
The big question, which I cant answer today, is how big can a project get (in lines of code (or perhaps product features) and human resources) before it starts to fall apart?