오늘은 프로젝트를 진행하며 생긴 갈등을 기록하고자 합니다.
항상 팀 프로젝트 과제는 악명이 높습니다. 누군가는 의미 없다고도 하죠
그럼에도 팀 프로젝트 사라지지 않는 이유는 우리 사회가 협력을 통해 성장해왔기 때문이라 생각합니다
즉 팀 프로젝트는 일종의 사회 나가는 연습을 하는 것이죠
또한, 팀 프로젝트가 중요한 이유는 기술적인 역량보다 사람과 소통하는 능력을 키우는게 더 어렵기 때문입니다
1차 난관 : 왜 하지 않는걸까…? Feat 내 욕심
캡스톤을 시작하며 전 욕심이 있었습니다.
한 마디로 정의하면 이상적인 개발자 협업 방식을 꿈꿨습니다.
예를 들면 잘 지켜지는 커밋 규칙, 어느 정도 변동을 반영하며 일정 대로 진행 되는 개발, 최소한의 서류 작업 등이 있었습니다
하지만, 역시나 이상과 현실은 달랐습니다.
프로젝트 초-중반을 넘어가며 뭔가 상황이 잘못되어가고 있음이 느껴졌습니다
잘 작성되지 않는 Notion
Notion으로 프로젝트 일정 관리, 프로그램 설계, 자료조사, 회계 등을 정리해서 아카이빙하려 했습니다.
실시간으로 협업 가능, 쉬운 페이지 공유와 팀원 모두가 사용해 본 적 있는 툴이기에 사용 안 할 이유가 없었습니다.
일단 제가 임의로 Notion 페이지를 만들고, 프론트와 백엔드, 일정 등을 추가하여, 회의 시간에 사용법을 알려주고 페이지에 초대하였습니다
기록하는 것이 일이 되게 하고 싶지 않아, 백엔드/프론트 각자 맡은 부분의 페이지에 대해서는 자유롭게 사용하도록 했고, 사용 페이지도 최소화하였습니다
하지만, 프로젝트 초반 설계 당시에는 그럭저럭 의도한 대로 사용 되었지만, 어느 순간부터 제가 사용하지 않으면, 아무도 사용하지 않는 공간이 되었습니다
잘 사용 되지 않는 Github
이번 캡스톤에서 저는 PM을 맡았습니다.
제가 프로젝트 진행 상황을 확인한 방식은 Commit과 PR 기록이었습니다.
하지만, Commit과 PR이 올라오지 않았고, 혹시나해서 다른 브랜치들을 확인했음에도 기록이 남아있지 않았습니다
심지어 한 팀원은 한 달이 지났음에도 레퍼지터리에 Collaborator로 뜨지 않아 보니, 초대 링크를 수락하지도 않았습니다
1차 대응 : 만남 시간 증가 및 협업 툴 축소
3월에 프로젝트를 시작한 후 저희 팀은 주 1회 정도 만나 진행 상황을 보고하고, 할 일을 체크하는 시간을 가졌습니다.
중간고사 전후로 각자 일정 차이로 만나지 못한 주가 있었지만, 그래도 카톡으로 소통하였습니다
또한, 회의를 할 때면, 다들 적극적으로 의견을 내고 대화가 잘 되었다 생각했습니다
하지만, 결과적으로 일정 대로 개발은 진행 되지 않았습니다.
어느날, 새벽까지 개발하다가 왠지 제 Commit으로만 채워진 history를 보며 혼자 개발하고 있다는 인상을 받았습니다
가만히 연구실에 앉아서, 무엇이 문제일까? 생각하는 시간을 가졌습니다
만나면 다들 적극적인거 같은데, 왜 헤어지면 개발을 하지 않는걸까?
다들 바쁜가? 그래도 캡스톤이면 중요한 수업인데 내가 모르는 무언가가 있나?
여러가지 생각이 스쳐지나갔습니다
그러다, Notion과 Commit 메세지를 작성하는게 무거운 일이었을수도 있겠다 생각이 들었습니다.
한편으로는 그렇게 힘든 일은 아니지 않나…?란 생각도 있었습니다
그렇다면 현업에서는 어떻게 할까? 협업을 위한 툴이 협업을 하지 못하게 할 땐 어떻게 해야하나 궁금해 캡스톤 멘토님께 여쭤보았습니다
멘토님께서는 효율적인 협업 방식은 개개인의 성격에 따라 다르기 때문에 소통의 선을 열어두고 변화에 유연하게 대응하는 것이 중요하다.
Notion과 같은 도구는 유용할 수 있지만 지나치게 복잡하고 불필요한 작업을 생성하지 않도록 주의하라 피드백을 주셨습니다
멘토님의 피드백을 토대로, 현재 우리 팀의 상황을 파악하였습니다.
- Commit을 올리지 않는 팀원은 개발과 협업 툴 경험이 적어 사용에 어려움을 겪고 있었습니다
- 개발 진척이 없었던 이유는 코드 병합 때 발생한 에러를 해결하는데 어려움을 겪고 있었기 때문입니다
- 백엔드에서 API 개발까지 끝나, 프론트 개발에 제가 합류한게 오히려 혼란을 야기하였습니다
- 대화 결과, 팀원들은 혼자보다 만나서 함께 할 때 생산성이 높아지는 스타일이었습니다
팀 내 상황을 토대로, 다음과 같이 프로젝트 진행 방법을 바꾸었습니다
- 주 1회 만나서 회의 ➡️ 주 2-3회 만나서 회의&개발
- Notion과 Github ➡️ Github에서 모든 프로젝트 관리와 진행 사항 기록
확실히 변화는 있었습니다.
이전보다 빠르게 에러 해결이 되니, 개발 진행도 빨라졌고,
GIthub만 사용하니 저 또한, 집중이 분산 되지 않고, 팀원들의 현재 상황을 빠르게 파악 할 수 있었습니다…!
2차 난관 : 읽을 수 없는 코드와 PR
나름 착착 프로젝트가 진행되며, 드디어 백엔드와 프론트엔드 결합을 하고 있습니다
프로젝트 초기에 Prettier로 Lint, Github Actions으로 CI를 구성했던게 드디어 빛을 발하는거 같아 뿌듯했습니다
저희 프로젝트에서는 채팅과 WebRTC 화상 채팅 서비스를 제공합니다.
제가 WebRTC, 다른 팀원이 채팅 기능을 담당해서 구현을 하였습니다.
시나리오상 채팅이 선행되니, 팀원의 먼저 만든 코드를 넘겨 받아 기능을 구현하게 되었습니다.
그런데, socket 통신하는 방법 등을 서로 합의하지 않고, 구현이 끝나고 합치려하니 쉽지 않았습니다
게다가, PR과 작성한 Code가 어떤 기능과 역할을 수행하는지 알 수 없었습니다.
Pull Request
무언가 열심히 만들었고 동작 하는 것을 회의 때 보았지만, 로직이랑 진행 과정을 파악하고자 PR을 봤더니 무엇이 변하였는지 알 수 없었습니다
이해 하기 어려운 변수명 (temp, tmp, user_list와 user_list_f)
특히, 변수명이 temp,tmp에 타입이 any로 되어 있어서, 코드를 이해하기 어려웠습니다.
let tmp를 선언해 사용하고, 다른 데이터를 tmp에 재 할당해서 사용하는 흐름도 있어 파악이 쉽지 않았습니다
그래도, GPT와 함께 리팩토링을 하면서 개발을 하기 시작했고, 팀원들에게는 webRTC 관련 기능을 완성하는데 시간이 더 걸릴거 같다 알렸습니다
이 때, 채팅 기능을 만든 팀원이 "리팩토링을 하면서 만드니까 시간이 더 걸리는 것이 아니냐"라 질문을 하였습니다
그 말을 듣자, 그간 쌓여온 짜증에 제가 어려움을 느끼는 이유를 말했습니다
어찌어찌 상황을 정리하고 헤어졌는데, 더 무언가 할 의욕도 사라져 일찍 잠들었습니다
2차 대응 : 사과 그리고 변화
이틀 후, 채팅 기능 개발한 친구를 만나 먼저 사과를 하였습니다
그 내용을 요약하면 아래와 같습니다
- 누군가의 시간과 노력을 들인 결과에 대해 말할 땐 조심했어야 했다
- 프로젝트 현 상황에 대해 화를 내진 않았지만, 불쾌한 감정을 드러내 팀 내 분위기를 망가뜨렸다
사과를 한 이유는 다음과 같습니다.
- 제 목표는 무사히 프로젝트 완료하는 것입니다
- 상대방의 노력을 인정하고, 내 부족함 또한 솔직하게 말한다면 우리 팀이 변화 할 수 있을거라 생각했습니다
또한, 제가 화난 이유를 돌아 봤을 때, 제 실력 부족도 포함 되어 있었기 때문입니다.
제가 프로젝트 관리를 할 때 미리 데이터 주고 받는 것에 대해 이야기를 하고, 중간 중간 꾸준히 진행 상황을 확인해야 했는데 그러지 않았습니다
남은 프로젝트 기간을 감안했을 때 제 실력으로 커버를 칠 수 없을거란 판단에 더 민감하게 반응했던거 같아 부끄러웠습니다
결론적으로 솔직하게 제 부족함과 요구사항(변수명 변경과 주석 달기)를 말하였고,부드럽게 상황은 종료가 되었습니다
또한,친구는 대화가 끝나자 제가 요구한 수정 사항을 모두 반영해 주었습니다
결론 : 🐥 병아리 개발자는 갈 길이 멀다
프로젝트를 진행하며 제 부족함을 많이 느끼고 있습니다
제가 이번 갈등을 겪으며 느낀점은 아래와 같습니다
현재 내게 부족한 점
- 팀원들에게 Why를 부여하는 능력, 예를 들어 왜 Commit 규칙 지키고, 왜 기록해야하는지 등의 동기부여가 부족했음을 느낍니다
- 적절한 협업 방식과 팀 운영 방법, Github과 협업이 익숙하지 않은 팀원에게 github issue, commit, PR 메시지 작성과 Notion 등을 기록하는 것을 오버 엔지니어링이었을 수도 있습니다
앞으로도 변하지 않을 점
- 내 부족함과 실수를 내 입으로 말할 줄 아는 사람, 더 큰 책임을 짊어진 상황에서도 똑같이 행동할 줄 알아야하고 말이죠
- 이해 되지 않는 상황이 왔을 때 소통을 할 줄 아는 사람
- 내 부족함을 남 탓하지 않는 사람
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'프로젝트 > 사이드 프로젝트' 카테고리의 다른 글
🐥 카카오테크캠퍼스 - 2단계 1주차 강의 (0) | 2023.06.26 |
---|---|
BlindTok (4) - Entity와 Service를 너머 API까지 (0) | 2023.05.08 |
BlindTok (3) - DB 연결 및 테이블 설계 (0) | 2023.04.05 |
BlindTok (2) - 프로젝트 CI 구성 (0) | 2023.03.31 |
BlindTok (1) - 프로젝트 초기 세팅 (0) | 2023.03.29 |