Tổng quan module — chẩn đoán lỗi và thoát kẹt khi code sai
Code sai là trạng thái mặc định của mọi người viết chương trình, không phải dấu hiệu bạn không hợp nghề. Module cuối dạy cách chẩn đoán và cách thoát kẹt.
TL;DR: Module này không dạy thêm cú pháp Python nào; nó dạy việc mọi người viết code đều gặp mỗi ngày: code sai. Năm bài đi từ xếp loại một lỗi vào đúng ba nhóm — cú pháp, lúc chạy, sai kết quả — qua đọc traceback để tìm đúng dòng cần sửa, tới sửa bằng một vòng đoán rồi kiểm chứng, và kết ở cách đặt câu hỏi nhờ trợ giúp mà người khác trả lời được. Bài cuối là năm ca chẩn đoán tổng hợp, trải đều ba module trước. Đây là module cuối cùng của khoá.
1. Bạn vừa xong gì, và tại sao code vẫn sẽ sai
Bạn vừa xong Tổng kết module 3: bóc đề thành ba ô, giải tay, vẽ lưu đồ, phân rã, tách hàm, soi ca biên. Với quy trình đó, bạn viết được một lời giải đúng — trên giấy, và khi mọi thứ suôn sẻ.
Nhưng code của bạn vẫn sẽ sai — chắc chắn, nhiều lần, kể cả sau khi bạn đã làm nghề mười năm. Code sai không phải dấu hiệu bạn không hợp làm nghề này; nó là trạng thái mặc định của bất kỳ ai từng ngồi gõ một chương trình. Cái phân biệt người làm được việc với người bỏ cuộc là có một quy trình để thoát ra khỏi cái sai đó.
Module này dạy đúng quy trình đó.
2. Năm bài trong module này

- Bài 1: Ba loại lỗi. Bạn xếp một lỗi vào đúng một trong ba loại (cú pháp, lúc chạy, sai kết quả) chỉ bằng dấu hiệu quan sát được, không cần tra tên lỗi tiếng Anh.
- Bài 2: Đọc thông báo lỗi. Bạn đọc một traceback từ dưới lên và tìm ra dòng code thật sự cần sửa, kể cả khi dòng bị nêu tên không phải dòng đó.
- Bài 3: Sửa bằng giả thuyết. Bạn thay sửa mò bằng một vòng bốn bước — đoán nguyên nhân, kiểm chứng bằng print hoặc bảng trace, rồi thu hẹp dần vùng nghi ngờ.
- Bài 4: Kẹt là bình thường. Bạn viết một câu hỏi nhờ trợ giúp đủ bốn thành phần — code tối thiểu, output thật, kết quả mong đợi, giả thuyết đã thử — để người khác, hoặc chính bạn, trả lời được.
- Bài 5: Mini challenge. Năm đoạn code lỗi trải đều ba module trước — vài ca bạn từng gặp, nhưng lần này việc khác hẳn: không phải đoán nó in ra gì, mà xếp loại lỗi rồi tự kiểm chứng giả thuyết, không ai chỉ sẵn dòng nào hỏng.
Bài cuối — Tổng kết khoá — chốt lại cái gì theo bạn sang Java và cái gì chỉ là ký pháp Python bỏ lại đây.
3. Học xong module này bạn làm được gì
- Classify một lỗi vào đúng ba loại cú pháp, runtime, logic bằng dấu hiệu quan sát được — không chạy nổi dòng nào, chạy rồi dừng giữa chừng, chạy hết nhưng ra sai — và chọn cách chẩn đoán tương ứng.
- Diagnose nguyên nhân thật từ một traceback, kể cả khi dòng được báo không phải dòng gây lỗi.
- Apply vòng sửa lỗi bằng giả thuyết: đoán nguyên nhân, kiểm chứng bằng print hoặc bảng trace, rồi thu hẹp dần.
- Design một câu hỏi nhờ trợ giúp chứa đủ bốn thành phần: đoạn code tối thiểu tái hiện lỗi, output thật nguyên văn, kết quả mong đợi, và giả thuyết đã thử.
- Distinguish thứ chuyển thẳng sang Java — mô hình thực thi từng dòng, bảng trace, quy trình phân rã, ba loại lỗi — với thứ chỉ là ký pháp Python: dấu hai chấm, thụt lề khối, input trả về chuỗi.
4. Cách học module này hiệu quả
- Đừng đọc rồi gật gù. Bài 5 chỉ có tác dụng nếu bạn thật sự tự đoán trước khi bấm xem đáp án — đọc lời giải người khác không rèn được quy trình chẩn đoán của chính bạn.
- Mỗi lần code sai ngoài module này, quay lại đúng ba câu của bài 3: lỗi loại gì, giả thuyết là gì, kiểm chứng bằng cách nào. Ba câu đó dùng được suốt đời, không riêng khoá này.
- Bài 4 không phải bài phụ. Phần lớn thời gian, ép mình viết đủ bốn thành phần của một câu hỏi nhờ trợ giúp là lúc bạn tự nhìn ra đáp án, trước khi kịp gửi đi.
Bài tiếp theo: Ba loại lỗi — cú pháp, lúc chạy, và sai kết quả
Bài này đáng gửi cho bạn học cùng?
Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.
Bài này có giúp bạn hiểu bản chất không?
Hỏi đáp về bài này
Chưa có câu hỏi
Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).
Đặt câu hỏi đầu tiên