Skip to content
Tech News
← Back to articles

Software Architecture Guide

read original get The Software Architecture in Practice Book → more articles
Why This Matters

This article emphasizes that software architecture is fundamentally about understanding and managing the most important elements of a system, rather than just its high-level structure or early design decisions. Recognizing what truly matters in a system helps developers create more robust and maintainable software, which is crucial for the evolving tech industry and consumers relying on reliable applications.

Key Takeaways

What is architecture?

People in the software world have long argued about a definition of architecture. For some it's something like the fundamental organization of a system, or the way the highest level components are wired together. My thinking on this was shaped by an email exchange with Ralph Johnson, who questioned this phrasing, arguing that there was no objective way to define what was fundamental, or high level and that a better view of architecture was the shared understanding that the expert developers have of the system design.

A second common style of definition for architecture is that it's “the design decisions that need to be made early in a project”, but Ralph complained about this too, saying that it was more like the decisions you wish you could get right early in a project.

His conclusion was that “Architecture is about the important stuff. Whatever that is”. On first blush, that sounds trite, but I find it carries a lot of richness. It means that the heart of thinking architecturally about software is to decide what is important, (i.e. what is architectural), and then expend energy on keeping those architectural elements in good condition. For a developer to become an architect, they need to be able to recognize what elements are important, recognizing what elements are likely to result in serious problems should they not be controlled.