Sono un ingegnere informatico che lavora su un sito Web complesso e in corso. Ha un sacco di parti in movimento e un piccolo team di progettisti dell'interfaccia utente e uomini d'affari che aggiungono nuove funzionalità e modificano quelle vecchie. Nell'ultimo anno circa abbiamo aggiunto centinaia di interessanti piccoli casi. Pianificare, implementare e testarli non è un problema.
Il problema viene dopo, quando vogliamo refactoring o aggiungere un'altra nuova funzionalità. Nessuno ricorda la metà delle vecchie funzionalità e dei casi limite di un anno fa. Quando vogliamo aggiungere una nuova modifica, notiamo che il codice fa ogni sorta di cose lì dentro, e non siamo del tutto sicuri di quali siano i requisiti intenzionali e quali siano gli effetti collaterali privi di significato. Qualcuno l'anno scorso ha chiesto che il token di accesso fosse valido solo per 30 minuti, o alcuni programmatori hanno semplicemente scelto un valore ragionevole? Possiamo cambiarlo?
All'inizio del progetto, abbiamo creato una documentazione che descrive come funzionava il sito. Da allora abbiamo creato alcuni documenti aggiuntivi che descrivono le nuove funzionalità, ma nessuno torna mai indietro e aggiorna quei documenti quando vengono richieste nuove funzionalità, quindi l'unica documentazione autorevole è il codice stesso. Ma il codice non fornisce alcuna giustificazione, nessuna ragione per le sue azioni: solo il come, mai il perché.
Che cosa fanno gli altri team di lunga data per tenere traccia di quali erano i requisiti e perché?