Nhược điểm có thể có của lập trình cặp là gì? [đóng cửa]


22

Lập trình cặp là khá nổi tiếng bây giờ một ngày.

Nó có một số lợi thế như:

  1. Các chương trình có ít lỗi hơn.
  2. Chi phí bảo trì sản xuất ít hơn nhiều.
  3. Thực tiễn thành lập được thách thức dẫn đến sự xuất hiện của những ý tưởng mới.
  4. Các lập trình viên học hỏi lẫn nhau.
  5. Lập trình viên phát triển các kỹ năng mềm.

Nhưng những nhược điểm của lập trình cặp là gì?


1
Là song song, trong tiêu đề câu hỏi là một lỗi đánh máy?
5gon12eder

14
Ý bạn là khác với việc hai người phải sản xuất cùng một sản phẩm (có thể ít hơn)?
Robert Harvey

4
@ ThorbjørnRavnAndersen Có lẽ ít hơn.
Robert Harvey

4
@ ThorbjørnRavnAndersen Có gì đó không ổn với toán học của bạn. Về cơ bản, những gì bạn đang nói là bạn liên tục trong đánh giá ngang hàng / mã. Thật khó để tưởng tượng làm thế nào là kinh tế hơn thời gian.
Robert Harvey

5
Điều đó có thể được thực hiện khá dễ dàng mà không bị phân tâm trong việc sắp xếp Lập trình cặp đầy đủ. Chỉ cần làm việc với các nhà phát triển phần mềm đồng nghiệp của bạn trong khả năng này trên cơ sở khi cần thiết.
Robert Harvey

Câu trả lời:


28

Mặc dù lập trình cặp đã đạt được danh tiếng đáng kể, nó cũng có một số cạm bẫy.

Một số trong số họ là như sau:

  1. Trong lập trình cặp, bạn không thể ngồi lại và tự đánh giá mã của mình.
  2. Một trong những cặp có thể ngừng tham gia tích cực.
  3. Người lái xe cần "lập trình lớn tiếng". Lập trình âm thầm làm giảm lợi ích.
  4. Chi phí nhiều giờ hơn để sản xuất các tính năng tương tự. Cân bằng phải được duy trì giữa chất lượng mã và tăng chi phí mã hóa.
  5. Một hiện tượng "xem chủ" có thể xuất hiện khi một lập trình viên có kinh nghiệm và người mới bắt cặp. Thành viên mới làm quen có thể trở thành người quan sát với thành viên có kinh nghiệm hoàn thành hầu hết mã hóa.
  6. Khi hai người dùng có kinh nghiệm kết hợp với nhau, một hiện tượng "cái tôi của nhà phát triển" có thể xuất hiện, với mỗi thành viên cố gắng thúc đẩy ý tưởng của riêng mình.

4
2 và 5 có thể được đối phó với Ghép nối Ping-Pong (chuyển đổi vai trò giữa người lái và người điều hướng rất nhanh trong bước khóa với chu trình TDD: Alice viết bài kiểm tra thất bại, Bob viết mã để thực hiện bài kiểm tra, bộ tái cấu trúc Alice, Bob viết bài kiểm tra thất bại, Alice viết mã để thực hiện bài kiểm tra, Bob tái cấu trúc, Alice viết bài kiểm tra thất bại). Bằng cách đó, trình điều khiển và trình điều hướng chuyển đổi vai trò cứ sau vài phút (giống như hàng chục giây) và mọi thành viên đều nhận được các nhiệm vụ quan trọng và lớn như nhau.
Jörg W Mittag

5
4 âm thanh rõ ràng, nhưng tôi không chắc chắn. Nắm bắt lỗi và nhận phản hồi sớm, ví dụ, có thể (hoặc có thể không) thực sự bù cho số giờ nhà phát triển tăng gấp đôi.
Jörg W Mittag

4
@ JörgWMittag (re: ghép cặp Ping-Pong) nghe có vẻ như là một công thức cho một ngày làm việc rất căng thẳng: / Tôi hy vọng tôi không bao giờ phải lập trình ở một nơi mà họ thực thi phương pháp lập trình cặp nghiêm ngặt này.
Andres F.

4
Lập trình Ping-pong đòi hỏi hai bên liên quan phải có thể hoán đổi cho nhau. Tôi có một đồng nghiệp trong đó sự kết hợp lập trình cặp hợp lý duy nhất là anh ấy nghĩ và tôi gõ (và suy ngẫm). Nó giúp anh ấy tập trung và tôi hiểu chuyện gì đang xảy ra.
Thorbjørn Ravn Andersen

3
Bạn cũng có thể đề cập rằng khá nhiều thời gian bị lãng phí khi thảo luận về các chi tiết tầm thường trong khi trong các bài đánh giá mã, bạn chỉ có thể tập trung vào các khía cạnh quan trọng.
Giorgio

24

Tôi đã thử lập trình cặp nhiều lần, kể cả trong một tổ chức (một thời gian ngắn) coi việc triển khai nó như là một quy trình bắt buộc đối với tất cả các kỹ sư (bạn có thể đoán ý tưởng đó được thực hiện tốt như thế nào). Cá nhân, tôi ghét nó.

Những lý do tôi liệt kê dưới đây chỉ là những trải nghiệm chủ quan của tôi và tôi không thể 'đo lường' tác động của chúng theo các thuật ngữ cụ thể. Nhưng ở đây tất cả đều giống nhau:

1 - Có một 'hoa tiêu' và một 'tài xế' chỉ giúp nếu người trước là giọng nói và người sau sẽ lắng nghe.

Tất cả chúng ta đều đã gặp những nhà phát triển bướng bỉnh, sốt sắng về một số mối quan tâm về mặt lý thuyết hoặc không thể bệnh lý - về mặt tâm lý - để 'vứt bỏ' công việc cũ khi ai đó gợi ý vấn đề với nó. Và tất cả chúng ta đều biết các cá nhân quá rụt rè hoặc khác biệt để nêu lên mối quan tâm hoặc đề xuất các trường hợp góc.

Khi các loại nhà phát triển này được ghép nối, bộ điều hướng nhanh chóng có vai trò thụ động và những gì bạn kết thúc là lập trình duy nhất với đánh giá mã tự động. Đây là một sự lãng phí tài nguyên lớn.

2 - Ghép đôi ngăn cản sự sáng tạo.

Trái ngược với những gì trước đây cảm nhận về giá trị của 'động não nhóm', sự đồng thuận ngày nay là công việc tri thức sáng tạo đòi hỏi sự độc lậptự chủ . Khi bạn làm việc một mình, bạn có thể nhanh chóng hack một số ý tưởng điên rồ để xem nó có thực sự khả thi hay không. Bạn có thể lắp ráp một cách nguyên mẫu một số nguyên mẫu lạ, và nếu bạn thất bại, điều đó không thành vấn đề, bởi vì không ai biết .

So sánh điều đó với việc ghép nối: khi tôi muốn thử một số khái niệm mới, tôi phải thuyết phục đối tác của mình, nói chuyện với họ thông qua việc thực hiện, từng bước một và hy vọng rằng họ sẽ không phán xét tôi nếu thất bại. Loại môi trường đó là độc hại để tạo ra những ý tưởng mới.

3 - Thiết kế mẫu số chung thấp nhất.

Khi một cặp không thể tạo ra các ý tưởng mới, như trên hoặc khi các cá nhân không thể đồng ý về một số nguyên tắc cơ bản về cách thiết kế một tính năng, cái xuất hiện là một thiết kế lộn xộn cố gắng thỏa hiệp và làm hài lòng không ai.

Nếu bạn kết hợp một nhà phát triển xây dựng các bản tóm tắt lập trình chức năng tuyệt vời, hùng hồn, tuyệt vời với một hiệu suất nhanh và bẩn, mã họ sẽ cùng nhau tạo ra sẽ không thanh lịch khủng khiếp hay đặc biệt nhanh.

4 - Thiếu tự chủ và minh bạch bạo lực.

Minh bạch bạo lực là cụm từ tôi đã rút ra từ một cuộc bút chiến nổi tiếng vừa phải (và khá gây tranh cãi) chống lại phương pháp Scrum. Nó mô tả cách mà một số tổ chức phát triển trẻ sơ sinh và đối xử với họ với sự nghi ngờ thường dành cho những người lao động không chuyên nghiệp.

Bất cứ điều gì bạn nghĩ về "tác hại" của việc làm cho các nhà phát triển hoạt động hoàn toàn minh bạch (và bạn có thể không đồng ý rằng đó thực sự là một tác hại), nhiều cá nhân đánh giá cao sự tự chủ của họ và khả năng làm việc một mình, đáng tin cậy để làm điều đúng đắn. Đó là một nhu cầu tâm lý quan trọng và buộc các nhà phát triển phải ghép nối (như tôi đã thấy xảy ra ở ít nhất một cửa hàng) sẽ khiến nhân viên mất tinh thần, buồn bã và xa lánh.

5 - Một số nhà phát triển không chơi độc đáo theo cặp.

Một số người sẽ không hoặc không thể tự hành xử một cách thích hợp trong môi trường được ghép nối. Họ có thể có vệ sinh kém, thói quen làm việc kém, tính cách nham hiểm, cách 'ồn ào' và 'dữ dội' hoặc một loạt các thuộc tính khác khiến họ trở thành những người lao động tốt, nhưng lập trình viên kém.

Bạn có thể giải quyết điều này? Không hẳn vậy. Thay đổi hành vi cá nhân là khó khăn. Một cửa hàng lập trình cặp cần phải rất cẩn thận trong việc tuyển dụng và đầu tư nhiều thời gian để xem ai đó làm việc như thế nào và liệu họ có thể làm việc tốt với các đồng nghiệp của họ không. Tuy nhiên, phân biệt đối xử khó khăn hơn về tính cách có nghĩa là việc tuyển dụng sẽ mất nhiều thời gian hơn trừ khi bạn nới lỏng các tiêu chuẩn về kỹ năng và chuyên môn.


3
Mặc dù tôi thích cụm từ "minh bạch bạo lực", nhưng theo kinh nghiệm của tôi, phương pháp ưa thích (scrum / agile hoặc một cái gì đó truyền thống hơn) không liên quan đến việc các nhà phát triển có được đối xử như các chuyên gia hay không. Các tổ chức rối loạn chức năng sẽ đối xử với các chuyên gia như trẻ em cho dù họ (giả vờ) theo Scrum hoặc CMMI.
David

1
"So sánh điều đó với việc ghép đôi: khi tôi muốn thử một số khái niệm mới, tôi phải thuyết phục đối tác của mình, nói chuyện với họ thông qua việc thực hiện, từng bước một và hy vọng rằng họ sẽ không phán xét tôi nếu thất bại. môi trường là độc hại để tạo ra những ý tưởng mới. ": Không chỉ về sự phán xét, nó còn là về tốc độ. Bạn không muốn bị phân tâm khi bạn có một ý tưởng, bạn muốn viết ra càng nhiều càng tốt miễn là bạn đang trong dòng chảy. Lập trình cặp tích cực ngăn cản bạn làm điều đó.
Giorgio

1
Sau khi bạn viết ra tất cả các ý tưởng của mình, bạn có thể thu dọn chúng, có thể vào ngày hôm sau và sau đó, hãy để một đồng nghiệp xem xét kỹ lưỡng, ví dụ như trên một công cụ như bảng đánh giá, để họ có thời gian để xem xét của bạn hoàn thành ý tưởng và suy nghĩ về nó mà không có áp lực thời gian. Lập trình cặp cũng ngăn chặn điều này bởi vì nó cố gắng kết hợp mã hóa và đánh giá mã vào một hoạt động.
Giorgio

2
@Jimmy: Nếu bạn viết năm câu trả lời thay vì một câu trả lời với năm điểm, bạn sẽ nhận được năm câu trả lời từ tôi.
Giorgio

Hoàn toàn đồng ý rằng thử nghiệm đòi hỏi công việc im lặng và nhanh chóng - trái ngược hoàn toàn với những gì yêu cầu ghép nối. Có lẽ ghép nối hoạt động tốt cho các nhà phát triển thực hiện bảo trì hoặc thêm các tính năng riêng biệt vào hệ thống doanh nghiệp lớn, hiện có. Nhưng tôi chắc chắn rằng nó hoàn toàn không có ích cho công việc đòi hỏi sự khám phá, công nghệ mới, sự khéo léo hoặc cách sáng tạo để làm việc với những ràng buộc khó khăn.
Jimmy Breck-McKye

12

Phụ thuộc vào tình huống hoặc quan điểm của bạn.

Lập trình cặp là tốt cho tổ chức. Nhưng nó có tốt cho cá nhân không?

Sau tất cả, đó là một phương pháp tiết kiệm chi phí (phản hồi sớm) và năng suất; Đó không phải là về bạn mà là về dự án, sản phẩm, công ty ($$).

Mặc dù bạn có thể có lợi ích cá nhân, nhưng chúng không phải là lý do hay kết thúc của bất kỳ phương pháp phát triển nào. (Toàn thời gian) lập trình cặp, chẳng hạn, cũng ngăn bạn chần chừ, lướt web, v.v., bạn phải biện minh cho việc tạm dừng của mình với đối tác.

Đối tác (xoay) của bạn sẽ là camera giám sát tốt nhất: tăng cường độ làm việc.

Hoặc, bằng cách phân phối kiến ​​thức, cá nhân trở nên ít rủi ro hơn cho công ty (ví dụ: không thể rời khỏi công ty với kiến ​​thức thiết yếu) và có ít "chip thương lượng" hơn.

Tôi chắc chắn rằng bạn tìm thấy nhiều điểm hơn bằng cách đọc các bài viết khẳng định một cách nghiêm túc hơn từ tình huống / quan điểm thực tế của bạn trong công ty thay vì từ quan điểm của người quản lý của bạn.

Hầu như tất cả các phương pháp được viết từ quan điểm của người quản lý.


Trừ khi bạn sở hữu công ty, bạn sẽ được cấp tiền để tạo mã. Mã tốt hơn bạn có thể tạo ra tốt hơn cho chủ lao động của bạn - suy nghĩ theo cách để có được những món hời chống lại chủ nhân của bạn theo quan điểm của tôi là không hiểu điều gì làm cho bạn có giá trị ngay từ đầu. Tôi tin rằng PP rất chuyên sâu đến nỗi bạn không thể làm điều này cả ngày, nhưng tự động cần nghỉ ngơi.
Thorbjørn Ravn Andersen

7
Vì một số người buộc phải kiếm sống từ "có giá trị đối với người sử dụng lao động", họ cũng phải tính toán với lợi ích cá nhân, và không chỉ với lợi ích của chủ nhân trong tâm trí như tay sai.
Một khách

1
@ ThorbjørnRavnAndersen chúng ta không sống trong một thế giới lý tưởng, nơi mọi người đều đóng thuế và mọi người đều được bồi thường dựa trên thành tích.
Den

1
@ ThorbjørnRavnAndersen Mã càng tốt thì càng tốt cho chủ nhân của tôi? Tôi ước tôi sống thế giới như thế, trong thế giới của tôi, điều quan trọng là sản xuất chức năng càng nhanh càng tốt, trong đó chất lượng mã chỉ là một giá trị mềm trung gian không cần nhiều thời gian hơn mức cần thiết. Lỗi là ok, chúng thường không nghiêm trọng và dễ dàng sửa chữa.
Alex

@Alex "thường không nghiêm trọng" - Tôi
khao khát

5
  1. Đột nhiên bây giờ bạn phải nói với ai đó khi bạn muốn đi vệ sinh hoặc lấy cà phê. Ít nhất là không cần phải xin phép.

  2. Bạn phải đối phó với các tiêu chuẩn vệ sinh của người khác.


4

Ngoài các câu trả lời khác:

  1. Nhiều công ty tôi đã làm việc để phát hành chương trình cho máy tính xách tay của họ (dựa trên trang web của khách hàng - dễ dàng giữ an toàn cho thiết bị nếu được mang về nhà sau khi làm việc, có thể thực hiện công việc kỳ lạ tại nhà trên VPN trong một vài phút, v.v.) Nhiều năm Trước đây tôi đã gặp vấn đề khi nhìn trên màn hình máy tính xách tay của "người lái xe" khác từ góc độ lướt vai - tuổi sẽ không cải thiện điều này (và một số màn hình trở nên khó đọc ngoài góc nhìn lý tưởng trong mọi trường hợp).

    Vì vậy, các lập trình viên cặp sẽ cần (các) màn hình đủ lớn, điều này sẽ làm tăng chi phí phần cứng và hạn chế khả năng thích ứng với vị trí. Có thể không phải là một vấn đề đối với một số người, trong những trường hợp khác, nó sẽ là một vấn đề.

  2. Tôi cũng đã phát hiện ra rằng sự khác biệt trong sở thích vệ sinh cá nhân (bao gồm hút thuốc, ăn uống), cũng như xung đột về tính cách, chắc chắn sẽ cản trở năng suất. Thật dễ dàng để nói với hai lập trình viên "mút nó và hòa thuận", thường thì điều này sẽ dẫn đến việc mọi người thay vì im lặng và phá hoại nhau thông qua các hành động hung hăng thụ động để trút giận lên nhau.
  3. Tiếng ồn. Tôi, đối với một, như một môi trường làm việc yên tĩnh. Tôi không thể tưởng tượng cuộc trò chuyện liên tục từ một số nhóm lập trình viên (vì bạn cần nói chuyện để giao tiếp). Ngay cả nhạc vocal trên tai nghe của tôi cũng có xu hướng cản trở sự tập trung của tôi (nhạc cụ nhạt nhẽo để nghe văn phòng ...). Tôi đoán điều này có thể được giảm thiểu bằng cách chuyển từ văn phòng có kế hoạch mở phổ biến sang các phòng văn phòng dành riêng cho 2 người, nhưng điều đó sẽ khiến chi phí tăng trở lại.

Giai thoại cho giải trí của bạn:

  • Một chủ nhân trước đây từng có một nhà thầu từ một quốc gia khác (tất cả phải ẩn danh để bảo vệ người có tội). Chủ lao động cung cấp chỗ ở nhưng không vận chuyển. Kể từ khi nhà thầu nói dọc theo tuyến đường của tôi để làm việc, tôi đã tình nguyện đón anh ta và thả anh ta ra một lần nữa. Hãy nói rằng vệ sinh cá nhân của anh ấy không theo cùng tiêu chuẩn như những gì tôi đã quen và anh ấy cũng hút thuốc rất nhiều ("mạnh nhất!") Trong khi tôi thì không. Trong chuyến đi 15 phút của chúng tôi đến văn phòng, tôi giữ cho cửa sổ của mình lăn xuống - ngay cả trong mùa đông - điều đó không ngăn xe tôi bốc mùi như một phòng hút thuốc cũ sau 3 tháng của đồng nghiệp (không, anh ta không hút thuốc trong xe , nhưng anh ấy đã làm trong khi chờ đợi tôi).
  • Chúng tôi cũng không làm lập trình cặp, nhưng ngồi cạnh nhau tại bàn hội nghị (trong một thời gian). Sau khoảng một tháng, có một chiếc nhẫn màu nâu xinh xắn trên gỗ giả của bàn xung quanh vị trí bàn tay chuột của đồng nghiệp. Vào thời điểm đó, tôi có một bàn mở ngay bên cạnh khu vực kế hoạch mở của trung tâm cuộc gọi, nơi tôi thích (với một số trợ giúp từ tai nghe của tôi).
  • Sau đó là đồ uống văn phòng có mặt khắp nơi: cà phê. Mặc dù tôi uống nó, tôi có thể hòa đồng mà không uống và không uống thường xuyên như các đồng nghiệp khác có thể. Hơi thở ở cự ly gần có thể khá khó chịu - tương tự như mùi cốc bị lãng quên. Hãy gọi nước hoa là "muggy" ...

3

Tôi nghĩ lập trình cặp thất bại vì lý do xã hội và thực tế. Về cơ bản, bạn đang yêu cầu một người làm việc dưới sự giám sát liên tục và người kia không làm gì khác ngoài việc chọc vào lỗ hổng.

Điều chắc chắn sẽ xảy ra sau một thời gian là cặp đôi bị chia tách để 'kiểm tra email' hoặc 'bạn thực hiện kiểm tra không đúng về vấn đề trực tiếp đó', v.v.

Thay vì cải thiện đầu ra mã, khối lượng giảm. Cả hai vì lý do thực tế 'Tôi cần đi ăn trưa / gặp gỡ không đồng bộ với bạn' và xã hội 'Tôi chỉ cần đợi bob hoàn thành những gì anh ấy làm trước khi tôi hỏi về việc ghép đôi lần nữa, tôi không muốn bị coi là cằn nhằn anh ấy'

Đối với những lợi thế được khoe khoang, có nhiều thực tiễn phổ biến đạt được những điều này theo những cách đơn giản và hiệu quả hơn


2

Nói với hai nhà phát triển cấp cao thực hiện một "chương trình đau đớn" nếu họ tự tin một người có thể thực hiện công việc là bất lợi lớn nhất của anh ta.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.