2021.03에 작성한 tistory 게시글을 옮겨와서, 내용을 조금 더 추가하여 작성했습니다 🙌
오늘은 제 첫 협업 웹 프로젝트에 대한 회고 및 배운점을 정리하고자 합니다.
웹개발을, 특히 React.js
를 처음 공부해보면서 협업을 처음 진행한 프로젝트였기에 많이 부족했지만 그 과정에서 깨달은 것들이 많아서 정리해봤습니다.
Javascript
, React.js
, webpack
Slack
, Notion
, Google Meet
, Github
이번 프로젝트에서 팀원들과 서비스 아이디어부터해서 기획의 전반적인 과정을 함께했다.
큰 틀의 주제를 정하고 세세한 기능들에 대해 이야기하는 과정에서, 점점 욕심이 생기는지 처음에 예상한 것보다 프로젝트 규모가 매우 커지게 된다.
우리에게는 약 한 달이라는 시간밖에 주어지지 않았기에 시간적인 면을 고려하면 가장 주요 기능을 위주로 개발하는 것이 맞다. 그래서 다른 기능들은 추후에 확장해나가는걸로 하고, 제일 처음에 기획한 시험지 생성 - 시험지 풀기
사이클 한번을 완전하게 수행할 수 있도록 기능을 최소화했다. 규모를 무리하게 잡기 보다는, 주어진 시간과 역량에 맞춰 우선순위를 잘 판별하여, "버그 없이 완성도"있게 구현하는 것을 목표하는게 중요하다.
물론 내 스스로가 협업도 처음이고 모르는 거 투성이였기 때문에 따로 공부를 많이 해야했지만, 아무리 생각을 하고 구글링을 해봐도 해결하지 못하는게 있다. 그렇게 밤새 고민하다가 결국 다음날 팀원에게 물어봤는데 약 1분만에 해결되었다. 모듈을 다른 파일 경로에 설치한 게 문제였는데.. 그걸 혼자서 고민할 때는 인식하지 못했다.
결론은! 모르는 건 스스로 해결방법을 찾아보고 충분히 고민해보되, 많은 시간을 할애해도 해결하기 어려운 건 팀원들과 공유하자는 것이다.
내가 모르는 걸 팀원들도 몰랐다면 함께 고민해보며 해결방안을 찾는거고, 이를 아는 사람이 있다면 서로 지식을 공유할 수 있다. 이 과정에서 서로 얻는 게 참 많은 것 같다.
프로젝트를 하기 전에, 보통 학교에서 한 팀플이 전부였기에 카톡 단톡방으로 채팅 형식으로 업무 이야기를 나눠왔었다.
그러다가 이번에 Slack
과 Notion
이라는 툴을 처음 접하게 되었다.
Slack
은 협업 시 업무 생산성을 높일 수 있는 하나의 메신저 툴이다. 잡담은 카톡에서, 업무에 집중하여 이야기하는데에 매우 효율적이다. 디자이너-개발자 / 서버개발자-프론트개발자와 같이 파트별 소통이 필요한 경우 채널을 분리하여 파서 원활하게 소통을 나눌 수 있다는 것도 업무 효율에 있어서 slack의 큰 장점이다.
Notion
은 노트, 일정, 업무, 데이터, 프로젝트 등을 효율적으로 생성하고 관리할 수 있는 도구로, 최근에는 협업 툴로 많이 사용된다. To-do / In-Progress / Completed 상황에 따라 업무를 수월하게 관리하고 팀원들과 한 눈에 공유할 수 있어서 매우 편리하다.
프로젝트에서 특정 라이브러리를 사용하거나, 기술을 적용할 때 단순히 "다른 사람들이 사용해서"가 아닌 현재 나의 프로젝트에 적합한지, 장점이 무엇인지 등에 대해서 생각하면 좋을 것 같다.
당시에 나는 지식적으로도, 경험적으로도 왜 redux
라는 것을 사용하는지 webpack
을 이용하여 구현한 이유 등을 잘 알지 못하고, 궁금증조차 들지 않았다. 그저 팀원이 선택한 기술을 아무 의심없이 사용했다.
앞으로 특정 프로젝트를 개발하려고 할 때, 예를 들어 왜 Next.js
를 선택하게 되었는지, Javascript
가 아닌 Typescript
를 사용하게 된 이유, 많은 상태관리 방법 중 특정 라이브러리로 결정한 이유 등을 생각해보고 시작하면 좋을 것 같다.
프로젝트를 본격 시작하기에 앞서 기술 스택을 선정할 때 이러한 것들을 팀원들과 고민하고 이야기를 나눠보면 좋을 것 같다.
개발을 하다보면 에러에 자주 마주한다. 그 중에서도 많은 시간을 삽질하거나 내 머리를 괴롭혔던 에러 녀석들이 있는데 이런 것들은 블로그에 (에러 상황, 에러 내용, 해결 방법) 삽질 내용을 정리해주면 좋다.
다른 프로젝트를 할 때도 똑같은 에러를 마주할 수도 있기에 과거 고민했던 흔적을 바탕으로 쉽게 해결할 수도 있고, 나와 같은 문제를 마주한 사람들에게도 공유할 수 있다는 장점이 있다.
나 또한 많은 구글링을 하면서 다른 사람들의 공유한 에러에 대해 많은 도움을 받은 만큼, 나와 같은 문제를 마주한 사람들에게도 도움이 될 수 있기를 바라며 작성하는 마음도 있다.
Github
를 이렇게 제대로 사용해본 적이 처음이였다. (다 처음이네요,,) 그 전까지는 혼자서 작성한 코드를 개인 레파지토리에 올린게 전부였다. 협업할 때 깃허브 사용은 훨씬 어렵고 복잡했다.
특히 기억에 남는 몇가지를 적어보면
커밋 메시지를 신경쓰자. 당시 나는 커밋 메시지의 중요성에 대해 잘 몰랐다.
초반에 작성한 커밋 메시지이다..ㅎㅎ 커밋 메시지는 대략 내가 무슨 코드를 작성했는지 설명해주면 좋다. 팀원들 간에 통일성 있는 메시지를 작성하기 위해 Git commit message convention
을 미리 정해놓으면 좋다. 아래는 하나의 예시이다.
맡은 기능에 따라 브랜치를 별도로 파서 Pull Request를 올리고, 리뷰하고 최종적으로 master
브랜치에 merge
하는 방식으로 진행했다. 이때 주의할 점은 새로운 기능을 구현할 때도, 다른 팀원이 머지를 진행한 이후에도 꼭 업데이트된 내용을 pull
받아야한다. 그렇지 않으면 나중에 큰 conflict
가 날 수 있기 때문에 이 점을 유의하자.
당시 프로젝트에서 급한 만큼 상황별 터미널 명령어를 정리해뒀었는데 (협업 시 깃허브 사용법) 에 깃허브 명령어들을 정리해뒀는데, 조만간 더 구체적으로 다시 정리해볼 생각이다.
코드 리뷰 또한 처음 경험해봤다. 사실 이번 프로젝트에서는 내가 다른 팀원의 코드를 리뷰한 적은 거의 없다. 리드개발자님이 일괄적으로 팀원의 코드를 리뷰해주는 과정으로 진행되었다.
그럼에도 나는 코드리뷰의 장점을 몸소 느낄 수 있었다. 내가 작성하면서 미처 인식하지 못한 사소한 실수들부터, 더 좋은 코드 구현 방법 등에 대한 이야기를 나눌 수 있기 때문이다.
이 과정에서 코드가 점점 개선되는 것을 느낄 수 있다!
이 경험을 바탕으로 이후 프로젝트에서 나 또한 피드백을 해주고 / 받는 팀원들 간의 "상호적인" 코드리뷰 방법을 실천하고 있다.
경험이 여러모로 부족한 상태에서의 첫 협업 프로젝트를 통해 배우고 느낀 것이 많기 때문에 내용이 많을지라도 생각을 정리하면서 포스트를 작성할 생각이다!
다음 편에서는 조금 더 "개발자"로서 느꼈던 기술적인 것들을 위주로 작성할 것이다!
=> 🖤다음편 보러가기✨