Con vịt cao su trợ giúp người phát triển duyệt lại code
**Gỡ lỗi vịt cao su** (tiếng Anh: *Rubber duck debugging*) là phương pháp gỡ lỗi sử dụng trong kỹ thuật phần mềm bằng cách trình bày lại thuật toán bằng ngôn ngữ tự nhiên.

Người ta nhận thấy rằng, khi chúng ta giải thích lại chi tiết những công việc chúng ta đã thực hiện với một vật vô tri, kẻ luôn biết "chịu khó lắng nghe, luôn luôn thấu hiểu", có thể giúp chúng ta bình tĩnh đánh giá khách quan những gì đã làm và có thể tìm ra các lỗi logic dễ dàng hơn. Nhiều lập trình viên đã có kinh nghiệm giải thích một vấn đề cho người khác, thậm chí có thể cho một người không biết gì về lập trình, và sau đó tìm ra giải pháp trong quá trình giải thích vấn đề. Khi mô tả những gì từng dòng code phải làm và quan sát những gì nó thực sự làm, bất kỳ sự không giống nhau nào giữa hai điều này đều trở nên rõ ràng. Nói một cách tổng quát hơn, việc giảng dạy một môn học buộc người giảng viên phải đánh giá lại nó từ những khía cạnh khác nhau và nhờ đó có thể mang lại sự hiểu biết sâu sắc hơn chính những gì mình giảng. Thay vì tìm một người chấp nhận lắng nghe mình, bằng cách sử dụng một đối tượng vô tri vô giác (vịt cao su), lập trình viên có thể cố gắng thực hiện điều này mà không cần phải làm phiền bất kỳ ai khác. Cách tiếp cận này đã được sử dụng để giảng dạy khoa học máy tính và kỹ thuật phần mềm, chẳng hạn như trong khóa học CS50 của Harvard và nhiều khóa học khác.

Lịch sử
-------

Cửa sổ Vịt cao su trên Stack Exchange vào ngày 1 tháng 4 năm 2018

|  |  |  |
| --- | --- | --- |
| "| *Insights are often found by simply describing the problem aloud.* | "|
| —Duck, *Quack Overflow* |

Khái niệm "Rubber Duck Debugging" xuất hiện lần đầu tiên ở trong cuốn "The Pragmatic Programmer" của Andy Hunt and David Thomas, trong đó một lập trình viên sẽ mang theo một con vịt cao su và gỡ lỗi mã của họ bằng cách buộc họ phải giải thích từng dòng một cho con vịt. Nhiều thuật ngữ tương tự khác cũng được sử dụng cho kỹ thuật này, thường liên quan đến các đồ vật vô tri vô giác khác nhau như là hoặc vật nuôi như chó hoặc mèo.

Vào ngày 1 tháng 4 năm 2018, trên Stack Overflow, trang trao đổi kỹ thuật lập trình phổ biến nhất hiện nay, xuất hiện một cửa sổ popup của người trợ lý Vịt cao su dưới dạng một tính năng mới có tên Quack Overflow. Chú vịt xuất hiện ở góc dưới cùng bên phải của trình duyệt và cố gắng giúp người dùng bằng cách lắng nghe vấn đề của họ và đưa ra giải pháp. Tuy nhiên, con vịt chỉ phát ra âm thanh *Quạc quạc* sau khi suy nghĩ và gõ phím mặc dù nó được giới thiệu là tính năng *Vịt cao su* như một phương pháp mạnh mẽ để giải quyết vấn đề. Một số người dùng bối rối khi nhìn thấy con vịt lần đầu tiên và nghĩ rằng đây là một chương trình phần mềm độc hại được cài đặt trong máy tính của họ trước khi nhận ra đó chỉ là một trò đùa Cá tháng tư.

Con vịt cao su Quack Overflow mang theo thông điệp "*Insights are often found by simply describing the problem aloud.*" có nghĩa là "Hiểu biết sâu sắc thường được tìm thấy bằng cách mô tả thành lời vấn đề một cách đơn giản."

Tham khảo
---------

1. 1 2  Hunt, Andrew (2000). *The pragmatic programmer : from journeyman to master*. Internet Archive. Reading, Mass. : Addison-Wesley. ISBN 978-0-201-61622-4.
2. ↑  "The Contribution of the Cardboard Cutout Dog to Software Reliability and Maintainability". *www.sjbaker.org*. Lưu trữ bản gốc ngày 28 tháng 1 năm 2022. Truy cập ngày 15 tháng 2 năm 2022.
3. ↑  "The Psychology Underlying the Power of Rubber Duck Debugging | Press Up". *Press Up*. 25 tháng 6 năm 2014. Lưu trữ bản gốc ngày 9 tháng 7 năm 2014. Truy cập ngày 15 tháng 2 năm 2022.
4. ↑  "Rubber Duck Problem Solving". *Coding Horror*. 13 tháng 3 năm 2012. Lưu trữ bản gốc ngày 12 tháng 2 năm 2022. Truy cập ngày 15 tháng 2 năm 2022.
5. ↑  "Rubber Duck Debugging in CS50 IDE". *CS50* (bằng tiếng Anh). Lưu trữ bản gốc ngày 15 tháng 2 năm 2022. Truy cập ngày 15 tháng 2 năm 2022.
6. ↑  "Quack Overflow - Stack Overflow's take on April Fool!". *My Adventures* (bằng tiếng Anh). 31 tháng 3 năm 2018. Lưu trữ bản gốc ngày 4 tháng 1 năm 2022. Truy cập ngày 15 tháng 2 năm 2022.