다사다난 했던 메인프로젝트 회고를 해보자
무비팝
- 프로젝트 기간 : 2023-06-28 ~ 2023-07- 24
- 깃허브 레포 : 📃레포 링크
배포 링크 : 🔗배포 링크 - 개발 방법론 : Agile Scrum - 깃허브 이슈들을 이용하여 작성
- 개발 인원 :
- 무비팝 주요화면 :
프로젝트 구상 계기
무비팝은 처음 아이디어 회의시간을 가질때 팀원 중에 한분이 영화보는것을 매우 좋아하여 영화에 관한 프로젝트를 해보고싶다고 먼저 말씀을 해주셨고, 그 과정에서 영화를 리뷰하고 다른사람들이 그 리뷰를 보고 해당 영화를 혼자 시청하거나 같이 시청하기위해 팟을 모집하는 등의 서비스 뿐만 아니라 영화장르의 선택을 통해 맞춤추천 등의 서비스를 기획하게 되었습니다.
주요기술 스택 (클라이언트)
- React
- Styled-Components
- RTK(Redux-ToolKit)
- React-query
프론트엔드 3명 다 Pre프로젝트땐 사용하지 않았던 타입스크립트, 리액트 쿼리를 사용해보았다.
물론 무척이나 헤매고 마음처럼 되지 않았다. 하지만 예견된 일이였다. 그걸 3명 다 알고있었기에 같이 해결해보고 헤쳐나가보자라는 마인드가 엄청 강했던 것 같다.
클라이언트 전역 상태 관리 툴로 RTK를 사용 한 이유는 물론 recoil추천을 받기도 하였다. RTK보다 훨씬 간결한 코드에 유지보수가 상당히 좋다는게 그 이유였다.
하지만 타입스크립트, 리액트쿼리에도 벅찰것 같던 우리 세명은 지레 겁을 먹고 그나마 사용해본적 있던 RTK를 선택하였다. 하지만 다음 프로젝트로 만들어볼때는 리코일을 선택해서 사용해보고싶다.
서버 상태 관리 툴로 React-query를 사용한 이유는
처음에 RTK로 서버상태까지 관리를 할생각으로 시작하였다. 하지만 웬걸? 반도 못하고 상태가 클라이언트와 서버가 서로 꼬여서 상당히 복잡해지는게 보였다. 그후 멘토님께 상의를 해보았고, 멘토님께서는 서버상태는 따로 관리해주는게 좋아보인다고 말씀주셔서 고민도없이 바로 리액트쿼리를 사용하자는 결론이 나왔고, 바로 상태관리 리팩토링이 시작되었다. 하지만 vscode가 비웃기라도 하듯 엄청나게 터지는 에러들, 그와중에 처음쓰는 리액트쿼리.. 미친듯이 tanstack 공식홈페이지 들어가서 수능공부처럼 달달달 외워서 사용하기 바빴다. 하지만, 중반쯤 넘어가면서 '아! 이래서 리액트 쿼리를 쓰는구나' 하는 포인트가 한두개씩 보이기 시작하더니 간단한 로직뿐 아니라 fetch, mutate후 리렌더링이라던지 쿼리키의 무효화라던지 에러핸들링 등등 너무나 편한 기능들이 우리를 반겨주었다. 아주 좋은 서버상태관리 툴이라는 것을 매우매우매우 깨달아버렸다.
회고
내가 구현한 부분
- Input 컴포넌트
- 마이페이지
- 찜한 게시글
- 내가 쓴 게시글
- 내가 모집중인 팟
- 내가 참여중인 팟 - 페이지네이션
- 에러페이지
- 토스트 기능
- 회원 탈퇴
- 회원정보 수정
- 비밀번호 변경
- 로그인 토큰
- 로그아웃
- 푸터
프로젝트의 시작
프로젝트 시작 전 메인프로젝트 팀빌딩에 대해 조급해 하지않던 나는 동기의 한마디로 이렇게 안일하게 있을 때가 아니였구나..! 이미 몇몇팀들이 완성이 되고 있었고, 아이디어내고, 아주 간단하게라도 디자인 생각까지 하고 있다는 상태라는 말을 들은 것이다.
하지만 그러고난 며칠뒤에 지금 팀원분들에게 제의가 왔고, 그때의 나에게 큰 힘이 되어주었다. 정말 감사합니다 영미님, 근실님!
이렇게 팀구성이 되었고, 딱히 끌리는 산업군도 없고, 어떤 프로젝트던 내가 기여하게된다면 성취감을 얻게될거같은 안일한 생각에서 욕심이 생길 것 같은 프로젝트로 바뀌어 시작할 수 있었다. 앞으로는 어떠한 일을 하던 욕심을 가져보자!!
프로젝트 마무리
프로젝트가 시작되고, 정해놓은 프로젝트 주제와 기능에 적절한 스택을 골라야하는 회의를 진행하였다.
주요 기술스택에서도 작성을 했듯이, 세명 다 다뤄본적이 없는 툴(타입스크립트, 리액트 쿼리)를 사용해서 이게 완성은 될까..? 하는 걱정이 너무나 앞섰다. 하지만 우리팀의 긍정마인드는 너무나 강력했다. 충분히 기한안에 만들수있다!, 천천히 너무 급하게 안해도된다 시간많다! 등등 불안해하는 나를 엄청 다독여주고 챙겨주었다. 분명 나는 팀장인데 엥..? 스러웠지만 어쨌든 자책은 나중에하고 정해진 9~18시 까지
빡 집중해서 하고 쉴땐 쉬자는 마인드가 강했던 우리팀.. 하지만 뭔가 믿음이 갔다. 결국 완성해낼거같은 그런 느낌!!
그리고 9~18시에는 항상 프로젝트 디코방에 항상 다같이 머물면서 에러사항이나 도움 등을 언제든 요청할 수 있는 환경에서 코드를 칠 수 있다는 것이 아주 큰 안도가 되었다. 덕분에 더욱 그시간만큼이라도 집중을 할 수 있었고, 완성도도 점점 높아져서 큰 도움이 되었다.
내가 팀장으로서 그래도 어느정도 잘했다고 생각한 것은 초반 서로 디자인이나 기능들이 어떤 쪽으로 만들어지고, 수정될때 팀원분들의 의사를 매우 중요시 생각했다. 항상 무엇을 말하든 질문형식으로 말을 하도록 노력하였고 의견 취합이 잘 안될때는 딱 잘라서 그럼 이걸로 해봅시다! 하고 결정을 내린점은 잘한점이라고 생각된다. 그리고 팀원들 사이의 믿음이 정말 중요하다고 느꼈다. 하지만 내가 생각했을때 나의 팀장으로서든 같이 협업하는 사람으로서 못한점과 고쳐야할 점도 계속 눈에보였다. 팀이 초중반쯤에 속도를 내지못할때, 팀장으로써 팀원들과 파이팅하고 헤쳐나가야하는 상황에서 어느순간 내가 팀원분들에게 힘과 도움을 받고있었다. 결국은 어느상황에서도 침착하고 팀원들을 독려해줘야하는 팀장의 역할을 다 해내지못한것 같은 생각이 든다.
우리팀분들 너무 열심히 잘해주셔서 감사합니다!! 한달전으로 100번 돌아가도 100번 다 여러분들과 팀할겁니다!! 매우매우 고생하셨습니당 -든든하지 못했던 팀장-
내가 맡은 기능구현 및 전반적인 코드에 대한 잘한점, 아쉬운점
잘한점
- 리액트 쿼리에서 사용할 Promise를 반환하는 형태의 함수인 실제 호출하고자 하는 비동기 함수를 api라는 폴더를 만들어서 api관련 로직의 모듈 파일을 어디서 사용할지 세분화를 시켜놓은점.
- 처음 폴더구조와 헤더, 푸터 등 공통 컴포넌트들을 만들고 있을때 문득 이 프로젝트에서 자주사용할 Input, Button, Modal 등등을 공통 컴포넌트로 만들어서 가져다가 사용하면 좋겠다 생각하여 만들고 시작한 점.
- 맡은 컴포넌트 하나하나 완성할때마다 계속해서 유저라면 해볼수 있는 모든 상황 (클릭, 터무니없는 값, 엔터) 등을 항상 해보고 넘어가는 습관을 들였다.
- 사용자가 보기 쉽게, 혹은 클릭하기 쉽거나 알아보기 쉽게 만들기 위해서 나름대로 노력을 많이했던 것 같다. hover색, cursor, 랜딩페이지에서 스크롤 효과 등등 사용자가 필요로하는 기능들을 놓치지않게 많이 공을 들였다.
아쉬운점
- 제일 크게 느끼는게 타입스크립트의 경험 전무다. 코드를 치면서도 계속 타입에러에 대해서 전전긍긍하면서 코드를 치기 일쑤였고, 타입을 어느 한곳에 정리를 해둔다고 하긴했지만 타입 중복이 생각보다 많이나왔다. 또한 빌드 과정에서 무한으로 생겨나는 타입에러 폭탄도 우리팀을 한번 강하게 흔들었다. 타입스크립트는 꾸준히 계속 건드리고 공부하자!!
- 역시나 너무 급하게 사용한 리액트쿼리도 상당히 아쉬웠다. 프로젝트 진행하면서 편하다는건 느낄 수 있었지만, 뭔가 더 편하게 쓸 수 있는 것을 돌아가고 있는건 아닌지 의문이 들고, side Effect를 알맞게 걷어낸게 맞는지, 에러처리도 의문이 드는것은 마찬가지였다. 리액트 쿼리는 더(매우 많이) 공부를 해야할것 같다.
- css에 대한 전반적인 이해부족 타입스크립트, 리액트쿼리만큼 엄청나게 애먹은게 css이다. 기본적인 너비값, 마진, 패딩 등도 자꾸 지멋대로 튀어나가기 일쑤였고, 반응형을 구현하는데 px를 많이 쪼갠것도 아닌데 상당히 힘들고 어려웠다. css도 다른 라이브러리나 툴처럼 꾸준히 알아보고 공부해야한다는것을 느꼈다.
- 또 하나 크게 아쉬움이 남는건 역할을 분담하다보니 내가 쳐보지 못한 기능들도 있다. 그 부분은 맡은 팀원분이 코드를 쳐서 PR로 올려주시면 항상 코드를 다 읽고 확인하는데 아무래도 직접 고민해보고 구현해내는것과는 하늘과 땅차이 일텐데 내가 맡지않은 기능들에 대한건 항상 아쉬웠다.
- 그리고 OAuth를 구현하지 못한게 너무나도 아쉬웠다. 시간이 부족했다.. 백엔드분들도 첫번째 아쉬운부분이 OAuth구현이라고 하셨다. 백엔드쪽에서 끝나고도 OAuth구현이 되신다면 무조건 해보고싶다. 못해보고 그냥 끝나버린것이 너무 아쉬웠다
이래저래 좋은점도 많고 아쉬운점도 많았던 메인프로젝트가 끝이나고,
멘토님과의 멘토링, 팀원분들과의 대화 등으로 내가 어떠한 개발자가 되어야할지 생각을 해볼 수 있게되었고
이런 프로젝트와 같은 팀단위 프로젝트는 각자각자가 1인분을 해야하는 팀보다는 팀 전체가 모여서 1이 되면 그거면 충분하다고 생각한다. 프로젝트 기간 내내 너무 재밌게 코드칠수있었고, 항상 어깨피라고, 잘하셨다고 기죽지말라고 매일매일 수십번 말씀해주시는 근실님, 영미님!!
밤에 서버켜달라거나, 에러말씀드려도 항상 불평없이 언제든 편하게 말씀하시고 안되는거 다 바로 말씀주시라고 하시던 백엔드분들 정말 감사했습니다!! 팝콘즈 개발자의 길 항상 응원합니다!!
마지막 사진은 처음 백엔드분들과의 만남에서 대뜸 뽀로로와친구들 들이대며 캐릭터 하나씩 집으라고했던
그날이 생각나서 올려봅니당 낯 엄청가리시면서 이거..해야되냐고 하셨지만 바로 저희가 꽂아주었던...ㅎㅎㅎ