이전글: 1차 프로젝트 회고록(1)
2차 스프린트 전까지 프론트엔드의 목표는 바로 레이아웃을 전부 완성하는 것인데 생각보다 내 담당이었던 상품 리스트의 레이아웃이 복잡했고, 단순 레이아웃만 만들기보다는 기능을 같이 구현하는 것이 효율적이라고 판단되어 예정보다 많은 시간을 할애하게 되었다.
결론적으로는 1주차에 상품 리스트 외에 로그인, 회원가입, 마이페이지, 리뷰페이지, Nav, Footer, Main, 장바구니, 결제 모두 레이아웃을 완성했다.
하지만 레이아웃을 만들었다그래서 전부 그 안에 기능을 부착하기란 시간이 너무 부족했다. 백엔드와의 협의 끝에 우선적으로 회원가입 → 로그인 → 상품 리스트 → 장바구니 → 상품 결제 순으로 기능 구현을 이어나가기로 했다. 이에 대해 멘토님들도 동의하셨고 마이 페이지나 리뷰 페이지는 추가 기능 구현 시에 이어서 하는 걸로 보류하게 되었다. 이때 다른 팀원들이 만든 레이아웃을 바로 기능 구현에 적용하지 못하게 된다는 점이 너무 죄송했다.
1차 스프린트에 이어 2차 스프린트도 프로젝트 매니저가 진행하는 자리였다. 그 전날 팀원과의 협의를 통해 전달해야할 상황을 명확히 정리하였다. 이것과 트렐로 티켓 정리만 마무리하면 되나 생각했지만 간과했던 사실이 하나 있었으니..
바로 1주차 기간 동안 팀원 각각에 대한 회고와 평가를 PM이 진행을 해야했다.
멘토님들의 안내와 즉석에서 생각해낸 절차에 따라..
이렇게 진행을 했다. 특히 2-2와 3-2의 프로젝트 매니저의 소견을 덧붙였던 점이 멘토님들께 칭찬을 받았다.
이후에 멘토님들께 질문하는 시간이 있었는데 다음부터는 이때 질문할 사항들을 정리해가면 더욱 좋을 것 같다.
이어서 FE와 BE끼리 모여서 트렐로를 확인하며 각자 해야할 기능을 분배했다.
개인적으로 레이아웃을 담당한 페이지를 본인이 끝까지 기능까지 만들기보다는 바꿔서 진행하는 것이 학습적인 측면에서는 알맞다고 생각했고 비교적 압박이 덜한 1차때 경험해봐야하는 것이라고 생각했다.
이에 대해 고맙게도 다른 팀원들도 동의를 해주며 다들 해보고 싶은 기능 구현의 방향이 확실한데다가 각자 달랐기에 티켓을 분배하는 일은 수월하게 돌아갔다. 그렇게 내가 레이아웃을 구성한 메인과 상품리스트, data list, router 관리 등은 각각 M님과 Y님께 돌아갔고 나는 상품 장바구니 기능과 필터링 기능을 담당하게 되었다.
필터링을 담당하는 과정에서 초반에 백앤드에서 선정한 query string
, params
에 대한 이해가 많이 필요했고 useParams
와 useSearchParams
를 사용하여 카테고리를 다르게 누를 때마다 url에 적용될 수 있도록 많은 공부를 병행하게 되었다. 비록 처음 배워보는 개념을 바로바로 기능에 적용하는 과정에서 많은 시간이 걸리긴 했지만 이 과정에서 많은 것을 배우게 되었고 , 어떤 개념이 부족한지에 대해 인지하며 앞으로의 공부 방법에 대해 방향성이 잡히기도 하였다.
이어서 장바구니 기능도 일임하게 되어 장바구니 백엔드 담당자와 함께 상품을 담고 화면에 출력하고 수량을 조정하고 삭제까지 하는 로직에 대해 함께 고민하게 되어 본격적으로 백엔드와 소통을 많이하던 시기였다. Fetch 함수
의 메서드를 기존에 가장 많이 사용하던 GET
외에도, PATCH(수정)
, DELETE(삭제)
를 사용하게 되어 API에 대해 더 깊이 들어가볼 수 있는 계기가 되었다.
프런트, 백 각각 모든 기능구현을 완료하고 맨 마지막에 API를 맞춰보던 다른 팀과는 달리, 우리팀에서는 조금 미완성이라도 API를 연결하며 결과물이 어떻게 출력되는지에 대해 탐구해보는 시간을 가지기도 하였다.
이러한 연결 과정이 팀 개개인의 작업을 유기적으로 연결되지 못하게 하여 시간이 다소 지체되는 단점도 있었지만 역으로 추후에 진행된 본격적인 API 연결 과정에서는 사전에 해보길 잘했다는 생각이 들었다.
API 연결 과정에서 프런트 측에서 구성한 레이아웃이 무너지거나 백에서 보내준 이미지의 크기가 맞지 않아 실시간으로 재조정해야 하는 번거로움도 있었다.
또한 백엔드 쪽의 key
값과 프런트의 key
값이 맞지 않아 에러가 나기도 하였고 백엔드 측에서 준비한 데이터 (ex. 장바구니 가격 총합) 를 프런트에서도 jsx
를 통해 중복으로 구현하여 한쪽은 애써 적은 코드를 삭제해야하는 상황이 오기도 했다.
이 과정에서 사전 회의와 1주차 Sprint때 더 명확하게 기능에 대한 합의와 key값에 대한 이해가 높았으면 더 좋았을 것 같다는 생각을 했다. 그래도 밤 늦게까지 끈질기게 붙잡고 백/프런트 모두 서로 머리를 맞댄 덕분에 Demo-Day 전까지 오더(주문)페이지를 제외한 모든 기능들에 대한 API 연결을 완료했고 이후 추가 기능 주간에 마지막 단계인 API도 마무리를 하였다.
이윽고 프로젝트의 마지막을 장식하는 Demo-day가 되었다.
전날 새벽까지 API 연결을 하느라 팀원 모두가 잠을 제대로 자지 못했지만 컨디션은 최고였다. (아마 이제 끝이라는 생각에 후련해서 그랬던 것일까) 도착하자마자 전날 만들었던 ppt를 고치고 최후순위로 미뤄놨던 Scss
디자인을 간단하게 손봤다.
개인적으로 <정육각>에서 약간 아쉬웠던 Scss transition을 적용하여 웹이 동적으로 움직일 수 있도록 구현하였다.
최후순위였던 일까지 마무리하고 바로 ppt에 쓰일 시연 영상을 맥북 내장시스템으로 촬영을 하고 나머지는 우리의 유능한 product-manager님께 일임하고 응원하는 마음으로 발표를 경청하였다. 그와 동시에 다른 조의 진행상황과 결과물을 보며 어떠한 점을 다음 프로젝트에 더 보완하여 반영할 수 있을지 보게 된 좋은 기회였다.
나름 성공적으로 의 Demo day를 마치고 바로 회고 회의를 하러 팀끼리 모였다.
이때 지난 2주를 회상하며 “이번 프로젝트에서 아쉬웠던 점, 다음 프로젝트 때 보완할 점”, “다음 프로젝트때 가져가고 싶은 우리팀만의 문화”로 나누어서 진행했다.
보완점과 아쉬웠던 점으로는 :
camelCase
, snake-case
, PascalCase
를 사용하곤 했다.. 물론 첫주차에 camelCase
로 통일)가져가고 싶은 점으로는 :
다른 팀에서 정말 부러워할 정도로
마지막까지 화목하고 즐겁게 진행했던 프로젝트였다.
쉬운 일 하나 없는 PM(Project Manager)였지만 좋은 팀, 좋은 팀원들을 만나서 비교적 수월하게 풀어나갔던 것 같다.
파워 ENTPPPP로서 즉흥적인 에너지로 일을 하는 것을 좋아하는 사람이었지만 팀 단위로 효율적으로 일을 관리한다는 측면에서는 높은 책임감을 요하기 때문에 프로덕트의 완성과 팀원들의 원활한 소통을 위해서 계획적으로 일했다.
계획된 루틴을 지키기 위해 스스로에게 했던 약속들로는 :
이러한 약속들이 꾸준히 지켜질 수 있었던 가장 큰 이유로는 역시 팀을 잘 만난 것이 정말 크다.
늘 막내의 부족한 리더십과 고픈 배를 채워주신 H님🥹, 팀원들의 멘탈을 하나하나 뒤에서 케어해주신 J님🤓, 묵묵히 빠른 속도로 코드를 써내려가시며 팀의 일에 차질이 없도록 부스터를 달아주신 M님🧐, 매의 눈으로 각종 에러를 잡아주시고 높은 텐션으로 팀의 밝은 분위기를 이끌어주신 Y님😆 모두 한명 한명의 역할이 참 크다고 생각했다.
이런 귀감이 되는 팀원들을 보며 역으로 좋은 Follower (적극적인 의견제시, 피드백, 경청, 존중, 규칙 준수)란 무엇인지 많은 고민을 하게 되었고 나 또한 많이 배워야겠다는 생각을 하였다.
부족한 것이 참 많은 PM이었지만 이런 나를 보듬어주고 즐겁게 팀 프로젝트를 무사히 완주해준 우리 Meet-Meat팀
에게 이 회고록을 바치며 마무리하겠다 :)