[monawe] 1차 프로젝트 리뷰

Nina·2020년 11월 1일
1
post-thumbnail

1. monawe


대표적인 국내 문구/사무용품 브랜드 모나미의 공식 쇼핑몰인 '모나미몰'을 클론 코딩하는 프로젝트를 진행하였다.

🖋 기간

2020.10.19 ~ 2020.10.30

🖋 사용된 기술

백엔드: Django, MySQL
프론트엔드: React, Scss
공통: git, github

🖋 팀원

백엔드: 민경민, 황채영
프론트엔드: 김수연(PM), 김한나, 백경민, 이지영

2. 협업

🖋 프론트엔드 + 백엔드

(1) 목표


초반에는 욕심이 앞서서 stationery와 monami pet, story pick 세 개의 탭을 구현하고자 하였다. 하지만 2주라는 한정된 기간 안에 끝내야하고 교육 목적으로 하는 프로젝트이기 때문에 하나의 기능을 제대로 구현하는 것이 낫겠다는 판단을 하였다. story pick은 블로그 형식으로 쇼핑몰 클론의 목적에는 부합하지 않는다고 느꼈기 때문에 제외하였고, 모나미 펫은 계속 가져가고 싶었으나... 펫을 하게되면 부가적으로 구현해야하는 기능들(마이펫 관리, 정기배송, 펫 용품 옵션들 관리 등)이 방대해져서 제외하였다. 그래서 모나미답게! 문구에만 집중하는 사이트 탄생.

(2) 프론트엔드와의 협업

프로젝트를 시작하고 첫 주에는 프론트엔드 분들은 레이아웃 잡고, 우리 백엔드는 모델링하느라 어떤 기능까지 구현할지 얘기할 때 빼고는 딱히 프론트엔드와의 소통의 필요성을 느끼지 못했다. 두번째 주에는 다짐했다. 위코드 종강하는대로 프론트 공부도 하리라..!

프론트엔드는 html과 css 때문에 절대적인 노가다의 시간이 필요해서 기능 구현이 백엔드보다 조금 늦었고, 나는 나대로 모델링이 끝나자마자 api를 만들었다. JsonResponse를 어떻게 주어야하는지도 모르고, RESTful API가 뭔지도 모르는 상태에서 막 짜다보니 추후 전부 갈아엎어야 하는 상황도 맞닥뜨렸다(예를들면 장바구니 상품 GET하는 코드를 짰는데 JsonResponse로 상품 아이디만 띨렁 보낸다든가... 옵션 여러개를 담는걸 생각 못하고 하나의 상품 옵션만 선택할 수 있게 만든다든가... 다시 생각하면 어처구니가 없다). 프론트엔드와의 충분한 소통이 중요하다는 점을 여실히 느꼈다.

또 다른 문제는 내가 프론트엔드에서 사용하는 기술(React 등)을 모른다는 데에서 생겼다. 프론트엔드 팀원분이 "패치가..."라고 하면 나는 알고있는 패치가 http 메소드 'PATCH'밖에 없었는데 알고보니 fetch 함수였다거나 하는 일이었다. 같이 일하고 싶은 개발자가 되기 위해서는 내가 지금 하고 있는 백엔드 개발 공부 뿐만 아니라 프론트엔드 개발 공부도 필수적이라는 생각이 들었다. 다행히 같이 백엔드를 맡았던 경민님께서 프론트엔드 개발 지식이 있으셔서 중간에서 통역을 해주셨다. 게다가 남는 시간에는 프론트엔드 개발도 하셨는데 너무 멋있었다. 나도 빨리 성장해서 그렇게 동료들을 도와주는 개발자가 되고싶다.

쓰다보니 반성문처럼 됐는데, 마지막에 팀원분들이 나한테 '개떡같이 말해도 찰떡같이 알아들었다'라는 피드백을 주셨다. 빈말일지 모르지만 너무 감사하고 뿌듯했다!

🖋 백엔드

(1) 목표


(최종적으로 구현한 api)
처음에 구현하고자 했던 기능 중 '주문/결제' 빼고는 모두 구현할 수 있었다(주문 뷰는 대충 작성했지만 시간관계상 프론트와 합쳐보지 못했는데, 나중에 리팩토링을 하게 되면 꼭 구현해보고 싶다).

(2) 백엔드 팀원과의 협업

나보다 훨씬 잘하는 분과 팀을 하게되어 처음에는 많은 부담감을 가지고 시작했다. 물론 배울게 많을 것은 확실했지만 쓸모없는/무능한 인간이 되는 것을 극도로 싫어하는 성격상 팀에 짐이 될 것 같아 걱정이 많았다. 무엇보다 내가 상대적으로 속도가 느려서 프로젝트에서 할 일이 충분히 주어지지 않을 것 같았다. 고민하다가 프로젝트 시작하고 셋째 날 쯤에 말씀을 드렸는데 경민님이 이해한다고 해주셔서 감동이었다..😢 그 뒤로는 각자 구현할 기능들을 정해서 했는데, 걱정을 덜고나니까 더 몰입해서 할 수 있었던 것 같다.

소통에는 크게 문제가 없었지만 문제는 깃이었다. 서로 브랜치를 왔다갔다 하면서 작업하니 꼬이는 일이 종종 발생했다. 이를 보완하고자 브랜치를 더 만들어서 각자의 브랜치에서 작업하고, 풀이나 머지하는 경우에는 꼭 상대에게 먼저 알렸다. 그 후 깃으로 인해 당황하는 일은 없었다.

3. 당근과 채찍

🖋 당근

🥕 솔직히 말하면 프로젝트 시작 전에는 내가 뭘 하고있는지도 몰랐다. 그냥 하라는대로 따라하고, 치라는대로 따라서 칠 뿐 지식을 정말 내 것으로 흡수했다고 느껴지지 않았다. 위스타그램을 하면서 처음으로 프론트엔드와 붙여봤는데 처음에는 신기했지만 곧 '그래서 이게 뭐하는거지...?'라는 생각이 들었다. 이번 프로젝트를 하면서 처음으로 프론트엔드와 제대로 합쳐보고, api가 동작하는 것을 보면서 백엔드 개발자가 정확히 어떤 일을 하는건지 이해할 수 있었다.
🥕 모델링이 나쁘지 않았다. 그리고 초반에 모델링을 잘 하는 것이 얼마나 중요한지를 배웠다. 타인에게 설명하기 힘든, 스스로도 이해가 잘 안되는 모델링을 만들었을 때는 코딩을 할 엄두가 나지 않았는데, 제대로 만들고 나니까 코드가 술술 써지는 경험을 했다.
🥕 경영학과 전공자로서 팀플이라면 학을 떼는 인간이었는데.. 아마도 인생에서 처음으로 즐겁게 팀플한 경험이지 않을까 싶다. 그만큼 모두 좋은 분위기를 유지하기 위해 최선을 다했.. 아니 최선을 다할 필요도 없이 그냥 항상 훈훈한 분위기였다. 초반에는 아무 생각 없이 api를 짰지만 본인의 만행을 깨달은 후 어떻게 하면 프론트 분들이 데이터를 쉽게 쓰실 수 있을지 고민하며 코드를 수정했고, 그러면서 협업이 가능한 개발자로 점차 진화한 것 같다.

🖋 채찍

🔥 마음이 너무 급했다. 2주라는 기간은 너무 짧고, 구현해야 하는 것은 많고, 실력은 한참 부족하게 느껴져서 초반에 꼼꼼하지 못했던 것이 사실이다. 중간에 컬럼이나 테이블을 추가하기 위해 DB를 수정해야 하는 일도 있었다. 너무 조급해하지 말고, 차근차근 계획을 세워서 할 필요를 느꼈다(+ Trello를 잘 이용하자!)
🔥 위에서도 말했듯이 프로젝트 초반에 프론트엔드 분들과의 소통이 부족했다.
🔥 코드의 효율성은 전혀 고려하지 않았다. 기능 구현에 급급해서 어떻게 하면 더 효율적으로 짤 수 있을지에 대해서 생각하지 못했다. 완성하고 보니 기능은 다 동작하지만 어디 보여주긴 부끄러운 코드들 투성이였다. 2차 프로젝트 끝나면 리팩토링해야지....

profile
https://dev.to/ninahwang

0개의 댓글