30 Essential Architecture Principles Every Engineer Should Follow
This article presents thirty practical software architecture principles—from simplicity and YAGNI to distributed system design and user experience—offering actionable guidance for engineers to shape robust, maintainable, and user‑centric systems.
Basic Principles
Principle 1: KISS (Keep it simple, stupid) – keep everything as simple as possible and solve problems with the simplest solution.
Commentary: Simplicity is the ultimate sophistication; writing simple, understandable code requires extra thought.
Principle 2: YAGNI (You aren’t gonna need it) – avoid building unnecessary features; implement only what is needed now.
Commentary: Prematurely adding features leads to code bloat and wasted effort.
Principle 3: Crawl, walk, run – first get something working, then iteratively improve and expand.
Principle 4: Automated testing is the only way to create stable, high‑quality products; aim to automate everything.
Commentary: Testing is essential, though standards may vary.
Principle 5: Consider ROI – only invest in work that pays off.
Principle 6: Know your users and balance work accordingly; avoid building UI that users don’t want.
Commentary: Always ask whether you’re solving a real user problem or just using new tech for its own sake.
Principle 7: Design and test features to be as independent as possible to avoid bottlenecks.
Principle 8: Avoid unnecessary flashiness; focus on useful functionality.
Commentary: Keep communication simple.
Feature Selection
Principle 9: Embrace MVP (Minimum Viable Product); release a small set of scenarios, gather feedback, then iterate.
Principle 10: Implement as few features as possible; remove or defer unused ones.
Principle 11: Build only when there is a concrete need, unless it affects core flow.
Principle 12: Have the courage to say no to customers and propose better solutions; remember Henry Ford’s insight about asking for faster horses.
Server Design and Concurrency
Principle 13: Understand how a server works from hardware to OS to language; optimize I/O calls.
Principle 14: Know Amdahl’s law; use concurrent data structures only when necessary and keep lock hold time minimal.
Principle 15: In non‑blocking, event‑driven architectures, never block threads or perform heavy I/O inside them.
Distributed Systems
Principle 16: Stateless systems are scalable and straightforward; avoid stateful designs when possible.
Principle 17: Strive for exactly‑once delivery, though it’s hard; aim for lightweight solutions.
Principle 18: Make operations idempotent to aid recovery and at‑least‑once delivery.
Principle 19: Understand CAP theorem; use compensation mechanisms for distributed transactions.
Principle 20: Distributed consistency does not scale well; keep node count reasonable (e.g., ≤8).
Principle 21: Latency and failures are inevitable in distributed systems.
User Experience
Principle 22: Know your users, their goals, and technical expertise; tailor interfaces accordingly.
Principle 23: The best product requires no manual.
Commentary: While agile reduces documentation, essential records like release notes remain important.
Principle 24: When faced with a decision, avoid exposing complexity to users; provide sensible defaults or automated choices.
Principle 25: Always set reasonable default values for configurations.
Principle 26: Provide example values for poorly designed configuration options.
Principle 27: Configuration values must be understandable and directly settable by users.
Principle 28: Throw errors on unknown configuration inputs; never silently ignore them.
Difficult Problems
Principle 29: New programming languages rarely simplify everything; avoid switching languages lightly.
Principle 30: Complex drag‑and‑drop interfaces are hard; only attempt them with sufficient resources.
Summary
Architects should act like gardeners—pruning and guiding rather than dictating—providing direction, fostering discussion, and serving as anchors for teams to navigate architectural decisions.
Having a widely accepted principle list helps teams stay focused, prevents architecture from becoming an empty buzzword, and offers a learning path for novice architects.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
