Skip to content

Commit 5729db5

Browse files
authored
Merge pull request #893 from govuk-one-login/ee/use-adrs
Add an ADR directory
2 parents 4dfa8c9 + e68d3c3 commit 5729db5

2 files changed

Lines changed: 49 additions & 0 deletions

File tree

adr/001-use-adrs.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Use architecture decision records (ADRs)
2+
3+
## What
4+
5+
We will use ADRs to record decisions about how the Account Interventions Service is designed and built.
6+
ADRs will be written in markdown using the template stored at `adr/adr.md.template`,
7+
and will be stored in the `/adr` directory, using the naming scheme `NNN-short-camel-case-description.md`.
8+
New ADRs will be posted in the [Team Neptune slack channel](https://gds.slack.com/archives/C0AJ3VC50LU) and explicitly brought up in standup to allow engineers and architects to review.
9+
A newer ADR overrides an older one; as far as possible, this should be explicitly referenced in the newer ADR.
10+
11+
## Why
12+
13+
We often have to make think through and commit to decisions in order to move forwards with software development.
14+
Keeping a record of these decisions and their justifications means we can find what we agreed in the past and not do the same work twice.
15+
We can consult these records in the future to gather context quickly and avoid doing the same thinking twice.
16+
These decisions will also be visible and searchable by other teams, potentially saving them time.
17+
[ADRs are used at the programme level](https://github.com/govuk-one-login/architecture/tree/main/adr).
18+
19+
## Consequences
20+
21+
- A list of technical decisions we made will be publicly visible.
22+
- Engineers have to do the extra work to document decisions being made.
23+
- The team will save time making (and re-making) decisions in future.
24+
25+
## Notes
26+
27+
I've tried to make this ADR template as simple as possible and no simpler; it's adapted from [this PR description framework](https://jml.io/posts/what-why-notes/) by Jonathan Lange.
28+
The section headings are ordered by importance, with the intention that any reader can read from the top and get the information they need then get out.
29+
30+
I've avoided a metadata section with fields like `owner`, `reviewer`, and `date`, because we can use the repo's git history for this information.
31+
The ADRs themselves are ordered by name for convenience, but the associated git commit provides time information as well as some record of who did the work on the ADR.

adr/adr.md.template

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# ADR title
2+
3+
## What
4+
5+
The decision itself.
6+
7+
## Why
8+
9+
The justification for the decision. For detailed notes and breakdown of options, use the Notes section.
10+
11+
## Consequences
12+
13+
A bullet pointed list of immediately foreseeable consequences.
14+
No need to separate into good and bad.
15+
16+
## Notes
17+
18+
Detailed notes on the ADR context, options that were considered, etc.

0 commit comments

Comments
 (0)