>retrospective: 1차 프로젝트 후기

matisse·2020년 5월 5일
1

프로젝트를 하며 느낀 점이 머릿속에서 날라가기 전에, 간단히 정리해보려고 한다. 부트캠프 1차 프로젝트는 사이트를 정해 clone하는 것이었는데, 우리 팀의 사이트가 크롤링 도중 맛이 가는 바람에 🤯 중간에 사이트를 바꿔 우여곡절이 많았다.

모델링부터 다시 시작해야 돼서 시간이 많이 부족했지만, 왠지 프로젝트를 1.5개 한 것 같았고 ㅎㅎ 주어진 시간이 적으니까 오히려 주의깊게 봐야 할 것이 무엇인지 더 잘 보였던 것 같다.


⭐️ takeaway

1. 모델링의 중요성

우리 팀 백엔드는 일주일동안 크롤링과 모델링만 했다고 해도 과언이 아니다. 어쩌다보니 1.5개의 프로젝트를 하게 된 탓도 있지만, 백엔드는 모델링을 하면서 인고의 시간을 거칠 수밖에 없는 것 같다.

프론트엔드와 달리 백엔드는 작업에서 시각화되는 부분이 많이 없어 조급할 수 있다. 나도 aquery 외에 나온 결과가 없어 많이 불안했지만, 결과적으로 모델링이 끝나면 view는 생각보다 금방 나온다. 로직을 짜면 코드를 다듬을 시간만 있을 뿐이다.

- try record test

aquery를 뚫어져라 본다고 좋은 모델링이 나오진 않았다 😔 나중에는 마음이 급해 어떻게 해야 쉽게 데이터를 가져올 것인지를 찾기보단 어떻게 다 넣을 수 있을지만 고민한 것 같다. 내가 직접 해보질 않고 말코딩(....)을 하다 보니 지치고 시간도 오래 걸렸다. 2차에서는 다음 과정으로 진행해보면 좋을 것 같다.

  1. 데이터를 aquery로만 보지 말고, 우선 1차 model을 빠르게 작성
  2. django python shell에서 record를 몇 개 넣어보기
  3. 헷갈리는 부분을 중점적으로 보면서 어디가 데이터를 가져오는 것이 어려울지 파악, model 수정

2. 보기 좋은 view

주어진 시간이 짧아 우선 기능 구현을 목표로 코드를 썼지만, 결국에 다른 사람이 코드를 봤을 때 예쁘고 깔끔한 view를 쓰는 것이 중요한 것 같다.

- upgrade django skills

이번에 코드를 짜면서 아쉬웠던 것은 뭔가 자랑할만한 코드가 없었다는 점이다. 나름대로는 시계 설정하기 부분을 담당하면서 복잡한 로직을 짜긴 했지만, 코드를 리팩토링해봐도 예쁘게 나오질 않아서... 🥺 그 부분이 너무 너무 아쉽다. 멘토님한테 코멘트를 더 받아야겠다 꼭 꼭

select_related, prefetch_related 뿐 아니라 언더바를 통해 테이블 타고 들어가기 등 django의 기능은 너무나 많은데 나는 10중에 2밖에 모르는 것 같다. 공식 문서에서 최대한 많은 function과 command를 배워 최대한 써먹고 2차에서는 꼭 나중에 봐도 뿌듯한 코드를 써야겠다.

- consider time complexity

당연한 것인데 몰랐던 것이 바로 코드의 길이다. 롤렉스 홈페이지의 시계 설정하기는 여러 시계 옵션 중 아래 순으로 옵션을 저장해가면서 차례대로 선택할 수 있다.

사이즈 > 소재 > 베젤 > 브레이슬릿 > 다이얼

처음에는 하나의 뷰에서 위 모든 것을 해결하려고 했고, 실제로 최종 merge는 그렇다. 하지만 하나의 뷰에서 위의 모든 기능을 실행하려면, 결국 한 번 선택할 때마다 쓸데 없는 기능들이 계속해서 따라오고 그러면 결국 서버의 속도는 저하될 수밖에 없다.

빠른 사이트를 위해서는 서버에서 데이터를 어떻게 저장하고, 또 불러오는 지가 이렇게 중요하다는 것을 피부로 느끼게된 것 같다. 아직 코드 길이 외에 어떤 변수가 얼만큼 시간에 영향을 주는지는 모르겠으나, 짧고 간결한 코드의 중요성은 확실히 배웠다.

💧 아쉬운 점

1. 배우지 못한 부분

프로젝트를 시작하기 전에 부트캠프에서 배우지 못한 것들이 있어 아쉬웠다. 커리큘럼에서는 있었지만 넘어가게 되었고, 아래 두 가지를 모르는 상태로 프로젝트를 시작했기 때문에 불투명한 부분이 꽤 있었다. 명확했더라면 조금 더 빨리 진행했을 것 같기도 하다.

물론 프로젝트를 하면서 알게 되었지만, 특히 API 붙이기의 정확한 프로세스에 대해서는 조금 더 공부가 필요할 것 같다.

  • 프론트엔드와 API 붙여보기
  • mysql에 데이터 한 번에 넣기
  • query string 활용

2. Agaile 방식

아래 agaile 방식에 대해 배웠지만, 실천하는 것이 어려웠다. 은우님이 세션에서 예전 회사는 에자일 방식을 따르는지 check하는 manager가 별도로 있다고 말씀하셨는데, 왜 있는지 조금이나마 알 것 같았다.

  • 1주일 간격으로 두 번의 sprint
  • 매일 15분씩 standup meeting
  • trello card 작성
  • 효율적인 분업: ❗️중요한 부분 먼저 작업 ❗️

내 코드에 몰입하다 보면 전체 프로젝트의 흐름, 그리고 소통해야 하는 사람과의 시간을 잡는 것이 어려워진다.

무조건 미팅을 하면서 각자 무엇을 하는지를 공유하고, spint 별로 계획을 잘 세워 지키는 것이 프로젝트의 핵심처럼 느껴졌다. 그리고 팀 백엔드 분들과 작업할 때 어쩌다 보니 많은 task를 함께 했는데, 배우고자 하는 취지이긴 했으나 각자에게 조금 더 위임하고 업무를 나눠서 하는게 더 효율적이었을 것이라는 생각이 든다.

communication is the key!

프론트엔드와의 커뮤니케이션도 정말 중요하고 (사전에 미리), 백엔드 간에도 분업과 대화를 잘 해야 프로젝트가 효율적으로 잘 굴러갈 것 같다.

나는 이걸 하고 있으니까 다른 사람은 이걸 하고 있겠지?와 같이, 무언가 내 예상대로 진행될 것이라고 생각하면 꼬이기 쉽다.

미리 미리 얘기하고 미리 미리 나눠서 결과만 딱딱 받아볼 수 있도록 정리가 필요하다.


프로젝트를 한 번 해보니, 부족한 점이 확 보인다. 물론 1차 결과도 내 나름대로 만족스럽다.
지금까지 써보지 못했던 형식의 view를 써봤고, querystring으로 요청 값에 따라 다른 데이터를 주는 로직을 짜서 뿌듯하다.

하지만 쉬는 동안 필요한 부분을 많이 보강해서, 2차 때는 자랑할 수 있는 코드를 꼭 쓰고 싶다.

앞으로 남은 6주도 화이팅팅팅 🌈🌈🌈🌈

0개의 댓글