"Software architecture is failing" by Alex Hudson
I’m very much in the camp of designing for the business requirements first and my biggest successes are the apps which solve my clients’ problems. To call one of my apps “legacy” is a compliment; it means that I’ve written something that works and is solving real-problems for its users. It’s much easier to build on a the foundation of a working application and enhance it to solve new problems than start from scratch because “the architecture is bad” – which usually means “it’s not the new hotness”.
Of course, adding new features to an existing application can be hard as a well written application solves today’s problem effectively which means that it’s not infinitely flexible. We know how to deal with this situation: refactoring. We can refactor the application as the new requirements come in and there is clearly a better way to adapt the software so that it continues to excel at its current work and the new features can be added. Of course, this isn’t as “fun” as writing a new application in a new technology with a new architecture. I quite like it though as I’m much more likely to deliver a solution the delights my users within budget and in an acceptable timeframe.
Essentially, I like solving real problems for real people in real businesses.