Architecture Principles for Developer Autonomy
Goal
Reduce architect gatekeeping by establishing clear principles that enable teams to make autonomous decisions. This requires two layers:
- Architecture principles - high-level guidelines
- Concrete processes - specific governance artifacts (system documentation, context maps, component diagrams)
Principle Management
Treat principles as living artifacts
Store principles in markdown within a version-controlled repository:
git init architecture-principles
cd architecture-principles
echo "# Architecture Principles" > principles.md
git add principles.md
git commit -m "Initial principles"
Architects as collaborators, not gatekeepers
Architecture teams should act as consultants and coaches, not approval boards. Engage them early to:
- Articulate organizational constraints
- Help teams meet requirements
- Harvest and evangelize reusable patterns
Source: Thoughtworks Lightweight Technology Governance
Code Documentation
Follow Minimum Viable Documentation principles:
https://google.github.io/styleguide/docguide/best_practices.html
Engineering Principles
Simplicity first
Justify each complexity layer introduced. If adding infrastructure capacity solves the problem, do that instead of adding complexity.
Queue management
Every processing queue requires a corresponding dead letter queue:
## example-queue-config.yaml
queues:
- name: order-processing
dlq: order-processing-dlq
- name: payment-processing
dlq: payment-processing-dlq
Aggregation services
Prefer synchronous calls over aggregation services. Only introduce aggregation when logic complexity demands it, not for performance issues solvable by scaling.
Back Office Principles
- Dedicated Back Office app per business unit
- Prefer self-serve features in EV10 over Back Office
- Make it simple: rethink business process if required
- Role-based control: covered by ACL, no impersonation
- Leverage AI for operational efficiency
- Minimum custom development: buy over build
- Frontline operations → Salesforce
- Reporting → Tableau
Observability
ELK stack setup via oneclick pipeline:
oneclick create-service --name my-service --observability elk
Configure Kibana alerts for the new service.
References
Governance:
Example principles: