Von RFC zu ADR: Die Entscheidung treffen und die Begründung bewahren
Ein RFC geht normalerweise darum, eine Einigung zu erzielen; ein ADR dokumentiert die Einigung, sobald sie erreicht ist — und der Grund, warum ADRs verfallen, ist, dass die Debatte in Chats und Kommentaren zu Pull-Requests stattfindet, während das Protokoll danach, aus dem Gedächtnis, von einer Person geschrieben wird. Um den RFC-zu-ADR-Fluss so zu gestalten, dass das Protokoll aus der Debatte herausfällt: Formuliere den Vorschlag als Hauptanspruch (den Titel des zukünftigen ADRs); füge Kontext als separate Pro-Argumente hinzu, damit jede Kraft einzeln angefochten werden kann; gib jeder in Betracht gezogenen Option ihren eigenen Geschwisterknoten mit eigenen Vor- und Nachteilen — einschließlich der abgelehnten; führe die RFC-Kommentar-Runde als Ketten durch (Q&A-Ketten zur Klärung, Review-Ketten für Einwände — jede ein vierteiliger Dialog zwischen Gutachter und Optionsautor, wobei N Gutachter N parallele Ketten bedeuten; Kompromissketten zur Versöhnung von Spaltungen, bei denen eine abgeschlossene Kette den Versuch dokumentiert, unabhängig davon, ob er erfolgreich war oder nicht); lasse Entscheidungsträger die Optionen bewerten als Beweis dafür, wo der Raum stand — die Bewertung ist nicht die Entscheidung, ein benannter Mensch trifft sie weiterhin; dokumentiere akzeptierte Konsequenzen als Kon-Kinder der gewählten Option; und modelliere die Ablösung, indem du eine spätere Entscheidung mit derjenigen verknüpfst, die sie ersetzt, und die alte lesbar hältst. Das Anlegen von bestehenden Markdown-ADRs oder entscheidungsreichen Transkripten funktioniert über KI-Extraktion mit nachgewiesener Herkunft. Ehrliche Grenzen: dies ersetzt keine repo-verfolgten ADRs (exportiere und committe das Protokoll); es gibt kein eingebautes ADR-Statusfeld, daher ist vorgeschlagen/akzeptiert/abgelöst eine Konvention, die du pflegst; eine abgeschlossene Kette bedeutet nicht, dass die Parteien sich einig waren — was genau das lesbar macht, ist nicht einig und commit.
Ein RFC dient normalerweise dazu, eine Einigung zu erzielen; ein ADR dokumentiert die Einigung, sobald sie erreicht ist. ADRs veralten, weil die Einigung in Chats erfolgt und die Dokumentation später aus dem Gedächtnis erfolgt. Führen Sie beides in einer Struktur.
- Der Vorschlag ist ein Hauptanspruch; Kontextkräfte sind getrennt, anfechtbare Pro-Argumente; jede Option — einschließlich der abgelehnten — erhält ihren eigenen Knoten
- Die RFC-Runde ist Ketten: Fragen und Antworten zur Klärung, Überprüfung zum Widerspruch, Kompromiss zur Versöhnung — vierstufige Dialoge, N Gutachter = N parallele Ketten
- Die Bewertung ist nicht die Entscheidung: Entscheidungsträger bewerten als Beweis; ein benannter Mensch nennt es — und schreibt warum, insbesondere gegen den Raum
- Der ADR ist der Baum: nichts wird transkribiert, also geht nichts bei der Transkription verloren — exportiere in das Repository, wenn deine Organisation dies verlangt
Die Entscheidung, die niemand rekonstruieren konnte
Der neue technische Leiter stellt eine vernünftige Frage: Warum kommuniziert jeder Dienst über diese Warteschlange mit dem Abrechnungssystem? Es gibt eine ADR — ADR-014, vier Sätze, vor elf Monaten geschrieben. Kontext: "wir benötigten eine zuverlässige Abrechnungsintegration." Entscheidung: "verwende die Warteschlange." Konsequenzen: "einige zusätzliche Latenz." Es ist technisch ein Protokoll. Es beantwortet nichts.
Du warst dort, also weißt du, was ADR-014 nicht sagt: die dreiwöchige Diskussion über zwei Slack-Kanäle und einen hitzigen PR-Thread; die synchronous-API-Option, die wegen eines Ratenlimits verloren hat, das inzwischen erhöht wurde; der Einwand des leitenden Ingenieurs, der mit einem Benchmark beantwortet wurde, den jetzt niemand mehr finden kann. Die Debatte fand statt. Der Bericht wurde danach, aus dem Gedächtnis, von einer Person, an einem Freitag, verfasst.
Dies ist der dokumentierte, nahezu universelle Fehlermodus einer wirklich guten Praxis. Die vorschreibenden Richtlinien von AWS und die Well-Architected-Dokumente von Microsoft empfehlen beide ADRs — und beide weisen auf das Problem hin: Sie aktuell zu halten, kostet Zeit, und ihre Verwaltung wird komplex, je mehr Teams und Entscheidungen hinzukommen. Die Wurzel des Problems ist strukturell: die Debatte und das Protokoll leben an verschiedenen Orten, sodass das Protokoll immer eine verlustbehaftete Transkription ist. Die Lösung besteht darin, sie am selben Ort zu haben. Auch ist die Praxis nicht engineering-spezifisch oder sogar ADR-spezifisch. Google verlangt ein Design-Dokument — Problem, vorgeschlagener Ansatz, berücksichtigte Alternativen, Abwägungen — das geschrieben und überprüft wird bevor signifikante technische Arbeiten beginnen, eine Praxis, die im eigenen Software Engineering bei Google des Unternehmens festgelegt ist. Es ist dieselbe Disziplin wie ein ADR, die einen Schritt früher angewendet wird: Das ADR dokumentiert die Wahl, zu der das Design-Dokument argumentiert hat. Die beiden scheitern auf die gleiche Weise aus demselben Grund, und beide werden durch denselben Schritt behoben — halte das Argument dort, wo das Protokoll lebt, anstatt eines in das andere nachträglich zu transkribieren. Lies jeden Schritt unten so, dass er beide Artefakte abdeckt.
Warum ADRs verrotten
Ein Satz aus dem eigenen Material der ADR-Community trägt die gesamte Diagnose: ein RFC geht normalerweise darum, eine Einigung zu erzielen; ein ADR dokumentiert die Einigung, sobald sie erreicht ist. Zwei Artefakte, zwei Momente — und alles dazwischen leckt. Die Alternativen, die "offensichtlich" falsch waren, werden nicht aufgezeichnet (bis sie nicht mehr offensichtlich sind). Der Einwand, der das endgültige Design prägte, überlebt nur als PR-Kommentar in einem geschlossenen Thread. Der Kontextabschnitt wird zuletzt, am schlechtesten, von dem geschrieben, der das Spiel von nicht-ich verloren hat. Meetings, die Entscheidungen hätten produzieren sollen, produzieren Stichpunkte stattdessen, und die Begründung, die eine Entscheidung dauerhaft macht — das, worauf die gesamte Entscheidungsqualitätskette angewiesen ist — ist genau das, was die Transkription fallen lässt.
Was Sie brauchen
Eine Argumentree-Diskussion pro RFC. Wenn Sie einen bestehenden Korpus von Markdown-ADRs oder ein protokolliertes, entscheidungsintensives Meeting haben, laden Sie es hoch — die KI-Extraktion verwandelt es in strukturierte Pro-/Contra-Argumente mit den angehängten Quellpassagen, gestempelt als extrahiert, sodass importierte Ansprüche niemals mit aktuellen verwechselt werden (wie die Extraktion funktioniert).
Schritt 1–3: Der Vorschlag, der Kontext, die Optionen
- 1Formuliere den Vorschlag als die Hauptbehauptung — die vorgeschlagene Entscheidung, keine Frage: "Wir werden alle Abrechnungsanfragen über eine dauerhafte Warteschlange leiten." Dieser Satz ist der Titel des zukünftigen ADR. Checkpoint: Wurzel existiert, ein Satz, verfasst vom Vorschlagenden.
- 2Kontext als separate Pro-Argumente. Jede Kraft, die die Entscheidung notwendig macht — das Zuverlässigkeitsanforderung, die Abrechnungssystem-Ratenbegrenzung, das Prüfungsmandat — ist ihr eigenes Argument unter der Wurzel. Ein monolithischer "Kontext"-Absatz kann nicht angefochten werden; drei separate Kontextansprüche können jeweils einzeln in Frage gestellt, bestätigt oder widerlegt werden. Checkpoint: ≥2 Kontextargumente, jede eine Kraft.
- 3Jede Option erhält ihren eigenen Knoten. Die Warteschlange, die synchrone API, der Batch-Job — Geschwisterargumente, jedes mit seinen eigenen Vor- und Nachteilen. Pro/Contra ist relativ zum Elternteil, sodass die Nachteile einer Option von dieser Option abhängen, nicht von der Entscheidung. Schließen Sie die Optionen ein, die Sie voraussichtlich ablehnen werden: das abgelehnte Geschwister ist es, was die Frage des nächsten Jahres beantwortet: "Warum haben wir nicht einfach…". Checkpoint: jede Option, nach der ein Leser fragen könnte, existiert.
Schritt 4–6: Die RFC-Runde, die einen Nachweis hinterlässt
Jetzt die Überprüfungsrunde — normalerweise der Teil, der sich über Chats, Kommentare und Flure verteilt. Hier läuft es als drei Arten von strukturiertem Austausch, jeweils ein Vier-Wendungs-Dialog zwischen einem Gutachter und dem Autor der Option:
Q&A-Kette — klären
„Was passiert mit bestehenden synchronen Clients?“ Der Autor der Option antwortet, der Prüfer hakt nach, der Autor antwortet erneut – vollständig. Keine Option sollte eine unbeantwortete Frage in die Entscheidung tragen.
Überprüfungskette — Objekt
Ein Gutachter bewertet eine Option als unsolid; der Autor antwortet; Nachverfolgung; Antwort. N Gutachter = N parallele Ketten zur gleichen Option — jeder Einwand ist ein eigener zuordenbarer Austausch, kein verlorener Kommentar in einem gemeinsamen Thread.
Kompromisskette — versöhnen
Zwei Lager gespalten? Eines schlägt dem anderen Autor die Mitteloption vor. Wenn es sich löst, haben Sie einen neuen Optionsknoten. Wenn nicht, ist die abgeschlossene Kette der Nachweis, dass es versucht wurde — was fast ebenso viel wert ist.
Abgeschlossen ≠ vereinbart
Eine Kette, die abgeschlossen ist, bedeutet, dass der Austausch seinen Lauf genommen hat — Frage gestellt und zweimal beantwortet — nicht, dass die Parteien sich einig waren. Behalte diese Unterscheidung; sie wird gleich wichtig sein.
Schritt 7: Entscheiden — und was die Bewertung nicht ist
Entscheidungsträger bewerten die Optionen: jede mit einer beschrifteten Bewertung. Die Verteilung ist ein echtes Beweisstück — wo der Raum stand, im Protokoll, vor dem Anruf. Aber die Bewertung ist nicht die Entscheidung. Ein benannter Mensch entscheidet immer noch, und wenn der Anruf gegen die Verteilung geht, ist der Entscheidungs-Knoten der Ort, an dem das erklärt wird. (Wer dieser benannte Mensch sein sollte und wie man die Rolle vor der Debatte und nicht danach zuweist, ist eine eigene Disziplin — siehe das Tutorial zu Entscheidungsrechten.)
Die Frage für Ihr Team
Wer hat deinen letzten architektonischen Beschluss gefasst — und kannst du das beweisen? Nicht wer im Meeting war: Wer hat die Entscheidung getroffen, und wo ist ihre Begründung schriftlich festgehalten?
Schritt 8–9: Die ADR, die Sie nicht schreiben mussten
Hier ist die Auszahlung. Der Datensatz ist kein Dokument, das Sie danach schreiben — es ist der Knoten der gewählten Option plus alles, was bereits daran angehängt ist: die Kontextargumente (Kontext), die abgelehnten Geschwister (Berücksichtigte Optionen), die abgeschlossenen Ketten (die Diskussion, mit Autoren), die Bewertungen (wo der Raum stand) und das Entscheidungsargument mit seiner Begründung (Entscheidung). Nichts wird transkribiert, sodass nichts in der Transkription verloren geht.
- 1Dokumentieren Sie die Konsequenzen, die Sie akzeptieren. Bekannte Nachteile — die zusätzliche Latenz, die betriebliche Belastung der Warteschlange — gehen als Nebenfolgen der gewählten Option weiter, anerkannt vom Entscheider. Sie aufzuschreiben, macht es zu einer Entscheidung und nicht zu einer Vorliebe. Checkpoint: ≥1 akzeptierte Konsequenz im Protokoll.
- 2Exportieren Sie, wenn Ihre Organisation repo-verfolgte ADRs benötigt. Viele tun dies, und das ist richtig – das Markdown-ADR neben dem Code bleibt das Compliance-Artefakt. Schreiben Sie die Zusammenfassung in vier Abschnitten aus dem Baum (fünf Minuten, nicht am Freitag), verlinken Sie zurück zur Diskussion für die vollständige Debatte. Checkpoint: das Repo-ADR zitiert den Baum; der Baum enthält die Begründung.
Nicht einverstanden und verpflichten, offiziell
Das Muster, das Amazon berühmt gemacht hat — nicht einverstanden sein und sich verpflichten — hat ein Lesbarkeitsproblem: Wie kann später jemand wissen, dass die Meinungsverschiedenheit echt, gehört und beantwortet wurde, anstatt überrollt zu werden? Die Kettenmechanik beantwortet es. Eine Überprüfungskette, die ihre vollen vier Runden durchlief und ohne Zustimmung abgeschlossen wurde, ist genau der Beweis: Der Einwand wurde geäußert, beantwortet, vorgebracht und erneut beantwortet, protokolliert, bevor der Abweichler sich verpflichtete. Der Abweichler ist dokumentiert, dass er gehört wurde — was es sinnvoll macht, sich danach zu verpflichten, anstatt lediglich gehorsam zu sein.
Lese die Vollständigkeit nicht als Konsens
Vollständig bedeutet, dass der Austausch beendet ist, nicht dass jemand seine Meinung geändert hat. Wenn Sie den Abschluss der Kette als Zustimmung melden, werden Sie einen falschen Konsens herstellen und das Vertrauen zerstören, das der Mechanismus aufbauen soll. Die ehrliche Lesart: konsultiert, geantwortet, immer noch dagegen, trotzdem engagiert — alle vier Fakten sichtbar.
Schritt 10: Ersetzen ohne Löschen
Entscheidungen altern. Wenn die Rate-Limit, die die synchrone Option getötet hat, erhöht wird, ist der richtige Schritt eine neue Entscheidung, die auf diejenige verweist, die sie ersetzt — ein neues Argument, das mit dem Knoten von ADR-014 verknüpft ist und angibt, was sich geändert hat. Die alte Entscheidung bleibt lesbar; ihre Begründung ist genau der Grund, warum die neue Entscheidung weiß, was sie aufhebt.
Eine ehrliche Lücke, die ausdrücklich verwaltet werden muss: es gibt kein integriertes ADR-Statusfeld. Vorgeschlagen / akzeptiert / ersetzt ist kein erstklassiger Zustand für ein Argument — die Ablösung wird durch Verlinkung modelliert, und die Konvention liegt in Ihrer Verantwortung. Formulieren Sie es in der Arbeitsvereinbarung Ihres Teams, anstatt anzunehmen, dass das Produkt es durchsetzt.
Ehrliche Einschränkungen
- ✗Dies ersetzt keine ADRs in deinem Repository, wenn deine Organisation sie versionskontrolliert neben dem Code benötigt. Exportiere und committe die Zusammenfassung; benutze den Baum für den Teil, in dem Markdown schlecht ist – die Debatte.
- ✗Kein ADR-Statusfeld. Vorgeschlagen/akzeptiert/aufgehoben ist eine Verknüpfungskonvention, die Sie pflegen, nicht etwas, das das Produkt durchsetzt.
- ✗Eine Kette besteht aus vier Umdrehungen. Tiefgreifende architektonische Meinungsverschiedenheiten erfordern einen Anruf; die Kette ist der Nachweis dessen, was bereits zuvor versucht wurde.
- ✗Bewertungen sind ein einzelner beschrifteter Wert, kein gewichtetes Mehrkriterien-Scoring.
- ✗Es bringt niemanden dazu, guten Kontext zu schreiben. Struktur senkt die Kosten für eine gute Aufzeichnung; sie liefert nicht das Urteil.
Praktische Lektionen
- ✓Ein RFC, eine Diskussion. Widerstehen Sie dem Mega-Baum, der die gesamte Architektur des Viertels abdeckt — Supersession-Links verbinden Entscheidungen besser als Verschachtelung.
- ✓Saat aus dem, was existiert. Ein entscheidungsintensives Protokoll oder dein alter ADR-Ordner, extrahiert, gibt der Debatte einen Vorsprung — gekennzeichnet als importiert, damit lebendige Argumente unterscheidbar bleiben.
- ✓Setzen Sie die Namen der Gutachter auf ihre Ketten und lassen Sie sie dort. Die Zuschreibung ist die Verantwortung; anonyme architektonische Einwände verwandeln sich in Folklore.
- ✓Der Abschnitt über die Konsequenzen gehört dem Entscheider, niemand anderem. Akzeptierte Nachteile, die von der Person, die sie akzeptiert hat, niedergeschrieben wurden, haben ein anderes Gewicht als die Warnungen eines Gutachters.
ADR-014, die Version, die antwortet
Zurück zur Frage des neuen technischen Leiters. In der überarbeiteten Version ist ADR-014 ein Knoten: die Warteschlangenentscheidung mit ihrer Begründung, drei Kontextkräfte (eine jetzt veraltet — sichtbar), ein abgelehntes synchrones API-Geschwister, dessen fatale Konvention das alte Rate-Limit benennt, vier abgeschlossene Review-Ketten, einschließlich der des leitenden Ingenieurs, und der Benchmark, der als Beweis angehängt ist. Der technische Leiter liest zehn Minuten, sieht, dass das Rate-Limit geändert wurde, und eröffnet einen übergeordneten Vorschlag, der mit dem alten Knoten verknüpft ist. Niemand gräbt in Slack. Das ist das gesamte Versprechen: die Ketten erreichen die Vereinbarung, der Baum zeichnet sie auf — und der Eintrag beantwortet Fragen, von denen du nicht wusstest, dass sie gestellt werden würden.
Quellen & weiterführende Literatur
- Nygard, M. (2011). Dokumentation von Architekturentscheidungen. Cognitect-Blog.Der Aufsatz, der ADRs populär machte: Kontext, Entscheidung, Konsequenzen, hielt sich an den Code.
- AWS Prescriptive Guidance — Architektonische Entscheidungsprotokolle.Die RFC-vs-ADR-Umrahmung und die dokumentierten Wartungsprobleme, die dieses Tutorial beheben soll.
- Microsoft Azure Well-Architected Framework — Architekturentscheidungsprotokolle.ADR-Praxis im Kontext der Well-Architected-Überprüfung.
- Die ADR GitHub-Organisation (adr.github.io).Vorlagen, Werkzeuge und die angesammelten Konventionen der Gemeinschaft — einschließlich der Praxis des Statusfeldes, die dieses Tutorial durch Verlinkung modelliert.
Häufig gestellte Fragen
Was ist der Unterschied zwischen einem RFC und einem ADR?
Ein RFC (Request for Comments) ist der Prozess, um eine Einigung zu erzielen: ein Vorschlag wird zirkuliert, Alternativen werden diskutiert, Einwände erhoben und beantwortet. Ein ADR (Architecture Decision Record) dokumentiert die erzielte Einigung: Kontext, in Betracht gezogene Optionen, Entscheidung, Konsequenzen, Status. Der Fehler, sie als separate Artefakte zu führen, besteht darin, dass alles dazwischen durchdringt — die Debatte findet in Chats und PR-Kommentaren statt, während das Protokoll später aus dem Gedächtnis geschrieben wird. Ein RFC als strukturierten Argumentationsbaum zu führen, lässt das ADR aus der Debatte selbst hervorgehen: nichts wird transkribiert, sodass nichts in der Transkription verloren geht.
Warum werden ADRs veraltet oder hören auf, geschrieben zu werden?
Denn das Schreiben von ihnen ist eine Transkriptionsaufgabe. Die eigentliche Argumentation findet in Slack-Threads, Überprüfungskommentaren und Meetings statt; danach rekonstruiert eine Person den Kontextabschnitt aus dem Gedächtnis, normalerweise kurz und zuletzt. Die eigenen Leitlinien von AWS und Microsoft weisen auf das Problem hin: ADRs benötigen Zeit zum Schreiben und Aktualisieren, und das Management wird komplex, je mehr Entscheidungen getroffen werden. Teams hören nicht auf, an ADRs zu glauben — sie hören auf, die Transkriptionssteuer zu zahlen. Die Debatte und das Protokoll in dieselbe Struktur zu bringen, beseitigt die Steuer.
Wie führt man eine RFC-Überprüfungsrunde mit einem Protokoll durch?
Drei strukturierte Schritte, jeweils ein vierteiliger Dialog mit dem Autor der Option. Q&A-Ketten zur Klärung: Frage, Antwort, Nachverfolgung, Antwort. Überprüfungsketten für Einwände: Bewertung, Antwort, Nachverfolgung, Antwort — mit N Gutachtern, die N parallele Ketten zur gleichen Option eröffnen, anstatt einen gemeinsamen Thread zu nutzen, sodass jeder Einwand zuordenbar und beantwortet bleibt. Kompromissketten für Spaltungen: Eine Seite schlägt der anderen die Mittelposition vor, und unabhängig davon, ob es zu einer Lösung kommt oder nicht, wird in der abgeschlossenen Kette festgehalten, dass es versucht wurde. Der Kontrollpunkt vor der Entscheidung: Keine Option trägt eine unbeantwortete Frage, und jeder substanzielle Einwand existiert als abgeschlossene Kette.
Wie funktioniert 'nicht einverstanden sein und sich verpflichten' mit Entscheidungsprotokollen?
Die Kettenmechanik macht es lesbar. Eine Überprüfungskette, die ihren gesamten Verlauf nimmt — Einwand, Antwort, Nachverfolgung, Antwort — und ohne Zustimmung abgeschlossen wird, ist der Beweis, dass der Dissens real, gehört und beantwortet wurde, bevor der Dissens äußerte. Kritisch ist, dass abgeschlossen nicht Zustimmung bedeutet: es bedeutet, dass der Austausch beendet ist. Die Berichterstattung über den Abschluss als Konsens erzeugt falsche Zustimmung und zerstört den Wert des Mechanismus. Der ehrliche Bericht zeigt gleichzeitig vier Fakten: konsultiert, beantwortet, weiterhin dagegen, trotzdem verpflichtet — was genau das ist, was das Engagement nach einem Dissens vernünftig macht.
Sollten Entscheidungsprotokolle die ADRs im Code-Repository ersetzen?
Nein — und dieses Tutorial sagt das ausdrücklich. Wenn Ihre Organisation versionskontrollierte ADRs neben dem Code benötigt (viele tun dies, korrekt, aus Gründen der Compliance und des Offline-Zugriffs), behalten Sie sie: Schreiben Sie die vierteilige Markdown-Zusammenfassung aus dem Baum in fünf Minuten und verlinken Sie sie zurück zur Diskussion. Die Arbeitsteilung ist klar: Das Repo-ADR ist das dauerhafte Compliance-Artefakt; der Baum enthält das, was Markdown schlecht kann — die lebendige Debatte, die abgelehnten Optionen mit ihren Begründungen, die Einwände und deren Antworten sowie die Bewertungen.
Wie kennzeichnen Sie ein ADR als ersetzt?
Nach Konvention, nicht nach einem Feld — und es ist ehrlich zu sagen, dass es keinen eingebauten vorgeschlagenen/akzeptierten/aufgehobenen Status für ein Argument gibt. Modellieren Sie die Aufhebung, indem Sie die neue Entscheidung als eigenes Argument erstellen, das mit dem, das sie ersetzt, verknüpft ist, und angeben, was sich geändert hat (die erhöhte Ratebegrenzung, die neue Anforderung). Die alte Entscheidung bleibt lesbar — sie zu löschen würde genau die Argumentation zerstören, auf die die neue Entscheidung Bezug nehmen muss. Geben Sie die Konvention in der Arbeitsvereinbarung Ihres Teams an, damit sie absichtlich beibehalten wird.
Hören Sie auf, Entscheidungen zu transkribieren. Beginnen Sie, sie zu bewahren.
Führen Sie Ihr nächstes RFC als Baum aus: Optionen mit ihren Begründungen, Einwände als beantwortete Ketten und ein ADR, das sich selbst schreibt.
Kostenlose 14-tägige Testversion starten