22.04.25 ~ 22.05.06 진행한 1차 팀프로젝트를 기록해두고자 한다.
처음 팀프로젝트를 시작하기 전에는 나의 부족한 실력 탓에 걱정을 많이 했다. 팀원분들께 피해를 주면 어떡하지 라는 생각을 했다.
아마 실력도 걱정이었지만, 팀프로젝트가 어떻게 흘러가는지 아예 몰랐기 때문에 불안한 생각도 있었던 것 같다.
처음 팀원이 정해지고, 미팅을 통해 서로의 일을 분담하며 조금씩 부담감은 사라져갔다. 열정넘치고 실력있는 PM님을 중심으로 2주간 최선을 다했다.
나의 작업속도가 다른 분들보다는 느리기 때문에, 매일 2~3시까지 남아 내가 맡은 장바구니페이지와 평점을 반영한 댓글기능을 완성했다.
처음 생각했던 기능구현이 많이 빠져있고, 원래 목표였던 결제페이지를 완성하지 못해서 아쉽긴 하지만, 프로젝트 기간동안 더 크게 느꼈던 것이 있다.
기술적으로는 초기 데이터설계의 중요성과, 코드구조를 짤 때 컴포넌트화를 미리 생각을 해놔야 한다는 것을 느꼈고,
그보다 더 중요한 것은 바로 팀원과의 커뮤니케이션이다.
개발자는 절대 혼자 일하는 것이 아니라, 다른 개발자들과 협력하는 것이기 때문에 소통이 제일 중요한 것이라는 것을 크게 느꼈다.
1주차가 끝나갈 무렵, 중간미팅에서 결제페이지 구현을 철회하고, 더 우선순위에 있던 평점반영 댓글기능으로 넘어간 적이 있었는데, 처음에는 나의 계획에 없던 일이라 내 일이 아니라고 생각했던 것 같다. (아주잠깐..)
하지만 '이것은 팀프로젝트이고, 더 급한걸 먼저 하는게 맞지'라고 바로 생각을 고쳐먹고, 바로 작업을 진행했다.
팀의 우선순위에 따라 언제든 작업순서를 바꿀 수도 있고, 하나의 결과물을 위해 의견의 통일이 중요하다는 것을 크게 느꼈다.
앞으로 있을 2차프로젝트와 기업협업에서도 협력과 소통을 잘 새겨놔야 할 것 같다.
상품의 이름, 가격, 선택수량, 사이즈, 재고 모두 데이터통신을 통해 가져올 수 있고, 식을 적용하여 수량변경시 가격이 자동변경되도록 로직을 구현했다.
그리고 전체삭제를 누르면 빈장바구니로 바뀌는 것도 구현했다.
코드 구현시 기억에 남는 코드가 있는데
위에 정리한 글은 프로젝트 발표시에 발표하는 분에게 기억에 남는 글을 설명하는 글이다.
좋아하는 동기분이 알려주신 방법으로, useEffect를 통한 자식요소의 값을 부모요소에서 사용할 수 있도록 하는 것이다.
다만 의존성배열 관련해서 sider가 의존성배열에 useEffect본문에 연관되는 내용이 안들어갔다는 것을 경고하는데, 일단 꼭 고쳐야하는게 아닌 경고의 의미일 수 있으니, 추후에 리팩토링 시에 손보라는 말씀을 해주셨다.
장바구니 기능을 만들면서 초기데이터설계를 잘해야한다는 것을 뼈저리게 느꼈다.
위의 캡쳐본은 백엔드에서 받는 데이터값을 콘솔로 찍어본 것인데, 원래는 위의 계획처럼 상품별 사이즈를 모두 수정할 수 있게 하려고했다.
데이터를 보면 알 수 있듯 상품별 선택수량(count)와 선택사이즈(option)를 받아놓고 size_stock을 배열형태로 따로받아서 또 사이즈와 재고를 받았다.
같은 상품에 사이즈마다 각각의 상품으로 들어오는데 그걸 모르고 한 상품에서 사이즈를 모두 선택할 수 있게 하였다. 프로젝트 초반 데이터설계에서 완벽히 이해하고 설계했어야 했는데, 잘 모르는 상태로 바빠서 그냥 맞겠지 하며 넘긴게 큰 실수 였다.
결국 최종결과물처럼 수정했고
재고를 나타낼 때 size_stock안에 있는 각 사이즈에 stock에 접근하기 위해
이런 식으로 접근해서 변수로 사용하는 번거로움을 겪었다.
만약 데이터설계를 잘잡았으면 쉽게 한줄로 쓸 수 있었는데, switch문을 통해 코드가 조잡해진 것 같다.
물론 데이터설계를 아무리 완벽하게 해도 중간에 바꿀 수 있겠지만
앞으로 있을 2차 프로젝트에서는 초반 데이터설계에 좀 더 심혈을 기울여야 할 것같다.
그래도 오히려 더 최종결과물이 깔끔해진 것 같기도 하다....
댓글에 별점을 반영해서 등록할 수 있도록 하였다.
아쉬운 것은 일단 시간상 댓글input창을 scss수정을 제대로 못 했다는 점, 그리고 label과 htmlfor를 사용하면 보다 편하게 사용 할 수 있었는데 그걸 모르고 별점을 나타내는 radio버튼에 input을 하나하나 끌고와서 나타내게 하였다. 그래서 코드도 복잡해지고, 가독성이 많이 떨어졌다.
그리고 댓글을 데이터에 넣는게 아니라 html자체에 map()을 활용하여 리스트로 넣게 했기 때문에 엄밀히 말하자면 실제 댓글기능이라고 할 수는 없다.
생각보다 시간이 촉박했기에 일단 기능구현에만 목적을 둬서 많이 아쉬웠다.
핑계지만 프로젝트가 진행되는 2주동안 블로그도 쓰지 못한채, 하루종일 시간을 투자한 것치고는 전체적으로 아쉬운 것만 눈에 띄었다. 다른 팀의 장바구니 기능을 다 살펴봤지만, 내가 만든 것과는 퀄리티가 많이 달랐다. 하지만 배우러 왔으니 실망하지 않고, 앞으로 더욱 더 열심히 해야겠다는 생각을 했다.
하지만 나의 실력대로 최대한 열심히 했고, 이번프로젝트경험을 2차프로젝트, 기업협업, 앞으로 있을 개발자로서의 인생에 큰 자양분으로 삼아야 할 것같다.
끝으로 많이 부족한 저를 사랑으로 이끌어준 보이프렌즈 팀원들 사랑합니다❤️