저희 팀은 성장하기 위해 'KPT회고'합니다.
개발자의 공유 문화 이모저모 (2) 회고 문화 - 인프런 | 스토리
팀 문화의 탄생 | 우아한형제들 기술블로그
Keep : 좋았던 점, 배운 점
- 프론트엔드
- UX/UI를 고려하여 개발했다.
- 아토믹 디자인 시스템을 적용해서 컴포넌트의 재사용성을 고려했다.
- Yarn Berry PnP, Zero-install 방식의 패키지 관리로 빌드 시간을 절약했다.
- 타입스크립트를 리액트 프로젝트에 적용해봤다.
- React router v6에서 업데이트 된 내용들(useNavigate 등)을 사용해봤다.
- Tanstack query를 사용하면서 비동기 요청에 대한 최적화를 고려했다.
- 에러 바운더리와 서스펜스를 활용해서 오류와 로딩 상황을 처리했다.
- Zustand로 간편하게 전역 상태를 관리했다.
- 백엔드가 개발이 되지 않았어도 Mock API를 만들어 쓸 수 있다는 것을 새롭게 알았다.
- TailwindCSS의 디폴트 클래스들과 커스텀 클래스를 사용해서 간편하게 CSS를 정의했다.
- HeadlessUI로 복잡한 UI를 손쉽게 구현했다.
- 소켓 통신과 WebRTC를 적용한 실시간 서비스를 만들었다.
- 캔버스와 이벤트를 적절히 활용해서 다른 회원과 상호작용이 가능한 게임을 개발했다.
- 중간중간 리팩토링을 했다.
- 백엔드
- Swagger로 API 문서 자동화를 해보았다.
- passport를 사용하여 OAuth 플로우를 구현해보았다.
- 실시간 게임을 구현하는 방법으로 WebRTC를 사용했다.
- 페이지네이션 구현 방식을 비교하고 커서 방식을 채택하여 구현했다.
- 협업
- 브랜치 전략과 Github의 이슈, PR 기능을 사용해서 구현 내용이 레포지토리에 기록됐다.
- Docker를 이용해서 각 팀원이 동일한 개발 환경에서 작업했다.
- 서비스 기획부터 배포까지 모든 단계를 겪어보았다.
- 기획 단계 때 유저 스토리를 기반으로 이슈를 발행해서, 개발 진행 때 진척도를 확인할 수 있었다.
- 캘린더를 공유해서 스케쥴 관리를 유동적으로 할 수 있었다.
- 매번 작업을 시작하기 전에 진행 사항과 할 일을 체크하고 기록했다.
- 개발 로그를 기록해가면서 작업했다.
- 지정된 날짜를 휴일로 정해서 개인 스케쥴을 관리할 수 있었다.
Problem : 개선하고 싶은 점
- 프론트엔드
- 테스트 라이브러리에 대한 사전 지식이 부족해서 TDD를 적용하지 못했다.
- CSS의 재사용성을 높이고 싶었는데, 디자인 시간이 부족해서 적용하지 못했다.
- 처음 프로젝트 환경을 구축할 때 CRA를 사용해서 오류나 충돌에 대한 문서를 찾기가 힘들었다.
- 백엔드
- 테스트를 작성하며 개발하다가 시간이 부족하다는 이유로 작성하지 않았다.
- 기능 개발과 리팩토링 사이클을 원할하게 돌리지 못했다.
- 트랜잭션 처리까지 신경쓰지 못했다.
- Swagger를 꼼꼼하게 작성하지 못했다.
- 협업
- 점점 시간에 쫓기면서 개발 문서를 작성하는 데 소홀했다.
- 에러 케이스가 이슈와 슬랙에 산재되어 있어서, 동일하거나 비슷한 상황에서 검색하기 어려웠다.
- 팀원이 적어서 코드 리뷰가 기능이 구현되었는지 확인하는 위주로만 진행됐다.
- 기획 단계 때 마일스톤 단위를 모호하게 정해놓아서 일정 관리가 힘들었다.
- 작업에 걸리는 시간을 적절히 예상하지 못해서 데드라인이 밀렸다.
- API 문서가 최신 버전으로 관리되지 않았다.
Try : 앞으로 적용해나갈 점
- 프론트엔드
- 백엔드
- API 문서 관리하는 효율적인 방법을 찾고 싶다.
- 협업
- 처음 사용해보는 기술에 대해 학습 시간을 짧게라도 갖고 적용해보면 좋을 것 같다.
- 기획 단계에서 여유를 가지고 좀 더 시간을 썼으면 좋을 것 같다.
- 개발 도중에 문서를 그때그때 정리하면 좋을 것 같다.
- 개발과 디버깅 도중에 발생하는 일들은 Github 이슈에, 그렇지 않은 문서는 노션에 분리해서 작성하면 좋을 것 같다.
- 주기를 정해서 프로젝트 회고를 하면 일정 관리에 도움이 될 것 같다.
- 문제가 생겼을 때 고민하는 시간을 제한하고, 그 시간이 넘으면 외부에 도움을 요청해서 빠르게 해결하면 좋을 것 같다.