페어 프로그래밍은 오늘날 매우 유명합니다.
다음과 같은 몇 가지 장점이 있습니다.
- 버그가 적은 프로그램.
- 포스트 프로덕션 유지 관리 비용이 훨씬 적습니다.
- 확립 된 관행에 도전하여 새로운 아이디어가 등장합니다.
- 프로그래머들은 서로 배웁니다.
- 프로그래머는 부드러운 기술을 개발합니다.
그러나 페어 프로그래밍의 단점은 무엇입니까?
페어 프로그래밍은 오늘날 매우 유명합니다.
다음과 같은 몇 가지 장점이 있습니다.
그러나 페어 프로그래밍의 단점은 무엇입니까?
답변:
페어 프로그래밍은 상당한 명성을 얻었지만 몇 가지 함정도 있습니다.
그들 중 일부는 다음과 같습니다.
모든 엔지니어에게 필수 프로세스로 롤아웃을 고려한 조직을 포함하여 페어 프로그래밍을 여러 번 시도했습니다 (아이디어가 얼마나 잘 전개되었는지 추측 할 수 있음). 개인적으로 나는 그것을 싫어했다.
아래에 열거 한 이유는 주관적인 경험 일 뿐이며 구체적인 용어로 그 영향을 '측정'할 수 없습니다. 그러나 여기 모두 동일합니다.
1- '네비게이터'와 '드라이버'를 갖는 것은 전자가 보컬이고 후자가 듣는 경우에만 도움이됩니다.
우리는 모두 이론적 관심사에 대해 고집이 세고 누군가가 문제를 제안 할 때 병리학 적으로 불가능한 (심리적으로) 오래된 작업을 '버릴'개발자를 만났습니다. 그리고 우리는 모두 개인이 너무 소심하거나 모호하여 우려를 제기하거나 모퉁이 사건을 제안 할 수 있음을 알고 있습니다.
이러한 종류의 개발자가 쌍을 이루면 네비게이터는 수동적 인 역할을 신속하게 수행하며, 결국 자동 코드 검토를 통해 단독 프로그래밍을 수행하게됩니다. 이것은 엄청난 자원 낭비입니다.
2-페어링은 창의성을 방해합니다.
이전에 '그룹 브레인 스토밍'의 가치에 대해 느꼈던 것과는 달리 요즘의 합의는 창의적 지식 작업에는 독립성 과 자율성이 필요하다는 것 입니다. 혼자 일할 때 미친 아이디어를 빨리 해킹하여 실제로 실현 가능한지 확인할 수 있습니다. 말도 없이 이상한 프로토 타입을 조립할 수 있으며, 실패하면 아무도 모르기 때문에 중요하지 않습니다 .
새로운 개념을 시도하고 싶을 때, 파트너를 설득하고, 단계별로 구현을 통해 이야기를 나누고, 그들이 실패하면 나를 판단하지 않기를 바랍니다. 그런 환경은 새로운 아이디어를 만드는 데 유독 합니다.
3-최저 공통 분모 설계.
위와 같이 한 쌍이 새로운 아이디어를 내놓지 못하거나 개인이 기능을 디자인해야하는 기본 원칙에 동의 할 수없는 경우, 타협하지 않는 디자인은 누구도 타협하지 않고 만족 시키려고합니다.
훌륭하고 웅장하며 기능적인 프로그래밍 추상화를 작성하는 개발자를 빠르고 더러운 성능 괴물과 결합하면, 함께 생성 할 코드는 일반적으로 매우 우아하거나 빠르지 않습니다.
4-자율성과 폭력적인 투명성 부족.
폭력적인 투명성 은 스크럼 방법론에 대해 적당히 유명한 (그리고 논란의 여지가 많은) 논쟁에서 뽑아 낸 문구입니다. 일부 조직이 개발자를 영 유화하고 비전문가 근로자를 위해 일반적으로 예약 된 의심으로 개발자를 대하는 방식을 설명합니다.
개발자의 작업을 완전히 투명하게 만드는 '유해'에 대해 어떻게 생각하든 (실제로 해롭다는 데 동의하지 않을 수도 있음) 많은 개인이 자율성과 혼자 일할 수있는 능력을 소중히 여깁니다. 그것은 중요한 심리적 요구이며 개발자가 (적어도 하나의 상점에서 일어난 것처럼) 페어링하도록 강요하면 직원들이 당황하고 화를 내고 소외됩니다.
5-일부 개발자는 쌍으로 멋지게 연주하지 않습니다.
일부 사람들은 페어링 된 환경에서 적절하게 행동하지 않거나 수행 할 수 없습니다. 그들은 나쁜 위생, 열악한 작업 습관, 거친 성격, '큰 소리'와 '강렬한'방식, 또는 개별 속성을 훌륭하게 만드는 다른 속성들, 그러나 열악한 쌍 프로그래머를 가질 수 있습니다.
이 문제를 해결할 수 있습니까? 실제로는 아닙니다. 개인적인 행동을 바꾸는 것은 어렵습니다. 페어 프로그래밍 샵은 고용에 대해 매우주의를 기울여야하고 누군가의 작동 방식과 동료들과 잘 어울릴 수 있는지에 많은 시간을 투자해야합니다. 그러나 성격에 대해 더 열심히 차별한다는 것은 기술과 전문 지식에 대한 기준을 완화하지 않는 한 고용이 더 오래 걸린다는 것을 의미합니다.
상황이나 관점에 따라 다릅니다.
페어 프로그래밍은 조직에 좋습니다. 그러나 개인에게 좋은가요?
결국 비용 절감 (조기 피드백) 및 생산성 방법입니다. 그것은 당신에 관한 것이 아니라 프로젝트, 제품, 회사 ($ $)입니다.
개인적인 혜택을 누릴 수 있지만 개발 방법론의 이유나 끝이 아닙니다. 예를 들어 (풀 타임) 페어 프로그래밍은 느슨해 짐, 서핑 등을 막아줍니다. 파트너에게 일시 중지를 정당화해야합니다.
당신의 (회전하는) 파트너는 최고의 감시 카메라가 될 것입니다 : 작업 강도 증가.
또는 지식을 배포함으로써 개인은 회사에 덜 위험하게되고 (예 : 필수 지식으로 회사를 떠날 수 없음) "협약 칩"이 줄어 듭니다.
관리자의 관점보다는 회사의 실제 상황 / 관점에서 긍정적 인 기사를 더 비판적으로 읽으면 더 많은 포인트를 찾을 수있을 것입니다.
거의 모든 방법론은 관리자의 관점에서 작성되었습니다.
다른 답변 외에도 :
프로그래머가 랩톱으로 문제를 해결하기 위해 노력한 많은 회사 (고객 사이트를 기반으로-퇴근 후 집으로 가져 가면 장비를 안전하게 유지하고 집에서 VPN으로 이상한 일을 할 수있는 등) 수년 전 이미 다른 사람의 ( "드라이버") 랩톱 화면에서 어깨 서핑 관점에서 볼 수있는 문제가있었습니다. 나이가이를 개선 시키지는 않을 것입니다 (어떤 경우 든 이상적인 화면 각도 이상에서는 일부 화면을 읽기가 어려워집니다).
따라서 페어 프로그래머에게는 충분히 큰 화면이 필요하므로 하드웨어 비용이 증가하고 위치에 대한 적응성이 제한됩니다. 어떤 경우에는 문제가되지 않을 수도 있고, 다른 경우에는 문제가 될 수도 있습니다.
즐거움을위한 일화 :
사회적 및 실제적인 이유로 쌍 프로그래밍이 실패한다고 생각합니다. 본질적으로 당신은 한 사람에게 끊임없는 감시하에 일하라고 요구하고 다른 한 사람은 구멍을 찌르기 만하면됩니다.
잠시 후 불가피하게 발생하는 일은 쌍이 '이메일 확인'또는 '실시간 문제에 대한 잘못된 점검 수행'등으로 분리 된 것입니다.
코드 출력을 개선하는 대신 볼륨이 줄어 듭니다. 실질적인 이유로 '저는 당신과 동기화되지 않은 점심 / 미팅으로 가야합니다'와 소셜은 '밥이 다시 페어링에 대해 묻기 전에 밥이 그 일을 마칠 때까지 기다릴 것입니다.
귀찮은 장점에 관해서는 더 간단하고 효과적인 방법으로 달성하는 많은 일반적인 관행이 있습니다.