1차 프로젝트를 마치며(feat.Team COOP)

Kim Chioh·2021년 3월 1일
2
post-thumbnail

1차 프로젝트가 끝나는 동시에 위코드 과정이 끝난 기분이 들며 긴장이 전부 풀어져 버린 지금, 다시 그때로 돌아간다면 얼마나 더 잘할 수 있었을까? 생각도 하며, 회고록을 적습니다. 팀 이름부터 co-operation에서 따온 팀쿱은 말 그대로 최고의 협업을 하는 팀이였고, 이 팀을 제 첫 프로젝트 팀으로 만나게 되어 정말 행운이였습니다. 한분한분 이름을 적고 다시 한번 감사함을 전하고 싶습니다. PM샘솔님, 지은님, 지연님, 한아님, 혜윤님, 그리고 현수님 시간 투자도 부족했던 저를 이해해주시고 양보해주신 점들 고맙습니다.

  • 1차 클론 프로젝트로 진행한 사이트 care/of
    소비자 설문응답에 따른 영양제를 추천해주고, 카테고리별 건강 목적 별로 영양제를 세분화 해서 소비자들의 선택을 돕고 구독서비스도 제공해주는 미국의 영양제 사이트.
  • 진행기간
    2021년 2월 15일 ~ 2021년 2월 19일 (12일)

  • 팀 구성 (TEAM COOP)
    프론트엔드 3명 (유샘솔,박지연,이지은)
    백엔드 4명 (강현수, 김치오, 조혜윤, 양한아)

  • 백엔드 테크
    python
    django
    mysql
    corsheaders
    bycrpt
    navercloud sms

1. 프로젝트 접근 & 결과물

프로젝트에 접근하는 방법은 크게 2가지 였습니다. 우선 전체적인 목표를 설정하고 통신을 위한 키값을 조율하는 등 전체적인 회의가 우선 선행되었고, 그 다음으로 백엔드에서의 역할 분담이 있었는데 우리는 특이하게도 페어프로그래밍방식을 착안하여 적용했습니다. 위코드만의 ‘코드카타’방식을 착안한 것인데 이에따라 개인의 기여폭도 넓히고 전체적인 프로세스에 대한 이해가 올라가 오히려 개발 속도가 다른팀보다 훨씬 빠른 결과를 낼 수 있었습니다.

Project approach & Tools

프로젝트에서 백엔드가 담당했던 부분은 API를 처리하는 로직을 짜고 데이터베이스에 있는 데이터를 가지고 프론트엔드와 통신하는 것이였습니다. 접근 순서는 아래와 같습니다.

  • 모델링(Aquery)
  • 개발환경설정
  • 데이터베이스(mysql)
  • 프레임워크(Django)
  • 언어(Python)

1. 모델링

모델링은 영양제를 추천해주고 파는 커머셜사이트였기때문에, 영양제와 알러지, 건강목표, 질병, 식습관 등 many to many 관계에 대한 처리를 하는 것에 공정을 많이 썼습니다. 또 재고처리를 위한 카트로직을 짜는 것을 배울 수 있었습니다.

2. 각각의 엔드포인트의 특징 & 로직

각각의 API를 RESTful 하게 하는 것, 그리고 쿼리파라미터를 받는 것, 각 뷰에서 처리해야 할 로직들을 명확히 하는 것 등이 백엔드 API개발의 챌린지였습니다. 또 상세부분으로는 sms 인증처리, 카트로직, product 뷰의 각각 다른 필터링 등이 있었습니다.

1) User End Point(회원가입부분 참여)

  • SMS 인증
  • bycrypt 암호화 및 로그인 데코레이터
  • 정규표현식을 통한 핸드폰번호 & 이메일 벨리데이션
  • JWT access


    크 언제봐도 기가막힌 우리팀의 회원가입&로그인^^

2) Product End Point(참여X)

  • 상품 list(전체) & 상품 detail
  • Query Parameter를 받기위한 로직처리 (sort) & Q객체를 활용한 필터링
  • 상품 상세보기(비슷한 상품 추천)
  • 신제품 보기

3) Cart End Point(장바구니 참여O)

  • CRUD를 모두 포함한 유일한 뷰
  • 최초 상품 추가시, 오더정보도 생성
  • 장바구니에 담긴 상품이 없을 시 오더정보도 삭제
  • 결제 완료시 장바구니에 담긴 상품도 없어지기 때문에 다시 상품 추가시 오더정보 새로 생성

4) Quiz End Point(참여O)

  • 실제 데이터를 구현해 삽입
  • Q 객체를 이용한 필터링

2. 프로젝트에서 배운 가장 중요한 것.

첫번째. 나는, 같이 일하고 싶은 사람일까?

프로젝트 중간 발표 이후 머리를 한대 맞은 것 같은 기분이 들었던, 준식님의 조언이 아직도 생각이 납니다.

'기술 스택은 시간이 지남에 따라 채워진다. 하지만, 어떤 툴을 연습하고 동료들과 커뮤니케이션하는 훈련은 프로젝트를 진행하는 동안 지금 꼭 연습해야한다.'

준식님의 조언에서 제가 깨달은 바는 화려한 코드를 쓰는 것도 좋지만, 실제 기업에 취업을 할 수 있는 역량을 키워나가는 것이 더 중요한 것이고 그것은 단순히 코드에 집중하는 것이 아니였습니다.

개발이라는 것도 결국 사람이 하는 일이고, 동료들과 협업하는 일이며, 그것을 위해 가장 중요한 점은 팀원들과 커뮤니케이션을 하는 능력을 키우는 것, 그리고 그것을 위해 실무에 적용할 수 있는 툴을 사용할 줄 아는가 였습니다. 예를 들어 지금은 웹개발을 배우고 있지만, 나중에 회사 사정이나 개인 목표에 따라 다른 분야에 일을 하게 될 수도 있는데, 그 때를 위해 채용할 면접관에게 증명되어야 할 능력은 빠른 툴에 대한 적응력, 그리고 커뮤니케이션 능력이라고 생각합니다.

저희 팀이 좋은 커뮤니케이션을 했다고 생각하는 이유는 2가지 입니다. 하나는 기술적인 소통입니다. 단순한 프로그래밍을 위한 기술 뿐만아니라 커뮤니케이션을 위한 툴(Notion, Trello, Slack)을 사용했습니다.

  1. 팀 Slack

  2. 팀 Notion

  3. Git&Github(밑에서 다룰예정)

또 다른 하나는 'I could be wrong mind'입니다. 개발이라는 것이 곧 문제를 해결하는 것임을 위코드에서 미리 배우고 경험했기때문에 내가 이렇게 생각하고 나도 틀릴 수 있어. 문제가 생겨도 괜찮아. 일단 해보자. 라는 생각으로 회의에 임했고 의견들이 빠른 속도로 교류되며 프로젝트를 진행할 수 있었습니다. 프론트와 백 간의 소통에서 어느 하나 고집을 부리지 않았고 서로 배려하며 자신이 틀릴 수 있다는 전제하에 의견을 제시하고 서로 받아들이려는 태도로 임하니 자유롭게 각자의 의견표출이 가능했습니다. (우리는 모두가 yes하는 팀!!)

두번째. Scrum을 위한 툴, Trello

중간 발표 이후, 준식님의 조언에 따라 저희 팀쿱은 스크럼 방식에 대해 다시한번 조율하는 시간을 가졌습니다.

  1. 지난 한주를 회고. 애자일 하지 않은 점들을 수정.
  2. 애자일 방식에 대한 이해를 하고, 앞으로의 한주동안의 Sprint(한주의 목표)에 대해 다시 목표를 하향.
  3. 이를 Trello와 티켓에 적용.(우선순위에 따른 Backlog 수정)
  4. Blocker(우리팀의 난관)들을 평가 리스크를 낮추려는 방법들을 적용.(Team Notion을 통해 프론트와 key를 맞춰 통신에 무리가 없도록 사전에 리스크 차단).
  5. 매일 하는 Stand up meeting에 팀의 Sprint가 Goal 에 맞는지, 또 개인의 티켓(Task)가 전체 Goal 과 Sprint에서 벗어나지 않는지, 다시한번 얘기해보는 시간을 가졌고, 끝나는 시간에 하루를 돌아보며 어떤 블라커들이 있었는지 회고
  6. 마지막 스프린트(2주차)를 마치고 짧은 회고와 함께 우리팀의 결과물에 대한 리뷰도 진행.

세번째. 협업을 위한 툴, Git & Github

Git이 무엇인지는 알았지만 정확히 어떻게 사용되는지에 대한 개념을 익혔습니다. 동시다발적으로 브렌치에서 작업하며 푸시하여 리뷰를 받고 또 거기서 수정해나가는 작업은 그동안 경험해보지 않은 것이였습니다.

실제로 경험해본 Github는 정말 version control system계의 sns 그 자체였고, 프로젝트 동안 Git reset, rebase, clone, push, pull, commit의 형식과 방법 그리고 메세지의 중요성 하나하나에 대해 깊게 알게되는 과정이었습니다.

3. 챌린지 그리고 문제해결

프로젝트를 진행함에 있어서 가장 중요한 점은 사실 단순히 프로젝트를 진행하는 것보다 개인적인 문제들이 아닐까 합니다. 그 중 이번 프로젝트에서 저에게 가장 큰 문제는 바로 시간관리였습니다.

프로젝트와 학교시험, 그리고 논문까지 병행하는 상황에서 시간을 어떻게 분배하고 사용하는 것이 이 프로젝트에서 제가 개인적으로도 중요하지만 팀원들과도 갈등까지 겪을 수 있는 문제의 원인이기도 했습니다.

따라서 우선 저의 마지노선을 정확히 하기로 결정했습니다. 저의 시간참여 한계선을 분명하게 정하고 이를 팀원들에게 정중하게 사전에 양해를 구하고 그에 맞는 역할과 스케줄링을 회의했습니다.(너무나 흔쾌히 괜찮다고 말씀해주신 팀원들께 다시한번 고마워요) 따라서 이에 대한 달성가능한 팀의 목표, 팀원으로써의 목표가 정해질 수 있었고 팀쿱에서의 프로젝트 역할은 제가 평소 100% 발휘할 수 있는 양보다는 조금 작지만 남은 시간을 과제에 활용하여, 개인적인 목표 또한 병행할 수 있도록 했습니다.

두번째는 주어진 시간을 효율적으로 사용하는 법을 공부하여 적용했습니다. 우선 초반에 과제제출과 시험에 여유가 있을때 저의 할일을 몰아서 많이 하는 전략을 취했습니다. 그리고 그뒤에, 단지 주어진 역할이 끝났다고 팀원으로써 역할을 다했다고 생각하지않고, 퀴즈뷰, 장바구니뷰의 서브역할을하며 팀원들의 개인적으로 맡은 각기 다른 뷰를 작성하는데 필요한 논리를 같이 회의했으며 이는 전체 프로세스를 이해하는데 많은 도움을 받아 최종프레젠테이션을 하는데 많은 도움이 됐습니다. 또한, 클론사이트와 같은 초기데이터를 만들고 작동하는 로직을 미리 설계하는 등 각각의 기능 테스팅 및 실제 퀴즈로직 작동에 기여할 수 있도록 노력했습니다.

4. 아쉬운 점 Refactoring!

이번 프로젝트에서 유일한 아쉬운 점으로 꼽을 수 있는 것은 바로 마무리가 아닐까 생각합니다. 개발에 신경을 많이 쓰느라 리팩토링에 신경을 못쓴 부분이 많이 아쉽습니다. 가독성이 높은 코드는 협업에서 정말 중요한데 그 부분을 놓친 것 같아 정말 아쉽습니다. 2차때는 리팩토링 시간을 미리 두어서 개발을 하지 않고 리팩토링만 신경쓸 수 있도록 플래닝을 할 생각입니다.

5. 마치며..

함께하고 싶은 개발자가 목표인 저에게, 앞으로도 함께 개발하고 싶은 팀원분들이(그것도 모두가) 이미 제 옆에 계셨다는 것 자체가 이번 프로젝트는 대성공이였다고 생각합니다. 모든 팀원분들께 감사 인사를 꼭 전하고 싶고, 100점짜리 팀원이 되지 못한 저를 이해해주고, 항상 긍정적으로 소통해주셔서 감사합니다.

매일 개발지식이 부족하다며 배우려는 자세로 임하시는 분위기메이커 혜윤님, 이젠 깍두기 노노해요 ㅎ
우리 팀 최고의 아웃풋 지은님 밝아지신것도 너무 좋고 앞으로도 개발 재밌게 하시길 바랍니다!
제일 독한 통근4시간인데 5시에 자는 지연님 !! 항상 자극받아요 ㅎㅎ
백엔드 원톱 한아님! 어려운 점 척척해결해주시고 맡은 부분 해결이 안되면 밤샘하시던 책임감 있는 모습 잊지못할거에요!
현수님, 장고말투를 버리지 말아주세요 덕분에 꿀잼 ㅎㅎ
그리고 PM샘솔님 누구보다 부담감 많이 느끼셨을텐데 항상 웃으시고 밝게 즐기며 리드해 주신 덕분에 개발 재밌게 잘했습니다 :)


개인적으로도 팀전체로도 배울 점이 너무 많았고, 결과까지 좋아서 더 좋았던 팀쿱이라 행복합니다. 에러가나면 전체가 달려가서 해결하고, 전날 급하게 리뷰받고 끝까지 해결하고 프레젠테이션 발표까지 떨었던 우리들의 모습이 아직도 눈에 선합니다. 무사히 발표까지 마치고 다들 수고했다고 토닥이던 정말 완벽한 팀. 위코드 과정이 끝나고 추가구현하면 좋겠어요. 여러분들, 2차프로젝트도 이번처럼 좋은 과정과 결과 모두 있길 바랍니다. 화이팅!:)

profile
Just do what to do

5개의 댓글

comment-user-thumbnail
2021년 3월 3일

멋져요~ 팁쿱 🥺 잘 보고 갑니다!

답글 달기
comment-user-thumbnail
2021년 3월 3일

치오 님~ 고생 많으셨습니다 이번 프로젝트도 빠셍 빠셍

답글 달기
comment-user-thumbnail
2021년 3월 3일

치오님 덕분에 '팀' 프로젝트를 배운거 같아요 정말 고마웠어요!! 벌써 그리워요ㅠㅠㅠㅠㅠ

답글 달기
comment-user-thumbnail
2021년 3월 3일

팀쿱의 완성 치오님,, 시작 부분 읽으면서 우리 첫 미팅 때 팀명 정하던 모습이 생각났어요ㅠㅠ 다시 돌아가고 싶어라.. 역시 치오 님의 탄탄한 내공이 느껴지는 회고록 ✨ 나중에도 또 보러 와가지구 우리가 이렇게 잘 해냈던 팀플 되새기며 힘 얻어 갈게요!! 잠깐의 부재에도 엄청나게 허전했던 치오리더님! 2차끝나고도 우리 다시 리팩토링+추가구현 잊지 말아요 😛

답글 달기
comment-user-thumbnail
2021년 3월 14일

우리의 피지컬, 멘탈 관리자 치옹님,,,
치오님은 우리의 기둥...
core/of빨리 다시 뭉쳐요 최고의 TEAM COOP!!!

답글 달기