Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Có bao giờ bạn loay hoay với một lỗi cả giờ liền, đến khi nhờ đồng nghiệp xem giúp, vừa mới mở miệng giải thích thì tự nhiên bạn nhận ra lỗi ở đâu? Hiện tượng này phổ biến đến mức có hẳn một kỹ thuật tên là rubber duck debugging (debug bằng vịt cao su). Nghe vui nhưng nó thực sự hiệu quả.
Ý tưởng đơn giản: bạn đặt một con vịt cao su (hoặc bất kỳ vật gì, thậm chí một cái cốc) lên bàn rồi giải thích code của mình cho nó nghe, từng dòng một, như thể nó là người mới chưa biết gì. Trong lúc nói ra thành lời, bạn buộc phải diễn đạt rõ ràng điều mình nghĩ là code đang làm, và thường phát hiện ra chỗ thực tế khác với giả định.
Tên gọi bắt nguồn từ một câu chuyện được kể trong sách lập trình nổi tiếng, trong đó một lập trình viên mang theo vịt cao su để nói chuyện khi gỡ lỗi. Bạn không cần phải nhớ nguồn gốc, chỉ cần biết kỹ thuật này đã được rất nhiều người dùng.
Giả sử bạn viết hàm đếm số lần xuất hiện của từng từ nhưng kết quả sai:
function countWords(text) {const counts = {};const words = text.split(' ');for (const word of words) {counts[word] = counts[word] + 1;}return counts;}Khi giải thích cho vịt: "Mình tách chuỗi thành các từ. Với mỗi từ, mình lấy số lần đếm hiện tại cộng 1. À, nhưng lần đầu thấy từ đó, counts[word] là gì nhỉ? Là undefined, và undefined + 1 ra NaN!" Lỗi được tìm ra chỉ nhờ giải thích. Cách sửa:
counts[word] = (counts[word] || 0) + 1;Không phải ai cũng muốn nói chuyện với đồ vật. Bạn có thể:
Rubber duck đặc biệt hợp khi:
Nếu giải thích xong mà vẫn không tìm ra, bạn đã có sẵn một bản mô tả vấn đề rõ ràng để gửi cho đồng nghiệp hoặc đăng lên cộng đồng, và người khác sẽ giúp bạn dễ dàng hơn nhiều.
Kỹ thuật này gần như miễn phí, không cần công cụ, chỉ cần sẵn lòng nói chậm lại và nói rõ. Hãy kiếm một chú vịt (hoặc một món đồ chơi nhỏ) đặt cạnh màn hình, lần tới khi bí lỗi hãy thử trước khi hỏi ai khác.
Nếu bạn muốn học cách tư duy giải quyết vấn đề có hệ thống hơn, hãy xem các lộ trình trên codebem.com.
Nguyễn Đình Cường
0 comment