[국비교육 자바JAVA 팀프로젝트]3. 깃허브와 구글드라이브로 팀프로젝트하기2, 팀장의 시행착오

깃허브와 구글드라이브로 팀프로젝트하기

깃허브를 적극 활용하여 팀프로젝트에 열심히 적목시키고 있다. 나는 참 인복이 좋아서 좋은 팀원들을 만났다.
다들 적극적으로 협업도구를 이용하고 있다. 가장 많이 사용하는 건 카카오톡이 아니라 의외로 깃헙이다.
산발적인 정보들과 아이디어들을 깃헙 위키에 모아놓으니까 팀원들도 알아서 위키를 가장 많이 찾는 것 같아 참 뿌듯하다.

카카오톡은 투표용도로 주로 사용한다. 회의일정이라든지 의견이 나뉘는 결정사항이 있을때 투표를 통해 다수결의 제안을 받아들이고 협력하고 있다.
자신의 의견이 확고한 경우 찾아온 ref를 공유하고 팀원들을 설득하여 서로 성장하는 방향으로 회의를 진행하고 있다.
팀원들이 좋은 회의 분위기를 만들어줘서 서로 자신의 의견도 자유롭게 얘기하는 모습이 참 좋다.
팀프로젝트가 잘 진행될 것 같은 좋은 예감이 든다.

  • 주로 사용하는 도구
    1. 깃헙 레포 위키
      • 모든 공지사항
      • 프로젝트 일정확인
      • 회의록을 작성하여 회의 내용 기록
    2. 구글드라이브 공유폴더
      • DB테이블이나 스토리보드등을 공유하고 댓글과 글작성으로 바로바로 소통하며 업무 진행
    3. 카카오톡 오픈채팅방
      • 익명투표




프로젝트 일정

처음의 목표와 크게 달라지지않았지만 조금 일정이 바뀌고 뒤로 밀려졌다.
포스팅을 작성하고 있는 지금 도메인별 기능 분배까지 완료한 상태이다.

  1. 킥오프 회의 => 10/14 수
  2. 팀플 주제 선정 => 10/15 목
  3. 강사님 컨펌 => 10/15 목
  4. 피드백반영 회의 => 10/15 목
  5. 최종 주제 선정 => 10/15 목
  6. CSS 템플릿 투표로 결정 => 10/16 금
  7. 게시판레이아웃, 기능정리, 각자 DB테이블짜기 => 10/17 ~ 10/18 (주말동안)
  8. DB테이블생성 => 10/19 ~ 10/21 수
  9. 도메인별 기능 분배 => 10/21 수
  10. 각 팀별 기능구현(수시로 기능 통합) => 10/21 수 ~ 11/8 일 (3주)
  11. 최종 테스트 후 버그 수정 & 발표PPT제작 => 11/9 월 ~ 11/15 일
  12. 발표 => 11/17 화




팀장의 시행착오

팀원들과 윈윈하는 프로젝트를 만들기위해서 참 많은 생각과 노력을 하고 있다.
나는 내가 만약 팀장급이 된다면 똑똑하게 회의를 할 것이라고 다짐해왔다.
정말 비효율적인 회의를 싹 다 버리고 싶었다. 특히 종이들고 하는 회의들… 바로바로 기록하고 바로 찾아보는 회의가 좋다. 서로의 시간을 버리는 회의를 하고 싶지 않았다.
혹자는 머리를 맞대고 얘기하다보면 좋은 결과물이 나올 수 있다고 얘기하지만 그건 이 spring프로젝트에서만큼은 절대 아니다.
각자의 의견이 있는 상태에서 이야기를 나눠야 좋은 결과물이 나오는 거지 프로젝트가 어떻게 흘러가는지도 모르고 이번 회의의 목표도 모르는 상태에서 회의를 한다는 건 아무 생각없이 앉아있는 것과 다를 바가 없다.
내가 생각하는 회의란 이미 자신의 생각이 있는 상태(스스로 정보찾기가 완료된 상태)에서 서로의 생각을 공유하며 시야를 확장하며 결정사항들을 완료하는 시간이다.

이를 위해 여러 시행착오가 있었다.

  1. 첫 시행착오 : CSS 템블릿 찾아오기
    • 과정 : 팀원 전체에게 각자 CSS 템플릿을 찾아보자고했다.
    • 아쉬운 점 : 8개 템플릿의 소스코드를 검토하는 데만 상당한 시간이 소요되었다.
    • 배운 점 : 페어를 정해서 CSS템플릿 찾아오기를 했다면 페어끼리 서로 의견을 합치게되고 좋은 의견이 있는 4개의 템플릿후보만 검토하면 되었을 것이다. 앞으로는 페어끼리 서로의 의견을 먼저 합친 후에 팀 전체회의를 진행해야겠다. 그렇게되면 8개가 아닌 4가지 안건 중에 결정하는 회의가 되니 효율적인 회의를 할 수 있다.
  2. 두번째 시행착오 : 페어팀끼리 프로젝트에서 해보고싶은 기능과 필요한 기능을 정해오기
    • 과정 : 지난 과오를 깨닫고 이번에는 페어팀끼리 프로젝트에서 해보고싶은 기능과 필요한 기능을 ref와 함께 찾아보자고 했다. 그리고 전체회의 전 다른 페어팀의 결과물을 읽어보고 회의에 참석해달라고 요청했다.
    • 아쉬운 점 : 각자 PPT결과물을 가지고 발표하는 시간을 가졌는데 굉장히 많은 시간이 소요되었다. 모든 페어팀발표가 끝나기 전에 다른 방법의 회의를 진행했다.
    • 해결과정 : 팀장인 내가 시간을 따로 들여서 서로 이견이 있는 기능 7가지를 추려서 해당 7가지 기능을 결정하는 데 나머지 시간을 사용했다. 추가로 해보고싶은 기능들은 다수결을 통해 정했다. 준비해온 페어팀들을 위해 각자 발표할 시간을 주었어야 했을까 의문이 남는다.
  3. 세번째 시행착오 : 기능배분이 먼저인지 DB생성이 먼저인지
    • 과정 : 기능배분 후 각 기능을 담당한 페어끼리 DB생성과 뷰까지 함께 진행하면 된다고 생각했다. 하지만 그건 오산이었다…
    • 해결방법 : 강사님들에게 조언을 구한 뒤 DB전체 테이블 작성이 우선순위인 걸 깨닫고 다같이 추가 회의를 진행했다.
    • 배운 점 : 혼자할 때는 뭘 먼저 시작해도 항상 해결할 수 있었는데 8명이 같이 하는 프로젝트이다보니 서로 헷갈리지않게 뭘 하든 순서가 필요했다. 기능배분이 아니라 DB설계가 먼저이다. 어차피 기능구현에 시간이 많이 걸리므로 기능 배분먼저 하고 싶었던 나의 마음은 큰 욕심이었다. 또 하나 배웠다.

앞으로도 수많은 시행착오가 있을 것이지만 그 속에서 웃음을 잃지않고 많은 것을 배우고 싶다.
어차피 할 거 재미있게 해야지!




주제 재선정

그 사이에 토론을 통해 주제를 재선정했다.
기존에는 중고쇼핑몰플랫폼을 하려고 했으나 더 많은 기능을 개발할 수 있는 중고경매플랫폼으로 변경했다.
그러면서 서로 가지고 있는 경매에 대한 생각이 달라서 그 부분을 한방향으로 모으느라 애를 먹었다.
지속적으로 의사소통하면서 이견이 생기지않게 조율해야겠다.




파트장 정하기

강사님이 파트장이 있으면 원할한 팀프로젝트 진행이 가능하다고 하셨다.
이에 내가 생각하는 파트장의 역할과 권한을 추가 기재하여 총 세 파트의 파트장을 정하였다.

1
2
3
4
// 위키에 공유한 파트장 역할과 권한

파트장 역할 : 각자 구현된 기능들을 원활하게 통합하도록 전체 프로젝트의 흐름과 코드흐름을 조망하고 통제할 수 있습니다.
파트장 권한 : 팀원들은 변수명이나 이전 소스코드를 변경시 파트장과 꼭 의논 후 진행해야합니다.

하고싶은 사람이나 추천하고싶은 사람 이야기가 오고갔으나 아무도 나서지않아서…. 결국 익명투표를 진행했다.
다들 잘 모른다면서 하기싫은 눈치였다. 우리 모두 다른 분야에서 국비지원을 통해 자바개발자로 취업하려고 모였으니 모두에게 처음인건 당연한건데도 말이다.
개인프로젝트발표가 끝난 뒤라 개인프로젝트결과물을 보고 나는 소신투표했다!ㅋㅋㅋㅋ
나는 컨트롤러파트장을 맡게되었다.
팀장으로서 혼자서 고민했던 부분을 이제 파트장들과 함께 고민하게 되어 든든하다.

  • 컨트롤러파트장 : 나!
  • 뷰파트장 : 비밀
  • DB파트장 : 비밀




기능분배

가장 골머리를 썩이고 있는 것은 바로 기능 분배였다. 다들 자기가 개발하고싶은 기능을 분배받으면 가장 좋겠지만 그 실상은 꽤나 복잡하다.

  • 서로 하고싶은 기능이 같은 경우와 서로 기피하는 기능은 도대체 누가 할 것이냐?!

이거 하나로 감정이 확 상할 수 있기때문에 신중해야하는 문제이다.
나는 모두가 윈윈하는 프로젝트를 만들고 싶었으므로 정말 많이 고민했다가 일일이 모든 팀원들에게 다가가 고민을 털어놓아보았다. 그럼에도 불구하고 이거 하는 방법이 없어 강사님을 찾아가 조언을 부탁드렸다.
강사님이 들어보시더니 도메인별로 하는 것이 좋겠다고 하셨다.
일단 프로젝트 일정이 촉박한 편이니 우선순위 기능부터 구현하라고 하셨다.
그걸 기준으로 팀원들과 회의를 통해 아래처럼 개별 개발가능한 도메인별 기능들을 나누어보았다.

1
2
3
4
5
6
7
8
9
10
<개별 개발가능한 도메인별 기능분배>

(1순위)플젝설정+회원가입, 로그인 => 1페어
내경매게시판 경매등록/수정게시판 => 1페어
고객센터게시판 => 1페어
결제게시판 => 1페어

--- 그 다음
마이페이지(회원정보수정/탈퇴/관심상품)
기타 기능 등등

이렇게 의견을 모은 뒤 누가 어떤 기능을 담당할 것인지 의견을 말해보았다.
다들 경매게시판을 하고 싶어했다. 물론 나포함 ㅋㅋㅋㅋㅋ 경매기능이 우리 프로젝트의 핵심기능이니까.
파트장은 되기 싫지만 핵심기능은 만들고싶다는 사람들의 묘한 심리….

꽤 긴 회의를 통해 결국 사다리타기를 하였고ㅋㅋㅋㅋ 누군가의 환호 또 누군가의 한숨이 뒤섞인 회의를 끝으로 각자 기능 개발을 시작할 수 있었다.




팀장의 고민

  • 어떻게 하면 수업끝나고 남아서 회의하는 시간을 줄일 수 있을까…?
  • 의문사항이 생겼을때 정리하여 카톡을 통해 공유하고 결정하면 남아서하는 회의 시간을 축소할 수 있지않을까?