페어 스와핑 : 장단점은 무엇입니까?


15

대부분의 애자일 / XP 이론가 들이지지하는 일반적인 생각은 쌍이 정기적으로 교환되어야한다는 것 같습니다. 예를 들어 각 프로그래머는 하루에 한 번 쌍을 교체해야합니다. 회의 시작, 휴일 등의 외부 요인으로 인해 대부분의 사람들은 스왑 시간을 일주일에 한 번 또는 두 번 바꾸어 페어 구성이 분산되도록하는 경향이 있습니다. 팀 전체에서 상당히 고르게

빈번한 교환의 한 가지 근거는 특정 기술과 지식이 특정 개인에게 집중되지 않고 팀에 지식이 신속하고 균등하게 분산된다는 것입니다. 사람들이 자리를 비우거나 회사를 떠나도 업무가 원활하게 진행될 수 있음을 의미합니다. 또 다른 근거는 페어 프로그래밍 자체를 둘러싼 교리에 대한 일종의 추론으로, 누군가가 당신을 바꿀 때마다 새로운 눈으로 새로운 코드 검토를 받고 있으므로 코드 품질 만 향상시킬 수 있다는 것입니다.

두 주장은 합리적으로 들린다. 관리 관점에서 보면 안정성과 품질이 모두 향상되는 것처럼 들리며, 자주 본 스왑은 대부분의 Agile / XP 서적 에서 거의 표준 이론입니다 .

실제로 실제로 사용하면 사람들은 실제로 페어 스와핑에 대해 어떻게 생각합니까

  • 프로그래머의 관점?
  • 관리자의 관점?

  • 누군가가 페어를 교체 할 때 무엇을 결정해야합니까?

"쌍 프로그래밍"과 같은 것입니까?
Robert Harvey

@Robert Harvey-페어 프로그래밍의 한 측면입니다. 팀이 작업 일의 일부 비율로 쌍으로 프로그램을 진행하기로 결정한 후에는 프로그래머를 쌍으로 배열하는 방법을 결정해야합니다. ). "페어 스와핑"입니다.

좋은 질문에 +1. 슬프게도, 페어 스와핑에 대한 데이터를 가질 수있을뿐만 아니라 정기적으로 페어링하는 상점을 찾는 것이 어렵다고 생각합니다. 잘하면 나는 이것에 대해 잘못하고 당신은 좋은 응답을 얻을, 나는 일부를 듣고 매우 관심이 있습니다.
Jesse McCulloch

2
개인적으로 페어 스왑이 매우 산만하다는 것을 알았습니다. 가까운 지역에서 다양한 성격과 기술 수준을 다루려고하면인지 불협화음이 너무 커질 것입니다.
Robert Harvey

@Jesse McCulloch-나는 팀이 말한 것처럼 프로그램을 페어링하고 책을 교환하는 장소에서 일합니다. 나는 또한 순수한 솔로 환경에서 일했기 때문에 대조에 대해 상당히 좋은 관점을 가지고 있습니다. 그러나 다른 사람들의 의견이 너무 많은 영향을 미치지 않고 내 자신과 일치하는지 확인하고 싶습니다.

답변:


4

페어 프로그래밍이 어렵습니다.

관련된 두 사람이 기술 수준에 가깝고 일부 작업 환경에서는 어려울 때 가장 잘 작동하기 때문에 어렵습니다. 적절한 기술 수준을 가진 다른 사람을 찾은 다음 현재 문제를 신속하게 해결해야하므로 교환 할 때 더 어려울 수 있습니다. 이점은 더 많은 사람들이 페어링 된 특정 코드에 노출되는 것입니다. 아무도 코드에 대해 잘 모르기 때문에 코드를 수정할 수없는 시간이 줄어 듭니다. 또한 그룹 소유권과 모든 사람이 작업을 집어들 수있는 능력을 전파해야합니다.

페어링이 완료된 환경에서도 페어 스와핑은 비용이 들지 않습니다. 그러나 이것은 우리의 작업이 ~ 1.5 일 이상 걸리지 않기 때문일 수 있습니다. 우리는 작업을 ~ 1.5 일 분량의 작업으로 분류 할 때 큰 이점을 발견했습니다. 페어 스와핑은 더 오래 실행되는 작업에서 더 의미가있을 수 있습니다.


개인적으로 저는 모든 수준의 사람들과 어울리는 것을 좋아합니다. 때로는 배우고, 가르치고 있으며, 때로는 일을 끝내고 있습니다. 그러나 학습과 교육은 장기적인 팀 역량을 구축하며 기능을 확인하는 것만 큼 중요하다고 생각합니다.
William Pietri

당신은 그렇게 생각할 수도 있지만, 자신의 전문 지식으로 마감 기한이 사라지는 프로젝트 관리자는 동의 할 수없는 한 빨리 코드를 작성하지 않고 자신의 시간에 사람들을 훈련시키는 데 익숙합니다. 그것이 대부분의 프로젝트가 운영되는 방식이므로, 사람들이 작업을 수행하는 데 필요한 기술을 갖도록 훈련시킬 시간이 없기 때문에 후배는 매달리게됩니다.
jwenting

@ William Pietri : 내 경험에 따르면 페어링은 가르치기에 좋은 형식이 아닙니다. 나는 누군가를 데려 가고 코드를 통해 걸어서 무슨 일이 일어나고 있는지 설명하는 데 아무런 문제가 없습니다. 그러나 이것은 쌍 프로그래밍이 아닙니다.
dietbuddha

@jwenting : 품질과 지속 가능성에 대한 헛소리 마감 시간에 초점을 맞춘 상점에서 페어 프로그래밍이 제대로 작동하지 않는다고 말하면 논쟁하지 않습니다. 팁 : 미쳐지지 않는 곳에서 일하십시오.
William Pietri

@dietbuddha : 나를 위해 일한다! 새로운 언어, 프레임 워크 또는 라이브러리를 배우는 가장 빠른 방법은 언어를 잘 아는 사람들과 짝을 이루는 것입니다. 그리고 페어링보다 멍청한 놈을 낫게하는 더 좋은 방법은 없습니다. 예를 들어, 경험이 걸릴 : slesinsky.org/brian/code/starting_xp.html
윌리엄 Pietri

3

저는 프로그래머이자 관리자입니다. 여기 내 테이크가 있습니다 :

정기적으로 교체하는 것이 좋습니다. 나는 하루에 2-4 번 교환하는 것을 선호합니다. 우리에게는 자연스럽게 깨질 수있는 지점이 있습니다 : 일반적으로 점심과 오후 중반. 매일 이틀을 바꾸는 것이 좋을지 모르지만 그보다 더 오래 갈 것이 걱정됩니다. (6 주마다 드물게 한곳이 바뀌 었다는 이야기를 들었습니다. 제 생각에는 제 정신이 없습니다. 많은 시간이 지나면 성도를 찌를 준비가 된 것입니다.)

프로그래머로서 나는 신선한 관점을 얻고 코드의 다른 영역을 확인하고 내가 좋아하는 것을 고수하거나 나갈 수 있기 때문에 그것을 좋아합니다. 나는 최근에 솔로 코딩에서 페어링으로 돌아 갔으며, 나는 더 많은 것을 배우고, 더 재미 있고, 더 많은 일을하게되어 흥분합니다.

관리자로서 나는 많은 트럭 팩터 및 병목 현상 문제를 해결하기 때문에 훌륭하다고 생각합니다. 예를 들어, 이번 주말에 친구의 결혼식을 위해 긴 주말을 보내고 있습니다. 전혀 걱정하지 않습니다. 제가 작업 한 모든 것이 다른 사람들에 의해 이루어졌습니다. 또한 팀 구성원들이 서로의 강점과 약점을 이해하고 집단 코드 소유권을 장려하는 데 실제로 도움이된다고 생각합니다.

현재 작업을 유지하는 사람은 주로 관련 사람들에게 달려 있다고 생각합니다. 때때로 당신은 무언가를 통해보고 싶어하며 때로는 변화를 준비하고 있습니다. 우리는 때때로 전문 지식을 얻기 위해 교환하거나 누군가가 관심있는 것을 배울 수 있습니다. 우리는 작업 단위를 아주 작게 유지하려고 노력합니다 (0.5-2.0 쌍의 일), 그러나 큰 문제는 아니지만 교환은 계속됩니다. .


나에게 스왑 오프는 오직 a) 내가 코딩하고있는 남자와 코딩하는 것을 좋아하지 않는다고 말해야한다. 오래된 메모리 버그). 그렇지 않으면 나는 처음부터 끝까지 머물고 싶다. 개인적으로 저는 페어 스와핑이 코드 품질을 떨어 뜨린다 고 생각합니다. 좋은 코드에는 명확한 비전이 하나 있어야하고, 단일 부분에서 일하는 사람이 많을수록 비전이 더 복잡해집니다. 지식 공유에 관해서는, 나는 대부분의 사람들이 무슨 일이 일어나고 있는지에 대한 약간의 아이디어를 얻지 만, 아무도 제대로 이해하지 못한다고 말하고 싶습니다.

@B Tyler-코드베이스는 공동의 지적 작업 인 것 같습니다. 따라서 일반적인 비전이기도 한 명확한 비전을 가져야합니다. 이것이 내가 교환을하는 것이 중요하다고 생각하는 이유 중 하나입니다. 견고한 공유 접근 방식을 개발하려면 많은 상호 작용과 토론이 필요합니다.
William Pietri

1

오키, 자칭 실용 민첩 / xp 프로그래머의 답이 있습니다. 저는 지금 2 년 이상 페어 프로그래밍을 해왔습니다. 페어 프로그래밍이 좋은 경우 페어를 자주 교체하십시오 (반일이 아닌 경우 2 시간마다). 사무실 위치에서는 매일 (보통) 또는 이틀마다 (나쁜 경우) 쌍을 바꾸는 것이 중요합니다. 자체에서 이렇게하는 것은 우리에게 자신감을 많이 줄 수있는 코드의 품질을 우리가 저지 것을 배운 또는가는 요리를 가지고 우리가 모든 쌍의 회전을 가지고 (우리가 코드 검토 잘 알고, 더 나은 및 이전 좋네요. 이것이 "페어 교환 연습을 포함한 페어 프로그래밍"이 달성 한 것입니다).

왜 우리는 2-4 시간마다 쌍을 전환하지 않습니까? 글쎄, 실제로 나는 이것을 연습하는 팀에 있었다. 확실히 더 시원하고 생산적입니다. 그러나 여기에 거래가 있습니다. 스와핑 쌍의 시간 간격은 규칙이되어서는 안되며, 자체적으로 발생해야합니다. 그래야만 관리자 나 비즈니스가 이점을 볼 수 있습니다.

나는 이것을 목격하고 경험했다. 나는 이제 전도자입니다. 이론이 아닙니다. 오히려 완전히 실용적입니다 :) 행복한 탁구 페어링 및 교환 쌍.


1
아아, 나는 이제 페어 프로그래밍이 일반적으로 나쁜 생각이라는 의견으로 완전히 전환되었습니다. 페어 프로그래밍에서 빈번한 페어 스와핑은 상황을 악화시킵니다. 나는 모든 이론을 듣고 실제로 많은 것을 시도했으며 솔로 프로그래밍보다 엄청나게 비효율적이며 지루하고 실망스럽고 품질이 낮은 코드라고 생각합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.