I recently listened to a Software Engineering Radio podcast on Sustainable Architecture. It was an interesting listen despite much of it being given over to discussion of well known and generally good software architecture practices, such as loosely coupled design. It also spent a little too much time on defining software architecture – everyone defines terms to suit their own needs.
However, the podcast did raise a couple of good points that anecdotally feel right and I hadn’t heard before. It talked about an option space when designing software systems. That is, that there are a number of ways to design and implement a system. Many developers come up with one way to build a system based on the requirements; then stop designing and start building. This podcast advises looking at multiple ways to solve the problem, thus allowing a determination of which parts of the system will be hard to change or replace at a later date. How costly a decision is to change should be a major determinant of which direction to take. The podcast suggests the result will be easier to change in response to unknown future demands while at the same time not requiring possibly unnecessary effort in the present (to handle these unknown future changes). Interesting.