[Retrospective]1차 프로젝트를 마치며

jake.log·2020년 9월 28일
3

1차 프로젝트가 끝났다.

나는 12기 1명의 동기와 Back-end를 맡았고, 4명의 Front 팀원들과 함께 Logitech 웹사이트 클론을 진행했다.


1.시작이 반이다.. 시작이 중요하다.


  • 로지텍 클론을 시작하면서 우리는 협업 툴로 Trello를 사용했다. 여러명이 team으로 개발을 진행했기 때문에 현재 진행 상황에 대해 서로 파악이 필요했고, 스크럼 방식으로 2주동안 프로젝트를 진행했다.

  • 우리 팀이 기록한 Trello

  • 첫날 아직 많이 친하지 않았던 팀원들과 함께 Logitech 웹 사이트를 어디서부터 어디까지 어떻게 클론 할 것인지 회의를 진행했다. 서로 처음 이야기하는 팀원들이라고 해서 소통에 어려움은 없었다. 개발자라면 응당 커뮤니케이션을 잘해야하기에 우리는 서로 필요한것 해야할 것을 잘 이야기했다. 첫회의를통해 모든 사이트의 기능을 구현하면 좋지만, 2주라는 시간적인 제약이 있기에 Logitech의 메인, 상품 리스트, 상세페이지, 계정, 장바구니 혹은 주문 기능까지 하자는 결론을 내렸다.

  • 이 과정에서 프론트 팀원들과 어떤 페이지의 데이터를 어떤 방식으로 주고 받을지 더 디테일하게 이야기를 했어야 했는데, 제대로 하지 못했다. 사실 그렇게 해야하는걸 알지 못했다. 우선은 각자 해야할 일들을 계획하고 바로 시작!

  • 프론트와 백의 데이터 통신을 위한 의사소통이 시작부터 얼마나 중요한지는 2주차 뷰를 만들고 통신을 시작할 때 알게 되었고, 그로 인해 시작이 반이었구나라는 사실을 깨닫게 되었다. 하나의 Team이기 때문에 첫 과정부터 서로를 배려하고 소통하는 팀워크를 통해 프로젝트의 향방이 결정된다는 걸 알게되었다. 팀에 누가되지 않기 위해 내것만이라도 잘하자는 개인주의적 생각으로 2주를 보낼 때가 많았는데 그게 팀에 도움이 안 된 것 같아 개인적으로 아쉬웠다.


2.장애물은 넘으라고 있는거


  • 앞서 말했듯이 무엇이든 시작이 가장 어렵듯이 이번 프로젝트도 시작이 어려웠다. 프로젝트를 하기 전 '내가 잘 할수 있을까? 팀에 누가되지는 않을까?' 라는 마음이 컸다. 그래서 어떤 방식으로 Logitech 클론을 진행할지 다른 백엔드 팀원과 함께 지속적으로 논의 했고, 우리가 할 수 있는 범위를 정했다. 기능을 모두 구현하지 않기 때문에 부담감은 적어졌다. 그냥 이대로 하면 잘 될 것 같았고, 큰 장애물은 없다고 생각했다. 배운걸 잘 써먹으면 되니까! 그런데.. 장애물이 바로 생겼다. Logitech 사이트에 있는 데이터를 크롤링 하기가 쉽지가 않았다.

  • 일단 내가 아직 크롤링을 잘 몰라서 그렇기도 했지만, 데이터가 너무 많이 얽혀 있었고, 크롤링해야할 상세페이지 데이터들의 HTML 명칭이 다 달라서 어떻게 데이터를 수집해야할지 감이 안잡혔다. 그래서 상세페이지도 모두 구현하지 못하고 일부 페이지만 크롤링 하여 진행하기로 프론트와 협의했다. beatifulsoup과 selenium을 이용해 크롤링을 진행했는데, 아무리 크롤링을 해도 넘어오지 않는 데이터들.. 그리고 url에는 쉼표가 많아 csv저장을 할때도 애를 먹었다.

  • 그렇지만 장애물은 넘으라고 있는거 아니겠나~! 상품 리스트의 경우 크롤링 연습했던 경험을 살려 크롤링이 잘 되었지만, 상세페이지는 그렇지 못해서 수집이 안 되는 데이터는 일단 직접 손으로라도 가져왔다.

  • 물론 손으로 직접 데이터를 가져온게 좋은 방법이진 않지만, 프론트에서 필요한 데이터를 뽑아내기 위해 내가 맡은 데이터 수집하기 역할을 책임감있게 했다는 부분에 스스로를 칭찬하고 싶다. 하지만 더 많은 데이터를 가져올 수 있는 실력의 부족 그리고 데이터를 가져오는데 시간을 너무 많이 할애해 시간 분배를 못했던 점은 너무 아쉬었다. 다음 2차 프로젝트때는 데이터를 최대한 빠르게 가져와, django view 로직을 짜는데 시간을 조금 더 투자해보고 싶다.

  • 크롤링한 데이터 중 일부


3.Modeling의 중요성


  • 데이터를 가져오는데 어려움이 있었던 점 중에 크롤링에 아직 익숙하지 못한 나의 부족함도 있었겠지만, Modeling을 제대로 하지 못했기 때문에 생기는 문제가 더 컸다.

  • 가장 처음으로는 프론트와 데이터를 어떻게 가져올지 소통이 안 되었어서 모델링을 너무 단순하게 했다.

  • 두번째로는 one to one , many to many ,one to many 관계에 대한 이해가 부족해 처음 모델링 할 때 제대로 하지 못했다.

  • 이러한 이유로 프로젝트를 진행할 때 모델링을 계속 수정해야 했고, 이를 통해 django models.py도 계속 수정.. 데이터 베이스도 다시 업로드 하는 일을 몇번 진행했다.

  • 이를 통해 모델링이 백엔드에서는 진짜 중요하고 모델링이 잘 되면 이후의 과정이 조금 더 수월하게 진행이 될거라는 걸 알게 되었다. 다음 2차 프로젝트에는 모델링에 조금 더 중점적으로 시간을 투자하고 대충 넘어가지 않도록 노력해보자!


4. 아직은 구름같은 깃과 깃허브


  • 이번 프로젝트를 진행하며 깃과 깃허브로 소스관리를 했는데 정말 많이 배웠다.

  • 새로운 브랜치를 형성하고 add , commit, push 하는 과정과 함께 협업할 때 생기는 conflict, master branch로 merge가 되는 과정 등을 큰 그림처럼 이해를 할 수 있게 되었다.

  • 특히 백엔드 팀원과 conflict를 해결하고 merge를 하게 될 때 기분이 좋고, 한 단계 나아가고 있다는 느낌이 좋았다.

  • 사실 1차 프로젝트가 끝난 현재 깃을 사용하는 일은 조금 어렵다. 뭔가 구름 속을 걸어다니느는 느낌이다.
    많이 써보지 못해서 익숙하지 못한게 제일 큰 것 같다. 그리고 repository가 잘못될것 같다는 두려움으로 함부로 사용을 못하는 것도 있다. 그렇지만 익숙해지고 잘 적응하기 위해서는 계속 사용해봐야할 터이다!

  • 2차 프로젝트를 통해서 그리고 혼자서도 연습을 많이 해서 추후 일 할 때 큰 걸림돌이 되지 않도록 하자.


5. 나도 이제 웹사이트 만들 수 있다!


  • 2주간 과정을 통해 1차 프로젝트가 끝이 났다. 원래 구현하려던 기능들을 모두 구현하지는 못했다. 최소한의 기능 구현이 목표였지만, 같이 작업하던 백엔드 팀원이 개인적인 사정으로 2주차에 장바구니 기능을 구현하는데 지장이 생겼다. 그 이외에 목표했던 기능들은 모두 구현이 되었고 프론트와의 통신도 잘 되었다.

  • 다른 팀들에 비해 조금 부족하다는 느낌을 지울 수 없었다. 더 많은걸 도전하려는 도전정신이 부족했다.용기와 욕심도 필요한데 아쉬운 마음이다. 게을렀다. 그래서 팀원들에게 미안한 마음이다.

  • 그치만 코딩을 배운지 1달 만에 웹사이트의 전반적인 부분을 다루어보면서 하나의 큰 사이클을 구현해냈다는 점에 우리 팀 모두 칭찬받아 마땅하다. 그리고 하나의 팀으로 커뮤니케이션하면서 처음엔 잘 하지 못할것 같았던 웹사이트를 만들어 냈다는 점도 너무 기쁘다.

  • 많이 부족했던 1차 프로젝트지만 1차 프로젝트에서 나의 부족한 점을 많이 파악할 수 있었고, 내가 어떻게 얼마나 어떤 방식으로 노력을 해야하는지 메타인지를 높일 수 있던 시간이었다.

  • 처음부터 모두 잘하면 재미없다! 남들보다 부족한건 조금씩 채워나가면 되고, 꾸준하게 하나씩 탁월성을 갖추며 나아가면 된다.

  • 이번 1차 프로젝트를 통해 나도 웹사이트의 기능들을 구현해낼 수 있다는 점에 스스로 만족하고 칭찬하고 싶다. 그리고 앞으로 2차 프로젝트 , 3차 .. N차 프로젝트를 할 때마다 나는 더 성장 할 것이다.


Appendix) 기억하고 싶은 코드


  • 아래 사진에서 thumbnail_urls를 가져오는 코드는 잊지 못한다. 상품 디테일 뷰를 짤 때 상품 썸네일과 색깔, 그리고 색깔의 이미지들을 엮여있는 다대다 테이블이 있었다. 해당 데이터를 가져올 때 너무 어려움이 컸고, 딕셔너리로 데이터를 가져와야 했는데 결국엔 멘토님의 도움을 받은 코드다. 물론 나 혼자의 힘으로 직접 짜지는 못했지만 many to many 테이블에서 데이터를 가져올 때 어떤 식으로 접근해야하는지 생각을 많이 했던 코드라 성장에 도움이 되었다.

  • 아래 사진은 리스트 컴프리헨션이 잘 적용되어 product_list 데이터를 가져왔다. 사실 멘토님의 도움 전에는 for문을 상단에 두어 반복문을 돌린 조금은 지저분한(?) 코드 였는데 리스트 컴프리헨션을 쓰니 훨씬 더 깔끔해졌고 효율적이게 되었다. 그리고 아직 리펙토링이 조금 더 필요하지만 상품 리스트를 가격별로 필터하는 기능도 넣었는데, 필터링을 할 수 있는 order_by를 쓰는게 재미있기도 하고 신기하기도해서 기억하고 싶은 코드다.

profile
꾸준히!

7개의 댓글

comment-user-thumbnail
2020년 9월 28일

성은님 2주동안 플젝하느라 수고많으셨고 감사했습니다!! 2차 플젝은 저보다 더 좋은 팀원 만나세요!! ㅋㅋㅋㅋㅋㅋ😀😀

1개의 답글
comment-user-thumbnail
2020년 9월 28일

성은님 고생 많으셨습니다~~다음에 또 프로젝트 같이 해요!!ㅋㅋㅋㅋ

1개의 답글
comment-user-thumbnail
2020년 9월 28일

잘보고갑니다

1개의 답글
comment-user-thumbnail
2020년 11월 9일

원티드 클론 프로젝트 후기도 써주세요 현기증나요 ㅠㅜㅜ

답글 달기