Tesi

Cambiare fonte di verità riduce il rischio solo se la risposta prodotta mostra le sue prove e i suoi buchi

Info

Scritto originalmente in francese. Tradotto dall'IA — il significato è stato preservato, non la prosa.

Angolo

«Cosa succede se il cliente annulla questo elemento dopo la validazione?» — la domanda arriva su Slack, la pagina di supporto non copre il caso, e un Product Manager apre un ambiente di test per mezz'ora. Andare a cercare la risposta nel repository invece che nella pagina elimina soltanto quella mezz'ora: una risposta ricavata dal codice può sbagliare quanto una documentazione superata, e con più sicurezza. Ciò che riduce davvero il rischio non è il cambio di fonte, è il regime imposto alla risposta — ogni affermazione agganciata a un elemento preciso e verificabile, la funzione che applica la regola, il test che copre lo scenario, la merge request che ha introdotto il comportamento, lo stato del feature flag; e ogni zona non accertata dichiarata, il test che manca, la configurazione di quel cliente a cui non si arriva, la decisione di prodotto che il codice sembra contraddire. Senza questo doppio regime si sostituisce la memoria imperfetta del Product Manager con la memoria probabilistica di un modello, e il rischio non diminuisce: cambia portatore, passando da chi sapeva di non sapere all'operatore del supporto che crede di sapere.

Sintesi

Il ragionamento parte da un costo che nessuno conta, e questo punto d'ingresso non è casuale: spiega perché si sia convissuto così a lungo con la situazione. Ogni verifica richiede mezz'ora e non compare in nessun ticket, in nessuna stima, in nessuna voce di roadmap. Vi si aggiunge un secondo costo, ancora meno visibile, che non si riduce con gli stessi mezzi: l'interruzione distrugge lo stato di lavoro di chi la subisce, e una risposta ottenuta in due minuti invece che in trenta la lascia intatta.

Lo spostamento verso il codice viene presentato come una risposta a questo costo, e lo è — a patto di non scambiarlo per una risposta al problema dell'affidabilità, che è un altro problema. Il repository è l'unica rappresentazione che non diverge da ciò che il prodotto fa; ma non dice tutto ciò che diceva un documento. Il taglio utile non passa tra il codice e la documentazione, passa tra ciò che descrive — rigenerabile — e ciò che spiega — da conservare, perché nessuna lettura del repository lo ricostruisce. E il repository stesso non basta a decidere: un feature flag vi lascia due comportamenti possibili, ed è la configurazione in produzione a stabilire quale si applica a un cliente.

È qui che il regime di risposta diventa il vero tema. Due esigenze simmetriche, nessuna delle quali sostituisce l'altra: citare delimita ciò che si afferma, ammettere delimita ciò che non si afferma. La prima agisce nel momento in cui la risposta viene prodotta, non quando la si rilegge — ed è questo a distinguerla da un requisito di tracciabilità, che presuppone qualcuno che legga. La seconda dà valore a ciò che somiglia a un fallimento: segnalare che nessun test copre un caso, o che una decisione di prodotto e il codice divergono, è di per sé un'informazione di prodotto.

Resta da capire a chi giova tutto questo, e la questione si risolve con la forma più che con la duplicazione: una risposta unica suddivisa per angolature — la risposta breve, l'uso, il valore, i limiti, le prove — evita di mantenere coerenti tante versioni quante sono le funzioni aziendali, e dà alle prove un posto in cui esistere senza ingombrare chi non le aprirà.

Infine, due condizioni delimitano l'insieme, e non dipendono dal sistema. La prima riguarda il materiale letto: un codice le cui eccezioni esprimono il vocabolario del dominio si lascia interrogare, un codice in cui le regole sono sparpagliate dietro nomi tecnici resiste — a un modello come a uno sviluppatore. La seconda riguarda lo smistamento a monte: non tutte le domande di prodotto sono letture. Quelle che richiedono una decisione non si delegano a niente, qualunque siano gli strumenti.

Ciò che l'insieme fa vedere: cambiare fonte di verità risolve un problema di accesso, non un problema di fiducia. La fiducia non si conquista con l'origine della risposta, si conquista con ciò che la risposta si obbliga a mostrare — e lo stesso regime varrebbe per una risposta ricavata da un corpus giuridico o da un insieme di verbali.

Tensioni / contraddizioni

Due esigenze di questo gruppo di note si contrastano su una soglia che niente stabilisce. Una risposta deve dichiarare ciò che non sa; una risposta che accompagna ogni frase con una riserva torna a essere inservibile, e chi la legge torna ad aprire un ambiente di test — il costo che si voleva eliminare ritorna intero. Il punto di equilibrio è descritto come necessario e mai collocato.

Seconda tensione, su ciò che il sistema affronta davvero. Interviene sul tempo di ricerca; il costo dominante, per un ruolo il cui lavoro è cumulativo, è quello dell'interruzione. Rispondere più in fretta può quindi migliorare un numero senza cambiare niente di ciò che si perde, e l'articolo non dice come la domanda smetterebbe di arrivare.

Terza tensione, con il modo in cui lo spostamento verso il codice è stato raccontato altrove: lì il passaggio dell'autorità dalla specifica al repository è spiegato dal crollo del costo di accesso. Qui l'accesso è acquisito e si rivela insufficiente. Le due letture stanno insieme, ma l'ordine delle priorità si inverte a seconda di quale si legge per prima.

Infine, il termine stesso di fonte di verità resiste a questo gruppo di note: il repository fa fede sulle regole, l'ambiente in produzione fa fede su ciò che vede un dato cliente, e la storia fa fede sull'intento. Tre fonti, ciascuna sovrana su una domanda — cosa che il singolare dell'espressione non dice.

Domande

  • Che cosa, in un'organizzazione, verifica che le prove citate stabiliscano davvero ciò che la risposta fa dir loro, e con quale frequenza?
  • Come accoglie un'azienda che giudica le sue risposte dalla loro nettezza un sistema in cui parte del risultato consegnato è l'ammissione di un buco?
  • A quali condizioni un buco segnalato — un test assente, una decisione di prodotto contraddetta dal codice — diventa lavoro avviato invece di una menzione in più in fondo alle risposte?
  • Che ne è di questo regime quando il comportamento interrogato non dipende più da un repository leggibile ma da un modello addestrato, in cui nessuna funzione contiene la regola?