IEEE Software - The Pragmatic Designer: Why Is It Getting Harder to Apply Software Architecture?

This column will be published in IEEE Software, The Pragmatic Designer column, July-August 2021, Vol 38, number 4.

ABSTRACT: By the late 1990s, we understood the basic abstractions of software architecture, and it was possible to choose an architecture that suited the problem at hand. Over two decades later, it’s difficult to apply these ideas to our projects, but why? Because we have changed our philosophy to iterative development using factory metaphors, and have reinforced that change with tooling. Developers now focus primarily on incremental changes, and secondarily on the overall design or architecture. These circumstances are inhospitable to the holistic system reasoning that architecture requires, and can explain why so many teams today regard technical debt as their biggest challenge.


Today, we find ourselves in a surprising situation: We understand software architecture fairly well, but we find it difficult to put it into practice. This is because most software developers work within iterative processes that focus attention on what’s new, and because factory-inspired metaphors encourage ever-quicker movement from feature requests to deployed code. How did that happen?

A big idea from Bertrand Russell’s A History of Western Philosophy is that “[T]he circumstances of men’s lives do much to determine their philosophy, but, conversely, their philosophy does much to determine their circumstances.” [1] Around the year 2000, we changed our philosophy of software development in two ways. Those two changes, in turn, led to the circumstances that we see today.

… to be posted in full once published …