Lập trình cặp khi người lái xe và người quan sát có trình độ và kinh nghiệm kỹ năng khác nhau


30

Tôi biết lập trình cặp là một kỹ thuật phát triển phần mềm nhanh, trong đó hai lập trình viên làm việc cùng nhau tại một máy trạm. Một, trình điều khiển, viết mã trong khi người kia, người quan sát, xem xét từng dòng mã khi nó được nhập vào.

Nhưng tôi chỉ tự hỏi chiến lược vẫn hoạt động trong trường hợp. Ví dụ

  • nếu họ có trình độ kỹ năng lập trình rất khác nhau.
  • nếu một người không bao giờ có kinh nghiệm trong lĩnh vực vấn đề trong khi người khác có.
  • Vẫn ổn nếu họ có trình độ kỹ năng lập trình thấp?

Bạn có thể đề xuất chiến lược lập trình cặp trong trường hợp trên?


13
Hãy chắc chắn rằng hai người đồng ý về người có trình độ kỹ năng cao hơn và có nhiệm vụ huấn luyện người kia. Nếu các cấp độ vai trò / kỹ năng này không rõ ràng, lập trình cặp có thể sẽ không hoạt động và dẫn đến xung đột.
Giorgio

Nhưng, nếu được thực hiện như bạn đề xuất, nó có thể là một cơ hội học tập to lớn.
Mawg

Câu trả lời:


27

Giả sử rằng người có nhiều kinh nghiệm hơn trong cặp có khí chất để cố vấn cho người khác, việc ghép đôi người có ít kinh nghiệm về ngôn ngữ hoặc lĩnh vực vấn đề với người có kinh nghiệm sẽ tạo điều kiện chuyển giao kiến ​​thức. Người ít kinh nghiệm sẽ có một người cố vấn để hướng dẫn họ về ngôn ngữ, tên miền, ứng dụng và các thực tiễn hoặc quy ước tốt nhất của nhóm.

Có một bản tóm tắt thú vị trên wiki C2 về chuyển giao kiến ​​thức bằng lập trình cặp . Người cao cấp hơn, người được đưa vào làm cố vấn nhóm, đã học hỏi được rất nhiều từ các lập trình viên cơ sở và kiến ​​thức của anh ta thậm chí còn tăng lên do kết hợp với nhiều nhà phát triển phần mềm ít kinh nghiệm hơn. Có một số câu chuyện khác về các lập trình viên chuyên gia cũng được ghép đôi với các chuyên gia tên miền.


Đã đồng ý. Tôi có một đàn em trong nhóm và lập trình cặp tăng đáng kể chất lượng mã của anh ấy. Tuy nhiên, việc xem lại mã của anh ấy cũng rất hữu ích.
Sulthan

2
Bạn chỉ cần cẩn thận rằng người cao cấp không phải là tài xế 100% thời gian.
HLGEM

13
@HLGEM Tôi thậm chí còn lập luận rằng người ít kinh nghiệm nên là người lái xe hầu hết thời gian, trong khi người có kinh nghiệm hơn đang xem xét mã về lỗi và phong cách hoặc viết trường hợp kiểm tra chống lại nó.
Thomas Owens

1
Tôi đồng ý với @ThomasOwens; có ổ đĩa đối tác ít kinh nghiệm sẽ mang lại 'trải nghiệm' của anh ấy / cô ấy nhanh hơn bất kỳ phương pháp nào khác, đồng thời cho phép họ chia sẻ ý tưởng và hiểu biết của riêng mình với đối tác cao cấp hơn. Sẽ không mất nhiều thời gian trước khi mức độ thành thạo của họ gần hơn nhiều.
Eric King

1
Tôi tự hỏi nếu điều này làm cho các nhà phát triển cao cấp có nghĩa vụ hơn để thực hành những gì họ giảng?
JeffO

16

Đây chính xác là chương trình cặp trường hợp sử dụng được thực hiện cho: chia sẻ kinh nghiệm giữa râu già và châu chấu trẻ.

Đây là một chia sẻ hai chiều: côn trùng nhanh nhẹn có nhiều điều để dạy cho bộ não thấp khớp.


1
Mặc dù bạn có thể coi tôi là một, nhưng tôi đã nói về 'bộ não thấp khớp' ...
Marjan Venema

1
Tôi không nghĩ rằng thuật ngữ người dùng câu chuyện có thể được áp dụng ở đây. Câu chuyện của người dùng mô tả các yêu cầu kinh doanh cho một phần mềm.
Konrad Rudolph

Vâng, tôi nghĩ rằng anh ấy có nghĩa là "trường hợp sử dụng".
Jörg W Mittag

Downvote: không có từ nào về một chiến lược làm thế nào đối phó với các trường hợp được đề cập.
thử bắt cuối cùng vào

10

Khi tôi được thăng chức vào đội hiện tại, tôi là người mới trong J2EE nhưng tôi là chuyên gia trong lĩnh vực này. Tiền bối của tôi (trưởng nhóm mới) đã thành thạo J2EE nhưng không giỏi về nền tảng này.

Tôi nghĩ rằng tôi đã học được nhiều hơn về Java2EE trong 4 tháng này với lập trình cặp hơn là đọc một cuốn sách và trưởng nhóm cũng đã học về nền tảng này.

Khoảng cách kinh nghiệm giữa hai người là chìa khóa để ghép imho lập trình.


2
Đã đồng ý. Tôi có thể tưởng tượng lập trình cặp với chính mình, và tôi nghĩ nó sẽ khá vô nghĩa. Khoảng cách là những gì tạo ra các quan điểm khác nhau có liên quan để làm cho 4 mắt bao quát nhiều phạm vi hơn trong sơ đồ khả năng của vin. Hai người có kỹ năng và kinh nghiệm giống hệt nhau sẽ thấy những điều tương tự như nhau và không nhận được lợi ích.
Jimmy Hoffa

5

Tôi sẽ mô tả kinh nghiệm của mình và cố gắng đưa ra một số "chiến lược" từ đó.

Tôi đã từng lập trình cặp với một người không lập trình hoàn chỉnh. Ông là chuyên gia về vấn đề của sản phẩm phần mềm chúng tôi đã phát triển. Ngược lại, tôi không có kinh nghiệm trong lĩnh vực vấn đề. Và anh ấy cũng là người giám sát của tôi vào lúc này (tôi biết điều này nghe có vẻ lạ :)

Lợi ích chính của phương pháp này là tôi phải giải thích việc thực hiện nhiều điều từ lĩnh vực kiến ​​thức của anh ấy, do đó đảm bảo tính chính xác của việc thực hiện và sự hiểu biết của anh ấy về quy trình, điều đó có nghĩa là anh ấy hiểu tại sao phải mất thời gian này.

Một lợi ích khác là dễ dàng tập trung vào nhiệm vụ, không có phiền nhiễu (ha-ha, hãy tưởng tượng mở Twitter trước mũi sếp của bạn).

Tuy nhiên, điều đó khá đáng sợ, tuy nhiên, ngay cả khi nghỉ giải lao cũng trở thành một "sự xao lãng khỏi công việc" (không phải theo quan điểm của anh ta; thật bất tiện khi yêu cầu nghỉ giải lao và vân vân).

Vì vậy, đây thực sự không phải là một chương trình ghép đôi vì anh ta gần như không thể xem lại mã khi nó được nhập vào. Tuy nhiên, nó dường như là một chiến lược lành mạnh (ít nhất là trong một thời gian). Cuối cùng nó hoạt động hoàn toàn vì sự đơn giản tương đối của cả phương pháp phát triển (ý tôi là, không có kỹ thuật thiết kế phần mềm phức tạp nào như Mô hình OOP được tham gia) và chủ đề. Điều này sẽ không hoạt động trong trường hợp chúng tôi phải phát triển một trình biên dịch tôi nghĩ. Tôi tin rằng nó vẫn có thể hoạt động trong trường hợp người quan sát không lập trình viên đang tham gia vào quá trình phát triển các phần nhỏ được xác định rõ ràng. Nói, sẽ ổn khi anh ta xem lập trình hàm "tính toán tham số X từ Y và Z theo thuật toán đã cho", nhưng có thể không ổn khi anh ta xem quy trình thiết kế hệ thống tổng thể (nghĩa là phát triển kiến ​​trúc phần mềm, tức là phân cấp các lớp học,

Tôi nghĩ nó sẽ hoạt động tốt hơn nữa trong trường hợp anh ta có một số kỹ năng lập trình cơ bản, vì tôi sẽ không phải giải thích "mảng là gì".

Hy vọng nó giúp :)


Đó là lời giải thích có kinh nghiệm tốt!
Sakares

2

Theo kinh nghiệm của tôi nếu cả hai lập trình viên có trình độ kỹ năng thấp thì đó có thể là một vấn đề. Trong trường hợp đó thường có xu hướng thử lập trình sao chép-dán. Tôi nghĩ có thể không nên ghép hai lập trình viên mới làm quen với nhau cho đến khi họ đạt đến cấp độ cụ thể do nhóm quyết định.

Nếu không, lập trình cặp có thể là một ý tưởng tuyệt vời giả sử tất nhiên hai anh chàng sẵn sàng chia sẻ những gì họ biết. Đây không chỉ là một cách tuyệt vời để thông báo cho mọi người về mã nguồn mà còn đóng vai trò là nơi tốt cho các ý tưởng và thảo luận mới.


Nhà phát triển trình độ kỹ năng thấp có ít khả năng sao chép và dán khi tự lập trình? Đây thường là những gì xảy ra khi không ai xem.
JeffO

1

Miễn là các thành viên trong nhóm tôn trọng lẫn nhau, lập trình cặp có thể có lợi bất kể cấp độ kinh nghiệm của lập trình viên. Ngay cả khi một lập trình viên cơ sở chỉ phát hiện ra một vài lỗi cú pháp (mà tất cả chúng ta đều mắc phải!) Trước khi lập trình viên có kinh nghiệm hơn, đó vẫn là thời gian lưu trong việc biên dịch mã.

Tôi cũng nghĩ rằng nó có thể mở ra thái độ của một lập trình viên đối với khả năng của các thành viên khác trong nhóm của họ, đặc biệt nếu họ có một suy nghĩ cởi mở và mong rằng mọi người có thể dạy cho bạn điều gì đó.

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.