Well-designed components are easy to replace. Eventually, they will be replaced by ones that are not so easy to replace.
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.
The key is to acknowledge from the start that you have no idea how this will grow. When you accept that you don't know everything, you begin to design the system defensively... You should spend most of your time thinking about interfaces rather than implementations.
It's important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time. First of all, you probably don't even have the same programming team that worked on version one, so you don't actually have "more experience". You're just going to make most of the old mistakes again, and introduce some new problems that weren't in the original version.
The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible.
Programs, like people, get old. We can’t prevent ageing, but we can understand its causes, limit its effects and reverse some of the damage.
Easy is not to be underestimated. Easy taps the pool of talent and ideas out there that were turned off by hard.
Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defence against complexity.
The secret to building large apps is never build large apps. Break your applications into small pieces. Then, assemble those testable, bite-sized pieces into your big application.
The code you write makes you a programmer. The code you delete makes you a good one. The code you don't have to write makes you a great one.
A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work.
The standard rule is, when you're in a hole, stop digging; that seems not to apply [to] software nowadays.