Pair programming
Bài đăng này đã không được cập nhật trong 6 năm
Pair programming
lặp trình cặp (hay còn gọi là Pair programming) là một cách phát triển phần mềm, ở đó hai nhà phát triển cùng làm việc trên chỉ một máy tính, một người lái (driver), một người làm hoa tiêu (navigator). Người lái tập trung vào sách lước – viết cho mã nguồn chạy được, hoa tiêu tập trung vào chiến lược – giúp cho mã nguồn có thiết kế và giải pháp tốt nhất.
những mặt lợi và hại của lập trinh cặp
Lợi ích của lập trình cặp
1/ chia sẻ kiến thức Trong dự án, lập trình cặp giúp chúng ta thấu hiểu hệ thống rõ hơn, thông qua chia sẻ thông tin và góc nhìn dự án của đối phương, dễ dàng thảo luận và đưa ra các ý kiến đa chiều, và cũng vì vậy chúng ta cũng sẽ thu thập được thêm nhiều kiến thức và kinh nghiệm về cho bản thân mình.
2/ Tăng chất lượng sản phẩm, giảm thiểu bug Khi lập trình cặp, người viêt mã (driver). Người kia làm hoa tiêu sẽ có nhiệm vụ là ngẫm nghĩ. Việc chai ra hai vài trò như vậy giúp người lái trập trung vào từng dòng mã nhằm chuẩn cú pháp và tối ưu về từng đoạn code mà không phải lo lắng nhiều về tổng thể chương trình, như vậy sẽ giúp hoa tiêu có thời gian cân nhắc về hướng phát triển và cấu trúc tổng thể của toàn chương trình mà khoogn bị phân tâm về tiểu tiết hay các mã nguồn cụ thể. Nếu có thể hòa hợp và phối hợp ăn ý, chất lượng công việc sẽ nâng cao hơn nhiều, ít bug hơn, như vậy lượng thời gian debug và bảo trì về sau sẽ rút ngắn hơn nhiều.
Nếu mọi người đã quá chán nản với debug một mình, sao chúng ta k thử lập trình cặp?
3/ tập trung cao độ lập trình cặp giúp chúng ta tập trung cao độ (hiện tại là không có chứng minh khoa học), theo quan điểm cá nhân, mình thấy khi mình chia sẻ góc nhìn của mình về lỗi mà mình đang tìm kiếm, mình cảm thấy giá trị của mình đang được trao đổi và chia sẻ, còn tự nghĩ không thì nó khá là khô khan và không có nhiều hứng thú (nghe có vẻ giống với skill debug duck ). ngoài ra, shrrutarshi nhận thấy rằng: chúng ta ít có xu hướng trì hoãn hay mất tập trung bởi những gián đoạn. Nói về gián đoạn, khi bạn đang làm việc cùng người khác, các đồng nghiệp sẽ ít làm phiền bạn hơn, hơn nữa, bạn cũng sẽ bỏ qua các gián đoạn bên ngoài để tập trung vào vấn đề cùng với bạn đồng hành của mình hơn. Hay kể cả khi bị làm gián đoạn, thì người cùng cặp sẽ giúp giải quyết các vấn đề trong khi bạn vẫn tiếp tục dòng suy nghĩ của mình. Như vậy, sản phẩm sẽ được hoàn thiện nhanh chóng hơn nhiều.
4/ học cách tôn trọng đồng nghiệp Chắc chắn rằng xích mích và mâu thuẫn sẽ không đưa cặp lập trình viên đi tới kết quả công việc. Khi là một driver, bạn sẽ cảm thấy khó chịu, đôi khi là đến mức bực mình khi hoa tiêu của mình vội vàng chỉ trõ những lỗi kiểu như chấm phẩy hay tag, ... khi bạn còn chưa hoàn thành xong việc? hay hoa tiêu của bạn còn thẳng thắn phê bình về mã nguồn và thiết kế. Ngược lại, đồng nghiệp của bạn cũng sẽ rất khso chịu khi gặp hoa tiêu như vậy. Lập trình cặp sẽ dạy bạn cách để ngồi với đồng nghiệp, để có thể hiểu hơn cả dự án và cả đồng nghiệp đi cùng. Kinh nghiệm và chia sẻ hay sự hỗ trợ đều những điều đáng quý nhưng chúng ta cũng cần phải chú ý tới cách đối tác của mình tiếp nhận những lời nận xét đó thế nào, để có thể thay đổi phù hợp. Thay vì chê bai, chúng ta có thể ngỏ lời gợi ý hoặc trưng cầu ý kiến, như vậy sẽ tốt hơn nhiều
Bất lợi của lập trình cặp
1/ Chênh lệch về năng lực Đây là rảo cản tiềm ẩn đầu tiên của lập trình cặp. Nếu độ chênh về kĩ năng và trình độ quá cao, thì sẽ thành 1 người chuyên làm code, một người chuyên kiếm tra. Điều này không vấn đề gì với các mỗi quan hệ kiểu hướng dẫn. Còn nếu không, sự khác biệt năng lực này sẽ đi ngược lại mục tiêu ban đầu của lập trình cặp,nó sẽ tạo rào cản khiến cho cặp đôi sẽ khó có thể hiểu nhau, dẫn đến làm giảm hiểu quả và năng suất làm việc, hơn nữa còn gây áp lực lên mỗi cá nhân.
2/ Những cái tôi xung đột Trong những team có tay nghề cao, sự xung đột quan điểm và suy nghĩ rất dễ xảy ra. Cả 2 lập trình viên - với sự tự tin kiến thức và kĩ năng của mình- đều cố gắng thuyêt phục đối phương cách thức giải quyết vấn đề của mình là hợp lý (trong khi sự thực có thể cả 2 đều fail @_@). sự xung đột không có sự hòa giải này có thể dẫn tới hậu quả là trị trệ công việc, bất đồng quan điểm, và dần sẽ dẫn tới không thể làm việc nhóm với nhau.
Xung đột là điều không thể tránh khói, dù là trong lập trình cặp hay làm cùng team.
3/ Tốn công sức Câu hỏi ai cũng đưa ra: "Liệu,..., có lãng phí khi hai người làm việc của một người?". Thông qua một nghiên cứu cho thấy, lập trình cặp có thể làm giảm năng suất làm việc nói chung của team, của công ty lên tới 15%.
Đo lường hiệu quả trong pair programming
- thời gian: lượng thời gian hoàn thành task có nhanh hơn không
- tỉ lệ bug: số lượng bug có giảm đi rõ rệt không
- sự thoải mái của developer
- sự hài lòng của khách hàng
- về hiệu quả kinh tế thế nào
Kêt luận:
4 cái lợi và 3 cái hai! Vậy lập trình cặp cũng đáng để thử nhể? Dù thế nào thì lập trình cặp chung quy cũng chỉ là một công cụ mà công cụ thì không thể hoàn toàn quyết định được 'số phận' sản phẩm của bạn. Nâng cao kỹ năng làm việc nhóm, trau dồi tay nghề, .... vẫn là điều mà lập trình viên không ngừng để kahi thác những ích lợi mà lập trình cặp mang lại. Hãy tận dụng những mặt tốt của lập trình cặp để mình có thể vừa nâng cao tay nghề, cũng như tăng tốc độ dự án, và vui vẻ với đồng nghiệp.
All rights reserved