Những trải nghiệm khi áp dụng phương pháp lập trình cặp đôi

4 tháng 4, 2022 By DEVERA ACADEMY

Lập trình cặp chính là một phương pháp thích hợp để chúng ta và bạn bè có thể cùng nhau tiến bộ trong việc học lập trình cũng như trong kỹ năng diễn đạt. Trong bài viết này chúng ta sẽ cùng tìm hiểu về phương pháp lập trình cặp cũng như lắng nghe những chia sẻ, kinh nghiệm đến từ trải nghiệm của tác giả Justin Huang. 

“Lập trình cặp đôi … Thành thật mà nói, lần đầu tiên tôi biết đến thuật ngữ này, tôi không quá háo hức để thực hiện nó. Bởi lúc đó tôi vừa mới bắt đầu hành trình phát triển web của mình chưa có nhiều kinh nghiệm viết code, và ý nghĩ có người khác xem tôi viết mã khiến tôi cảm thấy không thoải mái. Là người mới bắt đầu, tôi đã lo lắng rằng mình sẽ làm cho người khác chậm lại và không thể đóng góp để giúp giải quyết vấn đề trong tầm tay. Tuy nhiên, khi tôi cùng đối tác của mình đi vào thực hành, tôi thấy rằng mọi chuyện tốt đẹp hơn tôi nghĩ. Và đây là những trải nghiệm của tôi” - Justin Huang


Lập trình cặp là gì?

Trước khi bắt đầu, chúng ta cùng tìm hiểu theo định nghĩa về lập trình cặp theo Wikipedia:

"Lập trình cặp là một kỹ thuật phần mềm linh hoạt trong đó hai lập trình viên làm việc cùng nhau tại một máy. Một người chịu trách nhiệm viết code (driver) trong khi người còn lại sẽ là người quan sát (observer) hoặc điều hướng (navigator), xem xét từng dòng code khi nó được nhập vào. Trong lúc lập trình, cả hai sẽ luân phiên vai trò."

Mục đích của sự sắp xếp này là cho phép driver chỉ tập trung vào việc viết code, trong khi navigator giúp hướng dẫn công việc chỉ ra một lối đi phù hợp cho driver.


Tại sao nên lập trình cặp?

Lập trình cặp có nhiều lợi ích đáng kể trong môi trường cộng tác, cải thiện quá trình học tập và làm việc:

Hiệu quả cao hơn và chất lượng code tốt hơn: Có một người khác cùng tham gia viết mã giúp code được sạch hơn và chất lượng hơn. Mặc dù code theo cách này khiến chúng ta mất nhiều thời gian hơn, nhưng code được xây dựng thường ít xảy ra các sự cố và lỗi hơn. Cuối cùng code sẽ có được một hiệu quả tốt hơn về lâu dài.

  • Khuyến khích việc đôi bên cùng nhau học tập: Mỗi người đều có cách suy nghĩ và cách làm việc khác nhau để giải quyết một vấn đề. Lập trình theo cặp có thể giúp chúng ta học kỹ thuật và phương pháp khác nhau để giải quyết cùng một vấn đề, từ đó chúng ta có thể trở thành một lập trình viên toàn diện hơn. Những người có kinh nghiệm và kỹ năng cao hơn cũng có thể tận dụng cơ hội này để giúp đỡ người còn lại trong việc cải thiện khả năng của mình, đồng thời củng cố kiến ​​thức của bản thân thông qua việc kèm cặp.

  • Giảm lỗi và tăng sự tự tin: Trong khi viết code, đôi khi chúng ta cảm thấy không chắc chắn về các phương pháp và cách chúng ta đang thực hiện. Người còn lại sẽ giúp xác nhận các quyết định mà chúng ta đưa ra, từ đó làm tăng sự tin tưởng rằng cả hai đang đi đúng hướng. Do đó việc lập trình cũng sẽ dẫn đến ít lỗi hơn (ví dụ: lỗi cú pháp) và cẩn thận hơn trong những gì được viết.

  • Cải thiện khả năng giao tiếp: Một kỹ năng quan trọng cần phát triển trong hầu hết các ngành nghề là khả năng giao tiếp với những người xung quanh chúng ta. Lập trình cặp đòi hỏi chúng ta phải liên tục giao tiếp với đối tác của mình theo cách mà họ có thể hiểu được. Điều này sẽ giúp chúng ta diễn đạt quá trình suy nghĩ của mình một cách ngắn gọn hơn.


Hạn chế của lập trình cặp

Cũng như bất kỳ điều gì khác trong cuộc sống, lập trình cặp cũng có một số khía cạnh không thuận lợi, dưới đây là một vài khó khăn tiêu biểu:

  • Chi phí chung cao hơn: Chi phí phát triển sẽ gia tăng theo thời gian khi thực hiện lập trình cặp; một nghiên cứu chỉ ra rằng chi phí cao hơn khoảng 15%. Tuy nhiên, việc cải thiện chất lượng thiết kế, giao tiếp với nhóm và giảm thiểu các sai sót cũng như rủi ro về nhân sự được cho là đã “bù đắp” được cho nhược điểm này. Tuy nhiên, chi phí vẫn là một cái gì đó mà chúng ta cần xem xét.

  • Khiến chúng ta khó chịu: Không khó để hiểu tại sao ban đầu lập trình cặp có thể lạ và không thoải mái. Không chỉ có người khác làm việc trên cùng một source code để quan sát chúng ta mà chúng ta cũng cần phải xem xét các bước thực hiện thích hợp liên quan đến tình huống cần giải quyết. Sẽ rất khó trong việc giao tiếp với đối phương vì ta không biết được rằng chúng ta có cần phải nói ra tất cả những gì chúng ta làm không? chúng ta nên đưa ra bao nhiêu hướng dẫn? Làm thế nào chúng ta có thể giải thích một cách chính xác điều gì đó có thể khó hiểu trong đầu của chúng ta? Điều gì sẽ xảy ra nếu chúng ta kém kỹ năng hơn so với họ? chúng ta có thể chỉ cần… viết mã như bình thường không? 

Đây là một số điều điển hình mà chúng ta lo lắng, ngoài việc giải quyết vấn đề về coding của chúng ta, điều này có thể khiến chúng ta bực bội về mặt tinh thần. Ngoài ra, sự im lặng cũng là điều hết sức khó xử.


Kinh nghiệm từ tác giả

“Lần đầu tiên tôi tiếp xúc với lập trình cặp là trong tuần đầu tiên tham gia chương trình bootcamp của Lighthouse Labs để phát triển web. Chúng tôi được yêu cầu bắt cặp với một học sinh khác để giải quyết một vấn đề cùng nhau. Là một người hướng nội, tôi sợ phải đối mặt với cuộc gặp gỡ này. Viết code với người khác đã là một trải nghiệm hoàn toàn mới rồi, mà còn là viết code với một người lạ, không hơn không kém. Nhân đôi niềm vui, phải không?

Tôi đã bắt đầu cuộc gọi với đủ loại suy nghĩ về việc nó sẽ không kết thúc tốt đẹp như thế nào (chúng tôi đã làm việc từ xa bằng cách sử dụng liveshare vscode và cuộc gọi âm thanh), nhưng khi cuộc gọi bắt đầu, nó thực sự không đáng sợ như tôi nghĩ rằng nó sẽ được. Rất may, đối tác của tôi rất dễ hòa đồng, vì vậy toàn bộ quá trình diễn ra dễ chịu hơn nhiều so với những gì có thể xảy ra.”

Với trải nghiệm về lập trình cặp, tác giả đưa ra một vài đánh giá cá nhân mà chúng ta có thể tham khảo dựa trên đó:


Những mặt tốt

"Nhiệm vụ mà chúng tôi được yêu cầu hoàn thành không quá khó, nhưng chúng tôi vẫn có cơ hội hoán đổi vai trò, mỗi người một lần là driver và một lần là navigator. Trong khi là người navigator, cả hai chúng tôi đều giúp đưa ra các bước tiếp theo hướng tới giải pháp, cũng như bắt lỗi cú pháp như thiếu dấu ngoặc mở/đóng và dấu chấm phẩy. Trong khi đối tác của tôi là người driver, tôi đã học được khá nhiều điều từ cách cô ấy viết mã.

Tại thời điểm này, tôi đã sử dụng vòng lặp for được lặp lại qua một biến (thường được đặt tên là 'i') (for (let i = 0; i <x.length; i ++)) cho bất kỳ thứ gì cần được lặp lại, bất kể cho dù tôi có cần thiết hay không. Đó là loại vòng lặp for duy nhất mà tôi cảm thấy thoải mái. Tuy nhiên, thay vào đó, đối tác của tôi đã sử dụng một loại vòng lặp for khác mà tôi không quen, vòng lặp (for ... of), trình bày mã rõ ràng hơn và ngắn hơn và giải quyết được vấn đề tương tự. Và do đó, tôi đã học được một kỹ thuật mới có thể cải thiện kỹ năng viết mã của tôi. Mặc dù cuối cùng tôi đã học được phương pháp mới này, nhưng được kết hợp với một người đã quen thuộc với nó và có thể giải thích đúng khái niệm giúp tôi dễ hiểu hơn."


Và những mặt trái

"Bây giờ chúng ta phải nói về những tiêu cực. Hóa ra rằng việc nói ra suy nghĩ của bạn là một thử thách khó khăn hơn bạn tưởng tượng. Tôi thấy mình đang đấu tranh để giải thích đúng quy trình suy nghĩ của mình trong khi viết code - viết theo cách đó thật hợp lý. Tuy nhiên,khi trong một nhóm, bạn không phải là người duy nhất đọc code mà bạn viết. Mọi người sẽ có thể đọc và hiểu những gì code làm và kết quả mong đợi. Thực hành để diễn đạt ý nghĩ của bạn trong khi viết mã sẽ giúp bạn phát triển kỹ năng viết mã dễ đọc hơn và mang lại lợi ích cho mọi người. Vì vậy, hãy đi thực hành (tôi cũng vậy).

Trong khi đối tác của tôi rất tốt và dễ hòa đồng, tình hình vẫn… khá khó xử. Có thể đó là sự căng thẳng, hoặc có thể do tôi vụng về, nhưng có một sự căng thẳng khó diễn tả và hơi khó chịu. Tôi nghĩ rằng một số người sẽ biết những gì tôi muốn nói. Tôi muốn nghĩ rằng đó có thể là vì đây là lần đầu tiên. Tôi chắc chắn rằng nó sẽ tốt hơn theo thời gian, phải không?"

Những điều đã học được, những điều Nên và Không nên

Nói chung, trải nghiệm lập trình cặp này là một nỗ lực rất thú vị và có kết quả. Bạn có thể học hỏi nhiều điều từ một người khác, cho dù đó là từ mã họ nhập, cách họ sử dụng để xử lý một vấn đề, hoặc thậm chí là cách họ sàng lọc các tệp. Và mặc dù có thể sẽ có những khoảnh khắc lúng túng trong quá trình tương tác, nhưng tôi nghĩ rằng luôn có điều gì đó bạn có thể học được từ một phiên lập trình cặp. Tuy nhiên, tác giả không khuyên bạn nên làm điều này mọi lúc - nó làm hao mòn tinh thần và bạn sẽ kiệt sức, nhanh chóng. Hoặc muốn chạy trốn.

Để kết thúc, dưới đây là danh sách tóm tắt về một số điều nên làm và không nên làm, hy vọng sẽ giúp những ai quan tâm đến việc lập trình theo cặp:

Nên

  • Thường xuyên chuyển đổi giữa driver và navigator (15–30 phút một lần)

  • Cố gắng học điều gì đó mới từ đối tác

  • Nếu có vẻ như bạn có vẻ có kinh nghiệm hơn, hãy coi đây là thời điểm để giúp đỡ đối tác của bạn

  • Cùng nhau lập kế hoạch để giải quyết công việc

  • Luôn cố gắng truyền đạt quá trình suy nghĩ của bạn - nó sẽ không chỉ giúp ích cho đối tác của bạn mà còn giúp ích cho chính bạn!

  • Tránh bị xao nhãng bên ngoài và tập trung vào nhiệm vụ

  • Cố gắng tử tế và chu đáo

Không nên

  • Cảm thấy như bạn giỏi hơn người khác - điều này không mang lại lợi ích cho ai và ngăn cản khả năng học hỏi đúng cách, ngay cả đối với những người có kỹ năng tốt hơn

  • Cảm thấy như bạn là một gánh nặng - tất cả mọi người đều ở trong đó và lập trình cặp là một cách tuyệt vời để bắt kịp tốc độ

  • Hãy tỏ ra xấu tính - sẽ có những người ít kinh nghiệm hơn và điều tồi tệ nhất bạn có thể làm là thiếu kiên nhẫn và phán xét họ

  • Đổ lỗi cho đối tác của bạn - đừng lo lắng nếu mọi việc diễn ra không như ý muốn; sẽ luôn có cách để sửa chữa nó

  • Hoàn thành nhiệm vụ một cách vội vã - nghỉ giải lao khi cần thiết!

  • Quản lý theo cách cực đoan - không ai thích điều đó


Tác giả Justin Huang

Dịch bởi Devera Academy