Agile 애자일

애자일 팀 그리고 그 구성원의 역할

twoslicesoftoast 2020. 10. 7. 15:53

Pixabay로부터 찾은 Anja님의 이미지입니다. 

조너선 라무스무슨이 쓴 애자일 마스터라는 책에서는 애자일 팀에 관해서 다음과 같이 이야기 하고 있다.

"스크럼이나 XP 같은 애자일 방법에는 프로젝트내에 그렇게 많은 역할이 없다. 무엇이 개발되어야 하는지 아는 사람(고객)과 그것을 직접 개발하는 사람(개발팀)만 있을뿐이다. " 세분화된 역할이 있기는 하지만 그 경계가 일반적인 프로젝트에 비해 좀 더 모호한 편이라 해야 할 것 같다. 고객가치를 실현하기 위한 자기조직화된 팀이 바로 애자일 팀이기 때문일 것이다. 

 

조너선 라무스무슨은 애자일 팀의 각 구성원의 역할을 어떻게 보는지 정리해본다.

 

애자일고객 - 프로젝트에서 모든 요구사항에 대한 정보가 흘러나오는 곳이며, 이 고객을 위해 소프트웨어를 개발한다.

XP에서는 현장고객, 스크럼에서는 제품책임자라고 칭하기도 한다.

해당 분야의 전문가, 자신의 비즈니스를 잘 파악, 필요한 소프트웨어의 요구사항을 잘 전달, 질문에 응답 및 피드백을 주며 일의 우선순위를 정하고 어떤 기능을 언제 개발할 것인지도 결정한다.

 

개발팀 -  비즈니스 애널리스트, 개발자, 테스터, 프로젝트 관리자, UX디자이너, 기술문서담당자, 데이터베이스 관리자,   그외 모든 이들 즉, 여러 기능을 지닌 기술자로 이루어진 그룹이다. 이들은 고객이 원하는 어떤 기능도 소프트웨어로 만들어 줄 수 있는 사람들이다.

 

애널리스트 - 고객이 사용자 스토리를 작성하는데 어려움을 도와주며, 과제의 세부적인 사항을 분석하고 팀이 맡은바 소임을 다하였는지 확인할 수 있어야 한다. 분석과 설계를 담당하는 역할이라 하겠다.

 

개발자 - 사용자 스토리를 제대로 작동하는 소프트웨어를 만들며, 팀원과 함께 추정치를 정하고, 기술적인 사항(도구/아키텍처, 설계, 개발실천법등)에 대한 결정을 내린다. 또한 품질을 매우 중요하게 여기는 전문가로 테스터의 역할도 함께 수행한다.

 

테스터 - 개발할 스토리의 테스트를 작성하고, 스토리가 기대한 대로 작동하는지 확인하며, 큰 맥락(탐색적테스트, 성능테스트, 보안등)에서 테스트를 생각하고 관리한다.

 

프로젝트관리자 - 프로젝트가 어떻게 진행되고 있는지 확인하고, 프로젝트의 상태(시간, 비용, 범위, 품질, 리스크)에 관해 필요한 사람들과 논의하며 프로젝트의 여러 걸림돌을 없애는 역할을 한다.

 

UX디자이너 - 여러가지 도구나 기법을 사용해서 편리한 사용자 경험을 할 수 있도록 한다. 사용자 스토리를 분석할 때도 포함되는 부분으로 페이퍼 프로토타입이나 콘셉트디자인을 만들어 낸다.

 

애자일팀은 자기조직화된 팀으로 애자일 원칙이나 철학을 이해해야 하며, 팀으로 일을 수행하는데 적합한 사람이 좋을 것이다. 그러기에 다방면에 조예가 깊은 사람이 적응이 싶다. 개발자라 한다면 프론트엔드와 백엔드의 모든 분야의 코딩을 할 수 있는 사람, 애널리스트나 테스터라면 분석이나 테스터를 모두 거부감 없이 수행이 가능한 제널럴리스트가 적합하다. 

또한 애자일 프로젝트에서는 모든 일이 깔끔하게 정리정돈(문서화) 되어 처리되지 않는다. 프로젝트 중에 뭔가 새로운 것을 발견하거나, 계획 또는 수정될 수 있기에 이에 적응할 수 있는 애매모호한 상황을 개의치 않을 수 있는 사람이어야 한다.  팀으로 행동하기에 역할이 불분명함에 있어 좋아하지 않거나, 자신의 영역을 침범당하는 것에 불편함을 느낀다면 이 또한 애자일 팀에는 적합하지 않다. 전문분야에 탁월하지만 다른 팀원들과도 이를 나누면서 함께 성장할 수 있는 팀 플레이어가 적합하다.


켄트 벡이 쓴 익스트림 프로그래밍(XP)에서 XP팀(애자일 팀)은 사람들이 몸에 줄을 묶고 빙하 위를 걸어가는데 비유하였으며 이때 자기가 선두에 서겠다고 다투는 것이 도움이 되지 않으며 옆으로 나란히 걸을 때 더 멀리 나아갈 수 있다고 말하고 있다.

 

테스터 - 개발 초기로 앞당겨져서, 시스템 기능을 구현하기 전데 먼저 시스템의 기능이 만족스럽다고 말할 수 있으려면 무엇이 필요한지 정의하고 명시하는 일을 돕는 것으로 어떤 일이 잘못될 경우 무슨 일이 일어나야 하는가를 질문하는 데 능숙한 사람

 

상호작용설계자 - 고객이 스토리를 작성하고 명료하게 만드는 일을 도우면서 고객들과 함께 일한다. 프로젝트 초기에 명세를 만드는 작업은 아주 조금 한 후, 프로젝트를 하는 내내 사용자 인터페이스를 계속 다듬는다.

 

아키텍트 - 대규모 리팩토링을 찾아 실행하고, 아키텍처를 집중 테스트하는 시스템 차원의 테스트를 작성하고, 스토리를 구현하는 일을 한다.

 

프로젝트관리자 - 팀내 의사소통이 용이하도록 하고, 고객과 공급자와 그리고 조직의 다른 부분과의 의사소통을 조정한다.

 

제품관리자 - 스토리를 작성하고, 주제와 스토리를 고르고, 스토리에서 완전하게 명세되지 않은 부분이 드러날 때 질문에 답변하는 일을 한다. 또한 우선순위를 결정하는 일을 돕는다.

 

임원 - XP팀에게 용기, 자신감, 책임감을 불어넣는다. XP팀을 후원하거나 감독, 개선을 감시, 권장, 조장하는 일을 한다.

 

테크니컬라이터 - 기능에 대한 빠른 피드백을 제공하는 것과 사용자들과 더 긴밀한 관계를 가지며 제품에 대해 배우는 일을 돕고, 그들의 반응에 귀 기울여 반영한다.  사용설명서, 참조설명서, 기술적개요, 비디오, 오디오등 여러형태로 표현된다.

 

사용자 - 스토리를 작성하고 고르는 일을 돕고 개발 중에 문제 영역에 관련된 결정을 내린다. 지금 만드는 시스템과 비슷한 시스템들에 대한 광범위한 지식과 경험을 지녔고, 시스템이 완전히 배치될 때 그것을 사용할 더 넓은 사용자 공동체와 튼튼한 관계를 맺는 사람이 가치있는 사용자다.

 

프로그래머 -  스토리와 과업을 추정하고, 스토리를 과업들로 나누고, 테스트를 작성하고, 기능을 구현하는 코드를 작성하고, 개발프로세스를 자동화하고, 시스템 설계를 점진적으로 개선한다.

 

인적자원부 - 평가와 채용에 있어 XP의 팀의 특성을 반영하여 다른 사람을 존중하며 잘어울리고 솔선수범하며 자신이 약속한 것을 지키는 사람을 가치있게 본다.

 

켄트백이 분류한 애자일팀의 구성원은 XP의 관점에서 본 구성원인데, 조금 더 어렵게 설명을 한 듯 하다. 어떠한 사람이 애자일 팀에 적합한지에 대해서는 조너선 라무스무슨이 이야기 한 것과 별반 다르지 않다. 

 

조너스라스무슨이 이야기한 애자일 고객은 켄트백이 이야기한 사용자+제품관리자와 비슷한 역할로 보인다. 조너스라스무슨은 크게 고객과 개발로 나누고, 개발의 구성원 중 개발자(켄트벡은 프로그래머, 아키텍트), 애널리스트, 테스트터, 프로젝트관리자(켄트벡의 경우 임원, 프로젝트관리자)로 간소하게 설명하고 다른 역할은 상황에 맞게 출현하며 복합적인 역할을 하는 것으로 정리하였다.  내가 느끼기에는 조너스라스무슨이 이야기한 구성원 설명이 깔끔한듯하다.  프로젝트의 크기, 리소스의 범위에 따라 변동이 있을터이니 이러한 구성원이 있음을 아는 정도면 될 것 같다.