Architecture is more about philosophy than it is about patterns.
When I was learning to write software, I could read the code but not the decision behind it. I could see the pattern, but not the call. Even with the well-known principles, SOLID and the rest, I kept asking:
"why is that there?", "why did they do it this way?", and "when would it be wrong?"
Nobody was writing down the thought process behind the decisions, only the rules.
The Tenets are my answer: ten positions on how to make architectural decisions with intention. They reference the named laws, DRY, YAGNI, KISS, Gall's Law, as worked examples. The tenet is the principle; the law is what it looks like in practice.
The Tenets#
- Architecture is a philosophy, not a rule — the shape is always there; the only question is whether you chose it. (Clean Code)
- If you can't name the trade-off, you didn't decide — you defaulted — every choice gives something up; you must be able to say what.
- The best pattern is often no pattern — most over-engineering solves a problem you don't have yet. A pattern without intention is solving the solution, not the problem. (YAGNI, KISS)
- Build the simplest thing that could possibly work — make it work before you make it elegant; the crude version is how you learn the problem.
- Every abstraction is borrowed against the future — only borrow flexibility you'll actually spend. (Composition over Inheritance)
- Design for the change you can see, not the change you imagine — build for the backlog, not the daydream. (Gall's Law)
- Hard to test is the design talking — listen to it — pain in a test is a design smell, not a testing problem. (TDD, Functional Programming)
- Duplication is cheaper than the wrong abstraction — un-welding two things that only looked alike costs more than repeating yourself. (DRY)
- Make the next change local. That's the whole job — locality is the payoff; coupling is the tax. (Separation of Concerns, Law of Demeter, SOLID)
- You may disagree — but you need a reason — a reasoned exception is intentional; an unreasoned one is just preference in disguise.