DEV Community

Leon Pennings
Leon Pennings

Posted on • Originally published at blog.leonpennings.com

Architecture in IT: It’s a Verb, Not a Job Title

In traditional construction, architects work with largely fixed constraints: gravity, materials, and building codes. Big-Up-Front Designs work because these rules are stable and predictable. Changes are slow and costly, so upfront guidance is valuable.

Software is different. The tools and frameworks are relatively fixed, but the true constraints—the business domain—are unique for every application and constantly evolving. Understanding these constraints is the real job of software teams, and it happens in the code, day by day. Up-front grand designs and “architect-as-translator” roles often fail because they try to impose a static vision on a fluid problem.

In IT, architecting is a verb, not a role. It is the ongoing, collective activity of shaping the domain model, keeping accidental complexity low, and ensuring the team builds software that faithfully reflects the domain. This practice thrives when teams consist of skilled engineers and deep domain experts who collaborate directly, reinforcing each other's contributions through open challenge and exploration.


Teams as Investigative Units: The Skill of Reasoning

The power of software architecture lies not in a collection of "rocket scientists," but in a team that applies basic engineering skill to the business domain. This isn't a high-IQ gatekeeper role; it is the fundamental requirement of the job: the ability to reason conceptually about the "What" before getting lost in the "How."

Beyond the Tool-Driven Trap

In many organizations, developers spend 80% of their energy on framework selections, library updates, and syntax. This is "tool-driven" development, and it leads to teams where everyone goes their own way, hidden behind their respective tech stacks.

True engineering is model-driven. It requires the team to spend their time continuously discussing how the business actually works and how that logic should be structured. This is not "hard" work, but it is "different" work. It requires moving the focus away from the latest "hot" technology and toward the daily shaping of the domain model.

The ‘Talent Floor’ argument—that we need architects because developers aren’t skilled enough to design—is a self-fulfilling prophecy. If we treat developers like accountants filling out Spring templates, they will never become engineers. The solution isn't to outsource their thinking to an architect; it is to demand conceptual reasoning as a baseline requirement for the profession. You cannot fix a lack of engineering skill with an administrative role.

Architecting as a Cooperative Mirror

The primary activity of the team is mirroring. Because no one has a perfect view of the domain, team members must continuously mirror their ideas against each other and the business expert. This is a highly cooperative, adversarial process:

  • The "Fail" Test: Instead of seeking consensus ("Does everyone like my idea?"), the team asks: "Tell me why my design will fail." This isn't about ego; it’s a safety check. It’s the engineering equivalent of a stress test, finding regulatory traps or logic gaps before they are baked into the code.

  • Simplicity as a Standard: Once the model is understood, the goal is to implement it as simply as possible. We don't need complex abstractions to solve simple business problems; we need clear code that reflects a clear model.

The Basic Requirement: Conceptual Competence

Understanding the domain model is not an optional task for seniors—it is the baseline for productivity. If a developer cannot reason about how "Payment Execution" relates to "Regulatory Compliance," they cannot contribute to a resilient system.

Knowledge sharing in this environment isn't a scheduled meeting or a post-mortem; it is the constant byproduct of implementation. By discussing the model before coding, mirroring ideas during development, and reviewing the model after, the "collective brain" stays in sync.

The Assembly Line vs. The Engineering Unit

This is why developers cannot be "dragged and dropped" between projects like interchangeable parts on an assembly line. When you move a person out of an effective team, you aren't just moving a "resource"—you are removing a piece of the team’s shared reasoning capacity. You are breaking the mirror. An effective engineering unit isn't built by collecting individuals; it is built by fostering a group that knows how to challenge, explore, and simplify the domain together.


Essential vs. Accidental Complexity

These distinctions exist to guide the team's daily work. The goal is not academic categorization but practical orientation: keeping the collective focus on what truly matters while ruthlessly eliminating what doesn't.

Essential complexity is the inherent structure of the business itself—how "Payment Execution" connects to "Regulatory Compliance," how rules interact under real conditions, and what potentials the domain offers. It lives in the domain model the team continuously shapes together. Regulatory requirements are not special or separate; they are simply more business rules to absorb, mirror, and test alongside everything else.

Accidental complexity, by contrast, is everything the team adds unnecessarily: heavy frameworks chosen for hype, layered abstractions that obscure rather than clarify, or "enterprise" patterns adopted without scrutiny. It creeps in when the focus drifts from the "What" to the "How"—when energy goes into tool selection instead of model reasoning.

The team's cooperative mirroring and adversarial practices are the primary defense. By constantly asking "Tell me why this will fail," the group surfaces unnecessary layers early. Simplicity becomes the default because the collective brain has already stress-tested the model conceptually—no need for compensatory complexity when the essentials have been refined through shared exposure.


The Singleton Paradox

This paradox explains why accidental complexity persists even in well-intentioned teams: software has no immediate, visible failure mode for poor design. Code compiles and runs regardless of elegance or bloat. Over time, the hidden costs accumulate, but they remain invisible long enough for bad habits to take root.

The paradox feeds the tool-driven trap. Because flaws don't crash the system outright, teams (and organizations) can default to quick fixes, pre-packaged frameworks, or "best practices" borrowed without context. These become crutches that allow lower conceptual engagement while still delivering "working" software.

The antidote lies in the team's practices. When mirroring is constant and the "Fail" test is routine, the paradox loses its power. The collective brain makes hidden costs visible early—through discussion, not production disasters. Conceptual competence across the team raises the effective "talent floor," reducing reliance on compensatory tools. The forgiving nature of software becomes an opportunity for rapid iteration on the model, not an excuse for unchecked complexity.


The Titanium Bike Bridge: Hype vs. Need

This metaphor captures what happens when the Singleton Paradox meets the tool-driven trap in daily work. Teams end up building systems engineered for improbable extremes—massive scale, theoretical threats, or "future-proof" generality—when the actual business need is far simpler.

The overbuild isn't usually malicious; it's the path of least resistance when conceptual reasoning is weak or fragmented. Without shared mirroring, individual developers default to the heaviest tool that "guarantees" safety. Hype amplifies the tendency: the latest framework promises to handle any load, so why risk a lighter approach?

A team practicing cooperative mirroring spots these risks naturally. The "Fail" test flips the question from "Will this handle the worst case?" to "Why do we think we need to handle the worst case?" Collective probing reveals that most ore-truck scenarios are illusions—projections not grounded in the domain. The result is minimal, fit-for-purpose design: the bike bridge that does exactly what's required, built with confidence because the team has already tried (and failed) to break it conceptually.


Continuous Challenge Over Checklists

The practices described earlier—mirroring, the "Fail" test, collective reasoning—are not optional rituals; they are the real architecture process. Checklists, metrics, and documents are useful servants but terrible masters.

Architecture manifests as:

  • Daily conversation about the domain model, where new functionality is explored for both risks and potentials.

  • Collective questioning of assumptions, where anyone can surface a weakness regardless of seniority.

  • Collaborative refinement, where the team actively tries to break the model conceptually—probing edge cases, regulatory interactions, and change scenarios until resilience is earned, not assumed.

Business experts participate as peers because the process demands direct exposure: developers explain implementation constraints, experts clarify domain intent, and the mirror reflects both sides clearly.

This ongoing adversarial cooperation—shifting from consensus-seeking to failure-seeking without defensiveness—is what keeps the thin thread of implementation clean. It captures essential complexity faithfully while starving accidental complexity of oxygen. The team's shared consequence ensures no one can hide behind process theater; the model improves because everyone lives with the results.


Collapse the Bridge: Detachment from Consequence

The “Architect as Translator” is a relic of organizational structures that separate responsibility rather than integrate it. It assumes that architecture can be meaningfully influenced from the outside. In modern software, this separation is structural damage. The team itself must be on the same island.

What breaks this model is not hierarchy, but detachment from consequence.

A role can opt out of consequences. A verb cannot.

A role can “advise” on design direction while remaining insulated from the long tail of architectural decisions: the production failures, the maintenance burden, and the regret that accumulates years later. Architecting, as a verb, does not allow this escape. To architect is to be exposed.

Exposure forces knowledge density. The people who shape the model while implementing it are continuously taught by the system itself—by friction, by failure, and by business rules that refuse simplification. Consequences apply epistemic pressure: they collapse theory into reality and opinion into proof. This is why architectural understanding cannot be transferred through documentation; it is acquired through sustained contact with failure modes.

Only those committed to the outcome should shape the system. Commitment is defined by who carries the consequences when the model is wrong.


Conclusion: Architecture Is Discovery Under Load

Architecture, in IT, emerges where design, implementation, and consequence meet. It lives in stable teams that discover the domain together, challenge their own models relentlessly, and accept that correctness is provisional and must be re-earned continuously.

When developers understand the business, and business experts respect the code, accidental complexity diminishes. Expensive, over-engineered systems give way to software that reflects the domain because the same people discover it, model it, implement it, and live with it.

Architecting is not a title. It is a team practice that cannot be delegated without decay. It exists only where skilled individuals collaborate under shared consequence. Anything less is not architecture—it is decoration.

Top comments (0)