스크럼을 이용한 페어 프로그래밍


10

저는 현재 Scrum을 사용하는 팀에 속해 있으며 팀의 기능 간 기술을 향상시키고 "두 개의 머리가 하나보다 낫습니다"라는 철학으로 결함을 줄이는 데 도움이되도록 페어 프로그래밍을 추가하는 것을 고려하고 있습니다.

Google 팀에서 각 팀원은 일반적으로 스프린트 계획 중 전체 작업에 등록합니다 ( "전체"는 주당 40 시간 미만의 숫자로, 회의, 공동 작업 등을 허용 함). 각 작업. 나는 이것이 스크럼 팀에서 상당히 흔하다고 생각하지만 반드시 책이 아닐 수도 있습니다.

특히, 팀 구성원이 작업을 수행해야하기 때문에 팀 구성원이 자신의 작업을 주저하는 상황을 피하려고합니다. .

이를 감안할 때 페어링 시나리오에서 노력 / 시간 / 스토리 포인트를 고려하여 페어링 시간을 적절하게 할당하는 가장 좋은 방법은 무엇입니까?

고려되는 일부 옵션은 다음과 같습니다.

  1. 두 사람이 각 작업에 등록하고 대략적인 시간을 두 배로 늘릴 수 있습니다.
  2. 각 작업에 대해 "손을 키보드에 쥐고"팀 구성원 만 등록하며,이 작업은 해당 사람의 예상 시간을 기준으로 추정됩니다. 페어링을 지원할 팀의 모든 사람은 스프린트에서 더 적은 수의 작업에 등록하여 페어링을 지원할 시간을 허용합니다.

답변:


4

스크럼 내에서 페어 프로그래밍을 사용할 때 가장 많이 본 옵션은 개발 견적을 두 배로 늘리는 것입니다.

즉, 작업이 한 사람에 대해 3 시간이 걸리는 것으로 추정되면 할당 된 시간은 쌍에 대해 6 시간이됩니다.

당신이 더 깨끗하다고 ​​느끼면 포인트 대신 시간을 대체하십시오.)


고마워요 이 답변은 내 특정 질문에 가장 간결하게 대답했습니다. 그러나 근본 원인을 식별하는 데 도움을 준 DXM 덕분에 프로세스보다 더 많은 사람들이 있습니다. 하나 이상의 답변을받을 수 있기를 바랍니다.
Cliff

15

나는 다른 사람들이 이미 좋은 대답을했다고 생각하지만 팀이 방금 Scrum으로 전환했다고 생각하기 때문에 내 것을 추가 할 것입니다.

먼저 애자일과 스크럼에 대한 소개는 그다지 부드럽 지 않았습니다. 기본적으로 경영진이 내려 와서 오늘부터 당신은 스크럼을 할 것이며 이것은 당신이 따라야 할 과정입니다. 프로세스를 능가 하는 사람들에게 많은 것들 .

우리가 처음에했던 과정 (맹목적으로, 나는 덧붙일 수도있다)은 당신이 묘사 한 것과 매우 비슷했다. 사람들은 할당 된 작업을 받고, 모든 사람들이 예약을 받고, 우리 모두 책상으로 돌아가 플러그를 꽂습니다. 그런 다음 매일 지루한 회의가 있습니다.

중요한 것은 Agile과 Scrum이 실제로 사람들에 관한 것입니다. 팀이 반복 계획을 세울 때 Scrum 마스터 (아마도 관리자 인)가 시간, 스토리 및 작업을 할당하지 못하게하십시오. 완전히 팀에 달려 있습니다. 나는 많은 사람들에게 이것이 달성하기가 매우 어려운 개념이라고 생각합니다. 왜냐하면 그들은 몇 년 전에 일하러 왔고 단순히 업무를 배정 할 보스 (관리자, 기술 책임자)가 있었기 때문입니다. 그들은 스크럼으로 뛰어 들지만 모든 사람 (스크럼 마스터 자신을 포함하여)은 동일한 모드로 계속 작동합니다.

언젠가는 이것에 질려서 책, 블로그를 읽고 스택 교환에서 이와 같은 질문을 계속합니다. 얻을 수있는 사실은 개발자와 팀원으로서 이야기를하고 과제를 할당하는 원동력이되어야한다는 것입니다. 여러분이 페어 프로그래밍의 혜택을 누리게 될 것 같으면 반드시 각 엔지니어에 대해 2 개의 작업을 생성하고 두 시간을 모두 할당하십시오. 스크럼 마스터가 수행해야 할 유일한 것은 이전 반복에서 TEAM으로 제공 한 완료된 스토리에 대한 속도를 측정하는 것입니다.

또한 나에게 쓰레기를 버리는 또 다른 것은 사람들이 자신의 능력이 항상 총 시간의 75 %라는 것을 말하는 방법입니다. 나에게 도움을 준다. 또는 b) 너무 많은 시간이 할당되어 올바른 일을 할 수 없다. 스크럼 마스터가 이런 식으로 무언가를 가져 오려고 할 때 사람들은 얼마나 많은 시간을 할애해야하는지 이야기해서는 안됩니다. 모든 사람들은 자신이 편안하게 느끼는 것에 전념해야합니다. 예를 들어, 나는 팀 리더이며 계획되지 않은 임의의 디자인 토론이나 코드를 사용하거나 누군가를 도와 문제를 해결하는 경우가 종종 있으므로 내 용량은 절대 50 %를 넘지 않습니다.

방금 언급 한 작업을 수행하지 않는 방법을 배우기 위해 팀 4 릴리스주기가 걸렸습니다. 전문가에게 문의하면 반 민첩하지 않습니다. 그래도 여전히 많은 학습이 필요합니다.

업데이트 1 : Cliff의 의견에 대한 답변 글쎄 당신은 여기에 귀를 제공했습니다 ...

문화적 변화가 핵심이지만이 변화가 경영진 수준에서 일어날 필요는 없습니다. 자신의 그룹 관리자는 팀 내 문화를 바꾸고 그가 다루어야 할 회사 BS와 분리시킬 수 있습니다. 2007 년부터 2010 년까지 정확히 우리에 대해 설명했습니다. 우리 팀 (및 다른 팀도)은 릴리스 후 릴리스를 중단했습니다. 경영진의 "민첩성 프로세스"를 사용하는 릴리스 중 하나에서 우리는 한 사람이 일반적으로 수행 할 작업을 9 명으로 만들도록했으며 두 배의 시간이 걸렸습니다. 나는 자유 시간이 너무 많아서 이력서를 업데이트하기까지했다.

그런 다음 상사와 대화를 나누고 사람들에 대해 민첩한 것이 무엇인지 설명하고 제품에 대해 관심을 가지려면 제품 작업 및 배송 방법에 영향을 미치는 결정을 내릴 수 있다고 설명했습니다. 나는 그가 그것을 실험으로하기로 결정했다고 생각합니다. 그는 모든 단일 변화를 만들었습니다 ... 대부분은 저 자신이지만, 나머지 팀과 많이 이야기하므로 50 % 용량 :) ... 제안되었습니다. 그가 우리가 요구하는 모든 변경을하고도 여전히 실패한다면, 그는 "나는 당신에게 그렇게 말한 것"으로 승리 할 것이라고 생각할 수도 있습니다.

지난 12 개월 동안, 우리는 "멍청한"것을 많이 제거했습니다. 우리의 독립 회의는 우리가 고립 된 것이 아니라 함께 일하기 때문에 실제로 의미가 있습니다. 우리는 여전히 제품의 특정 부분에 대한 소유권을 보유하고 있지만 서로의 코드를 자주 공유합니다. 우리는 지속적으로 코드 검토를 수행하여 팀 구성원이 다른 코드를 배울뿐만 아니라 더 나은 코딩 및 디자인 기술을 배울 수 있습니다. 우리는 모 놀리 식의 거대한 "민첩한"팀을 3 개의 서로 다른 팀으로 나누었으므로 계획 및 기타 회의는 훨씬 짧으며 사람들은 주위에 앉아 관심이없는 것에 대해 들지 않기 때문에 실제로 관심을 갖습니다. 나는' 우리 밤에 5 명 중 4 명 (팀 중 하나)이 밤 11시에 온라인에있을 때 아무도 보지 못했고 실제로 아무도 우리가 열심히 일하거나 40 시간 이상 일하라고 압력을가했다고 말하지 않았습니다. 반년 전에 관심이 없었던 사람들은 갑자기 그들이하고있는 일에 열광하고 흥분합니다. "관리자가해야 할 일은 옳은 일을 결정하고 필요한 조치를 취하면 회사 BS를 가능한 한 많이 팀에서 제외시킬 것입니다."라고 말했습니다.

그것은 실험으로 시작되었습니다 (내 의심, 그는 저에게 말하지 않았습니다). 그러나 이제 우리 그룹은 부서의 다른 개발 그룹과 비교하여 엉덩이를 차고 있습니다.

이러한 변화가 일어 났을 때 (그리고 오늘날에도 여전히 문제가 됨) 우리에게 가장 큰 장애물은 정상적인 회사 환경의 엔지니어들이 우리 안의 실험용 쥐와 같다는 사실이었습니다. 관리자가 진정으로 "민첩한"상태로 가고 새장을 제거하기로 결정하더라도 모든 사람이 그 새장에 오랫동안 존재 해 왔으며 심지어 자신들이 자유 롭다는 사실조차 알지 못합니다. 따라서 모든 자유에도 불구하고 그들은 여전히 ​​구속 된 것처럼 행동합니다. 팀의 경계를 벗어나서 더 나은 방법을 찾는 팀 구성원 (예 : 자신과 같은 사람)이 최소한 몇 명은 도움이 될 것이라고 생각합니다. 그 그룹으로 돌아와서 조금 저어주세요.

귀하의 경우, 팀에 내려 와서 작업 방법을 알려주는 다른 외부 세력을 찾고 있다면 페어링 된 프로그래밍이 해결책이 아닐 수도 있습니다. 대신, 규칙을 버리고 관리하지 않고 규칙을 세우고 그들이 원하는 것을 물어보십시오. 무엇이 그들을 행복하게 할 것입니까? 생산적인? 가장 큰 문제를 파악한 다음 팀에게 그들이 어떻게 생각해야하는지 물어보십시오.


전적으로 동의합니다. 문제의 일부는 애자일 철학이 개발 문화에 깊이 뿌리 박혀 있지 않다는 것입니다. 우리는 문화적 변화를 통해 이상적으로 수정되어야하는 프로세스로이를 고치려고합니다. 작업 가입없이 팀 구성원은 작업에 대해 "나의 직업이 아닌"태도를 취했거나 (한 가지 경우, 팀이 실제로는 기능이 다르기 때문에 페어링을 구현하려는 이유 중 하나입니다.) 쉽게 산만 해지는. 그 결과 팀 간의 작업 부하가 불균형했습니다. 더 적은 프로세스로 이러한 문제를 해결할 수있는 방법에 대한 제안에 귀를 기울입니다.
Cliff

업데이트 해 주셔서 감사합니다. 경영진은 실제로 매우지지 적이 었으며, 팀의 자유 통치가 "방법"을 정의 할 수있게 해주었다. 그러나 핵심 문제 중 하나는 팀에 기능 간 사고 방식이 없다는 것입니다. 예를 들어, 팀은 개별 기술 세트를 기반으로 상상 불가능한 책임의 가상 벽을 만들었습니다. 한편으로, 팀원은 자신이 정의한 기능 영역에있는 기능의 일부에 대해 권한이 부여되고 소유권을 갖지만 기능 영역에없는 기능의 일부에 대해서는 책임을지지 않습니다 ( " 내 직업이 아니라 ").
Cliff

이미 긍정적 인 방향으로 여러 단계를 밟은 것 같습니다. 이제 개선 할 주요 영역을 식별 했으므로이를 팀에 제시하고 솔루션을 제안하도록 요청 했습니까? 그렇다면 페어링 된 프로그래밍으로 돌아왔습니까? 그렇다면, 같은 이야기에 함께 일하고 싶은 사람을 배정하고 여러 작업을 만들고 각 사람 옆에 코딩 시간을 두십시오. 그렇지 않다면, 왜 그들이 기능적 경계를 넘어서게 주저하는지 물었습니까? 결국 그들이 교차하지 않고 더 효과적이라고 생각한다면 실제 솔루션은 다른 곳일 것입니다.
DXM

"내 직업이 아님"은 "무관심"을 의미하며 가장 큰 문제입니다. 애자일은 관심이 있고 책임을 질 수있는 개발자를위한 것입니다. 팀은 제품에 대한 책임이 있습니다. "한 부분에 대한 책임은 없습니다"= 팀원이 전체 제품을 관리해야합니다. 왜 기능 영역이 있습니까? 당신의 제품이 너무 크기 때문입니까?
Ladislav Mrnka

@ LadislavMrnka : 팀에 단순히 신경 쓰지 않는 사람들이있을 수 있지만 괜찮습니다. 주요 결정, 제품 방향, 아키텍처 및 디자인이 바로지나 가기 때문에 이러한 사람들은 버그와 쓰레기 작업에 대한 노새가 될 것입니다. 그러나 여전히 기술 지원을 다루는 사람이 필요합니다. :). 우리 대부분은 우리가하는 일에 관심이 있다고 생각합니다. 그리고 전체 팀이 "나의 직업이 아닌"태도를 가지고 있다면 근본 원인이 다른 외부 요인으로 생각되어 제거되어야합니다. 그렇게하지 않으면 팀에 "주의해야합니다"라는 명령을 내리는 것은 불가능합니다.
DXM

2

스크럼은 작업을 멀리 떨어진 개인에게 할당하도록 요구하지 않습니다. 완료해야 할 책임은 팀 전체에 해당합니다. 팀이 페어 프로그래밍을 원할 경우, 각 페어가 작업을 선택하는 경우 가장 그렇습니다.

보내는 사람 스크럼 가이드 :

개발 팀은 일반적으로 시스템을 설계하고 제품 백 로그를 작동하는 제품 증분으로 변환하는 데 필요한 작업을 시작합니다. 작업 규모가 다양하거나 노력이 어려울 수 있습니다. 그러나 개발 팀이 스프린트 계획 회의에서 다가오는 스프린트에서 할 수있는 일을 예측하기위한 충분한 작업이 계획되어 있습니다. 개발 팀이 스프린트 첫 날 계획 한 작업은이 회의가 끝날 때까지 하루 단위로 분해됩니다. 개발팀 은 스프린트 계획 회의 및 스프린트 전체에 걸쳐 스프린트 백 로그에서 작업을 수행하도록 자체 구성합니다 .


1
흥미 롭군 나는 2009 년 3 월 Scrum Guide를 가지고 있으며 실제로 그 인용문을 바꾸었다. " 은 Sprint 계획 회의 중 또는 Sprint 중 적시에 Sprint 백 로그에서 작업 을 할당 하고 수행 하도록 자체 구성 했습니다 ."
Cliff

우리의 해석은 항상 각 백 로그 항목에 대한 초기 예상 작업 세트를 작성하고 스프린트 계획 중에 개별 팀 구성원에게 지정하는 것입니다. 몇 가지 이점은 계획 중에 팀 구성원 간의 작업 부하를 효과적으로 균형 조정하는 데 도움이되며 각 작업에 대해 지정된 소유자와 함께 있으면 누락 된 부분이 없는지 확인하기가 더 쉽다는 것입니다. 또한 메트릭 캡처에 도움이됩니다.
Cliff

@Cliff-당신이하고 싶은 방식이라면 괜찮습니다. 내가 말하고있는 것은 스크럼이 그렇게해야한다고 말하지 않는다는 것입니다. 오히려 일반적으로 버스 별 보험으로하는 항목을 쌍으로 할당하려는 경우에도 문제가되지 않으며 쌍을 기준으로 메트릭을 쉽게 해결할 수 있습니다.
Matthew Flynn

0

회의 계획에 대한 과제를 할당하는 것은 시간 결정과 팀에 권한을 부여하는 것과 정확히 일치합니다. 스프린트의 첫날부터 모든 개발자가 자신이해야 할 일을 정확하게 조정했기 때문에 스프린트 민첩성에도 반대합니다. 또한 모든 작업을 정확하게 예측해야한다는 것을 의미합니다.

Imho 추정 작업은 중복됩니다. 스토리 세트를 계획하고 회의 2를 계획하면 스토리를 태스크로 분할하고 해당 태스크에 대한 카드를 작성하거나 일부 시스템에 채울 수 있습니다. 각 작업을 평가할 시간이 충분하지 않으며 이러한 평가는 실제 개발에 시간이 걸리지 않아야합니다.

왜? 추정은 쓰레기입니다. 쓰레기는 어떻게 될 수 있습니까? 더 많은 추정을하는 것이 더 많은 비즈니스 가치를 가져 오지는 않을 것입니다. 그것은 쓰레기이므로 최소한으로 줄여야합니다. 최소는 당신이 헌신을하는 데 도움이되는 이야기를 추정 / 사이징하는 것입니다. 약속 한 후에는 다른 추정이 필요하지 않습니다. 당신은 당신이 약속 한 것을 전달하기 위해 날짜를 정했다는 것을 알고 있습니다. 커밋 된 스토리를 전달할 수 있습니다. 예상 작업은 해당 배달에 도움이되지 않습니다.

진행 상황을 측정하는 유일한 단계는 완료된 스토리 수 (스토리 포인트)이며 스프린트 번 다운 차트에 여전히 표시 될 수 있기 때문에 작업 추정을 건너 뛰면 스프린트 진행에 대한 가시성에 영향을 미치지 않습니다.

분명히하기 위해. 헌신이란 의미 = 우리는 그렇게 할 것 입니다. 우리는 그것을하거나 다른 것을 시도하지 않을 것입니다. 그렇습니다, 당신은 당신이 저지른 것을 전달하지 못할 수 있지만, 당신의 헌신은 현재의 지식으로 당신이 선택된 이야기를 전달할 것이라는 믿음에 근거해야합니다. 이 믿음이 있다면 다른 추정이 필요하지 않습니다.

나는 항상 개발자가 마지막 작업을 완료 한 후 새로운 작업을 선택하는 방식으로 Scrum을 사용했습니다. 개발자는 일반적으로 스탠드 업 회의에서 어떤 것을 선택할 것인지를 말합니다. 일반적으로 어떤 작업을 선택해야하는지 규칙이 없습니다. 팀 구성원간에 팀 자체 구성 및 토론에 달려 있습니다 (스탠드 업 회의 외). 그것은 상상의 계획에 영향을 미치지 않고 일부 변화와 문제에 대응할 수있는 가장 최근의 시점에 대한 결정을 연기하는 것입니다. 누군가 완료하는 데 문제가 있으면 작업 자체가 소유자를 변경할 수도 있습니다. 대신 그러한 작업을 쌍으로 개발할 수 있습니다.

페어 프로그래밍이 어떻게 관련 될 수 있습니까? 용이하게. 팀은 약속을 수행하고 팀은 제품의 실제 증분을 제공하는 데 필요한 모든 개발 기술을위한 공간을 마련해야합니다. 작업 또는 작업 개발 및 작업 테스트를 추정합니까? 후자의 접근법은 완전히 잘못되었습니다. 테스트는 개발의 일부이며 코드 검토 또는 페어링이 필요한 경우 개발의 일부와 같은 방식으로 수행됩니다.

페어 프로그래밍을하면 버그가 적고 코드 품질이 향상되어 작업을 더 빨리 완료 할 수 있습니다. 두 배는 빠르지 않기 때문에 여전히 약간의 오버 헤드가 있지만 때때로 페어링으로 인해 커밋에 미치는 실제 영향은 매우 적습니다. 이것은 멘토링이나 가르치는 경우가 아닙니다. 멘토 또는 교육이 필요한 개발자가있는 경우, 제품의 코드베이스 또는 일부 기술을 배우는 스프린트에 대해 용량을 계획해서는 안됩니다.

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