"I think that one of an architect's most important tasks is to remove architecture by finding ways to eliminate irreversibility in software designs." [Martin Fowler] This is something I strive for, but is it too hard to do? How do you make things easy to change? The quote by Ralph Johnson at the end of the linked article seems to point out the difficulty -- making things easier to change tends to increase their complexity, and complexity is what makes things hard to change...