Skip to content

Instantly share code, notes, and snippets.

@avegancafe
Last active July 23, 2024 17:51
Show Gist options
  • Save avegancafe/aa1f088d40a4f0ec5c5867a6c15a8dcb to your computer and use it in GitHub Desktop.
Save avegancafe/aa1f088d40a4f0ec5c5867a6c15a8dcb to your computer and use it in GitHub Desktop.
adrs.md

A Case For Architecture Decision Records

Overview

  • What is an ADR?
  • Why use ADRs?
  • Differences Between ADRs and RFCs
  • How to write an ADR?

What is an ADR?

An architecture decision record (ADR) is a document intended to describe the why, what, and how of an impactful decision. Specifically, ADRs usually outline:

  • Context: The circumstances and conditions that led to the decision.
  • Decision: The actual choice made.
  • Consequences: The implications of the decision, both positive and negative.

Why use ADRs?

ADRs not only help future developers understand the rationale behind the decision, but also help align the team on important architectural choices. That being said, they are not without downsides. Some tradeoffs of ADRs:

Pros

  • Improved Communication: ADRs provide a clear and structuredway to document decisions, ensuring that all team members have access to the same information.
  • Historical Record: ADRs create a historical record of architectural decisions, making it easier to understand why certain choices were made.
  • Onboarding: New team members can quickly get up to speed by reviewing ADRs, reducing the learning curve.
  • Consistency: ADRs ensure that decisions are documented in a consistent manner, reducing ambiguity and potential conflicts.

Cons

  • Overhead: Writing ADRs can be time-consuming, especially for small decisions.

Differences Between ADRs and RFCs

While ADRs and RFCs share some similarities, they serve different purposes:

  • ADRs: Focus on documenting architectural decisions and their rationale.
  • RFCs: Are also proposals, but typically are used for feedback gathering, where documentation is a secondary concern.

How to write an ADR?

Demo time! For latest up to date instructions, see our documentation in github. Let's look at that as well as an example:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment