팀 프로젝트에 관한 생각들
에자일한 팀 의사결정을 위한 방법
팀 프로젝트를 시작하면서 주제 선정을 진행됐던 여러 절차들과 논의들을 지켜보면서 들었던 생각들을 정리해보았습니다.😄
팀원 모집
가능하다면 아이디어에 대한 공감대가 확립된 팀원을 모집하는 편이 훨씬 유익합니다. 명확한 목표와 방향성이 정해져 있기 때문에 의사소통이 원활해지고 잠재적인 갈등을 줄일 수 있기 때문입니다. 그렇기 때문에 어떤 조직이나 단체에서 지원자들로 하여금 프로젝트를 진행하게끔 할때, 아이디어 피칭을 통해 아이디어를 중심으로 팀원을 모으게끔 하는 편이 훨씬 낫다고 생각합니다.
하지만 만약 아이디어보다 팀원이 먼저 모이는 경우에는 어떻게 해야할까요? 그렇다면 일단 개개인의 특성부터 파악을 하는 것이 좋습니다. 다음은 프로젝트 초반의 임시 리더가 진행할 인트로 프로그램의 플로우입니다.
- 자기소개 세션
- 프로젝트를 통해 개인이 성취하고자 하는 바. 물론 사람마다 얻고자 하는 것이 모두 다를 것입니다.
- 기술적 능력 향상
- 실무 경험
- 프로젝트 관리
- 팀워크
- 포트폴리오 강화
- 프로젝트 결과물
- 창의력 및 문제 해결력
- 아이디어 실현
- 혁신적인 솔루션
- 새로운 기술 도입
프로젝트를 진행할 때 구성원 각자가 얻고자 하는 바를 통일시킬 수는 없습니다. 그렇다고 얻고자 하는 바가 같은 사람만을 모을 수가 있을까요? 그것도 현실적으로 불가능할 것 같습니다. 왜냐하면 얻고자 하는 바가 같다고 하더라도 프로젝트의 주제나 목표에 동의할 것이라는 보장이 없기 때문입니다. 그럼에도 개인이 성취하고자 하는 바를 듣는 이유는 추후에 본인에게 조금이라도 도움이 되는 역할을 분담해주고자 위함입니다.
주제 선정
구성원들에 대한 대략적인 이해가 끝났다면 이제 본격적으로 주제를 정해야 합니다. 아래의 시나리오 옆에 적힌 시간은 유동적으로 정하면 됩니다.
- 브레인스토밍
- 개별 브레인스토밍(5분): 각자의 관심사나 강점이 충분히 반영된 아이디어를 최소 2개씩 제안하도록 한다. 이때 포스트잇에 각자의 아이디어를 적고 리더에게 제출토록 한다.
- 그룹 브레인스토밍(아이디어 당 5분): 리더는 포스트잇을 칠판에 붙여 각자가 작성한 아이디어를 공유하고, 팀 전체가 참여하는 브레인스토밍 세션을 주도한다. 이때는 활짝 펼쳐지는 모든 아이디어를 환영하고 비판을 금지한다. 창의적이고 다양한 아이디어를 모으는 것이 목표이다. 리더는 새롭게 제안된 아이디어를 포스트잇 옆에 마인드맵 형식으로 간단하게 기록해 놓는다.
- 아이디어 평가 및 정리
- 아이디어 분류(리더 재량): 브레인스토밍을 통해 활짝 펼쳐진 아이디어를 정리하고 유사한 카테고리별로 분류한다.
- 실현 가능성 평가(분류된 아이디어당 3분): 기술적, 시간적, 자원적 관점에서의 실현 가능성에 대해 이야기를 나눈다.\
- 투표 및 우선순위(리더 재량): 개인별로 아이디어에 대한 생각을 정리하고 관심 있는 아이디어에 투표(인당 2표)한다. 상위 3개 아이디어를 최종 후보군으로 선정한다.
- 최종 주제 선정
- 심층 토론(아이디어 당 10분): 투표에서 상위에 오른 아이디어들에 대해 심층 토론을 진행한다. 장단점, 기회, 위험 등을 분석한다.
- 합의 도출(리더 재량): 심층 토론을 통해 최종 주제를 합의한다. 만약 합의가 어렵다면 결선 투표를 통해 결정한다.
- 목표 및 범위 설정(리더 재량): 선택된 주제에 대해 개발 기간과 팀원들의 역량을 모두 고려하여 프로젝트의 목표와 범위를 명확히 정의한다.
- 프로토타입 및 데모 수준
- 퍼블릭 배포가 가능한 MVP 수준
- 알파/베타 테스트를 거친 프로덕트 수준
개발 로드맵 작성
주제와 목표 및 범위가 설정되었다면 구체적인 개발 로드맵을 작성해야 합니다. 여기서부터는 비대면 회의가 더 적합할 수도 있습니다. 따라서 시간 제한을 따로 두지는 않았습니다. 중요한 점은, 프로젝트 전체에 대한 이해도가 높은 PM이 각 역할별 회의에 모두 참여하여 중간에서 적절하게 조율을 해 주어야 한다는 것입니다.
- 역할 분담(전체 회의): 프론트엔드, 백엔드, 데이터, AI, 인프라 등 팀의 목표와 개인의 선호를 고려하여 역할을 분담한다.
- 기술 스택, 인프라 및 도구 선정(전체 회의): 역할별 기술 스택을 결정하고 인프라와 각종 도구(협업, 커뮤니케이션)들을 선정한다.
- 협업 및 커뮤니케이션 방식 결정:
- 깃허브 커밋 규칙 관리, 브랜치 관리 방식 등 협업 방식을 결정한다.
- 데일리 스크럼, 위클리 스크럼, 역할리드 미팅, 전체 미팅 등 회의에 관련한 사항을 결정한다.
- 협업 및 커뮤니케이션 방식 결정:
- 역할별 기능 분할 및 우선순위 설정
- 프로젝트 핵심 기능 정의(전체 회의): 프로젝트 전체를 관통하는 핵심 기능과 보조 기능을 정의한다.
- 역할별로 필요한 기능 취합(팀 회의): 핵심 기능과 보조 기능 구현을 위해 역할별로 필요한 기능들을 자유롭게 취합한다.
- 구현해야할 기능 정리(전체 회의): 최종적으로 필요한 기능들을 정리한다.
- 단계별 목표 설정
- 팀 마일스톤 설정(전체 회의): 진척도를 체크할 수 있는 마일스톤을 적절하게 설정한다.
- 역할별 마일스톤 설정(팀 회의): 팀 마일스톤을 달성하기 위한 역할별 마일스톤을 설정한다.
- 개발 로드맵 작성(전체 회의): 마일스톤을 기준으로 대략적인 개발 로드맵을 작성한다.
결론
이상의 단계를 충실히 따르면 빠른 시간 안에 모두가 만족할 만한 주제와 로드맵이 나올 수 있으리라 기대합니다. 이 방식은 검증되지는 않았지만 향후 제가 마주하게 될 여러 팀 프로젝트들에서 이 방식을 사용해보고 셀프 피드백을 반영해 놓도록 하겠습니다.😅