Appendix

Quick Reference: Tradeoffs

For architectural decisions. Ask before you commit.


The Core Question

"What are we giving up, and can we live with it?"


For Each Option

  • [ ] What does this optimize for?
  • [ ] What does this make harder?
  • [ ] What are we giving up?
  • [ ] What constraints does this create for future work?
  • [ ] What's the cost to change this later if we're wrong?

Identifying Load-Bearing Decisions

Ask:

  • What's hard to change after we build on top of it?
  • What are we committing to that constrains future options?
  • Where are we choosing between fundamentally different approaches?

Common Architectural Decisions

  • Data model and schema design
  • Service/module boundaries
  • Authentication and authorization approach
  • Third-party dependencies (deep integrations)
  • Core abstractions other code will depend on
  • Data flow and state management patterns

Common Design Decisions (Easier to Change)

  • API naming and shape
  • UI components and styling
  • Implementation details within a boundary
  • Configuration and feature flags
  • Tooling choices that don't affect the core

Architectural "Done" Checklist

  • [ ] Tradeoffs are understood
  • [ ] Decision is defensible given constraints
  • [ ] Reasoning is documented
  • [ ] Team is aligned on what we're giving up

Remember

There's no "right answer." There's no "best practice." There's only: tradeoffs you can live with, chosen deliberately.