Eu diria que é essencial entender todos os detalhes sobre por que alguns bugs estavam ocorrendo e por que certas alterações os eliminaram, e também é comum entre os desenvolvedores às vezes colocar o programa em funcionamento sem realmente saber os detalhes sobre por que a correção funcionou!
A arte de mudar as coisas até que um bug desapareça, sem entender o que o causou ou por que a mudança o corrigiu, é frequentemente chamada de "programação vodu" e não é um elogio. Não há realmente nenhuma maneira de você ter certeza de que corrigiu um bug genuinamente , em vez de corrigi-lo parcialmente para o caso específico que estava investigando, se não entender o que o causou.
Na pior das hipóteses, você não fez nada além de mudar o bug: lembro-me desde o primeiro ano de computação na universidade, quando muitos estudantes aprendiam C e ponteiros pela primeira vez, os bugs dos ponteiros costumavam parar de se manifestar quando mudavam as coisas. aleatoriamente, porque as alterações reorganizariam as estruturas de dados na memória o suficiente para fazer o bug do ponteiro pisar em um pedaço diferente de memória. Obviamente, isso não ajudou em nada .
Mas, dito isso, as realidades comerciais da programação costumam ser tais que satisfazer o cliente com a correção de um bug é mais importante do que satisfazer a si mesmo. Eu nunca recomendaria que você declarasse algo corrigido se não tivesse idéia do que o causou, mas se você pode ver que algum código era problemático e o refez, mesmo se "não tiver 100% de certeza" de como isso causou o problema específico erro para se manifestar, às vezes você só precisa passar para o próximo bug antes que o cliente grite muito alto sobre seu lento progresso.