Pair programming thật sự tuyệt vời như thế nào?
Bài đăng này đã không được cập nhật trong 3 năm
Chào mọi người hôm nay mình xin chia sẻ với mọi người về một topic, pair programming. Thực sự thì chủ đề này cũng không quá mới mẻ đối với mọi người quá quen với Agile/SCRUM. Nhưng mình đã thực sự áp dụng nó và thấy nó rất hiệu quả với chính bản thân mình, chính project, chính team mình. Bắt đầu nào
Pair programming là gì
Đơn giản chỉ là 2 dev code chung với nhau, nghĩa là trong khi một người đang gõ những dòng code thì người kia chỉ ...nhìn. Có rất nhiều cách tiếp cận cũng như best practice để làm thế nào có thể thu được kết quả tốt nhất từ việc hợp tác này. Phổ biến nhất, người code thì đc gọi là Driver, mục đích chính là viết code và nghĩ về task hiện tại, task này thường chỉ là 1 phần nhỏ trong 1 task lớn. Người đứng bên cạnh thì được gọi là Navigator, các Navigator sẽ tập trung hơn vào việc phát hiện lỗi và các vấn đề, cấu trúc và những gì để tập trung vào việc tiếp theo. Ý tưởng là để chia trách nhiệm giữa Driver và Navigator để tạo ra và giữ một flow development ổn định, tránh lỗi, cấu trúc tốt hơn và trong khi làm thì kiến thức được chia sẻ nhiều hơn trong team. Cả 2 nên liên tục nói chuyện với nhau về task để giữ được focus. Pair programming rất tốt cho việc học hỏi của cả hai người tham gia.
Benefits
- Code an toàn hơn: Tất nhiên khi có 2 bộ não focus vào việc tốt thì sẽ giảm được error và failure.
- Tiết kiệm thời gian: Thực ra về thời gian develop có thể là một chút nhanh hơn hoặc chậm hơn, nhưng chắc chắn là về mặt chất lượng code được cải thiện đáng kể, nên chúng ta sẽ tiết kiệm được thời gian fix bug và refactor code.
- Nhiều tiền hơn: Vì chúng ta biết rằng thời gian là tiền bạc nên chúng ta tiết kiệm thời gian chính là chúng ta có cơ hội kiếm thêm tiền. Và còn nếu chúng ta có thể có ít bug và các vấn đề khác chúng ta sẽ có nhiều user hơn, nhiều user có nghĩa là nhiều tiền hơn
- Code tốt hơn: Với một đối tác bạn có thể thảo luận về structure và các solution khác nhau, điều mà bạn sẽ không thể làm được khi có một mình.
- Nhóm kiến thức tốt hơn: Pair có nghĩa giao tiếp nhiều hơn. Các tác dụng là kiến thức chia sẻ qua team tốt hơn, chia sẻ đủ các loại vấn đề liên quan đến code dự án, công ty, flow công việc và bất cứ điều gì khác liên quan.
- Học tập nhanh hơn cho Juniors: Juniors thường học nhanh hơn nhiều khi được code chung với senior, hiểu biết nhiều hơn về code, về team và cả về công ty.
- Hiểu biết tốt hơn về task: Để có sự hợp tác tốt điều quan trọng là phải hiểu rõ ràng về task, bằng cách giải thích về task chúng ta thường nhận được một sự hiểu biết tốt hơn về nó. Thậm chí câu hỏi phát sinh và giải pháp đã có thậm chí trước khi bất kỳ dòng code nào được viết.
- Chia sẻ kinh nghiệm qua các thành viên trong team: Trong pair programming, bạn sẽ không ngừng học hỏi từ đối tác của bạn, thậm chí nếu bạn là senior bạn vẫn có những điều phải học hỏi. Nó cũng là thời điểm tốt để chia sẻ lời khuyên tốt, kinh nghiệm của bạn khi bạn đang code.
- Sự tự tin: pair programming thường có một mức độ cao hơn của sự tự tin khi hai bộ não cùng code và test.
- Happier employees: Một số người nghĩ nó thú vị hơn và hài lòng hơn với môi trường làm việc của họ. Nó cũng là một thời gian tuyệt vời để kết bạn với những người bạn mới thông qua việc code cùng nhau
- Tập trung cao hơn: Vì bạn phải làm việc chung với người khác, bạn sẽ phải tập trung hơn, sự tập trung và giữ kết nối thông qua việc nói chuyện về task giúp bạn giữ tập trung hơn.
Những loại kết hợp pair
Senior - Senior
Mặc dù bạn là một senior, bạn có thể mắc những sai lầm, sẽ không bao giờ nhìn thấy các giải pháp tốt nhất và sẽ luôn luôn có một cái gì đó nhiều hơn để học hỏi, pair programming là một cách tốt để lấp đầy những khoảng trống đó.
Senior - Junior
Đây là một sự kết hợp tuyệt vời để tăng tốc độ học tập cho các junior, các junior có thể có open mind và đặt câu hỏi về nhiều điều mà chỉ có level senior mới đạt được. Đây có thể là một cách tuyệt vời để chia sẻ kinh nghiệm qua toàn team nhưng ... hãy cẩn thận. Vì giữ được balance trong team rất quan trọng, nếu việc pair không tốt thì junior chỉ là "người xem" cho đến hết task. Senior có thể khó chịu về việc phải đi giải thích cho junior, cũng như cảm thấy việc dev của anh đang bị cản trở. Hãy chắc chắn để tìm một sự cân bằng tốt mà làm việc cho tất cả mọi người.
Junior - Junior
Sự kết hợp này có thể cải thiện đáng kể năng suất và chất lượng. Kể từ khi các junior có nhiều điều để học hỏi và câu hỏi nhiều hơn bây giờ họ có thể học hỏi lẫn nhau và phát triển các kỹ năng của họ nhanh hơn.
Vậy thì khi nào pair và khi nào không?
Pair programming thực sự tốt, nhưng không phải lúc nào pair programming cũng mang lại kết quả tích cực, điều quan trọng là phải biết lựa chọn khi nào mình thực sự cần pair. Nhiều task không thể pair được, ví dụ như một task quá đơn giản thì không nên. Còn thế nào là một task đơn giản thì phụ thuộc vào kinh nghiệm. Một task có độ khó vừa thì ta có nhiều lựa chọn hơn như senior code solo, hay pair của 2 junior. Hoặc cố tình pair giữa 1 senior với 1 junior để junior có thể tiếp cận nhiều hơn với feature, hiểu hơn về project cũng như học hỏi nhiều điều hơn nữa từ senior.
Mesure Pair Programming như thế nào?
Tất nhiên thật khó để mesure giá trị của pair programming, một lý do là, có rất nhiều điều để mesure, một trong những khác là, nó khá là khó để mesure.
- Thời gian develop: Làm thế thì dành thời gian develop là nhiều hơn hay ít hơn, và bao nhiêu phần trăm.
- Thời gian fix bug/refactore: Làm thế thì dành thời gian fix bug và refactor là nhiều hơn hay ít hơn, và bao nhiêu phần trăm.
- Enjoy: Sự hài lòng của employee là tăng lên hay giảm xuống.
- Sự hài lòng của user/client: Làm thế thì sự hài lòng của khách hàng tăng lên hay giảm xuống, và như thế nào.
- Tiền: Giá trị kinh tế của pair programming là như thế nào.
Tóm lược
Pair programming chỉ là một công cụ. Giống như tất cả các công cụ khác, nó rất tốt cho một số task và là đồ bỏ đi rác cho những task khác. Nó giống như hỏi một công ty thiết kế là có phải họ là một công ty Photoshop hay không. Tất nhiên là họ đang sử dụng công cụ này để phục vụ tốt nhất cho công việc của họ, đôi khi họ dùng Illustrator trong thiết kế và đôi khi là Photoshop. Với quan điểm này giúp ta hiểu rõ hơn lý do tại sao rất nhiều người không thích pair programming. Đối với tôi đó là vấn đề sử dụng một công cụ tuyệt vời này sao cho nó có ý nghĩa, sao cho nó phục vụ có ích và mang lại hiệu quả trông thấy.
Từ sự hiểu biết và kinh nghiệm thu được của tôi không có gì xấu với pair programming cả, nó chỉ là vấn đề của việc pair đúng developer với đúng task mà thôi. Tôi đã thử và thu lại được rất nhiều điều tốt đẹp, còn bạn thì sao
All rights reserved