운전자와 관찰자가 기술 수준과 경험이 다른 경우 페어 프로그래밍


30

페어 프로그래밍은 두 명의 프로그래머가 한 워크 스테이션에서 함께 작동하는 민첩한 소프트웨어 개발 기술이라는 것을 알고 있습니다. 드라이버는 코드를 작성하는 반면 다른 하나는 관찰자가 입력 한대로 각 코드 행을 검토합니다.

그러나 나는이 경우에도 전략이 여전히 효과가 있는지 궁금합니다. 예를 들어

  • 프로그래밍 기술 수준이 매우 다른 경우
  • 한 사람이 문제 영역에서 경험하지 못하고 다른 사람이 경험하는 경우
  • 프로그래밍 기술 수준이 낮은 경우에도 여전히 괜찮습니까?

위의 경우 쌍 프로그래밍 전략을 제안 할 수 있습니까?


13
기술 수준이 더 높은 사람과 다른 사람을 코치해야하는 사람에 대해 두 사람이 동의하는지 확인하십시오. 이러한 역할 / 기술 수준이 명확하지 않으면 페어 프로그래밍이 작동하지 않아 충돌이 발생할 수 있습니다.
Giorgio

그러나 제안한대로하면 엄청난 학습 기회가 될 수 있습니다.
Mawg

답변:


27

한 쌍의 경험이 많은 사람이 다른 사람을 멘토링하려는 경향이 있다고 가정하면, 언어에 대한 경험이 거의없는 사람이나 문제 영역에 경험이있는 사람을 짝 짓는 것은 지식 이전을 용이하게합니다. 경험이 적은 사람에게는 언어, 도메인, 응용 프로그램 및 팀의 모범 사례 또는 규칙에 대해 멘토가 있어야합니다.

C2 위키에는 페어 프로그래밍을 사용한 지식 전달에 관한 흥미로운 요약이 있습니다 . 팀 멘토로 일하게 된 상급자는 주니어 프로그래머로부터 많은 것을 배웠고 경험이 많지 않은 주니어 소프트웨어 개발자와 짝을 지어서 그의 지식이 더욱 높아졌습니다. 전문가 프로그래머가 도메인 전문가와 짝을 이루는 것에 대한 다른 이야기도 있습니다.


동의했다. 팀에 주니어가 있고 페어 프로그래밍으로 코드의 품질이 크게 향상되었습니다. 그러나 그의 코드를 검토하는 것도 매우 도움이되었습니다.
Sulthan

2
당신은 고위 사람이 시간의 100 % 운전사가 아니라는 것을주의해야합니다.
HLGEM

13
@HLGEM 나는 경험이 적은 사람이 대부분 드라이버가되어야한다고 주장하면서도, 경험이 많은 사람은 결함과 스타일에 대한 코드를 검토하거나 이에 대한 테스트 케이스를 작성한다.
Thomas Owens

1
@ThomasOwens에 동의합니다. 경험이 부족한 파트너 드라이브를 보유하면 다른 방법보다 '경험'이 더 빨라지고 자신의 아이디어와 통찰력을 상급 파트너와 공유 할 수 있습니다. 실력 수준이 훨씬 가까워지기까지는 오래 걸리지 않습니다.
Eric King

1
이것이 선임 개발자가 자신이 전파하는 것을 실천해야 할 의무가 있는지 궁금합니다.
JeffO

16

이것은 오래된 수염과 어린 메뚜기 사이의 경험을 공유하는 유스 케이스 페어 프로그래밍입니다.

민첩한 곤충은 류마티스 뇌에 많은 것을 가르쳐야합니다.


1
당신은 아마 하나를 고려할 것이지만, 나는 '류마티스 성 뇌'를 좋아할 것입니다.
Marjan Venema

1
"사용자 스토리"라는 용어가 여기에 적용될 수 있다고 생각하지 않습니다. 사용자 사례는 소프트웨어의 비즈니스 요구 사항을 설명합니다.
Konrad Rudolph

네, 그는 "사용 사례"를 의미한다고 생각합니다.
Jörg W Mittag

하향식 : 언급 된 사례를 처리하는 방법 에 대한 전략 은 없습니다 .
try-catch-finally

10

현재 팀으로 승진했을 때 J2EE의 초보자 였지만 도메인의 전문가였습니다. 내 선임 (새로운 팀장)은 J2EE에 능숙했지만 플랫폼에는 능숙하지 않았습니다.

저는 4 개월 동안 책을 읽는 것보다 페어 프로그래밍으로 Java2EE에 대해 더 많이 배웠으며 팀 리더도 플랫폼에 대해 배웠습니다.

둘 사이의 경험 격차는 프로그래밍 imho를 짝짓기위한 열쇠입니다.


2
동의했다. 나는 나 자신과 쌍 프로그래밍을 상상할 수 있었고, 그것이 무의미하다고 생각합니다. 그 차이는 가능성의 빈 다이어그램에서 4 개의 눈을 더 넓은 범위로 덮는 것과 관련된 다양한 관점을 만드는 것입니다. 동일한 기술과 경험을 가진 두 사람은 서로 같은 것을보고 혜택을 얻지 못합니다.
Jimmy Hoffa

5

나는 나의 경험을 설명하고 그것으로부터 "전략"을 얻으려고 노력할 것이다.

프로그래머가 아닌 완전한 프로그래머와 한 쌍의 프로그램을 작성했습니다. 그는 우리가 개발 한 소프트웨어 제품의 주제에 대해 전문가였습니다. 반대로, 나는 문제 영역에서 경험이 없었습니다. 그리고 그는 또한 현재 내 상사였습니다 (이상하게 들릴 수도 있음을 알고 있습니다 :)

이 방법론의 주요 이점은 지식 영역에서 많은 것들의 구현을 설명해야했기 때문에 구현의 정확성과 프로세스에 대한 이해를 보장해야했기 때문에 이번에는 왜 그런지 이해했습니다.

또 다른 이점은 방해가되지 않는 작업에 쉽게 초점을 맞출 수 있다는 것입니다.

그러나 심지어 차 휴식조차도 "일을 방해하는"(그의 관점에서가 아니라 휴식을 요구하는 것이 불편했기 때문에) 상당히 혼란 스러웠습니다.

따라서 코드를 입력 할 때 코드를 거의 검토 할 수 없었기 때문에 이것은 실제로 페어 프로그래밍이 아닙니다. 그러나 (최소한 시간 동안) 건전한 전략 인 것 같습니다. 그것은 개발 방법론 (OOP 패턴과 같은 복잡한 소프트웨어 설계 기술이 관련되지 않았 음)과 주제의 상대적 단순성 때문에 궁극적으로 효과가있었습니다. 우리가 생각하는 컴파일러를 개발 해야하는 경우에는 작동하지 않습니다. 나는 프로그래머가 아닌 관찰자가 작고 명확하게 정의 된 조각의 개발 과정에 참여하는 경우 여전히 작동 할 수 있다고 생각합니다. 예를 들어, "주어진 알고리즘에 의해 Y와 Z로부터 파라미터 X를 계산하는"함수의 프로그래밍을 보도록해도 좋지만, 전체 시스템 설계 프로세스 (소프트웨어 아키텍처의 개발, 즉 수업,

"배열이란 무엇인가"를 설명 할 필요가 없기 때문에 기본적인 프로그래머 기술을 보유한 경우 더 잘 작동한다고 생각합니다.

그것이 도움이되기를 바랍니다 :)


경험이 풍부한 설명입니다!
Sakares

2

내 경험상 두 프로그래머 모두 기술 수준이 낮 으면 문제가 될 수 있습니다. 이 경우 종종 복사 붙여 넣기 프로그래밍을 시도하는 경향이 있습니다. 두 명의 초보자 프로그래머가 팀이 결정한 특정 수준에 도달 할 때까지 함께 연결하지 않는 것이 좋습니다.

그렇지 않으면 페어 프로그래밍은 물론 두 사람이 자신이 알고있는 것을 공유 할 준비가되어 있다고 가정하는 것이 좋습니다. 모든 사람에게 소스 코드를 알리는 좋은 방법 일뿐만 아니라 새로운 아이디어와 토론을위한 좋은 장소 역할을합니다.


낮은 기술 수준의 개발자는 스스로 프로그래밍 할 때 복사하여 붙여 넣을 가능성이 적습니까? 이것은 일반적으로 아무도보고 있지 않을 때 발생합니다.
JeffO

1

팀원이 서로를 존중하는 한, 프로그래머의 경험 수준에 관계없이 페어 프로그래밍이 유리할 수 있습니다. 숙련 된 프로그래머가 숙련 된 프로그래머보다 몇 가지 구문 오류 (우리 모두가 만드는!)를 발견하더라도 여전히 컴파일 코드에 시간이 절약됩니다.

또한 다른 팀원의 능력에 대한 프로그래머의 태도를 열 수 있다고 생각합니다. 특히 열린 마음을 가지고 모든 사람이 당신에게 무언가를 가르 칠 수 있기를 기대할 때 더욱 그렇습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.