Tutorial · pratica ingegneristica

Dall'RFC all'ADR: Raggiungere la Decisione e Mantenere il Ragionamento

Tutti concordano sul fatto che gli ADR siano utili. Quasi nessuno li tiene aggiornati — perché il dibattito e il registro vivono in luoghi diversi. Colma il divario e l'ADR si scrive da solo.

AT
Argumentree Team
Engineering Practice
August 24, 2026
11 min leggere

Dall'RFC all'ADR: Raggiungere la Decisione e Mantenere il Ragionamento

Un RFC riguarda solitamente il raggiungimento di un accordo; un ADR registra l'accordo una volta raggiunto — e il motivo per cui gli ADR marciscono è che il dibattito vive nelle chat e nei commenti delle pull request mentre il record viene scritto successivamente, dalla memoria, da una sola persona. Per gestire il flusso da RFC a ADR in modo che il record emerga dal dibattito: dichiara la proposta come un'affermazione principale (il titolo del futuro ADR); aggiungi contesto come argomenti pro separati in modo che ogni forza possa essere messa in discussione individualmente; dai a ogni opzione considerata il proprio nodo fratello con i propri pro e contro — inclusi quelli rifiutati; esegui il giro di commenti RFC come catene (catene di domande e risposte per chiarimenti, catene di revisione per obiezioni — ciascuna un dialogo di quattro turni tra revisore e autore dell'opzione, con N revisori che significano N catene parallele; catene di compromesso per riconciliare le divisioni, dove una catena completata registra il tentativo che sia stato risolto o meno); fai valutare le opzioni ai decisori come prova di dove si trovava la stanza — la valutazione non è la decisione, un umano nominato la chiama ancora; registra le conseguenze accettate come figli contro dell'opzione scelta; e modella la sostituzione collegando una decisione successiva a quella che sostituisce, mantenendo la vecchia leggibile. L'estrazione da ADR markdown esistenti o trascrizioni ricche di decisioni funziona tramite estrazione AI con provenienza stampata. Limiti onesti: questo non sostituisce gli ADR tracciati nel repository (esporta e impegna il record); non c'è un campo di stato ADR incorporato, quindi proposto/accettato/sostituito è una convenzione che mantieni; una catena completata non significa che le parti siano d'accordo — il che è precisamente ciò che rende leggibile il disaccordo e l'impegno.

Share:
TL;DR

Un RFC riguarda solitamente il raggiungimento di un accordo; un ADR registra l'accordo una volta raggiunto. Gli ADR marciscono perché il raggiungimento dell'accordo avviene in chat e la registrazione avviene successivamente, dalla memoria. Esegui entrambi in una sola struttura:

  • La proposta è una rivendicazione fondamentale; le forze contestuali sono separate, argomenti pro-argomentabili; ogni opzione — comprese quelle rifiutate — ottiene il proprio nodo
  • Il giro RFC è catene: Domande e risposte per chiarire, Revisione per obiettare, Compromesso per riconciliare — dialoghi a quattro turni, N revisori = N catene parallele
  • La valutazione non è la decisione: i decisori valutano come prova; un umano nominato la chiama — e scrive perché, specialmente contro la stanza
  • L'ADR è l'albero: nulla è trascritto, quindi nulla si perde nella trascrizione — esporta nel repository se la tua organizzazione lo richiede

La decisione che nessuno poteva ricostruire

Il nuovo responsabile tecnico pone una domanda ragionevole: perché ogni servizio comunica con il sistema di fatturazione attraverso quella coda? C'è un ADR — ADR-014, quattro frasi, scritto undici mesi fa. Contesto: "avevamo bisogno di un'integrazione di fatturazione affidabile." Decisione: "usa la coda." Conseguenze: "un po' di latenza aggiuntiva." È tecnicamente un record. Non risponde a nulla.

Eri lì, quindi sai cosa non dice ADR-014: la discussione di tre settimane su due canali Slack e un acceso thread di PR; l'opzione API sincrona che ha perso a causa di un limite di velocità che è stato successivamente aumentato; l'obiezione dell'ingegnere del personale a cui è stata data risposta con un benchmark che nessuno riesce a trovare ora. Il dibattito è avvenuto. Il resoconto è stato scritto successivamente, dalla memoria, da una persona, un venerdì.

Questo è il modo di fallimento documentato, quasi universale, di una pratica genuinamente buona. Le linee guida prescrittive di AWS e i documenti Well-Architected di Microsoft raccomandano entrambi gli ADR — e notano entrambi il dolore: mantenerli aggiornati richiede tempo e gestirli diventa complesso man mano che i team e le scelte si moltiplicano. La causa principale è strutturale: il dibattito e il documento vivono in luoghi diversi, quindi il documento è sempre una trascrizione imprecisa. La soluzione è farli diventare lo stesso luogo. Né la pratica è specifica per l'ingegneria, né tantomeno per gli ADR. Google richiede un documento di design — problema, approccio proposto, alternative considerate, compromessi — scritto e revisionato prima che inizi un lavoro tecnico significativo, una pratica delineata nel Software Engineering at Google della compagnia. È la stessa disciplina di un ADR, applicata un passo prima: l'ADR registra la scelta a cui un documento di design è arrivato. I due falliscono allo stesso modo per la stessa ragione, e entrambi vengono risolti con la stessa mossa — tenere il dibattito dove vive il documento, piuttosto che trascrivere uno nell'altro successivamente. Leggi ogni passo qui sotto come se coprisse entrambi gli artefatti.

Perché gli ADR marciscono

Una frase del materiale della comunità ADR racchiude tutta la diagnosi: un RFC riguarda solitamente il raggiungimento di un accordo; un ADR registra l'accordo una volta raggiunto. Due artefatti, due momenti — e tutto ciò che c'è tra di essi perde. Le alternative che erano "ovviamente" sbagliate non vengono registrate (fino a quando non smettono di essere ovvie). L'obiezione che ha plasmato il design finale sopravvive solo come commento PR in un thread chiuso. La sezione di contesto viene scritta per ultima, nel modo peggiore, da chi ha perso il gioco del non-it. Riunioni che avrebbero dovuto produrre decisioni producono sintesi invece, e il ragionamento che rende una decisione durevole — la cosa su cui dipende l'intera catena di qualità delle decisioni — è esattamente ciò che la trascrizione abbandona.

Cosa ti serve

Una discussione di Argumentree per RFC. Se hai un corpus esistente di ADR in markdown o una trascrizione di una riunione ricca di decisioni, caricalo: l'estrazione AI lo trasforma in argomenti strutturati pro/contro con i passaggi sorgente allegati, contrassegnati come estratti in modo che le affermazioni importate non siano mai scambiate per quelle attive (come funziona l'estrazione).

Passo 1–3: La proposta, il contesto, le opzioni

  1. 1Indica la proposta come la rivendicazione principale — la decisione proposta, non una domanda: "Instraderemo tutte le scritture di fatturazione attraverso una coda durevole." Questa frase è il titolo del futuro ADR. Checkpoint: la radice esiste, una frase, scritta dal proponente.
  2. 2Contesto come argomenti pro separati. Ogni forza che rende necessaria la decisione — il requisito di affidabilità, il limite di tariffa del sistema di fatturazione, il mandato di audit — è il proprio argomento sotto la radice. Un paragrafo "Contesto" monolitico non può essere messo in discussione; tre affermazioni di contesto separate possono essere ciascuna interrogate, confermate o demolite individualmente. Checkpoint: ≥2 argomenti di contesto, ciascuno una forza.
  3. 3Ogni opzione ha il proprio nodo. La coda, l'API sincrona, il lavoro in batch — argomenti fratelli, ognuno con i propri pro e contro. Pro/contro è relativo al genitore, quindi gli svantaggi di un'opzione dipendono da quell'opzione, non dalla decisione. Includi le opzioni che ti aspetti di rifiutare: il fratello rifiutato è ciò che risponde al "perché non abbiamo semplicemente..." dell'anno prossimo. Checkpoint: ogni opzione di cui un lettore potrebbe chiedere esiste.

Passo 4–6: Il giro RFC che lascia un record

Ora il giro di revisione — normalmente la parte che si disperde tra chat, commenti e corridoi. Qui si svolge come tre tipi di scambio strutturato, ciascuno un dialogo a quattro turni tra un revisore e l'autore dell'opzione:

Catena di domande e risposte — chiarire

"Cosa succede ai client sincroni esistenti?" L'autore dell'opzione risponde, il revisore fa un seguito, l'autore risponde di nuovo — completo. Nessuna opzione dovrebbe portare una domanda senza risposta nella decisione.

Catena di revisione — oggetto

Un revisore valuta un'opzione come non valida; l'autore risponde; seguito; risposta. N revisori = N catene parallele sulla stessa opzione — ogni obiezione è il proprio scambio attribuibile, non un commento perso in un thread condiviso.

Catena di compromesso — riconciliare

Due campi divisi? Uno propone l'opzione intermedia all'altro autore. Se si risolve, hai un nuovo nodo di opzione. Se non si risolve, la catena completata è la registrazione che è stata provata — il che vale quasi altrettanto.

Completato ≠ concordato

Una catena che raggiunge completato significa che lo scambio ha seguito il suo corso — domanda posta e risposta data due volte — non che le parti siano d'accordo. Mantieni quella distinzione; sta per diventare importante.

Passo 7: Decidere — e cosa non è la valutazione

I decisori valutano le opzioni: una etichettata con una valutazione ciascuna. La distribuzione è una prova genuina — dove si trovava la stanza, ufficialmente, prima della chiamata. Ma la valutazione non è la decisione. Un umano nominato decide ancora, e se la chiamata va contro la distribuzione, il nodo decisionale è dove questo viene spiegato. (Chi dovrebbe essere quel umano nominato e come assegnare il ruolo prima del dibattito piuttosto che dopo, è una disciplina a sé — vedi il tutorial sui diritti decisionali.)

La domanda per il tuo team

Chi ha deciso la tua ultima scelta architettonica — e puoi provarlo? Non chi era presente alla riunione: chi ha preso la decisione, e dove è scritto il loro ragionamento?

Passo 8–9: L'ADR che non dovevi scrivere

Ecco il risultato. Il record non è un documento che scrivi successivamente — è il nodo dell'opzione scelta più tutto ciò che è già ad esso allegato: gli argomenti di contesto (Contesto), i fratelli rifiutati (Opzioni Considerate), le catene completate (la discussione, con gli autori), le valutazioni (dove si trovava la stanza) e l'argomento della decisione con la sua motivazione (Decisione). Niente è trascritto, quindi nulla si perde nella trascrizione.

  1. 1Registra le conseguenze che stai accettando. Gli svantaggi noti — la latenza aggiuntiva, il carico operativo della coda — continuano come conseguenze della scelta effettuata, riconosciute da chi decide. Scriverle è ciò che rende una scelta una decisione piuttosto che una preferenza. Checkpoint: ≥1 conseguenza accettata registrata.
  2. 2Esporta se la tua organizzazione richiede ADR tracciati nel repository. Molte lo fanno, correttamente — l'ADR in markdown accanto al codice rimane l'artefatto di conformità. Scrivi il riassunto in quattro sezioni dall'albero (cinque minuti, non un venerdì), rimanda alla discussione per il dibattito completo. Checkpoint: l'ADR del repository cita l'albero; l'albero contiene il ragionamento.

Discutere e impegnarsi, ufficialmente

Il modello che Amazon ha reso famoso — disaccordo e impegno — ha un problema di leggibilità: come può chiunque sapere in seguito che il disaccordo era reale, ascoltato e risposto, piuttosto che schiacciato? La meccanica della catena lo spiega. Una catena di revisione che ha completato i suoi quattro turni e si è conclusa senza accordo è precisamente la prova: l'obiezione è stata sollevata, risposta, insistita e nuovamente risposta, ufficialmente, prima che il dissenziente si impegnasse. Il dissenziente è documentato come se fosse stato ascoltato — il che rende ragionevole l'impegno successivo piuttosto che semplicemente obbediente.

Non interpretare il completamento come consenso.

Completato significa che lo scambio è finito, non che qualcuno ha cambiato idea. Se riporti il completamento della catena come accordo, creerai un falso consenso e brucerai la fiducia che il meccanismo esiste per costruire. La lettura onesta: consultato, risposto, ancora contrario, impegnato comunque — tutti e quattro i fatti visibili.

Passo 10: Sostituzione senza eliminazione

Le decisioni invecchiano. Quando il limite di tasso che ha annullato l'opzione sincrona viene aumentato, la mossa giusta è una nuova decisione che fa riferimento a quella che sostituisce — un nuovo argomento collegato al nodo di ADR-014, che indica cosa è cambiato. La vecchia decisione rimane leggibile; il suo ragionamento è esattamente il motivo per cui la nuova decisione sa cosa sta annullando.

Una lacuna onesta da gestire esplicitamente: non esiste un campo di stato ADR integrato. Proposto / accettato / superato non è uno stato di prima classe su un argomento — la supersessione è modellata tramite collegamenti, e la convenzione spetta a voi mantenerla. Dichiaratelo nell'accordo di lavoro del vostro team piuttosto che assumere che il prodotto lo imponga.

Limitazioni oneste

  • Questo non sostituisce gli ADR nel tuo repository se la tua organizzazione richiede che siano versionati accanto al codice. Esporta e committa il riepilogo; usa l'albero per la parte in cui il markdown è carente — il dibattito.
  • Nessun campo di stato ADR. Proposto/accettato/sostituito è una convenzione di collegamento che mantieni, non qualcosa che il prodotto impone.
  • Una catena è quattro giri. Un profondo disaccordo architettonico richiederà una chiamata; la catena è il registro di ciò che è già stato provato prima di essa.
  • Le valutazioni sono un valore etichettato singolo, non un punteggio multi-criterio ponderato.
  • Non fa scrivere a nessuno un buon contesto. La struttura abbassa il costo di una buona registrazione; non fornisce il giudizio.

Lezioni pratiche

  • Un RFC, una discussione. Resisti all'albero mega che copre l'architettura dell'intero quartiere: i link di supersessione collegano le decisioni meglio del nesting.
  • Semina da ciò che esiste. Un verbale ricco di decisioni o il tuo vecchio folder ADR, estratto, dà al dibattito una partenza veloce — etichettato come importato, così gli argomenti dal vivo rimangono distinguibili.
  • Metti i nomi dei revisori sulle loro catene e lasciali lì. L'attribuzione è la responsabilità; le obiezioni architettoniche anonime si trasformano in folklore.
  • La sezione delle conseguenze è del decisore, di nessun altro. Gli svantaggi accettati scritti dalla persona che li ha accettati hanno un peso diverso rispetto agli avvertimenti di un revisore.

ADR-014, la versione che risponde

Tornando alla domanda del nuovo responsabile tecnico. Nella versione ricostruita, ADR-014 è un nodo: la decisione della coda con la sua motivazione, tre forze contestuali (una ora obsoleta — visibilmente), un fratello API sincrono rifiutato il cui nome fatale indica il vecchio limite di velocità, quattro catene di revisione completate, inclusa quella dell'ingegnere del personale, e il benchmark allegato come prova. Il responsabile tecnico legge per dieci minuti, vede che il limite di velocità è cambiato e apre una proposta sostitutiva collegata al vecchio nodo. Nessuno scava in Slack. Questa è l'intera promessa: le catene raggiungono l'accordo, l'albero lo registra — e il record risponde a domande che non sapevi sarebbero state poste.

Fonti e ulteriori letture

Domande Frequenti

Qual è la differenza tra un RFC e un ADR?

Un RFC (richiesta di commenti) è il processo per raggiungere un accordo: una proposta viene circolata, le alternative vengono discusse, le obiezioni sollevate e risposte fornite. Un ADR (registro delle decisioni architettoniche) registra l'accordo una volta raggiunto: contesto, opzioni considerate, decisione, conseguenze, stato. La modalità di fallimento di gestirli come artefatti separati è che tutto ciò che intercorre tra di essi trapela — il dibattito vive in chat e nei commenti delle PR mentre il registro viene scritto successivamente dalla memoria. Gestire l'RFC come un albero di argomenti strutturato fa sì che l'ADR emerga dal dibattito stesso: nulla viene trascritto, quindi nulla si perde nella trascrizione.

Perché gli ADR diventano obsoleti o smettono di essere scritti?

Perché scriverli è un lavoro di trascrizione. Il ragionamento genuino avviene nei thread di Slack, nei commenti di revisione e nelle riunioni; successivamente una persona ricostruisce una sezione di Contesto dalla memoria, di solito in modo breve e per ultima. Le stesse linee guida di AWS e Microsoft evidenziano il problema: gli ADR richiedono tempo per essere scritti e aggiornati, e la gestione diventa complessa man mano che le decisioni si moltiplicano. I team non smettono di credere negli ADR — smettono di pagare la tassa di trascrizione. Rendere il dibattito e il record la stessa struttura rimuove la tassa.

Come si conduce un giro di revisione RFC con un record?

Tre mosse strutturate, ciascuna un dialogo di quattro turni con l'autore dell'opzione. Catene di domande e risposte per chiarimenti: domanda, risposta, follow-up, risposta. Catene di revisione per obiezioni: valutazione, risposta, follow-up, risposta — con N revisori che aprono N catene parallele sulla stessa opzione piuttosto che un'unica discussione condivisa, in modo che ogni obiezione rimanga attribuibile e venga risposta. Catene di compromesso per divisioni: un lato propone la posizione intermedia all'altro, e se risolve o meno, la catena completata registra che è stata provata. Il checkpoint prima di decidere: nessuna opzione porta una domanda senza risposta, e ogni obiezione sostanziale esiste come una catena completata.

Come funziona 'disaccordo e impegno' con i registri delle decisioni?

La meccanica della catena la rende leggibile. Una catena di revisione che percorre il suo intero corso — obiezione, risposta, follow-up, risposta — e si completa senza accordo è la prova che il dissenso era reale, ascoltato e risposto prima che il dissenziente si impegnasse. Criticamente, completato non significa concordato: significa che lo scambio è terminato. Riportare il completamento come consenso genera un falso accordo e distrugge il valore del meccanismo. Il resoconto onesto mostra quattro fatti contemporaneamente: consultato, risposto, ancora opposto, impegnato comunque — che è esattamente ciò che rende ragionevole l'impegno dopo il dissenso.

Dovrebbero i registri delle decisioni sostituire gli ADR nel repository del codice?

No — e questo tutorial lo afferma esplicitamente. Se la tua organizzazione richiede ADR versionati accanto al codice (molte lo fanno, correttamente, per conformità e accesso offline), conservali: scrivi il riassunto in markdown in quattro sezioni dall'albero in cinque minuti e collegalo alla discussione. La divisione del lavoro è chiara: l'ADR del repository è l'artefatto di conformità durevole; l'albero contiene ciò in cui il markdown è carente — il dibattito in corso, le opzioni rifiutate con le loro motivazioni, le obiezioni e le loro risposte, e le valutazioni.

Come si segna un ADR come superato?

Per convenzione, non per un campo — ed è giusto essere onesti che non esiste uno stato proposto/accettato/sostituito incorporato su un argomento. Modella la sostituzione creando la nuova decisione come un proprio argomento collegato a quello che sostituisce, specificando cosa è cambiato (il limite di velocità aumentato, il nuovo requisito). La vecchia decisione rimane leggibile — eliminarla distruggerebbe esattamente il ragionamento a cui la nuova decisione deve fare riferimento. Dichiarare la convenzione nell'accordo di lavoro del tuo team affinché venga mantenuta deliberatamente.

Smetti di trascrivere le decisioni. Inizia a conservarle.

Esegui il tuo prossimo RFC come un albero: opzioni con la loro motivazione, obiezioni come catene di risposte e un ADR che si scrive da solo.

Inizia la prova gratuita di 14 giorni
Nessuna carta di credito richiesta

Articoli correlati