9월은 팀 프로젝트를 진행했다. 프론트엔드만 모여서 진행하는 팀 프로젝트는 처음이였기 때문에 나에게는 팀 문화, 개발 규칙, 기술 스택 등을 정하는 과정부터 개발까지 모두 새로운 경험이였고 그만큼 시간이 너무 빠르게 지나갔다.
이번 팀 프로젝트에서는 SNS 서비스를 뼈대로 1인가구를 타겟팅한 혼콕이라는 서비스를 제작하였다.
서비스를 만들기 위해 기획, 개발, 배포까지 여러 과정들을 경험하면서 느꼈던 점들을 정리해보고자 한다.
협업을 위해 우리 팀은 기획 단계에서는 figjam을 사용하였고 개발 단계에서는 Github를 적극적으로 사용하였다.
이번에 처음 사용해보게 되었던 figma 기반의 툴로 실시간으로 공유되는 노트 앱이다.
주제 선정부터 주제 구체화까지 프레인스토밍 형식으로 진행하였는데 간단하게 글로만 표현하는 것 보다 나의 생각을 시각적으로 보여줄 수 있도록 간단한 그림과 함께하니 내 의견을 더 구체화하기 쉬웠고 다른 팀원의 의견을 이해하기 쉬웠다.
맨 처음 Github로만 개발 협업툴을 사용하기로 정했을 때 부족할 것 같기도 하다라는 생각이 들었지만 내가 Github의 기능들에 무지했다는 생각이 든다.
issue와 project의 칸반보드를 사용한 일정 관리부터 discussion, 문서화를 위한 wiki, settings를 활용한 규칙 설정까지 소규모 프로젝트를 진행하기에 Github가 제공하는 기능들은 충분하고 유용했다.
진행 예정이나 진행하고 있는 작업에 issue로 등록하고 태그로 진행 상태를 알 수 있어서 서로가 어떤 작업을 하고있는지 한눈에 볼 수 있어서 좋았고 PR에 연결해서 issue가 자동으로 닫히게 하는 과정이 너무 편리했다.
개인적으로는 Action 기능을 추가로 사용하면 더 편리하게 협업할 수 있을 것 같다는 생각이 들어서 공부해볼 예정이다.
- 주체성을 가지고 움직이기
- 회의는 모두가 돌아가면서 진행해요. 🧐
- 느긋하고 느슨한 것을 지양하기
- 2일 이내 작업과 스프린트 기반으로 일정과 목표를 선정해요. 🏃
- 다른 사람의 의견에는 최소한의 반응하기
- 침묵보다는 작은 리액션 및 간단한 이모지라도 남겨요. 🙂
- 이야기가 끝날 때 박수로 마무리해요. 👏
- 특이 사항은 즉각적으로 공유하기
- 일정이 늦어질 것 같으면 바로 이야기해요. 😆
우리 팀의 팀 규칙은 위와 같았다. 팀원간의 소통이 원활하게 되는 것을 중요하게 생각해서 이러한 규칙들을 정했고 모두가 지키기 위해 노력했다.
팀 프로젝트를 마무리한 지금 규칙들이 모두 잘 지켜졌나를 생각해보면 대부분 잘 지켜진 것 같다고 생각된다. 모두가 문서화와 소통을 통해 현재 자신의 작업 진행 상황을 공유하려고 노력했다. 하지만 기획 단계에서 유저스토리 작성을 통한 개발해야할 작업들을 세분화하지 못해 스프린트에 대한 아쉬움이 살짝 남는다.
혼콕 팀 개발 규칙
우리 팀의 개발 규칙은 변수명과 커밋 컨벤션 등을 제외하면 Github 기능과 Eslint, Prettier를 사용해 자동으로 적용할 수 있게 하였다.
좋은 변수명이 무엇인지 이해하고 쉽고 가독성 좋은 컨벤션이 어떤 것인지 다같이 고민하고 이야기하는 과정을 통해 나쁜 변수명 설정 습관이나 컨벤션 습관을 고치려고 노력했다.
또 Eslint와 Prettier의 중요성에 대해 깨닫게 되는 계기가 되었다. 개인 프로젝트를 진행할 때는 Eslint와 Prettier를 모두 코드 포맷터처럼 사용했었다. Eslint와 Prettier의 차이점을 알고 있었지만 그 필요성을 별로 느끼지 못했다. 하지만 Eslint에 다양한 확장을 붙이고 팀원 간의 상의를 통해 필요하지 않은 규칙들을 제거해서 사용하니 너무 편리하게 느껴졌다. 코드 컨벤션에 위반되는 코드나 안티 패턴을 검사해줘서 일관성있는 코드를 작성하기 쉬웠고 때문에 내가 개발하지 않은 코드에 대해 빠르게 이해할 수 있었다.!
우리 팀은 컴포넌트에 대한 문서화를 위해 storybook을 사용하였다. 초반엔 storybook의 사용법에 대해 공부한 상태가 아니여서 많이 헤매고 어려움을 겪었지만 익숙해진 후 다른 팀원이 개발한 컴포넌트에 대해 테스트 코드를 작성하지 않아도 시각적으로 컴포넌트에 props을 변경하며 확인해 볼 수 있어서 컴포넌트에 대한 이해를 쉽게 할 수 있었다. 프로젝트 막바지에는 시간에 쫓겨 storybook을 잘 사용하진 못했지만 프로젝트의 뼈대를 잡는데 큰 역할을 했다고 생각한다.
이번 프로젝트를 진행하면서 가장 깊게 공부했다고 생각하는 라이브러리는 react query라고 생각한다.
사용자 로그인 상태 관리 부분을 맡았기 때문에 react query를 자세히 공부해야했고 그 결과 로그인 상태 관리 부분을 완성할 수 있었다고 생각한다.
react query를 사용하면서 가장 어려움을 겪었던 부분은 staletime과 cachetime에 대한 이해도가 낮아서 발생했는데 문제를 해결하기위해 공부하면서, 또 해결하고 난 후 문서화(staletime과 cachetime 이란?)를 통해 팀원들과 문제와 해결 방법을 공유하면서 이해도를 높이려고 노력했다.
react query를 사용해본 결과 react query는 서버 상태 패칭, 캐싱, 동기화 및 업데이트를 하는데 너무나 큰 도움을 주는 라이브러리이기 때문에 다른 프로젝트에서도 적극적으로 사용하고 싶고 더 공부해볼 필요가 있는 라이브러리라는 생각이 들었다.
건우님 회고 잘 읽었습니다...!!! 우왕 여러 기술들을 도입해보셨군요! 최종 프로젝트에 적용하고 싶은 기술들도 몇개 보이고요! 다음주부터 최종 프로젝트 시작하게 되면 여러가직 같이 얘기하면서 좋은 개발 문화 만들어가요~! ☺️