Random Thoughts on Software Engineering

Software Architecture - A Closer Look at What Makes It Work

If you're faced with two system designs—and let’s be honest, we often call it software architecture when we want to talk about design but make it sound more important—how do you decide which one is better, especially in the context of building a real-world system? More importantly, how do you even begin to measure the quality of a software architecture?

The short answer: it depends on the context.

One of the simplest, most pragmatic ways to assess architectural quality is through the lens of human time. In essence, software is about automating tasks that humans could do manually. It may take much longer for a person to perform a task than a computer, but it's still feasible. Therefore, the primary benefit of digital systems is saving human time—in both development and ongoing operation. If an architecture reduces the time required to build, understand, and maintain the system, it’s usually a better choice.

Put simply: the less human intervention required, the better the architecture.

Simplicity is another fundamental measure of architectural quality. Just as minimizing time and effort makes a system more efficient, so does reducing cognitive complexity. A good architecture should be clearly expressed, especially in its diagrams. The goal isn’t to show off cleverness but to communicate ideas effectively.

Think of other disciplines—science, engineering, mathematics, music. Each has its own symbolic language for expressing complex ideas. But no one is fluent in all of them. In some way, we are all illiterate outside our areas of expertise. That’s why a well-drawn architecture diagram should require as little specialized knowledge as possible to understand. Clarity is not optional; it’s essential.

But diagram clarity is only one side of the coin. Equally important is shared understanding. If team members don't fully grasp the system’s architecture, they’ll rely on their own interpretations, which may diverge from the original vision. In practice, architecture is the shared understanding among expert developers of how the system works. It doesn’t matter what the architect intended if that understanding is lost in translation or buried in overly complex documentation.

This is why a good software architect should not disappear after handing over a diagram. They should act more like a mountain guide—leading by example, staying involved during initial implementation, and helping the team internalize critical principles through practical collaboration. It’s not enough to define a secure, scalable, resilient, or maintainable system in theory. These qualities must be embedded throughout the system, across teams and components, as a collective commitment—not isolated within a single service or module.

Ultimately, the job of an architect isn’t just to create designs—it’s to nurture shared understanding, ensure consistent alignment, and walk the path with the team. Architecture is not static; it’s a living, evolving process grounded in communication, trust, and collaboration. The real measure of success isn’t just technical soundness—it’s whether the architecture helps the team build a system that works well within its specific constraints and continues to do so over time.