|
| 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. |
0 commit comments