# 85: Một cây làm chẳng nên non

Lập trình đòi hỏi suy nghĩ sâu sắc, và suy nghĩ sâu sắc đòi hỏi sự cô độc. Vì vậy, nhiều lập trình viên lựa chọn hướng đi này.

Cách tiếp cận “sói đơn độc” này đã nhường chỗ cho cách tiếp cận mang tính hợp tác hơn, giúp cải thiện chất lượng, năng suất và sự hài lòng trong công việc cho các lập trình viên. Cách tiếp cận này có các nhà phát triển phối hợp chặt chẽ với nhau và với cả những người phi chuyên môn- nhà phân tích kinh doanh và hệ thống, chuyên gia đảm bảo chất lượng và người dùng.

Điều này có ý nghĩa gì đối với các nhà phát triển? Làm một chuyên gia công nghệ không còn là tất cả nữa. Bạn phải phối hợp hiệu quả khi làm việc với những người khác.

Hợp tác không phải là hỏi và trả lời câu hỏi hay ngồi trong phòng họp. Đó là bắt tay với người khác để cùng hoàn thành công việc.

Tôi là “fan ruột” của lập trình cặp. Bạn có thể gọi đây là “sự hợp tác cực độ”. Là một nhà phát triển, kỹ năng của tôi phát triển khi tôi ghép cặp. Nếu tôi kém hơn cộng sự của mình ở mặt nào, tôi hoàn toàn có thể học hỏi từ kinh nghiệm của anh hoặc cô ấy. Khi tôi có thế mạnh ở mặt nào đó, tôi tìm hiểu thêm về những gì tôi biết và không biết khi phải tự mình giải thích vấn đề. Lúc nào cũng vậy, cả hai chúng tôi đều đưa ra ý kiến và học hỏi lẫn nhau.

Khi ghép cặp, mỗi chúng ta sẽ chia sẻ trải nghiệm lập trình của riêng mình- domain cũng như kỹ thuật- cho vấn đề hiện có, mang lại cái nhìn sâu sắc và kinh nghiệm độc đáo về việc viết phần mềm sao cho hiệu quả. Ngay cả trong trường hợp mất cân bằng kiến thức về domain hay kỹ thuật, người có kinh nghiệm hơn luôn học được điều gì đó từ người khác- có thể là một phím tắt mới, hay cơ hội tiếp xúc với một công cụ hoặc thư viện mới. Đối với những thành viên ít kinh nghiệm hơn, đây là cơ hội tuyệt vời để tăng tốc.

Lập trình cặp khá phổ biến, không chỉ dành riêng cho những người đề xuất phát triển phần mềm nhanh. Một số phản đối việc ghép đôi cho rằng “Vì sao tôi phải trả tiền cho hai lập trình viên chỉ để làm công việc của một người?” Phản ứng của tôi đối với điều này là bạn thực sự không nên nghĩ vậy. Tôi cho rằng việc ghép đôi làm tăng chất lượng, hiểu biết về domain và công nghệ, kỹ thuật (như thủ thuật IDE) và giảm thiểu tác động của rủi ro xổ số (một trong những nhà phát triển chuyên nghiệp của bạn trúng xổ số và nghỉ việc ngay hôm sau).

Giá trị lâu dài của việc học một phím tắt mới là gì? Làm thế nào để đo lường sự cải thiện chất lượng tổng thể của sản phẩm tạo ra từ các cặp ghép đôi? Làm thế nào để đo lường tác động của cộng sự của bạn khi ngăn cản bạn theo đuổi một cách tiếp cận nào đó để giải quyết một vấn đề khó khăn? Một nghiên cứu đã chỉ ra sự gia tăng 40% về hiệu suất và tốc độ (JT Nosek, “Trường hợp lập trình hợp tác”, Truyền thông của ACM, tháng 3 năm 1998). Giá trị của việc giảm thiểu “rủi ro xổ số” của bạn là gì? Hầu hết những lợi ích này rất khó đo lường chính xác.

Ai nên ghép cặp với ai? Nếu bạn là người mới trong nhóm, điều quan trọng là tìm một thành viên có kiến thức tốt. Bạn cũng cần tìm một người có kỹ năng giao tiếp và khả năng huấn luyện tốt. Nếu bạn không có nhiều kinh nghiệm về domain, hãy ghép cặp với một thành viên là chuyên gia về domain.

Nếu bạn cảm thấy chưa thuyết phục, hãy thử hợp tác với đồng nghiệp của bạn. Ghép cặp để giải quyết một vấn đề thú vị. Hãy thử một vài lần xem cảm giác thế nào.