Tôi sẽ nói rằng điều cần thiết là phải hiểu từng chi tiết về lý do tại sao một số lỗi xảy ra và tại sao một số thay đổi đã loại bỏ các lỗi đó và đôi khi các nhà phát triển cũng thường làm cho chương trình hoạt động mà không thực sự biết chi tiết về lý do tại sao bản sửa lỗi hoạt động!
Nghệ thuật thay đổi mọi thứ cho đến khi một lỗi biến mất, mà không hiểu nguyên nhân gây ra nó hoặc tại sao thay đổi đã khắc phục nó, thường được gọi là "lập trình voodoo", và đó không phải là một lời khen. Thực sự không có cách nào bạn có thể tự tin rằng bạn đã thực sự sửa một lỗi, trái ngược với việc sửa một phần cho trường hợp cụ thể mà bạn đang điều tra, nếu bạn không hiểu nguyên nhân gây ra nó.
Trong trường hợp xấu nhất, bạn chưa làm gì cả ngoại trừ di chuyển lỗi: Tôi nhớ từ năm đầu tiên tính toán tại uni, khi nhiều sinh viên học C và con trỏ lần đầu tiên, lỗi con trỏ thường sẽ ngừng biểu hiện khi họ thay đổi mọi thứ ngẫu nhiên, vì các thay đổi sẽ sắp xếp lại các cấu trúc dữ liệu trong bộ nhớ đủ để khiến lỗi con trỏ dậm lên một bit bộ nhớ khác. Rõ ràng điều đó đã không giúp được gì cả .
Nhưng có nói rằng, thực tế thương mại của lập trình thường là việc thỏa mãn khách hàng rằng một lỗi được sửa chữa quan trọng hơn là thỏa mãn chính mình. Tôi không bao giờ khuyên bạn nên khai báo một cái gì đó cố định nếu bạn không biết điều gì đã gây ra nó, nhưng nếu bạn có thể thấy rằng một số mã có vấn đề và bạn đã làm lại nó, ngay cả khi bạn "không chắc chắn 100%" việc đó gây ra sự cụ thể như thế nào lỗi để biểu hiện, đôi khi bạn chỉ cần chuyển sang lỗi tiếp theo trước khi khách hàng hét quá to về tiến trình chậm chạp của bạn.