본격적으로 그룹 프로젝트가 시작되었다.
다양한 사람들을 만나서 다양한 프로젝트를 했지만 기존과 마음가짐이 약간 다른 것 같다.
기존에는 "어떤 서비스를 만들것인가"에 집중했다.
화려하고 다양한 기능을 가진 서비스를 시간안에 만드는 것이 목표였다.
하지만, 이번 그룹 프로젝트는 서비스를 만드는 과정에서 "어떤 기술적 도전을 할 것인가"에 대한 고민을 하게 되었다.
단순히 서비스를 만드는 것에 그치지 않고 기술적 도전을 통해 성장하는 발판이 되었으면 좋겠다.
들어가며
이번 우리 서비스의 주제는 "실시간 공동편집"이다.
실시간으로 소통하며 코드를 공동편집 할 수 있는 웹 서비스를 기획하게 되었다.
이 과정에서 화상채팅, 텍스트 채팅, 코드 공동 편집 기능이 필요했다.
각각의 기능을 구현하기 위해 필요한 기술로는 WebRTC, Socket 통신, CRDT 등이 있다.
1주차에는 기획과 함께 WebRTC를 구현하게 되었고 이 과정에서 WebRTC는 무엇을 위한 기술이며 어떤 과정으로 작동하는지 직접 만들어볼 수 있었다.
소켓을 이용해 서버와 통신하고 WebRTC의 다양한 API(메소드)를 사용하여 연결을 구성하였다.
이 과정에서 서버의 부담이 커질 것을 예상한 백엔드 팀원들은 서버를 분리하는 전략을 세우게 되었다.
프론트엔드에서는 WebRTC를 구성하는 여러 방법 중 어떤 방법이 효율적일지 고민하며 개발에 들어갔다.
물론 기획과 함께 CI/CD, Git Convention, branch 전략, 코드 포맷팅 방식 등을 함께 정했다.
팀 전체의 그라운드 룰을 정하고 규칙에 맞춰 생활하고자 했다.
여러 팀에서 각각의 협업 규칙이 생겨났고 이를 비교하는 재미도 쏠쏠했다.
각 팀의 분위기, 특성에 맞게 기존의 방식을 변형하기도 하고 새로운 방식의 협업을 하거나 기존에 사용해보지 않은 기술을 사용하는 팀도 있었다.
우리 팀도 우리 팀에 맞는 협업 방식을 찾기 위해 노력했으며 게더 타운을 활용하여 우리의 사무실로 사용하기로 했다.
일주일에 한 번 대면으로 만나 그 주의 계획을 함께 세우고 전 주의 진행 상황을 공유할 수 있도록 했다.
문제점
우리 팀에서 만났던 첫 문제점은 멘토링을 통한 피드백에서 발생했다.
멘토님들이 현재 우리 서비스에 너무 많은 기능이 들어가는 것 같으니 일부 기능을 과감히 포기하는 것이 어떻겠냐는 말씀을 해주셨다.
욕심을 부리지는 않았고 필요한 기능들만 넣었다고 생각했는데 기능이 너무 많다는 피드백을 듣게 되어 충격이었다.
6주의 시간안에 해결 할 수 있을 것이라 생각했지만, 단순히 구현만 하고 끝나는 것이 아니라 6주 뒤에 완성된 프로젝트를 발표할 수 있도록 개선 등의 작업도 함께 수행해야 했기 때문에 온전히 6주동안 개발을 하는 것이 아니었다.
이에 따라 우리 팀은 이번 프로젝트를 통해 어떤 것을 얻어가고 싶은지, 어떤 기능이 우리 서비스의 핵심이 될 것인지 다시 한 번 생각해야 한다.
다행인것은 1주차는 협업 방식, CI/CD 구축 등과 같이 서비스 개발이 본격적으로 시작 되기 전 준비하는 단계였기 때문에 1주차를 바탕으로 2주차에서 속도를 올리면 될 것이라 생각한다.
좋았던 점
페어 프로그래밍을 학습 스프린트 기간에 이어 다시 해볼 수 있었다.
WebRTC를 구현해보며 다른 팀원과 함께 앉아 하나의 노트북으로 코딩을 했다.
그 결과 두 사람 모두 해당 기술에 대해 이해하고 구현할 수 있었으며 개발 속도가 빨라지게 되었다.
금요일 프로젝트 현황 공유 시간에 받은 피드백(질문)으로 개발 속도가 빠른 것 같다는 피드백을 받았을 때 나름 뿌듯해싿.
이와 같이 단순 구현이 아닌 다양한 부분에서 페어 프로그래밍을 적극 도입해보고 싶다는 생각이 들었다.
물론 React의 화면 구성 등은 각자 할 수 있지만, 서비스에서 핵심이 되는 기능을 구현하거나 서비스 로직을 만드는 경우, 또는 리팩토링을 하는 경우는 함께 할 때 더 좋은 해결책을 찾을 수 있을 것이라 생각한다.
앞으로
문서화를 제때제때 해야겠다는 생각이 든다.
문서화를 통해 어떤 문제점을 만나서 어떤 순서로 이를 해결하려 했으며 결과가 어떻게 되었는지 기억할 수 있도록 해야겠다.
기술을 학습하더라도 이를 기록하여 다른 팀원들도 볼 수 있도록 하는 것이 좋을 것 같다.
기억은 잠시지만 기록은 영원하기 때문에 나중에 다시 그 기록을 통해 어떤 일이 있었는지 기억하는 것이 중요하다고 생각한다.
노션을 활용하거나 Github wiki를 활용하여 기록을 하는 습관을 들여야 할 것 같다.
'개발 > 회고' 카테고리의 다른 글
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 3주차 회고 (0) | 2023.12.05 |
---|---|
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 2주차 회고 (0) | 2023.11.20 |
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 멤버십 6 ~ 9주차 회고 (0) | 2023.11.04 |
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 멤버십 1 ~ 4주차 회고 (0) | 2023.09.24 |
[네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 챌린지 4주차 회고 + 수료 (2) | 2023.08.05 |