Làm thế nào phổ biến là lập trình cặp ở nơi làm việc?


16

Tôi luôn bị hấp dẫn bởi lập trình cặp, nhưng trong 12 năm phát triển, tôi chưa bao giờ làm việc ở một nơi họ đã sử dụng thực hành này, vì vậy tôi luôn hoài nghi về cách mọi người nhìn thấy nó.

Tôi tự hỏi liệu điều này có phải vì tiền / thời gian không (ông chủ tóc nhọn phát hiện hai người tại một máy tính làm việc trên cùng một mã !!!! làm sao họ dám!) Hay vì lý do khác?


8
Tôi nghĩ rằng PHB có thể đúng trong tình huống này. Hai người (và do đó hai mức lương) cho một đầu ra về cơ bản là một quyết định kinh doanh kém. Không có nhiều trường hợp lập trình theo cặp có năng suất cao hơn cá nhân, ít nhất là không "toàn thời gian" - vì vậy, nó không được thực hiện nhiều ngoài việc tư vấn cho các nhân viên mới hoặc tham gia vào một vấn đề cụ thể.
TZHX

3
Rất khó để thuyết phục ông chủ tóc nhọn rằng điều này có giá trị.
Walter

3
Đối với mã mới tôi nghĩ lập trình cặp có giá trị lớn. Lần lặp đầu tiên có thể mất cùng thời gian, nhưng IME bạn tốn ít thời gian gỡ lỗi hơn. Và khi hai người biết cùng một mã, việc gỡ lỗi trở nên dễ dàng hơn, bởi vì họ có thể nhìn độc lập với nhau. "Cho đủ nhãn cầu, mọi lỗi đều trong suốt."
Michael K

1
@Michael, không phải lúc nào cũng vậy, nhưng đôi khi tôi nghĩ việc ghép đôi trên mã kế thừa có thể hữu ích. Nó có thể phá vỡ silo và / hoặc giảm chi phí tái cấu trúc. Điều đó nói rằng, tôi hoàn toàn đồng ý với bạn.
DevSolo

5
@TZHX: "Hai người cho một đầu ra là doanh nghiệp kém". Đó là một lập luận thiếu sót nghiêm trọng và bạn biết điều đó (như trả tiền cho các lập trình viên trên mỗi dòng mã). Lập trình cặp là một chủ đề phức tạp và không nên bị loại bỏ dễ dàng như vậy.
Martin Wickman

Câu trả lời:


20

Tôi đã có hợp đồng biểu diễn trong 15 năm và gần đây (12-18 tháng qua) bắt đầu áp dụng các kỹ thuật Agile. Khi lập trình cặp được sử dụng, câu chuyện / tính năng kết quả đã được triển khai đúng thời gian với ít lỗi hơn. Tôi vẫn không nghĩ rằng nó đã được sử dụng thường xuyên đủ mặc dù.

Trước khi áp dụng Agile của chúng tôi, một nhà phát triển khác và tôi đã chia sẻ bàn phím theo thời gian trong nhiều năm không thường xuyên (có thể cứ sau 3-4 tháng một lần). Đội ngũ quản lý của chúng tôi tỏ ra lưỡng lự nhưng luôn hài lòng với việc ghép đôi không chính thức của chúng tôi vì nó thường hoàn thành một vài điều sau đây:

  • giảm silo cho đội (chiến thắng rất lớn khi đội còn 6-8 dev)
  • mã được sản xuất với ít lỗi hơn
  • mỗi nhà phát triển thường chọn các kỹ năng từ nó

Tôi sẽ nói rằng quản lý là miễn cưỡng nhưng nếu bạn có thể thực hiện các bước nhỏ và chứng minh rằng tính năng này sẽ tốt hơn sau đó (tiết kiệm chi phí) và / hoặc mỗi (hoặc một) nhà phát triển đã chọn một số kỹ năng (trả tiền trước), bạn có thể lấy hơi nếu bạn thấy đó là một thực hành phù hợp với bạn hoặc nhóm của bạn.


cái nhìn sâu sắc tuyệt vời DevSolo, cảm ơn vì đã chia sẻ. Tôi đoán bạn có thể có một đội ngũ khá ổn định (doanh thu nhân sự thấp?)
ozz

Không có gì. Doanh thu của chúng tôi khá thấp ... 4 người chúng tôi đã chia sẻ cùng một văn phòng trong hơn 15 năm qua mặc dù 4 lần tái định cư (trên 4 tòa nhà và 2 tiểu bang)!
DevSolo

Trớ trêu thay, bí danh của bạn là 'DevSolo';) nb kinh nghiệm của tôi đồng ý với bạn
ChrisAnnODell

11

Tôi đoán là có lẽ sẽ có rất nhiều kháng cự từ các nhà phát triển. Bạn có nhớ bị buộc phải làm việc với những người có lẽ không phải là những cá nhân có động lực nhất trên thế giới trong thời gian học đại học hoặc thậm chí là trung học? Những người đó vẫn tồn tại. Trừ khi, bạn có một nhóm gồm tất cả những người "nổi tiếng", kiểu thiết lập này sẽ gây ra một số thù oán trong nhóm.


Pemdas rất đúng!
ozz

2
+1, thật không may. Làm việc theo nhóm là một kỹ năng mà bạn phải phát triển và nếu bạn không muốn, bạn không thể. Có lẽ đó là những gì các nhà quản lý lập trình viên nên làm - tìm cấu trúc nhóm thúc đẩy năng suất cao nhất với những người họ có.
Michael K

4
Nghề này đòi hỏi phải giữ cái tôi trong tầm kiểm soát. Không phải lúc nào cũng dễ dàng, nhưng phần thưởng sẽ vô cùng có lợi.
DevSolo

@DevSole ... điều đó có liên quan gì đến câu trả lời của tôi?
Pemdas

@Perndas, tôi đã giả sử, có lẽ không chính xác, rằng sự kháng cự sẽ là do bản ngã. Ít nhất là khi tôi nhìn thấy nó, đó dường như là lý do. Tôi chỉ thấy 2 (tôi nhớ lại) các nhà phát triển thực sự chống lại điều này. Cái tôi của một người không thể phù hợp trong phòng, người kia có vấn đề với sự tự tin.
DevSolo

9

Chưa thực hiện chính thức, nhưng bất cứ khi nào tôi gặp khó khăn, tôi sẽ gọi cho một nhà phát triển và cả hai chúng tôi sẽ cùng nhau giải quyết. Đó là một cách tuyệt vời để nảy ý tưởng, hãy để một người suy nghĩ trong khi những người khác thực hiện, vì vậy bạn không mất đi sự suy nghĩ vì bạn đang gõ nó ra.

Chúc nó được thực hiện nhiều hơn.


4
Một công cụ khác để sử dụng, nếu bạn không quen thuộc, được gọi là "Vịt cao su". Về cơ bản, đặt một vật trên bàn của bạn giống như một con vịt cao su (bạn thực sự sử dụng đồ chơi Yoda) và giải thích vấn đề với nó. xem c2.com/cgi/wiki?RubberDucking
DevSolo

Thay vào đó, tôi sử dụng người ngồi cạnh mình ... chúng ta không thể đặt đồ lên bàn.
CaffGeek

Nghiêm túc?
Michael K

@Michael ... bạn không biết các quy tắc chúng tôi có ở đây. Tuy nhiên, một vài điều tốt vượt trội hơn tất cả những điều xấu ... hầu như không.
CaffGeek

Thật buồn khi nghe những bất hợp lý quản lý quy tắc áp dụng cho các lập trình viên (Đó là khá ngớ ngẩn, bạn không nghĩ rằng họ phải đưa thêm nỗ lực để giữ cho chúng ta hạnh phúc để cân bằng đó?)
Zekta Chan

9

Tôi không quan tâm đến nó:

1 - Tôi thích nghe nhạc của mình trong khi viết mã. Không phải ai cũng muốn nghe Slayer nổ vào tai mình.

2 - Tôi đã được đưa lên xem xét việc nhìn qua vai của mọi người rất thô lỗ và rất khó chịu khi mọi người làm điều đó.

3 - Tôi suy nghĩ rất nhanh và khi tôi đang tìm kiếm một câu trả lời, khi tôi bắt đầu tìm thấy câu trả lời, việc bị gián đoạn là điều cuối cùng tôi cần.

4 - Tôi không thể nghỉ giải lao thường xuyên cho các diễn đàn và nhóm tin tức. Một số người có thể nghĩ rằng dù sao nó cũng không phù hợp nhưng tôi thấy nó rất quan trọng đối với sự cải thiện liên tục của tôi. Thỉnh thoảng tôi sẽ bị phân tâm quá nhiều nhưng nhìn chung lợi ích cho kiến ​​thức tăng thêm của tôi vượt xa bất kỳ tác động nào đến năng suất của tôi.

Tôi cho rằng nó có thể khác với các đội khác, nhưng vài lần khi tôi thực sự bị vấp ngã bởi điều gì đó và CẦN giúp tôi gần như luôn luôn là người cuối cùng đưa ra giải pháp. Tôi thực sự giỏi trong những gì tôi làm nhưng tôi nghĩ có thể sẽ còn nhiều hơn nữa ... không chắc chắn, bằng mọi giá tôi thấy rằng tôi tốt hơn là chỉ giải quyết các vấn đề khó khăn và nói chung là tốt hơn khi làm một mình. Nghe có vẻ kiêu ngạo, nhưng điều đó không làm cho nó sai.

Tôi đã nghĩ rằng nó thực sự có thể giúp người khác nắm bắt được một số kỹ thuật của tôi, nhưng, tính đến số 3, họ khó có thể đặt câu hỏi mà không phá vỡ suy nghĩ của tôi.

Tất cả những gì đã nói, tôi đã thử nó theo thời gian. Đôi khi nó có lợi ích nhỏ nhưng tôi chắc chắn không thể xem đó là một điều nhất quán. Hệ thống sói đơn độc làm việc cho tôi và nó dường như hoạt động cho đội.


2
@ Không, chỉ dựa vào số 2, tôi không chắc bạn có nắm được khái niệm lập trình cặp hay không. Ý tưởng không phải là nhìn qua vai. Ý tưởng, như tôi đã thực hành nó, là chia sẻ PC để hoạt động song song. Đó không phải là lập trình chủ / nô lệ, đó là lập trình ngang hàng. Có lẽ sau này là một thuật ngữ tốt hơn cho nó ...
DevSolo

Điều này là hoàn toàn hợp lệ. Một số người chỉ muốn ở một mình để tự mình tìm ra.
MattC

Ngoài ra, +1 cho điều tai nghe. Tôi nổ tung kim loại và / hoặc trance suốt cả ngày và khá khó chịu khi mọi người nói chuyện với tôi về mọi thứ. Họ không thể đợi cho đến khi bài hát yêu thích của tôi kết thúc? : D
MattC

2
@ Không: Đọc danh sách của bạn, có vẻ như bạn đang thiếu những điểm tốt hơn của lập trình cặp. Tôi không nói rằng nó dành cho tất cả mọi người, và chắc chắn phải mất thời gian và công sức để chuyển từ chế độ cao bồi sang chế độ chia sẻ. Cũng giống như nó cần có thời gian để học cách làm TDD đúng cách (hoặc bất kỳ thực hành nhanh nhẹn nào khác cho vấn đề đó).
Martin Wickman

1
đã tiếp tục ...: Với nghĩa là "cấp cao", bạn có thể không thực sự là người thực hiện mã, nhưng giúp một nhà phát triển cơ sở hơn đưa ra một gợi ý. Tôi cũng không phải là fan hâm mộ lớn nhất của ý tưởng lập trình cặp, nhưng tôi thấy rằng có lẽ nó nằm ngoài vùng thoải mái của tôi. Rất nhiều nhà phát triển thích làm việc trên trạm của họ một mình, nhưng tôi phải thừa nhận rằng tôi có thể sẽ tìm hiểu thêm và tìm giải pháp tốt hơn khi tôi làm việc cùng với một nhà phát triển khác. Vì vậy, nó thực sự là một câu hỏi về sự thoải mái cá nhân so với làm việc hiệu quả hơn.
Anne Schuessler

5

Lập trình cặp là một cách tuyệt vời để bắt đầu hoặc làm một cái gì đó không tầm thường và khó khăn. Nhiều công việc thường xuyên và đơn giản được thực hiện tốt hơn một mình.

Tôi đã tham gia vào một số phiên lập trình cặp, cả trong các công ty khởi nghiệp / nhà để xe và các tập đoàn lớn. Nó luôn luôn xảy ra khi một thứ gì đó mới và khó bị bắt gặp, nghĩa là, hai lần một năm là tốt nhất, trong một vài tuần. Làm thế nào thường xảy ra tại công ty của bạn?


ít thường xuyên hơn tôi muốn điều đó chắc chắn.
ozz

5

Chúng tôi chưa bao giờ gọi nó như vậy, nhưng vào thời trước, đó là cách chúng tôi luôn tấn công những vấn đề mới. Chúng tôi sẽ kết hợp để bắt đầu một giải pháp, nhưng sau đó thường thoát ra để hoàn thành riêng lẻ / làm sạch các chi tiết. Không quá nhiều nữa. Có vẻ như trở nên hiếm hơn và hiếm hơn.


3

Không phổ biến lắm. Trong tất cả các cửa hàng tôi đã ở trong hơn 10 năm qua, tôi đã nhìn thấy nó một lần. Tại cửa hàng chậm nhất và kém hiệu quả nhất. Nó dường như tạo ra một môi trường ồn ào và căng thẳng. Một người kết thúc việc lái xe và nói chuyện liên tục ngăn cản người kia suy nghĩ.

Kết hợp nhóm để đánh giá mã cho dù theo nhóm hoặc theo cặp và cung cấp cho nhà phát triển không gian riêng của họ. Về lâu dài sẽ tốt hơn là theo đuổi nhà mốt Agile mới nhất.

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.