Software architecture is an essential aspect of the software development lifecycle. But how do you run your architecture process? How do you make architectural decisions at scale with hundreds of developers on board? Enter the Advice Process.
The Advice Process empowers anyone to make architectural decisions, even those without the "Architect" title. Say goodbye to strict hierarchies and hello to a more collaborative approach. But how do you make it work in practice? How do you set your organization up for success?
Join us in this session, where Eran will walk you through the ins and outs of the Advice Process, including how he implemented it successfully and the lessons learned along the way.
1. Architecting at Scale
with the Advice Process
Eran Stiller, Principal Software Architect
https://www.linkedin.com/in/estiller/
https://twitter.com/eranstiller
8. The Qualifier
Before making an architectural decision, the decision-maker
must consult two groups:
Everyone who will
be meaningfully
affected by the
decision
People with
expertise in the
area the decision
is being taken
9. Advice Is Not Binding!
• You don’t have to accept
anyone’s advice
• Look for those who disagree
with you
• Getting advice is an excellent
opportunity to learn
10. What’s an Architecture Decision?
Affects other teams Considerable cost to
implement
Hard to change Repeatable Pattern
14. What Do I Include?
Element Description
Title A short decision name
Status “Draft”, “Proposed”, “Accepted”, “Rejected”, “Superseded” or “Retired”
Decision Brief description of the decision taken (bold, so it stands out)
Context
The forces and current contextual circumstances which have
necessitated this decision
Options considered
Each option considered, described briefly, with pros and cons.
(Typically the option proposed / adopted comes first in this list)
Consequences The ramifications of this decision, both positive and negative
Advice
Reflects the raw outputs from following the Advice Process.
Can be provided directly by the advice-giver.
15. Where Do You Manage ADRs?
• Source control
• With source code
• In a centralised repository
• Knowledge management system
• Confluence
• Notion
• Wiki
17. Architecture Advisory Forum (AAF)
• A regular and recurring place and time for conversations
• It does not replace impromptu and dedicated meetings
• Open invite to encourage transparency and openness
19. What Do We Discuss?
• Team representatives quickly share new spikes/directions
• Discussions about each new “proposed” decision
• Revisit other decision statuses
22. Architectural Principles
• Must provide criteria to evaluate our architectural decisions
• S.M.A.R.T – specific, measurable, achievable, realistic and testable
• Must support the business’s strategic goals
• Must articulate the implications it contains within it
• Should number neither too few to cover the key needs which
architectural principles meet nor too many that teams cannot
remember them all
23. Common Gotchas
• They are not practices
• Don’t specify how to do something
• Should not be too generic
• “Keep it simple”
• “Do not repeat yourself”
24. Architectural Principles Examples
• Always Be Production Ready
• Prefer Cloud-Managed Services
• Automate by Default
• Understandability
• Design for Testability
• Get Feedback Early and Often
28. Takeaways
• The Advice Process allows keeping everyone in the loop
• At the same time, it allows each team to enjoy autonomy
• ADRs capture important decisions in a lightweight manner
• The AAF is there to help you
• Architectural principles are the light that guides our decisions
• The Advice Process can increase the overall software
architecture quality thoroughout the organisation
29. Resources
• The Advice Process
• https://martinfowler.com/articles/scaling-architecture-
conversationally.html
• The Advice Process on InfoQ
• https://www.infoq.com/news/2022/01/software-architecture-advice/
• ADRs
• https://docs.aws.amazon.com/prescriptive-
guidance/latest/architectural-decision-records/welcome.html
• Architecture Principles Examples
• http://engineering-principles.onejl.uk/