프로젝트가 끝난지 시간이 꽤 지났지만.. 이후에 특별반과 이력서 준비등으로 미뤄졌던 파이날 프로젝트의 회고를 드디어 작성합니다!!
4주동안 진행되었으며, 4명이서 작업을 진행하였습니다.
[ 배포 링크 ] https://picaff.ga
[ 깃헙 링크 ] https://github.com/codestates/picaff-server
[ 소개 문서 ] https://bit.ly/3ddzdwu
[ 미팅 로그 ] https://bit.ly/3gPXJpR
[ 코드 리뷰 ] https://bit.ly/35Sjjnc
피카프(PICAFF)는 유저의 취향을 분석하여,
각 유저에게 적합한 홈카페 아이템을 추천해 드리는 맞춤형 큐레이션 서비스입니다.
📃 간단한 취향파악 설문
간단한 질문 몇 가지를 통하여 내게 맞는 홈카페 취향을 확인 할 수 있어요.
☕ 내 취향에 맞는 원두 정보와 추출용품 정보
취향에 맞춰 맛있게 먹을 수 있는 원두와 커피용품까지 추천해줘요.
🤼 친구들과 공유하기
친구들에게 서비스를 공유해요.
💸 오픈마켓 시세 정보 확인
현재 오픈 마켓에서는 내 취향의 커피는 어느 정도에 거래되는지 바로 알려줘요.
메인 랜딩페이지
설문조사 페이지
설문조사 이후 추천아이템 조회
개별 아이템 조회
처음 프로젝트의 아이디어는 서로 다양한 의견을 모아봤으나, 정훈님의 의견중에 하나인 커피관련 큐레이션 서비스를 제작해보자는 의견을 채택하게 되었습니다. 마침 제가 전에 다니던 직장이 커피 관련회사로 정보를 얻기가 매우 수월했습니다 :)
퍼스트 프로젝트때 기획단계를 너무 부실하게 진행하여 프로젝트를 진행하면서 너무 많은 부분에서 수정사항이 발생했던 경험이 있었습니다. 파이널 프로젝트는 일주일동안 정말 세세하게 팀원간의 지켜야할 룰, 코드리뷰시간, 회의진행시간과 회의록 작성방법, Dev-log작성등에 대한 부분까지 모두 결정하고 진행하였습니다. 목업, 스키마디자인, 워크플로우등 모든 작업을 다 함께 miro를 사용해 진행하였고, git에서 협업을 위해 사용할 브랜치와, 풀리퀘 이후 머지 이전에 지켜야할 규칙, 사용해야할 명령어까지 모두 기획단계에서 정하게 되었습니다.
기획단계에서 정말 많이 배우고 얻었던 경험이 따로 많은데, 정훈님께서 보일러플레이트를 클라이언트/서버쪽 모두 제작해주셨습니다. 기획단계에서 처음 경험해보는 작업이였고, 해당 과정은 이후 단계별로 개발과정이 진행되면서 너무 큰 도움이 되었습니다.
또한 깃에서 작업한 내용을 PR을 보낼때마다 나머지 3분의 코드리뷰(검수?)를 받았을때만, 머지를 진행할 수 있게 설정하였고, 각각의 풀리퀘, 머지가 진행될때 디스코드로 연동하여 바로바로 알람으로 확인 할 수 있게 설정하여 진행한것도 너무 큰 도움이 되었습니다.
프로젝트에서 새로 도입한 기술은 타입스크립트와, 타입스크립트를 사용하기 위해 적용한 TypeORM이였습니다.
개인적으로 JS를 배우기 이전에 JAVA를 먼저 배웠던 경험이 있어서 타입을 지정해주는것 자체에 크게 어려움은 없었습니다. 하지만 TypeORM에서 Entity를 설정해주는 부분에서 이전에 사용하던 시퀄라이즈와의 차이점과, Entity에서도 타입을 지정해줘야 하는 부분에서 조금 어려움을 느꼈습니다.
타입스크립트도 처음에는 어렵지 않게 시작하였지만, 개발이 진행될수록, 예상하지 못하는 오류들을 많이 만나게 되었습니다. 기존의 JS를 사용할때와는 다르게, 타입이 지정되다보니 해당 변수에 들어오는 타입에 따라 예외처리를 진행해 주지 않으면 코드 작성과정에서 오류가 생겨나는것을 여러번 경험했습니다.
하지만 하나하나 작성해나가면서 기존의 JS를 사용했을때와는 다르게 조금 더 명확하게 오류가 발생하는 부분을 미리 체크할 수 있었고, 사용하는 다양한 변수의 타입을 미리 알 수 있어서 코드 작성이 훨씬 편하게 느껴졌습니다.
조금 아쉬운 부분은 제네릭 타입을 완벽하게 이해하지 못해서, 제대로 적용하지 못한점과 as캐스팅을 최대한 피하고 싶었지만, 해결법을 찾지못해 몇몇부분에서 해당 캐스팅을 사용한점이 조금 아쉬웠습니다.
정말 4주동안 잠도 많이 줄이고 건강을 포기하고 프로젝트에 집중할만큼 최선을 다했습니다. 새로운 타입스크립트를 사용하고, 크롤러 제작을 위해 새로운 모듈을 사용하며 공부할 시간도 필요했기때문에, 주말에는 주로 새롭게 공부가 필요한부분에 집중해서 시간을 투자했습니다. 아마 그래도 지금 팀원분들이 아니였다면 성공하기 어렵지 않았을까..? 라는 생각이 들기도 합니다.. 정말 서로 모르는 부분이나, 어려운 부분에 대해서 솔직하게 말씀드리고 필요한 정보들과 조금 더 빠르게 익히기 위해 필요한 레퍼런스들을 서로 공유하면서 빠르게 프로젝트에 적용시킬 수 있었습니다.
또한 아침마다 오전회의를 진행하여, 현재 진행상황과 문제점, 오늘의 작업을 서로 공유하면서 작업을 진행하였습니다. 해당 내용을 모두 회의록으로 기록해 남겨두었습니다.
오후에는 항상 다들 다시 만나서, 오늘 작성한 코드에 대한 리뷰시간을 가졌습니다. 이 부분이 정말 많은 도움이 되었습니다. 보완할점이나, 해당 작성한 코드에서 정말 좋은부분이 있다면 그 부분에 대해 서로 의견을 공유하였습니다. 처음에는 코드리뷰라는것 자체가 부담스럽고, 잘할수 있을까..? 라는 마음이 앞섰지만, 프로젝트를 진행하면서 3주차가 지날때쯤에는 코드리뷰시간이 매우 기다려지는 순간이 오게 되었습니다.
작업을 마치고, 배포까지 모두 확인한 이후..정말 후련함과 아쉬운 감정이 너무 크게 다가왔습니다. 스스로 만족할만한 결과이긴 하지만, 제가 조금 더 타입스크립트를 빠르게 익혔다면..? 배포를 조금 더 빠르게 진행했다면..? 하는 아쉬움이 크게 남았습니다. 하지만 이번 프로젝트를 진행하면서 제일 큰 소득은 소통의 중요성과, 처음 기획단계의 중요성을 크게 느낀것만으로도 만족스러운 프로젝트가 아니였나 생각합니다 :)