오늘 대구소프트웨어마이스터고등학교에서 넥슨 옥찬호(Chris Ohk) 개발자님의 특강을 들었다.
아래는 특강을 들으며 들은 내용을 정리한 글이다.
우리의 프로젝트가 실패하는 이유
- 정의되지 않거나 잘못 정의된 목표
- 알 수 없는 자원 할당
- 동상이몽 팀원들
- 모든 일을 혼자 해결하려는 시도
- 갈팡질팡한 프로젝트 관리
위 목차들을 순서대로 살펴볼 것이다.
정의되지 않거나 잘못 정의된 목표
프로젝트 목표 = 수행할 작업과 수행하지 않을 작업을 정의하는 영역.
어떤 일을 해야 하는지, 어떤 일을 하지 않아야 하는지.
프로젝트 목표를 정의하지 않거나 잘못 정의할 경우 팀원이 프로젝트의 방향성을 이해하지 못한다.
프로젝트를 실패하지 않게 하기 위해 아래와 같이 목표를 잘 정의해야 함
- 단계와 태스크
- 높은 수준의 요구 사항, 소비량, 의존성 및 제약 조건
- 이정표 및 의사 결정 지점이 있는 프로젝트 일정표 (이정표를 넉넉하게 잡는 것이 좋음)
- 프로젝트 팀이 수행하지 않을 작업들 가지치기 (목표를 이루기 전에는 부가적인 기능은 잘라내는 게 좋음)
알 수 없는 자원 할당
프로젝트에서 가장 중요한 부분은 자원이다. (프로젝트에서의 가장 중요한 자원은 팀원이다.)
프로젝트를 잘 실행할 지식과 기술을 가진 사람들을 신중하게 선택해야 한다.
학연과 지연을 통해 친한 친구와 같이 프로젝트와 본격화되면, 친구가 배정된 역할에 필요한 기술이 부족하다는 것을 알게 되고, 할당된 작업을 수행할 수 있는 다른 팀원을 찾아야 한다. 결국 시간도 비용도 낭비하게 된다.
프로젝트 팀원을 선택할 때 다음을 고려해야 한다.
- 프로젝트에 필요한 작업과 기술을 문서화 (어떤 작업, 기술 등을 기록하면 어떤 팀원을 찾을지 명확)
- 뛰어난 커뮤니케이션 기술과 팀 지향적 성격을 우선시하기 (IT 기술보다는 소통 기술이 좀 더 중요)
- 다른 친구들에게 적합한 팀원을 추천받는 것도 좋음
- 필요하다면 포트폴리오를 받아 확인하고 시나리오 기반 인터뷰를 진행함
동상이몽 팀원들
프로젝트를 더 좋게 만들고 싶은 마음은 팀원들 모두 똑같지만, '어떻게 좋게 만들 것인가'에 대한 생각은 다를 수 있다.
일정 주기마다 팀원 모두가 모여 프로젝트 진행 상황을 공유하고 앞으로 할 일을 논의하자.
질문이 있거나 논의하고 싶은 내용이 있을 때마다 언제라도 협의할 수 있는 공간을 마련하자. (ex. 슬랙, 디스코드 등)
모든 일을 혼자 해결하려는 시도
프로젝트 리더는 프로젝트가 문제 없이 잘 수행되기를 바랄 것이다.
그러나 사용자의 피드백이 있을 경우, 정보를 공유할 책임이 있다.
이를 공유하지 않는다면, 팀원들은 프로젝트가 위험에 처해 있는지 알 수 없게 되고, 결국 문제를 해결하기 위해 아무것도 할 수 없다.
개방된 커뮤니케이션을 통해 프로젝트의 실패를 방지할 수 있다.
- 일일 또는 주간 회의
- 사용자의 피드백을 정리해 메일로 전달
- 피드백 내용에 따라 역할 분담
갈팡질팡한 프로젝트 관리
성공적인 프로젝트를 위해서는 프로젝트 관리(코드 관리)에 최선을 다해야 한다.
프로젝트가 잘 유지되고 있는지 어떻게 판단할까?
- 프로젝트가 잘 빌드되는가? (빌드가 잘 되는 것, 굉장히 중요)
- 꾸준히 커밋이 되고 있는가?
- 프로젝트의 코드 스타일에 일관성이 있는가?
- 프로젝트의 코드 품질은 잘 관리되고 있는가?
- 프로젝트를 사용하기 위한 문서가 있는가?
프로젝트 관리의 기준선
- 서비스할 여러 플랫폼에서 빌드가 안되면 머지(merge) 불가능
- 코드 품질이 일정 수준을 만족하지 않으면 머지(merge) 불가능
- 테스트 커버리지를 충족하지 못하면 머지(merge) 불가능
- 코드 리뷰를 거치지 않으면 머지(merge) 불가능
안그래도 요즘 친구들과 프로젝트를 계획하고 있었는데, 시기적절하게 도움이 많이 된 특강이었다.
옥찬호 개발자님께 감사의 마음을 표한다.