Debugging — Tâm lý và cách tiếp cận đúng khi fix bug (Pragmatic Programmer #20)

Phong

Mở đầu

Ảnh: Daniil Komov — Pexels

Mấy bạn ơi, mình đang đọc cuốn The Pragmatic Programmer (bản kỷ niệm 20 năm) và thấy hay quá trời. Cuốn này không phải kiểu dạy code cụ thể mà là chia sẻ những nguyên tắc thực tế để trở thành lập trình viên pro hơn. Mình quyết định viết series cảm nhận từng topic một, chia sẻ những gì mình học được. Hôm nay là topic 20 về Debugging, nằm trong chapter 3 The Basic Tools. Đọc xong mình thấy thấm thía lắm, vì ai làm dev cũng từng vật lộn với bug hoài.

Debugging

Ảnh: Daniil Komov — Pexels

Nội dung topic này nói về tâm lý khi debug và cách tiếp cận đúng. Tác giả nhấn mạnh rằng đừng nghĩ bug là do máy tính hay người khác gây ra, mà phải coi nó là do chính code của mình. Đừng hoảng loạn hay đổ lỗi, mà hãy bình tĩnh thu thập dữ liệu, suy nghĩ như thám tử: tìm manh mối, loại trừ giả thuyết, và tái hiện bug một cách có hệ thống. Họ khuyên nên dùng debugger thay vì print statement lung tung, và luôn nghĩ về "cái gì đang sai" thay vì "sao nó không chạy". Có phần về "rubber duck debugging" nữa, kiểu nói chuyện với con vịt cao su để não mình suy nghĩ rõ ràng hơn. Mình thấy hay vì nó chuyển debug từ chuyện may rủi thành kỹ năng có thể rèn luyện.

Ảnh: Jakub Zerdzicki — Pexels

Cảm nhận của mình

Thiệt tình là topic này chạm đúng vào nỗi đau của mình. Hồi mới làm dev, mình hay mở code lên rồi print tùm lum, chạy thử vài lần thấy lỗi là sửa vội, đôi khi bug lại xuất hiện chỗ khác. Đọc xong mình mới nhận ra là mình thiếu tư duy hệ thống. Bây giờ mỗi lần gặp bug khó, mình thử ngồi bình tĩnh list ra những gì đã biết, những gì chưa biết, rồi dùng debugger step qua code. Có lần debug một cái API trả lỗi lạ, mình nghĩ là do database nhưng hóa ra là do middleware authentication. Nếu không theo cách sách nói, chắc mình sửa nhầm hoài. Topic này hay vì nó dạy mình kiên nhẫn và có phương pháp, chứ không phải chỉ dựa vào kinh nghiệm "cảm giác".

Kết

Tóm lại, debugging không phải là sửa lỗi ngẫu nhiên mà là quá trình suy nghĩ logic và thu thập bằng chứng. Cuốn sách giúp mình thay đổi cách nhìn về bug, coi nó như cơ hội để hiểu code sâu hơn. Hẹn mấy bạn ở topic sau nha, chắc sẽ còn nhiều cái hay ho lắm. Nếu bạn đang đọc cuốn này thì comment chia sẻ cảm nhận của bạn đi!