2020.04.21

Pair programing và mob programing (Part 2)

Mob programming

Ở phần trước, mình đã chia sẻ với các bạn về pair programing. Về định nghĩa, cách thức hoạt động, lợi ích cũng như một số quy tắc. Ở phần này, chúng ta sẽ cùng nhau tìm hiểu thêm về một hình thức nâng cấp của Pair programing, đó là Mob programing.


1. Lời mở đầu

Trước khi đi sâu vào bài viết, mình muốn nhắc đến 2 đặc trưng của Agile:

  • Giao tiếp trực diện (face to face communication): Trực tiếp trao đổi và thống nhất với nhau giữa các member trong team. Đơn giản hóa quá trình giao tiếp, giúp cộng tác hiệu quả.

  • Phát triển dựa trên giá trị (value-based development): Phần mềm chạy tốt chính là thước đo của tiến độ. Cố gắng loại bỏ đi các công việc dư thừa, không mang lại giá trị cho sản phẩm.

Sở dĩ mình muốn đề cập đến 2 đặc trưng này vì những gì mà mob programing mang lại sẽ dựa trên 2 điều này.

Chúng ta hãy cùng nhau tìm hiểu về chủ đề hôm nay nhé.

2. Mob programing là gì

Khác với pair programing – lập trình cặp. Mob programing (mobbing) là phương pháp phát triển phần mềm theo nhóm.
Nghĩa là nhóm hoặc cả team cùng nhau tham gia vào quá trình coding. Cùng nhau giải quyết một vấn đề, một nhiệm vụ trên một máy tính, cùng một thời gian trong cùng một không gian.

Đây là phương pháp vượt ra ngoài khái niệm của pair programing. Nhưng nhìn tổng quan, Mobbing vẫn dựa trên những nguyên tắc và cách thức hoạt động của pair programing.

Mở rộng ra, mobbing không chỉ dừng lại trên một team, nhóm lập trình, nó còn có thể áp dụng được luôn cho cả team hỗ trợ phát triển.
Ví dụ như Designer hoặc người thuộc bộ phận kinh doanh, hoặc thậm chí là khách hàng cũng có thể tham gia vào mobbing.

3. Cách thức hoạt động

Mobbing cũng chia ra 2 vai trò là Driver Navigator. Nhiệm vụ của mỗi vai trò hoàn toàn giống với pairing.

Tuy nhiên, có một điểm khác biệt. Đó là driver chỉ có một, nhưng Navigator thì có nhiều.
Ví dụ: Mobbing với 3 member thì 1 driver và 2 navigator.

Nếu có thêm member không phải là developer như: Designer, Customer … thì vai trò này là: Guest.

Trước khi bắt đầu mobbing, cả team cần phổ biến trước về task. Sau đó phân chia vai trò và một số rule nhất định.

Thời gian thay đổi vai trò tùy vào từng member, nhưng sẽ hiệu quả nhất từ 15 đến 30 phút. Cả team sẽ nghĩ giải lao sau một thời gian nhất định (Hiệu quả nhất là 90 phút)
Các rule giống với pairing. Bạn có thể tham khảo ở bài viết trước để hiểu rõ hơn về rule khi mobbing.

Xem thêm: 1 ngày mob programing.

 

4. Lợi ích

Mob programing mang lại khá nhiều lợi ích nếu chúng ta áp dụng triệt để phương pháp này.

Cộng tác team hiệu quả

Với việc áp dụng đặc trưng của Agile là giao tiếp trực diện (face to face communication). Các vấn đề được làm sáng tỏ, hiệu quả và giải quyết nhanh chóng bởi cả nhóm (cả team).
Thậm chí có thể mở rộng ra, không chỉ member là developer được tham gia, mà cả designer, marketer và cả customer cũng có thể tham gia cùng.



Mang lại sản phẩm giá trị tốt nhất

Đặc trưng thứ 2 của Agile là “giá trị sản phẩm chính là thước đo tiến độ”. Mob programing cũng áp dụng điều này vào quá trình mobbing. 

  • Cả team cùng nhau làm việc trên 1 máy tính, các thao tác dư thừa như confirm, chuyển task qua lại giữa các member sẽ được giảm thiểu, điều đó giúp giảm thời gian phát triển của dự án.
    Ví dụ: Bạn A làm task 1 và pull request, đợi PM review và merge, bạn B làm task 2 và pull request, tiếp tục đợi PM review và merge. Nếu cả 3 cùng làm trên 2 task thì các công đoạn dư thừa sẽ được loại bỏ, thời gian phát triển sẽ nhanh hơn, lúc này PM chỉ cần merge là xong.
  • Bên cạnh đó, mọi vấn đề đều được minh bạch, rõ ràng khi cả team cùng giải quyết, điều này mang lại giá trị tốt nhất, một sản phẩm tốt nhất khi đến tay người dùng.


Giải quyết vấn đề “mượt mà” hơn
  • Với việc một người driver và trên 2 người navigator. Chúng ta có thể vận dụng tốt thế mạnh của mỗi người.
  • Ví dụ: Driver đang coding nhưng vướng mắc vấn đề liên quan đến SQL, navigator 1 lại không có kinh nghiệm. Nhưng navigator 2 thì đã có nhiều kinh nghiệm. Do đó vấn đề được giải quyết nhanh chóng mà không cần phải tìm hiểu thêm.


Cân bằng skill cho member
  • Thế mạnh lớn nhất khi mobbing chính là học hỏi cùng nhau, mỗi người giỏi về một kỹ năng. Sau quá trình mobbing, các kỹ năng ấy cũng được share ra cho các member khác, giúp họ skill up bản thân mình.
  • Sau một thời gian mobbing, các skill của member sẽ cân bằng nhau, tạo nên một team đồng đều.


Luôn đảm bảo dự án được vận hành tốt nếu member vắng mặt
  • Do cùng nhau tham gia vào mobbing, các member đều có thể nắm được cách vận hành các function, cách triển khai …
  • Điều này rất có lợi: Khi một trong các member vắng mặt hoặc nghỉ việc. Dự án vẫn được vận hành tốt bởi những member còn lại.


5. Kết luận

Vậy là mình đã chia sẻ thêm với các bạn về một phương pháp phát triển phần mềm hiện đại rồi. So với pair programing thì mob programing có một chút khác biệt. Lợi ích mà nó mang lại là khá lớn nếu chúng ta áp dụng triệt để vào từng trường hợp.

Mình xin kết thúc 2 phần của bài viết: “Pair programing và Mob programing” tại đây.

Ở bài viết sau, mình sẽ chia sẻ với các bạn một cách pair, mob programing từ xa. Khi team không thể họp mặt cùng nhau mà vẫn đảm bảo được việc áp dụng pair, mob hiệu quả nhất. Các bạn nhớ đón xem nhé.

Pair programing và mob programing (Part 1)

Pair programing và mob programing (Part 3)