드디어 약 3주만의 프리프로젝트 기간이 끝났다. 부트캠프에서 프리프로젝트는 stackoverflow를 클론하는 방식으로 미리 정해주었지만 우리팀은 협의 끝에 hola 라는 스터디/프로젝트 모집 사이트를 참고해서 클론을 진행했다.
아무래도 개발 경험도 부족하고, 프로젝트를 해본 팀원이 나랑 BE 팀장님밖에 없었기 때문에 기획을 할 때 문서화를 시켜야 하는 부분이나 초기 환경설정시에 주도적으로 초기 프로젝트 셋팅을 나서서 진행했고 디테일 부분을 많이 수정했다. 또 협업하며 서로의 코드를 pull 받는 과정에서 굉장히 충돌이 많이 일어났는데 이미 나는 git과 관련된 에러를 많이 겪어본적이 있어서, 내가 만난 에러가 아니더라도 몇시간이 걸리던 끝까지 화면공유를 하고 최선을 다해 해결을 도왔다.
이번 협업을 하면서 프로젝트 경험과 에러를 해결해봤던 경험들이 정말 나에게 피가 되고 살이 되었구나라는 생각이 들었고, 에러를 만났을때 이게 어디서 어떻게 잘못된건지 찾고 해결하는 능력이 향상된 것 같았다.
서버 에러를 전달할 때도 꼭 어떤 부분에서 어떤 에러메세지를 뱉는지 사진과 에러메세지를 자세히 정리해서 첨부드렸는데, 회고때 그 부분덕분에 에러 해결과 소통이 많이 편했다고 말씀해 주셔서 잘못된 소통을 하지 않았다는 생각이 들었다.
문서화 부족
가장 중요한 문서화가 제대로 되지 않아서 많은 어려움을 겪었다.
나는 개발하면서 자주 겪는 에러나 무언가를 새로 배우게 될 때 꼭 기록해서 다음에 또 찾아보고 실제로 내 블로그에서 참고도 많이 하는 편이다. 하지만 프로젝트에서 문서화는 정말 미흡했다.
처음에 팀원 회의를 하면 회의록을 그때그때 작성하지는 못하더라도 노션에 카테고리를 만들어서 기획적인 부분이나 TODO들을 항상 기록해 놨었는데, REST API 등 백엔드와 통신하는 과정에서 문서가 없다보니(노션에 대충 작성한게 전부..ㅠㅠ) api를 그때그때 백엔드 분들에게 확인해야 하고 body에 들어가는 사항이 변경될때마다 공유가 되지 않아 정말 불편했다.
초기에 시간이 좀 들더라도 제대로된 문서화를 시켜놓고 변경될때마다 업데이트를 하는 방식으로 진행했어야 하는데, 불필요한 커뮤니케이션을 계속 유발했기 때문에 정말 많은 후회가 남는다.
백엔드와 프론트엔드가 통신하는 과정에서 endpoint를 잘못 알려주거나 body에 뭐가 어떤식으로 들어가야 하는지 헷갈리는 등 정말 많은(불필요한) 커뮤니케이션이 오고가다보니 잘 작성된 문서만 하나 있었으면 하는 생각이 아직도 든다.
메인프로젝트때는 문서화를 내가 나서서 꼭 해놔야겠다고 정말 백번 만번 다짐했다. 정말 반성한다.
커밋 컨벤션 등 미리 정해놓은 규칙이 지켜지지 않았을 때
노션에 이런 식으로 기획을 하고, 커밋 컨벤션 등을 미리 정하고 시작했지만, 지켜지지 않았다.
커밋메세지가 뭐 그리 중요하냐 생각할 수도 있겠지만, 어떤 커밋을 했는지 자세하게 써놓는것도 중요하고 협업이기 때문에 정해놓은 규칙을 지키는건 필수라고 생각했다.
조금더 자세하게 컨벤션에 대한 문서화를 시켜놓거나 처음 잘못됐을 때부터 바로잡았어야 했었는데, 그 규칙을 나는 잘 지키고 있다는 안일한 생각으로 살펴보지 못한 것에 대한 아쉬움도 있다. 메인때는 이런부분들을 꼭 보완해서 규칙을 조금더 정확하고 명확하게 정의해놓고 꼭 지켜지도록 중간중간 체크하도록 해야겠다.
쓰다보니 아쉬운 부분만 너무 길게 쓴 것 같은데, 프리프로젝트는 연습하는 개념이라 시간이 정말 짧게 주어지고 멘토링도 없었지만 프리때부터 잘해보고 싶은 생각이 앞서서 아쉬움이 많이 남았던 것 같다.
하지만 내가 어떤 부분을 잘못했고 어떤 부분에서 의사소통이 어려웠는지 정확하게 파악했고, 또 브랜치 관리나 git pull, 충돌 해결, 서버와 통신 등 배운것도 많았다. 무엇보다 당연할 수 있겠지만 CRUD 기능을 전부 구현하고 큰 문제없이 배포에 성공한 것만 해도 우리 팀원들에게 너무 감사하다.
새벽 세네시에도 온라인이던 우리 팀원들, 문제가 해결되지 않으면 다같이 잠을 못자는.. 그런 일도 많았지만ㅎㅎ 책임감있게 맡은일을 수행하고 회의도 열심히 참여한 덕분에 그래도 많이 얻어갈 수 있었던 것 같다.
주말동안 시간을 내서 리팩토링을 완성했다.
로그인기능 완성 - Recoil
을 사용해 전역으로 로그인 상태를 판단하고 그에 맞는 권한을 제대로 부여했다. 또 localstorage에 한 유저의 정보만 계속 저장되는 코드가 있었어서 새로고침하면 자동으로 로그인이 됐었는데, 이 부분을 삭제하고 로그인 한 유저의 토큰 정보만 localstorage에 제대로 담아 사용해 깔끔한 로그인 기능을 완성했다.
요청이 제대로 되지 않던 답변 수정부분도 async
await
을 이용해서 에러없이 처리될 수 있게 변경했다.
주말동안 붙잡고 있으면서 서버 통신 부분에서 많은 문제가 있었는데 하나하나 해결될때마다 정말 속시원했다. 그리고 비동기가 얼마나 중요한지 다시한번 깨닫게 되었다.
그리고 내가 짠 코드가 아닌 부분을 수정하면서 코드를 이해하고 파악하는데 시간이 꽤 걸렸는데, 이 부분에서도 이래서 가독성 좋은 코드를 짜야하고 남이 알아볼 수 있게 클린코드를 작성하는게 중요하구나 라는 생각이 들었다.
아직 완성 못한 기능도 많고, 디자인적으로 미흡한 부분이 많지만 메인때는 이런 아쉬웠던 점들을 모두 보완하여 멋진 결과물을 만들어 내고 싶다.