페어 프로그래밍은 언제 작동합니까? 언제 피해야합니까? 짝짓기 프로그램을하는 대신 팀에서 선택적으로 짝짓기 프로그래밍을

우리는 항상 노예로 짝짓기 프로그램을하는 대신 팀에서 선택적으로 짝짓기 프로그래밍을 사용합니다. 다음과 같은 상황에서 가장 효과적이라고 생각합니다.

  • 문서 나 코드를 스스로 작성하는 대신 새로운 팀원을 프로젝트에 몰입시킵니다.
  • 후배와 상급자들이 함께 일하게하는 것 (보다 숙련 된 개발자의 기술과 요령을 보여주는 데 도움이 됨)
  • 누군가가 결함을 추적하려고 할 때 종종 신선한 눈과 짝을 이루는 데 도움이됩니다.

페어 프로그램은 언제 사용합니까?

페어 프로그래밍을 피해야 할 때? 왜?



답변

Laurie Williams가 작성한 연구에 따르면 페어 프로그래밍은 산업 팀에서 가장 잘 작동합니다.

  • 쌍은 사양, 디자인 및 복잡한 프로그래밍 작업 에서 작동 합니다 . 실험에 따르면 한 쌍의 간단한 작업을 수행 할 때 품질이 향상되지 않았지만 속도가 향상 될 수 있습니다. 또한 쌍 “프로그래밍”에는 종종 코드 작성 이외의 활동이 포함됩니다.
  • 페어링의 각 개인은 거의 동일한 수준의 전문 지식 을 가지고 있습니다. 페어 프로그래밍은 훈련에 유용하지만 페어는 거의 같은 수준에있을 때 가장 관여합니다.
  • 역할은 규칙적으로 회전규칙적으로 회전하면 개인이 운전하려고하거나 감지 할 때 가장 많이 기여하는 경향이 있으므로 현재 부조종사를 계속 참여시킬 수 있습니다.
  • 쌍은 정기적으로 회전합니다 . 팀은 자신이 구축하고있는 시스템의 다른 부분에 대해 알면서 편안함을 표현했습니다. 페어 로테이션은 지식 이전을 도와 프로젝트의 특정 위험을 줄입니다. 학업 환경에서 종종 쌍이 배정되지만 산업계에서는 일반적으로 스탠드 업 중에 자주 자체 배정됩니다. 두 경우 모두, 두 개인이 짝짓기 활동에 가치가있는 참가자를 기꺼이 참여할 때 가장 효과적입니다.

개인적으로 경험 한 바에 따르면 XP 팀은 개발 시간 쌍 프로그래밍의 평균 60 %를 평균으로 사용합니다. 남은 시간은 개별 개발에 소비됩니다. 초기 디자인을 만들기 위해 짝을 이루는 것은 드문 일이 아니며, 몇 시간 동안 디자인에 대해 혼자 작업 한 다음 다시 모여 까다 롭거나 어려운 코드 부분을 완성합니다.

또한 페어 프로그래밍이 약 1.5 ~ 2.5 시간 블록에서 가장 효과적이라는 것을 알았습니다. 훨씬 적은 것은 셋업하기 위해 너무 많은 오버 헤드를 요구하는 경향이있는 반면, 더 많은 것은 쌍이 복잡하고 피곤 해지는 경향이 있습니다. 불안정하고 피곤하면 의사 소통이 원활하지 않아 결함이 시스템에 유입 될 수 있습니다.


답변

페어 프로그래밍은 매우 적은 상황에서 저에게 효과적이었습니다.

페어 프로그래밍이 실패하는 경우

짧은 이야기는 소프트웨어를 개발하는 주요 방법으로 페어 프로그래밍이 작동하지 않는다는 것입니다. 특히 특정 문제에 중점을 둔 경우 하루 또는 일주일 동안 프로그램을 페어링 할 수 있습니다. 그러나 그 후? 끝났어요 토스트. 나는 누군가를보고 싶지 않으며 누군가와 이야기하고 싶지 않으며, 인간 회사에 다시 어울릴 때까지 동굴에서 적어도 며칠이 필요합니다.

슬픈 이야기이지만, 재미있는 점은 그것이 끝난 방식에 따라 지금 훨씬 더 행복하다는 것입니다. 나는 집이나 커피 숍에서 일하는 계약에 행복하게 종사하고 있으며, 새로운 친구를 사귀고 샌프란시스코를 더 많이 탐험했습니다. 자전거와 노트북이 있으며 마감일을 지키고 코드를 정기적으로 체크인하는 한 내 시간은 내 자신의 시간입니다.

페어 프로그래밍과 관련된 큰 문제를 먼저 나열하고 나중에 세부 사항과 일화를 알려 드리겠습니다.

  1. 초점을 분할하십시오.
  2. 실험이 없습니다.
  3. 높은 메모가 없습니다.
  4. 소유권에 대한 자부심이 없습니다.
  5. 탈출구가없는…

… 동료들에게 내가 본 것을 보았는지, 뭔가 빠진 것이 있으면 무엇이든, 어떻게 작동하는지, 사람들이 계속 어떻게 할 수 있는지 보지 못했습니다. 그들은 내가 잘하고 있다고 말했다. 정착하고 적응하는 데 시간이 걸렸다. 처음에는 모두에게 힘들었습니다.

결국, 나는 나 자신으로 퇴각했다. 눈을 멀게하는 두통, 불면증, 그리고 두근 거리는, 코드를 작성해야 할 때, 입력에 대한 응답을 중단했습니다. 나는 화면을 응시하고 아무것도 볼 수 없었다. 누군가 예기치 않게 나에게 이야기 할 수 있었고 나는들을 수 없었습니다. 나는 직업의 엄격한 요구 사항을 충족했지만 거기에 없었습니다. 나는 하루 동안 방금 보여준 모든 것을 다 써 버렸다. 다른 파트너가 입력 할 때 iPhone을 확인하기 시작했습니다.

마지막으로-3 개월 후에 부끄러워하고 처음으로-페어 프로그래밍시 팀에 적합하지 않다는 이유로 해고당했습니다.

혼자가 아니야

나는 이것을 이해하기 위해서뿐만 아니라 그것에 대해 이야기 할 수 있도록 썼습니다. 페어 프로그래밍은 대부분의 사람들에게 효과적이며 솔로 프로그래밍보다 훨씬 쉽고 빠르다는 가정이 있습니다. 이것은 사실 일 수도 있고 아닐 수도 있지만 장기적으로는 쌍 프로그래밍이 효과가 없습니다. 페어 프로그래밍이 작동하지 않는 다른 사람들이 많이 있습니다. 우리도 역시 …


답변

우리 팀은 창업 이래로 주로 “익스트림 프로그래밍”스타일 상점의 일환으로 페어 프로그래밍을 해왔습니다. 페어 프로그래밍이 기본 상태입니다 . 사람들은 홀수 또는 때때로 조사를 위해, 특히 적대적인 장비를 엉망으로 만들려고 노력하는 경우에만 싱글 톤으로갑니다.

“주니어 / 시니어”만이 갈 수있는 유일한 방법은 아닙니다. “중급 / 주니어”가 유용합니다. 그것은 중간 수준의 사람이 다른 사람과 정보를주고 받도록하여 얻은 지식을 합성하는 데 도움이됩니다. “중급 / 중급”과제는 두 사람이 함께 협력하여 지식을 공유하고 의사 소통하며 팀의 일원으로 일하는 것입니다. 두 명의 선임 직원이 있더라도 서로 다른 전문 분야를 보유하고 있으며 다른 접근 방식을 사용할 수 있습니다. 지식 공유 측면은 누군가가 프로젝트에 대해 모호하게 “속력을 발휘”한 후에 끝나지 않습니다. 오히려 페어 프로그래밍은 학습 조직 의 전형입니다 . 새로운 기술과 모범 사례가 빠르게 확산됩니다.

페어 프로그래밍은 코드의 품질 (결함이 적은) 및 코드의 정신 (단지는 의도 일을하지 않습니다를 유지하는 데 도움이,하지만 무엇을 그것을 해야 … 이상적으로 여러 주 rabbit-을 거치지 않고 구멍이 잘못되거나 격렬하게 충돌하는 두 가지 다른 옳은 일). 프로그래머가 집중력을 유지하는 데 도움이됩니다. 여기서는 주당 80 시간의 근무처 인 실리콘 밸리 중심부에서 하루에 8 시간 동안 강렬한 코딩을 수행하므로 일주일에 40 시간 만 일할 수 있습니다. 서로 떨어져. (또한 페어 프로그래밍을 더 오래했다면 아마 뒤집어 지거나 적어도 타 버릴 것입니다.) 이는 업무 / 생활의 균형에 적합하며 빠른 처리 (특히 대기 시간이 짧은 처리)가 필요한 경우 조직에 도움이됩니다.

100 % 복숭아와 크림이 전부는 아닙니다. 페어 프로그래밍은 때때로 특정 문제에 유용한 직관적 인 두뇌 프로세스를 적용하는 데 방해가된다는 것을 알게되었습니다. 가장 최근에는 메모리 누수 작업에서 한 쌍의 유무에 관계없이 시간을 보냈습니다. 하나가 없으면, 나는 한 순간에 내가하고있는 일을 정확하게 설명하는 방법을 모르고 주위를 어지럽히고 실험을 시도하는 것이 더 자유로웠다. 싱글 톤 작업의 이점도 있습니다. 탄젠트를 시작하고 변덕스러운 리팩토링 (XP 방법으로 평가)을 수행 할 수 있습니다.

그러나 모두가 혜택은 비용을 훨씬 능가하며, 창업 단계부터 대기업 인수 및 후속 통합에 이르기까지 페어링은 우리를 위해 훌륭하게 효과를 발휘했습니다. (즉, 페어 프로그래밍은 확장을 통해 약간의 전환에도 불구하고 문화의 연속성을 유지하는 데 도움이되었습니다).

(우리는 Perl에서 ~ 4,000,000- $ 40,000 정가의 소프트웨어 어플라이언스를 개발합니다.)


답변

“Pair Programming”설정에서 작업 한 적이 없지만 목록에있는 세 가지 환경의 일부라고 주장 할 수 있습니다. 언급 한 시나리오는 도움 / 훈련 단계에 따라 “정규 프로그래밍”으로 보입니다. “페어 프로그래밍”이 시작되기 전에이 모든 것을 수행하지 않았습니까? 페어 프로그래밍, 팀 내에서 공유하는 프로세스가 즉각적인 작업이나 당면한 문제를 해결하는 순간을 멈추지 않는 좀 더 헌신적 인 접근 방식이 필요하다고 가정합니다. 그러나 이것이 내가 “알고있는”것이 아니라 “생각하는”것입니다.

개인적으로 페어 프로그래밍을 위해 저는 지식을 배우고 공유 할 수있는 기회를 얻을 수있는 팀에서 일하고 싶습니다. 당신과 함께 일하는 모든 사람들이 당신보다 앞서있는 불균형 팀이거나, 그보다 훨씬 낮은 수준의 팀은 매우 흥미롭지 않을 수 있습니다. 또한, 나는 그들의 신념을 가지고 설득하기 어려운 사람들과 일하는 것을 두려워합니다.


답변

우리는 지난 몇 달 동안 팀에서 페어 프로그래밍을 실험 해 왔습니다. 나는 당신이 다른 팀원과 아이디어를 신속하게 and 수 있고 검증 / 무효화 할 수 있기 때문에 새로운 기술 (새로운 기술, 새로운 기능 등)을 작업 할 때 매우 유용하다고 생각합니다. 또한 병렬 검토를 통해 버그를 방지 할 수 있습니다.

다른 팀원은 ATDD를 수행하기 위해 테스트와 함께 페어 프로그래밍을 사용하려고 시도했으며 결과에 매우 만족했습니다. (계산에 따르면 개발 비용이 20 % 증가하면 테스트 시간이 약 50 % 감소했습니다)


답변

안녕히 주무세요

우리는 익스트림 프로그래밍과 페어 프로그래밍의 관행에 대해 여러 번 토론했습니다 . 과거에는 프로그래머가 집중과 고립이 필요했기 때문에 프로그래밍이 단독 활동이라는 것을 이해할 수있었습니다. 당시 프로그래머들은 코드에 효율적으로 집중하고 멋지고 창의적인 결정을 내릴 수있는 정신 상태 인 에있었습니다.

한 프로그래머가 서로 인터럽트한다고 가정하면 페어 프로그래밍은 위험한 것처럼 보입니다. 반면에 두 프로그래머가 함께 일하는 것을 방해하는 것이 더 어렵습니다. 예를 들어 솔로 프로그래밍에서는 인터럽트가 더 쉬워 지므로 솔로 프로그래머가 “영역”에 머무르는 것은 거의 불가능합니다.

데드 라인이 바로 근처에있을 때 코드 품질은 또 다른 것입니다. 사람들은 항상 서두르거나, 페어 프로그래머 또는 솔로 프로그래머가 될 것입니다. 특정 모범 사례를 적용하지 않고 단위 테스트를 잊어 버릴 것입니다.

나는 쌍 프로그래밍을 고수 할 것이다. 한 프로그래머가 사라지면 위험에 처할 때마다 프로세스를 문서화하고 다른 사람들에게 그 작동 방식을 가르쳐 줄 다른 사람이 항상있게됩니다.


답변

사소한 복잡성에 대한 작업은 페어 프로그래밍의 좋은 후보가되기 때문에 코드 기반의 일부를 아는 한 명의 개발자가 아니라 여러 사람이 코드를 이해하게됩니다. 또 다른 경우는 누군가가 기술을 전수하고자하는 경우입니다. 예를 들어 단위 테스트에 능숙한 사람이 개념에 익숙하지 않은 사람과 짝을 이뤄서 무언가에 대한 초기 습관을 얻는 데 도움이 될 수 있습니다.

페어 프로그래밍을 피할 수있는 위치에 대해서는 작업을 두 그룹으로 나누고 각 개발자가 작업을 수행하기 위해 개별적으로 일부 작업을 수행 할 수있는 작업을 간단하게 수행하십시오. 일부 작업에는 약간의 타이핑이 필요할 수 있지만 너무 크지 않아 각 개발자가 몇 가지에 대해 무차별 대입 방식을 취하면 수행 할 수있는 더 좋은 방법을 찾으려고 노력할 가치가 있습니다. 시간.