SlideShare a Scribd company logo
what is an
ADR
and what do we use them for?
An ADR is:
• an Architecture Decision Record
• "a collection of architecturally significant decisions"
We use ADRs for:
• Just kidding, we don't.
• But what could we use them for?
Five Truths about Software
Development
1. The docs are terrible;
2. Nobody actually reads the docs;
3. Code is rarely self-documenting;
4. It's never clear why code exists;
5. The docs are still terrible.
RFCs are Great
• A venue for proposing a change;
• A means to collect input on a proposed change;
• A way to propose multiple ideas.
RFCs are also Terrible
• RFCs are not docs!
• RFCs are proposals for a change + comments;
• RFCs never get finished;
• RFCs are usually huge.
Huge docs are also Terrible
• Large documents are hard to write
• Large documents are never read
• Large documents are never updated
• Large documents are usually out of date
How do you make architectural
decisions?
1. Create an RFC?
2. Somebody takes the general consensus?
3. Someone else implements it?
4. Done?
How do you record architectural
decisions?
1. "lol, the RFC is good enough!"
How do you follow a architectural
decisions?
Some other developer has made a decision.
You can either:
1. Blindly accept the decision;
2. Blindly change the decision.
3. Wander through outdated docs, old emails and chat
archives for a while, then choose one of the above.
There must be a
better way...
A is for Architecture
• This is for a change to your architecture only:
• "We are switching to Python 3 from Python 2"
• "We are replacing our logging system with a new service"
• "We are going to build a new tool to frobnicate the biz
baz"
A is for Architecture
• This is not for:
• "We are going to start using tabs instead of spaces"
• "We are going to stop writing huge RFCs"
• "We are going to roll standups, backlog estimation,
review and retro into one big four-hour long meeting"
A is for Architecture
• These are not necessarily client-facing at all;
• ...but they might be;
• Usually to solve a problem with or improve some aspect of
the architecture.
D is for Decision
• This is the decision made as the result of an RFC:
• "We are going to replace this closed-sourced service with
our own open-source implementation"
• "After doing some sophisticated analysis, we've decided
that Perl 6 is 120% more than Perl 5"
R is for Record
• These are meant to be historical documents!
• Especially for disparate teams:
• "Why does the mobile team use React Native and not
something else?"
• They will never change once created;
• But can be superseded.
How-To ADR
1. git init
2. Make a directory, maybe ./docs/adrs/
3. Create your first ADR! adr-001.md
4. It will have six sections:
How-To ADR (sections)
• Title
• TL;DR
• Context
• Decision
• Consequences
• Status
How-To ADR: Title
• The title should be short and to the point:
• Examples from before:
• "ADR-001: Adopting Python 3"
• "ADR-123: Replacing logging with LogFlume"
• "ADR-101: Building a Frobnicater"
How-To ADR: TL;DR
• Even though our ADR should be short, we should give a
summary:
• "We decided to upgrade to Python 3 to support Unicode
better"
• Should be super short and concise.
How-To ADR: Context
• This describes the state of the system when the decision
was made;
• "We are currently using Python 2 everywhere"
• Other external forces that come into play
• "The client wants to start sending us Unicode characters"
• Should eventually become out of date, but still be
contextually relevant!
How-To ADR: Decision
• Full sentences
• Active voice
• "We will migrate to Python 3 for services X, Y and Z"
How-To ADR: Consequences
• All consequences (not just the benefits);
• What could go wrong;
• Likely to become the context for the next ADR!
How-To ADR: Status
• One of:
• Proposed;
• Accepted;
• Deprecated;
• Superseded;
• This is the only time when an ADR should be modified after
creation.
ADRs ♥ Agile
• Not all decisions can be made at once!
• We need an iterative process for making decisions;
• ADRs can build on each other.
Taking it a step further: APOs
• In the Perl community, an "APO" stands for:
APOCALYPSE!!
"What I will be revealing in these columns will be the
design of Perl 6. Or more accurately, the beginnings of that
design, since the design process will certainly continue
after I've had my initial say in the matter. I'm not
omniscient, rumors to the contrary notwithstanding. This
job of playing God is a little too big for me. Nevertheless,
someone has to do it, so I'll try my best to fake it. And I'll
expect all of you to help me out with the process of
creating history. We all have to do our bit with free will."
— Larry Wall, Apocalypse 1
http://perl6.org/archive/doc/apocalypse.html
Thanks!

More Related Content

What's hot

What's hot (17)

Continuous Infrastructure First
Continuous Infrastructure FirstContinuous Infrastructure First
Continuous Infrastructure First
 
Development tools
Development toolsDevelopment tools
Development tools
 
The Changing Role of Release Engineering in a DevOps World
The Changing Role of Release Engineering in a DevOps WorldThe Changing Role of Release Engineering in a DevOps World
The Changing Role of Release Engineering in a DevOps World
 
CYA: Cover Your App
CYA: Cover Your AppCYA: Cover Your App
CYA: Cover Your App
 
Leveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectLeveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup project
 
How Rust Views Tradeoffs
How Rust Views TradeoffsHow Rust Views Tradeoffs
How Rust Views Tradeoffs
 
Supersize me: Making Drupal go large
Supersize me: Making Drupal go largeSupersize me: Making Drupal go large
Supersize me: Making Drupal go large
 
Selling the open-source philosophy - DrupalCon Latin America 2015
Selling the open-source philosophy - DrupalCon Latin America 2015Selling the open-source philosophy - DrupalCon Latin America 2015
Selling the open-source philosophy - DrupalCon Latin America 2015
 
Selling the Open-Source Philosophy - DrupalCon Latin America
Selling the Open-Source Philosophy - DrupalCon Latin AmericaSelling the Open-Source Philosophy - DrupalCon Latin America
Selling the Open-Source Philosophy - DrupalCon Latin America
 
Devops is Dead, Long live Devops
Devops is Dead, Long live DevopsDevops is Dead, Long live Devops
Devops is Dead, Long live Devops
 
DevOps Days Kyiv 2019 -- continuous Infrafirstructure First //Kris buytaert
DevOps Days Kyiv 2019 -- continuous Infrafirstructure First //Kris buytaertDevOps Days Kyiv 2019 -- continuous Infrafirstructure First //Kris buytaert
DevOps Days Kyiv 2019 -- continuous Infrafirstructure First //Kris buytaert
 
DEVOXX BE 2013 'Betterrev: Social Participation in OpenJDK'
DEVOXX BE 2013 'Betterrev: Social Participation in OpenJDK'DEVOXX BE 2013 'Betterrev: Social Participation in OpenJDK'
DEVOXX BE 2013 'Betterrev: Social Participation in OpenJDK'
 
Can we fix dev-oops ?
Can we fix dev-oops ?Can we fix dev-oops ?
Can we fix dev-oops ?
 
Agile and waterfall tango dancing
Agile and waterfall tango dancingAgile and waterfall tango dancing
Agile and waterfall tango dancing
 
Open Source Monitoring in 2019
Open Source Monitoring in 2019 Open Source Monitoring in 2019
Open Source Monitoring in 2019
 
Icebreaker with DevOps
Icebreaker with DevOpsIcebreaker with DevOps
Icebreaker with DevOps
 
Netflix oss past-present-future
Netflix oss   past-present-futureNetflix oss   past-present-future
Netflix oss past-present-future
 

Viewers also liked (8)

www Dot Packaging 2002
www Dot Packaging 2002www Dot Packaging 2002
www Dot Packaging 2002
 
Lorenc Logistic presentation 2016[2]
Lorenc Logistic presentation 2016[2]Lorenc Logistic presentation 2016[2]
Lorenc Logistic presentation 2016[2]
 
Dgis dangerous goods instructors symposium 2013
Dgis   dangerous goods instructors symposium 2013Dgis   dangerous goods instructors symposium 2013
Dgis dangerous goods instructors symposium 2013
 
Corso resp 19 lezione - adr rif pericolosi
Corso resp   19 lezione  - adr rif pericolosiCorso resp   19 lezione  - adr rif pericolosi
Corso resp 19 lezione - adr rif pericolosi
 
Top 10 Things You Didn’t Know About Dangerous Goods
Top 10 Things You Didn’t Know About Dangerous GoodsTop 10 Things You Didn’t Know About Dangerous Goods
Top 10 Things You Didn’t Know About Dangerous Goods
 
Dangerous Goods Training- awareness
Dangerous Goods Training- awarenessDangerous Goods Training- awareness
Dangerous Goods Training- awareness
 
IATA Dangerous Goods Regulations
IATA Dangerous Goods RegulationsIATA Dangerous Goods Regulations
IATA Dangerous Goods Regulations
 
Presentation on dgr
Presentation on dgr Presentation on dgr
Presentation on dgr
 

Similar to PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"

Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06
jimbojsb
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with Rex
Jan Gehring
 
Emperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakkEmperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakk
kevinjohngallagher
 
Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012
kevinjohngallagher
 

Similar to PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?" (20)

SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
 
Greenfields tech decisions
Greenfields tech decisionsGreenfields tech decisions
Greenfields tech decisions
 
Rails tools
Rails toolsRails tools
Rails tools
 
CI doesn’t start with Jenkins
CI doesn’t start with JenkinsCI doesn’t start with Jenkins
CI doesn’t start with Jenkins
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019
 
Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with Rex
 
Cloud conference - mongodb
Cloud conference - mongodbCloud conference - mongodb
Cloud conference - mongodb
 
Communication tool & Environment for Remote Worker
Communication tool & Environment for Remote WorkerCommunication tool & Environment for Remote Worker
Communication tool & Environment for Remote Worker
 
Emperors new clothes_jab
Emperors new clothes_jabEmperors new clothes_jab
Emperors new clothes_jab
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Emperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakkEmperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakk
 
Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012
 
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of SimplicityLarge Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!
 

Recently uploaded

Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 

PromptWorks Talk Tuesdays: Dustin Ingram 8/30/16 "What is an ADR?"

  • 1. what is an ADR and what do we use them for?
  • 2. An ADR is: • an Architecture Decision Record • "a collection of architecturally significant decisions"
  • 3. We use ADRs for: • Just kidding, we don't. • But what could we use them for?
  • 4. Five Truths about Software Development 1. The docs are terrible; 2. Nobody actually reads the docs; 3. Code is rarely self-documenting; 4. It's never clear why code exists; 5. The docs are still terrible.
  • 5. RFCs are Great • A venue for proposing a change; • A means to collect input on a proposed change; • A way to propose multiple ideas.
  • 6. RFCs are also Terrible • RFCs are not docs! • RFCs are proposals for a change + comments; • RFCs never get finished; • RFCs are usually huge.
  • 7. Huge docs are also Terrible • Large documents are hard to write • Large documents are never read • Large documents are never updated • Large documents are usually out of date
  • 8. How do you make architectural decisions? 1. Create an RFC? 2. Somebody takes the general consensus? 3. Someone else implements it? 4. Done?
  • 9. How do you record architectural decisions? 1. "lol, the RFC is good enough!"
  • 10. How do you follow a architectural decisions? Some other developer has made a decision. You can either: 1. Blindly accept the decision; 2. Blindly change the decision. 3. Wander through outdated docs, old emails and chat archives for a while, then choose one of the above.
  • 11. There must be a better way...
  • 12. A is for Architecture • This is for a change to your architecture only: • "We are switching to Python 3 from Python 2" • "We are replacing our logging system with a new service" • "We are going to build a new tool to frobnicate the biz baz"
  • 13. A is for Architecture • This is not for: • "We are going to start using tabs instead of spaces" • "We are going to stop writing huge RFCs" • "We are going to roll standups, backlog estimation, review and retro into one big four-hour long meeting"
  • 14. A is for Architecture • These are not necessarily client-facing at all; • ...but they might be; • Usually to solve a problem with or improve some aspect of the architecture.
  • 15. D is for Decision • This is the decision made as the result of an RFC: • "We are going to replace this closed-sourced service with our own open-source implementation" • "After doing some sophisticated analysis, we've decided that Perl 6 is 120% more than Perl 5"
  • 16. R is for Record • These are meant to be historical documents! • Especially for disparate teams: • "Why does the mobile team use React Native and not something else?" • They will never change once created; • But can be superseded.
  • 17. How-To ADR 1. git init 2. Make a directory, maybe ./docs/adrs/ 3. Create your first ADR! adr-001.md 4. It will have six sections:
  • 18. How-To ADR (sections) • Title • TL;DR • Context • Decision • Consequences • Status
  • 19. How-To ADR: Title • The title should be short and to the point: • Examples from before: • "ADR-001: Adopting Python 3" • "ADR-123: Replacing logging with LogFlume" • "ADR-101: Building a Frobnicater"
  • 20. How-To ADR: TL;DR • Even though our ADR should be short, we should give a summary: • "We decided to upgrade to Python 3 to support Unicode better" • Should be super short and concise.
  • 21. How-To ADR: Context • This describes the state of the system when the decision was made; • "We are currently using Python 2 everywhere" • Other external forces that come into play • "The client wants to start sending us Unicode characters" • Should eventually become out of date, but still be contextually relevant!
  • 22. How-To ADR: Decision • Full sentences • Active voice • "We will migrate to Python 3 for services X, Y and Z"
  • 23. How-To ADR: Consequences • All consequences (not just the benefits); • What could go wrong; • Likely to become the context for the next ADR!
  • 24. How-To ADR: Status • One of: • Proposed; • Accepted; • Deprecated; • Superseded; • This is the only time when an ADR should be modified after creation.
  • 25. ADRs ♥ Agile • Not all decisions can be made at once! • We need an iterative process for making decisions; • ADRs can build on each other.
  • 26. Taking it a step further: APOs • In the Perl community, an "APO" stands for:
  • 28. "What I will be revealing in these columns will be the design of Perl 6. Or more accurately, the beginnings of that design, since the design process will certainly continue after I've had my initial say in the matter. I'm not omniscient, rumors to the contrary notwithstanding. This job of playing God is a little too big for me. Nevertheless, someone has to do it, so I'll try my best to fake it. And I'll expect all of you to help me out with the process of creating history. We all have to do our bit with free will." — Larry Wall, Apocalypse 1 http://perl6.org/archive/doc/apocalypse.html