회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
본문은 요즘IT와 번역가 Chase가 함께 만든 해외 번역 콘텐츠입니다. 필자인 Willem-Jan Ageling은 'Serious Scrum' 설립자 겸 에디터이며, 수석 애자일 코치로 일하고 있습니다. 가치 극대화에 대한 다양한 글을 올리고 있습니다. 이번 글은 개발자를 위한 방법론인 스크럼이 왜 개발자를 괴롭히는지에 관해 설명하고 있습니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
본문은 요즘IT와 번역가 Chase가 함께 만든 해외 번역 콘텐츠입니다. 필자인 Willem-Jan Ageling은 'Serious Scrum' 설립자 겸 에디터이며, 수석 애자일 코치로 일하고 있습니다. 가치 극대화에 대한 다양한 글을 올리고 있습니다. 이번 글은 개발자를 위한 방법론인 스크럼이 왜 개발자를 괴롭히는지에 관해 설명하고 있습니다.
스크럼은 수직적인 워터폴 방법론에서 개발자들에게 자유를 안겨주려는 급진적인 움직임이었습니다. 기존 방법론과 달리 팀 스스로가 프로젝트를 지속 가능한(sustainable) 페이스로 관리하는 방법이죠. 개발자들에게는 그야말로 ‘고상한 경험(Agile Software Development with Scrum, Schwaber and Beedle, 2001)’이 되어야 하는 패러다임이었습니다.
지금 전 세계에는 “팀 단위에서 스스로 어떤 업무를 언제까지 할 건지 결정하라”라고 외치는 스크럼 트레이너, 애자일 코치, 스크럼 마스터라고 불리는 사람들이 넘쳐납니다. 하지만 스크럼 팀에 소속된 개발자들이 겪는 현실은 이상과 아주 다릅니다. 그들은 아직도 고통받고 있습니다. 사실 상당수의 개발자는 지금이 스크럼 이전 시대와 아무것도 다를 게 없다던지, 오히려 더 힘들다고 불평합니다. 왜 그럴까요? 본격적으로 스크럼이 개발자를 고통받게 하는 9가지 이유를 소개하겠습니다.
스크럼이 소프트웨어 개발 방법론의 헤게모니를 장악하기 전에는 ‘워터폴’ 방식이 통용되었습니다. 일반적으로 워터폴 프로젝트에는 상세한 장기 계획이 있고, 증가분(Increment)[1]을 검사하는 피드백 루프가 없었습니다. 보통 크런치[2] 타임은 프로젝트 막바지 몇 주 동안에만 발생했습니다.
스크럼의 초기 탄생 의도와는 아주 다르게 스크럼을 하는 팀은 훨씬 자주(거의 모든 스프린트마다) 크런치 타임을 겪고 있습니다. 최초에 스크럼은 팀이 매 스프린트마다 계획에 맞는 성과를 산출해낼 필요 없이, 목표를 달성하기 위한 최선의 방법을 찾는데 몰두하는 구조로 고안되었습니다. 하지만 이론과 다르게 현재 스크럼 팀들은 고통스러운 크런치 타임을 너무나 자주 겪고 있습니다.
제가 아는 대부분의 스크럼 팀은 스토리 포인트[3]를 사용하고, 그중 절반 이상이 어려움을 겪고 있습니다. 스토리 포인트는 기존에 시간 단위(일, 주, 월 등)로 업무량을 측정하는 어려움에서 벗어나기 위해 고안되었습니다. 물론 이것도 의도대로 되지 않고 있죠.
특히 스토리 포인트는 숫자이기 때문에 계산하기 용이한 특성이 있는데, 이 때문에 현업에서 잘못 쓰이는 경우가 많습니다. 예를 들면 스프린트에서 완료된 아이템 포인트의 합계를 의미하는 ‘속도(velocity)’는 보통 팀의 능력을 대표하는 것으로 간주하는데, 많은 복잡한 상황을 초래합니다.
첫째, 다른 팀의 속도를 비교할 수밖에 없으며, 속도가 더딘 팀은 ‘왜 낮은지’에 대해 설명해야 합니다. 스크럼을 잘 모르는 비개발자 직군은 ‘5포인트’나 ‘13포인트’ 등의 포인트 산정 기준이 다름에도 불구하고 단순히 숫자로서 다른 팀과 속도를 비교합니다.
둘째, 경영진은 속도의 향상을 요구하게 됩니다. 그럼 속도는 이제 더 이상 증가분의 기대 부가가치가 아니라 성과 측정의 주요 지표로 변질됩니다. 이에 따라 팀은 매 스프린트마다 더 많은 일을 해내려고 하게 되고, 애자일의 12가지 원칙 중 하나인 ‘단순성(안 하는 일의 양을 최대화한다)’과 멀어지게 됩니다. 아니면 성과를 부풀리기 위해서 아예 스토리 포인트를 부풀릴 수도 있습니다.
이 밖에도 스토리 포인트가 오용되는 사례가 많이 있습니다. 요점은 프로덕트 자체가 아니라 스토리 포인트가 주목을 받는 안티 패턴[4]이 되는 비정상적인 현실을 지적하는 겁니다. 스크럼에서는 업무량을 측정하는 게 중요하지 않습니다. 이론적으로는 측정을 아예 안 해도 괜찮죠. 하지만 더 빠른 속도를 원하는 매니저는 어떻게 생각할까요?
저는 스크럼 팀들이 일정에 맞춰서 산출물을 내놓는 걸 중요하게 여기는 현실이 안타깝습니다. 애초에 스크럼은 미래, 아니 매번의 스프린트에서 무슨 일이 일어날지 알 수 없는 불확실한 환경에 대응하고자 고안되었는데, 정해진 일정에 따르는 건 스크럼의 의도를 완전히 무시하는 겁니다. 또, 산출 일정을 맞추는데 급급하다 보면 꼭 필요한 일을 생략하게 됩니다. 실제로 ‘스프린트 일정을 맞추기 위해서 테스트의 일부를 건너뛰었다’는 피드백을 종종 받습니다.
다시 강조하겠습니다. 스크럼 팀은 일정에 맞춰 결과물을 산출해내는 데에 집중하는 게 아니라 스프린트 목표를 설정하고, 이를 달성하기 위한 가장 효율적인 방법을 찾는 것에 몰두해야 합니다.
팀원들을 대하는 태도가 잘못된 프로덕트 오너 역시 흔한 스트레스 요인입니다. 현업에는 개발자들에게 직접적으로 특정 업무를 지시하고, 납기일을 맞추라는 압박을 강하게 주는 프로덕트 오너들이 있습니다.
몇몇 개발자들은 프로덕트 오너(주인)라는 이름 때문인지 그들이 개발자들보다 높은 포지션이라고 오해하고는 하는데, 그렇지 않습니다. 스크럼 팀은 주도적으로 자신을 관리해야 합니다. 즉, 팀원 스스로가 어떤 일을 어떻게, 언제까지 해야 할지 정해야 합니다. 프로덕트 오너는 이런 팀의 멤버 중 하나일 뿐이고, 그들의 R&R은 프로덕트 백로그 관리입니다. 스프린트에 일어나는 일에 대해서는 개발자의 책임이기 때문에 스프린트에서 얼마만큼의 일을 하고, 목표를 어떻게 달성할 건지에 대한 결정의 주체는 프로덕트 오너가 아니라 개발자가 되어야 합니다.
개발자들에게 스크럼 이벤트는 굉장히 쓸모없는 것이 될 수 있습니다.
예시:
위의 예시들은 그냥 스크럼에서 하라고 했으니 하는, 그야말로 유명무실한 이벤트들입니다. 그리고 개발자들에게는 아래와 같은 악영향을 끼치게 됩니다.
이론적으로 모든 스크럼 이벤트에는 목적이 있지만, 실제로는 그렇지 않습니다.
스크럼 팀은 스프린트마다 정상 작동하는 최소 한 개의 증가분을 만들기 위해 노력해야 합니다. 그리고 이러한 증가분은 스프린트 리뷰에서 검수를 거쳐야 합니다. 그러나 저는 스크럼 팀의 외부 의존 관계(External Dependencies)로 인해 이런 절차가 지연되는 걸 숱하게 지켜봤고 또 경험해 왔습니다.
외부 의존성은 스크럼 팀이 어떠한 업무에 있어 팀 외부 인원에게 의존할 때 발생합니다. 이는 데이터베이스 관리자가 테이블을 변경해줘야 한다든지, 혹은 보안 담당자의 승인이 필요하거나 디자이너가 UX를 업데이트해줘야 하는 경우, 아니면 어떤 특정한 코드의 전문가인 다른 팀 개발자의 도움이 필요한 등의 상황입니다. 팀 전체가 다른 우선순위로 일하는 외부 인원을 마냥 기다리고 있어야 하는 것만큼 짜증 나는 일도 없습니다.
스크럼 팀은 이러한 외부 의존성을 최소화하기 위해서 교차 기능적(Cross functional)으로 구성되어야 하지만, 실제로는 대다수가 그렇지 못합니다.
점점 더 많은 스크럼 팀이 ‘SAFe(Scaled Agile Framework, 확장형 애자일 프레임워크)’에서 ‘릴리즈 트레인(Release Train)의’ 부품 중 하나로 전락하고 있습니다.
PI 계획(Program Increment Planning) 단계에서 스크럼 팀은 다른 팀들의 계획을 고려해서 여러 개의 스프린트를 계획해야 합니다. 다른 팀의 복잡한 상황 때문에 무슨 일이 일어날지 예상할 수 없음에도 최대한 고려해야 하죠. 이렇게 세워진 계획은 스프린트마다 팀을 괴롭히게 되지만, 그들은 어쩔 수 없이 착수하기 몇 주 혹은 몇 달 전에 브레인스토밍한 아이디어들에 따라 일할 수밖에 없습니다. 의존성이 이 정도로 복잡하게 발생하면 지속 가능한 페이스는 물 건너갔다고 봐야 합니다. 그렇기 때문에 스크럼은 SAFe의 일부가 되면 안 되지만, 이미 많은 현장에서 SAFe를 도입해버렸습니다.
개인적으로 애자일의 개념을 이해하지 못하는 외부 인원들과 일하는 게 상당히 어려웠습니다. 예전에 저는 애자일하게 최대의 아웃풋을 내자는 사명을 가진 18개의 스크럼 팀 중 하나에 속해있었습니다. 저희 스크럼 팀들은 복잡한 환경을 헤쳐 나가려면 장기 상세 계획이나 수직적인 조직 관리 모델 등의 레거시한 관행에서 벗어나야 한다고 믿었고, 주장했습니다.
하지만 경영진이나 이해관계자들은 아랑곳하지 않았습니다. 그들의 저희가 세부 계획에 반대하는 의견을 제시하거나 현업에서 배운 레슨을 공유하려고 할 때면 저희를 이해하려 하지 않거나 어떤 때는 경멸했습니다. 저희 팀들은 ‘현실 세계’를 알지 못하는 몽상가들이었습니다. 현실 세계에 있는 외부 인원들은 스크럼이나 애자일한 방법론들을 매력적이지만, 다소 나이브한 이론이라고 여겼습니다.
이 입장에 있는 개발자들은 곤경에 처하게 됩니다. 그들은 예측 불가능한 상황을 타개할 수 있는 방법을 알고 있지만, 상황을 바꿀 권한이 없습니다. 경제적 원인 등으로 현실 세계의 도움이 필요한 개발자들은 그들과 타협할 수밖에 없습니다.
스크럼은 발견 기반의 프레임워크(Discovery framework)입니다. 스크럼이 미래를 예측할 수 없는 복잡한 환경에서 사용하기 위해 고안되었기 때문에 작은 단위의 산출물을 내놓으면서 제품의 가치를 창출하는 최적의 방법을 찾는 형식의 프레임워크가 되었죠.
그러나 지금은 셀 수 없이 많은 스크럼 팀들이 프로덕트에 기능을 붙이는 것을 성공으로 여기면서 산출물을 내놓는 것에 집중하고 있습니다. 이들의 믿음과는 달리 스크럼에서 단순히 기능을 추가하는 건 성공이 아닙니다. 진정한 성공은 추가된 기능이 유저의 만족도를 증가시키거나 제품의 퍼포먼스를 향상하는 등의 부가 가치를 만드는 것입니다. 기능 추가에만 집중하는 것은 실제로는 전혀 가치를 창출하지 못하는 증가분에 헛되이 힘을 쏟거나 다시 작업 하는데 더 많은 리소스를 쏟게 만들기 때문에 개발자에게 해가 됩니다.
발견보다 산출물을 우선시하면 비효율성 때문에 개발자들이 고통을 받습니다.
스크럼이 처음 소개된 지로부터 30년이 다 되어 가지만 개발자에게 자유를 가져다주려 한 의도와 달리 아직도 개발자들에게 고통을 안겨주고 있습니다. 스크럼을 요구하는 조직 때문에 많은 개발자가 스트레스를 받는 것을 알고 있습니다. 만약 여러분의 조직이 애자일에 익숙하지 않거나, 애자일을 수용하는 분위기가 아니라면 제가 한 가지 조언을 드리겠습니다.
[1] 스프린트를 통해 완료된 기존 프로덕트에 새로 더해지는 새로운 부분.
[2] 소프트웨어 개발 마감 시한을 맞추기 위하여 수면, 영양 섭취, 위생, 기타 사회활동 등을 포기하고 연장 근무하는 것.
[3] 제품 백로그 항목 또는 기타 작업을 완전히 구현하는 데 필요한 전반적인 노력의 추정치를 표현하기 위한 측정 단위.
[4] 실제 많이 사용되지만, 비효율적이거나 비생산적인 패턴
<원문>
9 Practices that Haunt Developers Working with Scrum
위 번역글의 원 저작권은 Willem-Jan Ageling에게 있으며, 요즘IT는 해당 글로 수익을 창출하지 않습니다.