"Nếu nó đi như vịt và kêu như vịt, thì nó là vịt." — Ruby không kiểm tra kiểu của object, chỉ quan tâm object có respond với method được gọi hay không.
Tại sao mạnh: viết code generic không cần interface/abstract class; dễ test (mock bất kỳ object nào có method phù hợp); khuyến khích thiết kế theo hành vi chứ không phải phân cấp kế thừa.
Phòng thủ bằng respond_to?: obj.write("data") if obj.respond_to?(:write).