Direi che è essenziale comprendere ogni singolo dettaglio sul perché alcuni bug si sono verificati e perché alcune modifiche hanno eliminato questi bug, e è anche comune tra gli sviluppatori a volte far funzionare il programma senza conoscendo davvero i dettagli sul perché la correzione ha funzionato!
L'arte di cambiare le cose fino a quando un bug scompare, senza capire cosa l'ha causato o perché il cambiamento lo ha risolto, viene spesso chiamato "programmazione voodoo" e non è un complimento. Non c'è davvero alcun modo per cui tu possa avere la certezza di avere riparato un bug, invece di correggerlo parzialmente per il caso specifico che stavi investigando, se non capisci cosa lo ha causato.
Nel peggiore dei casi, non hai fatto nulla, tranne spostare il bug: mi ricordo dal primo anno di informatica all'università, quando molti studenti stavano imparando C e puntatori per la prima volta, i bug del puntatore spesso smettevano di manifestarsi quando hanno cambiato le cose in modo casuale, perché i cambiamenti avrebbero riorganizzato le strutture dei dati in memoria abbastanza da far sì che il puntatore del bug calpestasse un diverso frammento di memoria. Ovviamente questo non ha aiutato affatto .
Ma detto questo, le realtà commerciali della programmazione sono spesso tali che soddisfare il cliente che un bug è stato risolto è più importante che soddisfarti. Non ti consiglierei mai di dichiarare qualcosa risolto se avevi nessuna idea che cosa l'avesse causato, ma se vedi che un codice era problematico e lo hai rielaborato, anche se non sei "al 100% certo "in che modo questo ha causato l'insorgenza del bug specifico, a volte devi solo passare al prossimo bug prima che il client grida troppo strong per i tuoi progressi lenti.