C'è un libro eccellente che ho letto su questo argomento chiamato Why Programs Fail , che delinea varie strategie per trovare bug che vanno dall'applicazione del metodo scientifico per isolare e risolvere un bug, al delugging del debug. L'altra parte interessante di questo libro è che elimina il termine "bug". L'approccio di Zeller è:
(1) Un programmatore crea un difetto nel codice. (2) Il difetto provoca un'infezione (3) L'infezione si propaga (4) L'infezione provoca un fallimento.
Se vuoi migliorare le tue abilità di debug, consiglio vivamente questo libro.
Nella mia esperienza personale, ho trovato molti bug nella nostra applicazione, ma il management semplicemente ci spinge in avanti per ottenere nuove funzionalità. Ho sentito spesso "Abbiamo trovato questo bug da soli e il client non lo ha ancora notato, quindi lascialo fino a quando non lo fanno". Penso che essere reattivi al contrario di proattivi nel correggere i bug sia una pessima idea, poiché quando arriva il momento di risolvere il problema, hai altri problemi che devono essere risolti e più funzioni di gestione vogliono uscire al più presto, quindi rimani sorpreso in un circolo vizioso che può portare a una grande quantità di stress, a esaurirsi e, infine, a un sistema guidato da difetti.
La comunicazione è anche un altro fattore quando vengono rilevati dei bug. Inviare un'e-mail o documentarla sul bug tracker va bene e va bene, ma nella mia esperienza, altri sviluppatori trovano un bug simile e invece di riutilizzare la soluzione che hai messo per correggere il codice (poiché si sono dimenticati di tutto ), aggiungono le loro versioni, quindi hai 5 diverse soluzioni nel tuo codice e di conseguenza sembra più gonfio e confuso. Quindi, quando correggi un bug, assicurati che alcune persone lo esaminino e ti diano un feedback nel caso in cui abbiano risolto qualcosa di simile e abbiano trovato una buona strategia per affrontarlo.
limist ha menzionato il libro, The Pragmatic Programmer, che contiene materiale interessante sulla correzione di bug. Usando l'esempio che ho dato nel paragrafo precedente, guarderei questo: Software Entrophy , in cui viene utilizzata l'analogia di una vedova spezzata. Se compaiono due finestre rotte, la tua squadra potrebbe diventare apatica per non risolverlo mai a meno che non assumi una posizione proattiva.