Framing the Problem

  • The core trade-off here is [A] versus [B] — optimising for [one] makes [other] harder.
    Structuring an architectural discussion around trade-offs
    "The core trade-off here is consistency vs availability — optimising for strong consistency makes horizontal scaling harder."
  • I'd like to propose [approach] — here's my reasoning.
    Introducing a solution professionally
    "I'd like to propose an event-driven architecture here — here's my reasoning."
  • What are the constraints we're designing around?
    Clarifying requirements before proposing solutions
    "Before we dive into options, what are the constraints we're designing around — latency, cost, team expertise?"
  • Have we considered [alternative approach]? I'd like to understand why we ruled it out.
    Surfacing alternatives without dismissing current direction
    "Have we considered a monolith-first approach? I'd like to understand why we ruled it out before committing to microservices."

Evaluating Options

  • The risk with this approach is [X] — mitigated by [Y].
    Presenting risks with mitigations
    "The risk with this approach is eventual consistency causing stale reads — mitigated by adding a read-your-writes guarantee for the user's own session."
  • This is a reversible decision — we can change it later without high cost.
    Categorising decision reversibility (Bezos "one-way door" framework)
    "This is a reversible decision — the schema is internal and we can migrate it later without high cost."
  • This is a one-way door — once we go this route, migrating away will be very expensive.
    Flagging an irreversible commitment
    "Choosing a proprietary event broker is a one-way door — migrating away from it later will be very expensive."
  • I'd recommend writing an ADR to document this decision.
    Suggesting an Architecture Decision Record
    "Given the long-term impact, I'd recommend writing an ADR to document this decision and our reasoning."
  • What does the team's operational expertise look like for this stack?
    Surfacing the human factor in architecture decisions
    "Before we commit to Kafka, what does the team's operational expertise look like for this stack?"

Phrases to Avoid

These common phrasings undermine your professionalism. Here are better alternatives.

Avoid "We should use [technology]."
Better "I'd propose [technology] because it addresses [specific constraint] — though the trade-off is [X]."

Tech choices without reasoning sound like personal preference. Trade-off framing is persuasive and defensible.

Avoid "That's over-engineered."
Better "I wonder if we could solve this more simply with [approach] at our current scale."

"Over-engineered" is dismissive. Proposing a simpler alternative with a scale rationale is constructive.

Avoid "We've always done it this way."
Better "Our current approach has worked well — are the new requirements significantly different, or can we extend what we have?"

"Always done it this way" shuts down discussion. Asking whether new requirements are materially different is honest and open.

Practice Exercises

Choose the most professional or correct phrase for each scenario.

Frequently Asked Questions

What is an ADR and why write one?

An Architecture Decision Record documents a significant technical decision: the context, the options considered, the chosen approach, and the consequences. It creates an audit trail for future engineers who wonder "why did we do it this way?"

What does "trade-off" mean in architecture discussions?

A trade-off is when improving one quality (e.g. performance) comes at the cost of another (e.g. consistency or cost). Architects explicitly name trade-offs to make decisions transparent and defensible.

What is "eventual consistency"?

Eventual consistency is a model where data replicas may be temporarily out of sync but will converge to the same state given enough time. Common in distributed databases and event-driven systems.