This is good and rings true. I've taken it a step further with my definition of "Good Enough Programming" -- Implementing technology has two primary goals: it delivers value and you can walk away from it. To fail at either of these two goals isn’t good enough. [1]
The reason simple systems sometimes involve into successful complex systems is because development is completely decoupled from business needs. You code it, you watch to see how useful it is. Complex systems, on the other hand, are tightly-coupled. You code it, it needs changing, you spend a lot of time fretting over impedance mismatch, upgrades, patches, and so forth, instead looking and evaluating true value. In fact the more complex a system is, the less you're able to evaluate both its current and potential value.
The reason simple systems sometimes involve into successful complex systems is because development is completely decoupled from business needs. You code it, you watch to see how useful it is. Complex systems, on the other hand, are tightly-coupled. You code it, it needs changing, you spend a lot of time fretting over impedance mismatch, upgrades, patches, and so forth, instead looking and evaluating true value. In fact the more complex a system is, the less you're able to evaluate both its current and potential value.
1. http://tiny-giant-books.com/Entry1.html?EntryId=recj67HoP8cK...