본문으로 바로가기
Archive for AI Study
ETC

우리팀은 어떻게 협업하는가?: 팀협업 진화기

우리팀은 어떻게 협업하는가?: 팀협업 진화기

영화리뷰 감성분류 예측프로젝트(개인프로젝트)까지는 개인프로젝트여서 협업에 대해 딱히 생각을 깊게 하진 않았다. 노션에 혼자서 할 실험들 가설세우고, 조사하고, 실험결과분석하고의 반복이었다. 프로젝트 구조도 개인프로젝트를 할때는 주피터노트북으로 진행했고(소스코드 자동화가 어려워서 이때는 사용하지 않았다.) 어려움이 없었다.

하지만 필연적으로 일을할때는 팀원들과 함께 일을해야 하기 때문에 Github를 이용한 협업은 필수이고, 노션,슬랙을 이용한 베이스캠프를 만들어서 서로의 상황과 생각을 공유하는게 중요해지는 지점이 있었다.

프로젝트 순서

개인프로젝트 → 재활용쓰레기 Object Detection프로젝트 → Segmentation프로젝트 → 최종프로젝트

재활용 쓰레기 Object Detection 프로젝트

첫 프로젝트 당시, Github에 익숙한 사람이 없었고, 어떻게 Issue를 열고 PR을 하는지조차 몰랐었다. 앙상블을 할때 각자 다른모델, 다른라이브러리, 다른 베이스라인 코드를 가지면 Variance가 클수록 성능향상폭이 크다는 멘토님의 의견에 따라서 각자 로컬환경에서 개발을 진행했다.

image 노션으로 실험테이블을 정리하긴 했지만, 서로의 환경이 아예 달라서, 재현가능성이 없었고, 중복된 실험을 하는 경우도 있었고 경우에 따라서는 중복된 실험에 대해서 상반된 결과가 나오기도 했다. 재현가능성이 없는 실험결과를 가지고 방향성을 설정하기 어려웠고, 서로가 어떤 실험을 진행하는지, 그 실험의 방법과 효과가 무엇인지, 어떤 가설을 가지고 실험하는지 소통하기가 어려웠다.

image

협업을 할때 Github를 사용하지 않았고, 마지막에 서로가 실험한 코드를 각자 Id에해당하는 폴더에 합치기만 했다..

image

배울점이 많았던 프로젝트였다. 프로젝트가 끝나고 팀회고 시간에이후 진행되는 Segmentation프로젝트에서는 github과 협업툴, 그리고 WandB를 적극적으로 활용해서 각자의 상황을 공유하고, 원활한 소통을 해야겠다고 피드백했다.

손가락뼈 Semantic Segmentation 프로젝트

지난 프로젝트에서의 재현가능성문제, 그리고 소통의 어려움을 해결하기 위해 이번 프로젝트에서는 협업툴을 적극적으로 사용하기로 했다.

  • 구체적으로 Task들마다 데드라인을 정했다. image

  • 각자 Task마다 조사한 후 서로 공유할 수 있는 WorkSpace를 만들었다. image

  • 이전과 동일하게 실험테이블에 실험 세팅을 공유해서 재현가능성을 확보했다.
  • Github에 공통된 베이스라인 코드를 가지고 실험을 했고, Configs값만 바꿔가면서 실험세팅을 바꾸어서 실험을 진행했다. image

  • WandB 프로젝트 폴더에 각자의 실험을 공유했다. WandB WorkSpace에서 구체적인 수치를 비교해볼 수 있었다. image

노션에 WorkSpace를 만들어서 서로의 의견과 가설에 대한 생각을 공유할 수 있었고, 실험 table에 실험방안을 설명해둬서 각자가 어떤 실험을 진행했고, 어떤 기법들이 효과가 있었는지 확인하기 쉬웠다. 특히 WandB에서 서로의 실험 지표를 그래프로 바로 비교해볼 수가 있어서, 어떤 실험들이 효과가 있었는지 시각적으로 확인하기 용이했다. WrapUpReport를 작성할때도 각자의 기여를 확인하고, 어떤 스토리텔링으로 실험이 진행됐는지를 알 수 있어서 최대한 자세히 WrapUpReport를 작성하다보니 원래는 10페이지 제한인데, 20페이지가 넘어갔다.. 그만큼 우리팀에서 있었던 일들과, 생각의 과정을 모두 노션에 정리하고, github으로 재현가능성을 확보하니깐 협업에 도움이 되었다.

이미지기반 카페 추천 서비스 (최종프로젝트)

최종프로젝트에서는 이전의 노션과 github기반 협업의 방식을 이어서 사용하되, 기능이 복잡해짐에 따라 더욱 견고한 협업 규칙이 필요했다. 따라서 브랜치전략이나 코드리뷰같은 협업 규칙을 정했다.

  • 무조건 Issue를 기반으로 작업. 작업을 시작할때는 어떤작업을 하는지 Issue를 작성하고, PR로 Issue를 닫기 image
  • PR을 통해 코드가 Merge되면 연결된 Issue가 자동으로 닫히도록 설정 image
  • Squash and Merge를 이용해서 기능단위로 브랜치를 만들고 Merge
  • 적어도 1명이상의 승인을 가지고 코드리뷰 image 이외에도 노션을 이용해서 적극적으로 팀차원에서 기록을 남기도록 노력했다.

  • 매일 1시간씩 회의를 하긴 하지만 무슨내용을 정확히 나눴는지 휘발되는 문제가 있어서 회의록을 매일매일 작성하고, 서로 내일까지 할일을 정했다.

image

  • 서로의 맡은 역할이 달라서, 각자 분야에 대한 소통에 어려움을 느끼고, 조사탭에다가 자신이 맡은 역할에 대한 조사를 하고 정리를 한 뒤에 회의시간에 각자 발표하는 방식으로 소통하려고 노력했다.

image

  • 각자 조사탭에 작성하기에는 너무 사소한 TODO list나 아이디어들도 공유함으로써 개인메모장을 노션에 만들어서 서로의 사소한 아이디어나 일정을 공유하려고 노력했다.

image

일련의 프로젝트를 거치면서 소통을 위한 규칙이라는게 처음에는 번거롭긴 하지만, 결국에는 오해에 쓰는 시간을 줄일 수 있었다.

비대면으로 팀프로젝트를 진행하다보니, 규칙 몇가지로 완벽한 소통이 진행되는건 아니었다. 아직도 개선할 지점이 많고, 서로 같은 용어를 말하더라도, 다르게 이해한 경우가 많았다. 그럼에도 중요한건 최대한 기록을 남기고, 서로 조율해나가는 노력을 하는게 중요한것 같다.

etc협업

Continue exploring

더 읽어보기

모든 글