Week 1 과제 후기
나는 멘토링을 받으며 주로 혼자 학습해왔는데,
프리온보딩 코스에서 처음으로 2명이 넘는 인원의 팀 프로젝트에 참여하게 되었다.
1주차 과제 내용과 우리 팀이 과제를 어떻게 진행했는지, 팀 프로젝트를 하며 어떤 점이 어려웠는지를 적어보려고 한다.
과제 내용
프리온보딩 코스를 신청할 때 사전과제로 제출했던 투두리스트를 바탕으로, 팀원들과 토론하고 best practice를 만드는 것이 첫 번째 과제였다.
처음에는 어떤 식으로 진행해야 할지 감이 잡히지 않아서 막막했다.
팀원들과 본격적으로 회의를 하기 전에 출제자의 의도가 무엇일지 생각해 보았다.
멘토님이 강의에서 강조해 얘기하셨듯이, 동료학습을 해보라는 목적에서 이런 과제를 내주셨다고 판단했다.
과제 진행 방식
1. 환경 구축
우선 협업하기 위해 필요한 환경을 구축했다.
회의를 진행하고 메인 소통 창구가 되어줄 디스코드 서버 생성, 깃허브 organization 생성 및 초대, 팀 노션 페이지 공유 등을 진행했다.
추가로 개발할 때 필요한 eslint, prettier, husky 세팅과
깃허브로 소통하기 위해 필요한 커밋 메시지 컨벤션을 정했다.
2. 코드 리뷰 및 토론
과제가 각자의 작업물을 바탕으로 토론하며 진행되어야 해서, 서로의 코드를 리뷰하는 시간을 가졌다.
각자의 코드에서 중요하다고 생각한 점을 찝어 노션에 문서로 정리했다.
서로 돌아가며 자신의 코드를 설명하고, 베스트 방법 선정 논의 주제는 과제 수행 시 나누어진 5개의 주제로 정했다.
한 명의 코드를 베이스로 진행하기 보다 모두가 생각하는 최적의 방향을 도출하고자 했다.
3. 업무 분담
팀원들과 논의를 마치고 베스트 방법을 선정한 후에는 본격적인 업무 분담과 코드 작성이 기다리고 있다.
나는 이 부분이 가장 어려웠다.
7명의 인원이 빠짐없이 참여하면서 적절하게 태스크를 분배하기 위해선 어떤 방법이 있었을까?
이 파트에서 우리의 프로젝트가 꼬이기 시작했음을 알아챘어야 했다는 아쉬움이 남는다.
- 한 사람이 각잡고 전체 코드를 작업한다
- 태스크를 잘게 나눠 여럿이서 각자의 역할을 한다
- 비즈니스 로직 구현, CSS 스타일링, PM, 리드미 작성, 브랜치 관리, 배포 등 파트별로 나눈다
그 외에도 몇 가지 방법이 있었을 것이다.
우리 팀은 두 번째 방법을 선택했다.
모두가 참여해 자신의 몫을 해낸다는 취지는 좋았으나, 그러려면 일정이 타이트하게 관리되었어야 가능하지 않았을까 하는 생각이 들었다.
하나의 작업이 끝나야 다른 파트에서 앞의 코드를 바탕으로 작업할 수 있는데, 동시다발적으로 진행되다 보니 굉장히 복잡해졌다.
동시에 같은 파일을 작업하거나 코드 충돌이 발생하는 경우가 잦았다.
협업 경험이 많지 않은 신입 입장에서는 conflict가 뜰 때마다 심장이 철렁 내려앉는다.
깃허브에 익숙하지 않으면 더욱 해결하는데 어려움을 겪을 수밖에 없었다.
4. 브랜치, PR 이용해 협업하기
각자의 맡은 부분을 브랜치를 따서 작업하고 1명 이상의 승인을 받아야 머지할 수 있도록 설정해 놓았다.
서로의 코드를 리뷰하면서 협업의 재미를 느끼기도 했다.
특히 각자 담당한 코드를 머지하면서 일종의 희열이나 짜릿함도 느껴졌다. '팀에 기여한다'는 느낌이 주는 매력이 있는 듯하다.
혼자 코딩할 때보다 책임감도 훨씬 커졌다.
팀 전체가 PR 과정에 적응하려면 조금 맞춰가는 시간은 필요할 것 같다.
5. 프로젝트 마무리
우여곡절 끝에 어느정도 마무리가 되었다.
서툴고 부족한 부분이 많이 남아서 아쉬웠다.
팀 프로젝트는 혼자서만 열심히 한다고 모든 것이 해결되지 않는다.
동료들과 협업하고 같이 일하며 배우는 데에 의의가 있다.
처음 해본 팀 프로젝트였고 잘 하고 싶었지만 아쉬움이 남아서 다른 팀의 결과물을 보며 주눅들기도 했는데,
이런 때일수록 어떻게 개선하고 발전하면 좋을지 전략을 잘 세우고 배우는 자세가 필요하다고 마음을 다잡았다.
다른 팀의 과제 레파지토리를 분석하며 어떤 점을 잘 했는지, 어떤 점이 벤치마킹하면 좋을지 참고했다.
디렉토리 구조는 어떻게 짰으며 깃허브 관리가 어떻게 되었는지, 특히 우리 팀이 어려움을 겪었던 업무 분담과 PR은 어떻게 진행했는지를 중점으로 보았다.
어려웠던 점
위에서도 적었지만 어려움을 크게 느낀 포인트를 몇 가지 짚고 넘어가려고 한다.
1. 업무 분담
2. 깃허브로 협업하기
3. 스케줄 관리
깃허브는 일종의 예상치 못한 복병이었다.
혼자 혹은 둘 정도가 참여하는 프로젝트는 문제가 없었지만, 여러명이서 작업하는 것은 훨씬 어려웠다.
깃 이슈가 해결되지 않아 프로젝트를 지우고 새로 다운받아야 하는 경우도 있었고 수많은 컨플릭트에서 정신이 혼미해졌었다.
다른 팀원이 작업 중인지 꼭 물어보고 확인을 해야 하는 것,
본인 pr은 되도록 본인이 머지할 것,
스쿼시 머지를 해야하는 이유,
코드 리뷰를 꼼꼼히 할 것 등 협업하며 지켜야 할 규칙도 실전으로 깨우치게 되었다.
스케줄 관리는 팀원이 모두 같은 시간에 코딩을 할 수 있는 것이 아니기에 여럿의 스케줄을 조율해야 한다는 점이 어려웠다.
친구들과도 3명 이상 모이려면 약속잡기 힘든데 더 많은 사람이 참여하는 팀 프로젝트는 더 어려운 것이 어찌보면 당연하다.
얼굴도 모르는 사람들과 비자발적으로 꾸려진 팀이기에 아직 어색하기도 하고, 각자의 코딩 스타일과 실력도 배경 지식도 모두 다르다.
그렇기에 이 부분도 앞으로 맞춰나가면 나아질 거라고 생각한다.
좋았던 점
아쉬움이 남은 첫 프로젝트라고 했지만 나쁜 점만 있는 것은 아니다.
긍정적이라고 느꼈던 점도 적어보려 한다.
1. 지식 공유
우리 팀에는 PR 올리기, 브랜치로 작업하기 등을 경험해보지 않은 팀원분들이 계셨다.
나도 얼마 전까지는 너무 너무 어려워하던 개념이었다.
추상적이게 느껴져서 설명만 들어서는 와닿지도 않았다.
프로젝트를 시작하기 전에 이런 깃 사용법을 모르는 팀원분들께 화면 공유를 하며 PR 사용법을 알려드렸다.
'감히 내 주제에 누굴 가르치나'하는 왠지 모를 죄송스러움(?)도 들었고,
남들은 베이스로 알고있는 지식을 나만 혼자 모를 때 드는 그 망망대해에 버려진 느낌을 나도 너무나 잘 알기에 최대한 알려드리고 싶었다.
나도 멘토링을 받으면서, 첫 회사를 다니면서 사수와 팀원분들께 많은 가르침을 받았기에 그 배움이 얼마나 소중한지 알고 있다.
남에게 지식을 전달할 때는 혼자 알고있는 것보다 더 확실히 공부를 해야한다. 잘못된 지식은 무섭기 때문이다.
우리 팀은 서로 자신이 알고 있는 좋은 강의나 문서를 공유하며 배우고자 하는 의욕이 있는 분들이 계셨다.
독학을 해오던 나에게 값진 시간이었다.
2. 벤치마킹
팀 프로젝트는 팀 내부에서 배우는 것도 있지만, 다른 팀은 어떻게 진행하는지를 배울 수도 있다.
다른 팀의 결과물에는 우리 팀이 어려움을 겪었던 부분을 개선하게 해줄 실마리가 있기도 하다.
우선 PR을 이용하는데 능숙함이 떨어져 협업이 어려웠던 부분은 'PR을 사용하지 않고 메인에서 커밋한 팀'에서 힌트를 얻었다.
다른 팀이 무조건 정답이라는 것은 아니지만, 순차적으로 작업을 하는 경우에 브랜치 이용이 번거로워 시간이 촉박하다면 한명이 메인에서 바로 작업하는 경우도 하나의 답이 될 수 있을 것이다.
타입스크립트를 잘 모르는 팀원들도 있었다. 나도 타입스크립트를 배우며 어려움을 느꼈기에(현재 진행형이기도 하다) TS를 아예 몰랐다면 팀 프로젝트를 할 때 남들보다 어려움이 컸을 것이다.
이는 타입스크립트가 아닌 자바스크립트 만을 사용한 팀이 5-6팀이나 있었다는 점에서 우리 팀만의 걱정이 아니었음을 알게 되었다.
사전과제에 타입스크립트가 필수라거나 하는 얘기는 없었기에 자바스크립트만 사용할 줄 아는 참가자도 있었을지 모른다. 이런 팀들은 원활한 소통을 위해 자바스크립트를 채택했음을 알 수 있었다.
처음 해본 팀플은 솔직히, 생각보다 훨씬 힘들었다.
하루 종일 이어지는 회의와 에러 해결에 매달리느라 하루에 한 끼만 먹고 작업한 날도 있었다.
특히 나는 과도한 책임감과 완벽주의 강박이 좀 있는 사람으로서 스스로의 멘탈 관리가 또 하나의 문제점이었다.
그렇지만 마음대로 안 되면 어떤가.
아직 배워가는 단계이고 첫 걸음이다.
동료학습을 처음 겪어보며 이런 저런 깨달음을 얻은 것 자체가 나에게는 또 다른 새로운 경험이고 자산이 될 것이다.
사람들은 언더독이 우승하는 것을 즐거워한다.
중요한 것은 꺾이지 않는 마음, 포기하지 않는 자세이다.
'교육 > 원티드 프리온보딩 인턴십' 카테고리의 다른 글
[원티드 프리온보딩 프론트엔드 인턴십] Week 2 과제 후기 (0) | 2023.01.09 |
---|---|
[원티드 프리온보딩 프론트엔드 인턴십] Week 3-1. React Hook의 심층 활용 - 강의 후기 (0) | 2023.01.08 |
[원티드 프리온보딩 프론트엔드 인턴십] Week 1-2. 프로젝트를 지속적으로 통합하고 배포하는 법 - 강의 후기 (0) | 2022.12.25 |
[원티드 프리온보딩 프론트엔드 인턴십] Week 1-1. 개발자의 기본기 - 강의 후기 (0) | 2022.12.21 |
[원티드 프리온보딩 프론트엔드 인턴십] 합격 발표 (2) | 2022.12.18 |