대외활동

[피로그래밍 16기] 프로젝트 중간 회고

  • -
728x90

약 3주간 진행한 피로그래밍 16기의 프로젝트 여기사진을 회고하며, 당시 저희 팀은 어떤 방식으로 진행했는지, 그리고 그 과정에서 제가 겪은 트러블 슈팅 일부에 대해 회고해 보았습니다.

 

거의 2년 만에 이전 동아리인 피로그래밍에 대한 회고록을 작성해 본다. 평소 정리는 안 하지만 기록은 하는(?) 나는 항상 메모장과 비공개 티스토리에 쓰다만 글과 휘갈긴 메모가 넘쳐나서 오래된 프로젝트임에도 자료들은 많이 가지고 있다.(비록 하나도 정리가 되어있지 않지만) 이제 이 개인 기록들과 팀 노션을 활용하여 최대한 자세하게 회고록을 작성해보고자 한다. 

 

본격적인 시작 전

본격적으로 프로젝트를 시작하기 전, 많은 사항들을 정하고 넘어가야하기에 회의를 통해 하나하나 정리하며 진행하였다. 덕분에 더 잘 진행할 수 있었던 것 같다.

리네이밍

우리 팀은 먼저, 네이밍을 다시 할 필요가 있었다. 팀장님도 이름을 변경하기를 원하셨기 때문에, 팀원들 모두가 다양한 의견을 내서 카톡 투표 기능을 통해 최종 프로젝트 이름을 정했다. 

 

스크롤이 끝이 없던... 이름 후보

정보를 어떻게 가져오지?

다음으로 우리의 프로젝트는 맵에 포토 부스의 정보를 가져오는 것이 서비스에서 중요한 부분이었는데, 이때 정보를 어떤 식으로 가져오는가에 대한 회의가 있었다. 크게 두 가지의 의견이 나왔다. 첫 번째는 크롤링, 두 번째는 에어비엔비처럼 사용자 리뷰를 통해 진행하자는 것이었다. 

크롤링으로 정보를 가져오기에는 다양한 포토부스들의 리뷰가 각각의 블로그나 개인 웹사이트, SNS등 너무 다양한 곳에 퍼져있었기 때문에, 우리는 후자의 방식으로 진행하기로 결정했고 이를 위해서는 로그인이 필요했다. 

협업툴의 사용

다양한 협업툴 중 어떤 것을 사용할지에 대한 이야기가 오갔다. 다양한 후보군이 있었고, 우리는 노션(칸반보드)과 슬랙을 활용하여 진행하기로 하였다.

일의 배분

3주 조금 안 되는 기간 동안 빠르게 진행돼야 했기 때문에 각자 설날에 할 일을 정했다. 나는 피그마 디자인을 수정하는 일을 맡았다. 그다음 회의에서는 설날 때 각자 한 일에 대해 브리핑하고, 기능 담당에 대해 이야기했다.

 

이후 회의

설날에 진행한 회의에서는 피그마 수정과 모델의 구성 그리고 structure 설계를 진행하는 회의를 했다. 또 사용자가 정보를 입력하는 방법에 대해서는 회의 끝에 위키 형식처럼 사용자 리뷰를 통해 진행하기로 했다.

 

2월 회의 전체

2월에 진행했던 회의들의 전반적인 내용을 정리해 보았다. 우리 팀은 일주일에 최소한번, 마지막 주에는 정말 거의 매일 회의를 진행했던 것 같다. 멋지고 좋은 팀원들을 만나 개발할 수 있어서 너무 행복했다.

 

한국 전체 모든 지역을 크롤링할 수 없는 관계로, 지역을 정하기로 했다. 일단 유저 수가 가장 많고 실제 사전답사가 가능한 서울을 지역으로 잡게 되었다. 이후 사용자의 리뷰 태그를 세분화하였다. 매장의 특징(매장점인지, 부스인지 등) 사항들에 대해 회의를 진행하고 이를 구체화하였다. 또, 유저가 회원가입할 때 어떤 정보를 받을지에 대해서도 회의하였다. 

 

회원 탈퇴를 어떤 방식으로 할지 정하였다. 여러 의견 중 가장 좋은 것으로 추정되는 방식으로 진행하였다. 또 이때 PC가 아닌 모바일로 디자인이 변경되면서 기존 피그마를 엎어야 하는 문제가 있었는데, 나는 UI/UX 지식이 원래도 없는데 모바일 관련 래퍼런스를 찾기도 너무 힘들어서 디자인을 진행하면서 어려움을 많이 겪었던 것 같다. 

 

각자의 진행사항을 공유하고 이를 dev 브랜치에 머지하였다. map의 로딩속도에 문제가 생겨 로딩이 느린 이유에 대해 맵 담당 팀원들이 분석을 하고, 그 결과와 회의록을 노션을 통해 공유해 주었다. 원인은 좌표 변환의 문제와 관련이 있었고, 관련 코드를 리팩토링 함으로써 해결했다고 했다. 또, 브랜드 필터링에 대한 로직도 공유해 주었다. 이때 분실물 관련 부분도 완성되면서 구현이 조금씩 진행되고 있었다.

 

태그 내용에 대해 세부화 및 확정하였다. 리뷰의 UI에 대한 이야기를 나누고 로그인을 했을 때/안 했을 때 보이는 페이지에 대해 이야기를 나누었다. 이후 다양한 오류 및 구현 사항에 대한 회의를 진행하였다. (+ 폰 장고)

 

맵 관련 디테일, CRUD 관련 오류들을 해결하였고, 다양한 예외사항들에 대한 처리를 진행하였다. 

 

이후에는 대부분의 기능들이 구현되어 실제 폰으로 장고를 띄워 UI 개선 사항들과 오류들에 대해 보고하고 이를 수정하는 시간을 가졌다. 

 

팀원들과 코드 리뷰를 통해 코드 컨벤션에 따라 여러 인덴테이션과 변수명, 코드 로직등을 추가 및 변경하였다. 배포할 때 조심해야 하는 부분들에 대해 이야기를 나누고 배포를 진행하기 위해 여러 사항들을 검토하였다.

 

자잘한 오류들의 수정 및 지속적인 코드 리뷰를 통한 코드 변경을 진행하였다. 

 

피드백

그렇게 발표까지 무사히 마친 우리 여기사진 팀은 추후 디벨롭을 위해 많은 선배님들로부터 받은 피드백을 정리하였다. 또, 발표 이전에 진행한 설문조사를 통해 실제 유저들로부터 유의미한 피드백을 받을 수 있었다. 

발표 피드백

너무 몇 개의 브랜드에 집중되어서 제공하는 느낌이다.

→ 지향점을 확실하게 해야 한다. = 다양한 브랜드를 지도에 표시 vs 이를 가지고 다양한 것들을 만들기로

 

이 서비스의 방향성을 확실하게 하자.

 

브랜드가 너무 다양하다. 이걸 커버가 가능할까. → 크롤링에서 코드 수정이 크게 있는 건 아니지만 브랜드를 추가하는 게

- 클린코드로 만들기 + 그다음 진행방향을 정하자

- 브랜드 추가

- 반응형 만들기

- 우리한테 피드백을 받을 수 있는 것 만들기

2차 릴리즈 : 여름방학 전

우리 팀은 2차 릴리즈를 진행하기로 했다. 그 전 아래 회의를 통해 팀의 디벨롭 방향성을 정하고 구체적인 계획을 세우고자 했다. 하지만 모두가 학업으로 바빠 아직까지도 제대로 진행하지 못하였다. 언젠가 기회가 된다면 정말 제대로 진행해보고 싶다. 

 

기능추가(어떤 기능들을 추가할지, 누가 어떤 기능을) + 리펙토링(컨벤션/클린코드 기준이 확실하게 정해져야 한다. → 어느 범위에서 어떤 식으로 할지)

→ 브랜드 추가(기존 db 손상 안 시키고) + 클린코드 + ui 피드백

 

1순위 : 클린코드

→ 컨벤션보다, “제 3자가 봤을 때 설명 없이 이해할 수 있다” 를 지키자. 내가 봤을 때 + 아예 관계없는 사람이 봤을 때 이해할 수 있을 정도로.

 

→ 최종목표 : 디벨롭했다는 경험, 실제로 릴리즈 할 수 있을 정도로 수준 높은 프로젝트 —> 기능적인 측면에서의 디벨롭의 있어야 한다. 결과를 빠르게 내야한다. 또, 기능적 측면에서의 결과가 있어야한다.

 

2차에서는 유의미한 결괏값이 있어야 하기에, 이를 유입시키기 위해서 필요한 기능이 필요하다. 방향성이 있어야 한다.

 


Trouble Shooting과 진행

여기사진 진행 당시 겪은 일부 트러블 슈팅들의 오류사항 / 해결법에 대해 적어두었습니다. 그러나 자세히 기억나지 않는 부분이 다소 있으므로, 이런 문제가 있었구나 수준에서만 확인해 주시면 감사하겠습니다.

 

1. 로그인 시 이메일 전송 회고

해결방법이 나와있는 블로그가 많았으나, 그마다 다 다른 방법으로 진행을 하고 있어 해당 블로그(링크)를 메인으로 잡고 블로그의 class PasswordReset 사용을 위한 설정 부분부터 진행하였다.

 

저번과 마찬가지로 장고 페이지에서 비밀번호 초기화를 누르자 아래 오류가 발생하였다.

NoReverseMatch at /user/password_reset/

Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name.

 

-> 저번에도 발생한 문제. https://stackoverflow.com/questions/45128577/noreversematch-at-user-password-reset-reverse-for-password-reset-done-not-fo 참고하여 리버스를 시도하였다.

 

-> 그러나 위의 방법으로는 해결에 실패하였다. 따라서 https://stackoverflow.com/questions/66406530/keep-getting-this-error-of-reverse-for-password-reset-confirm-not-found-pass 참고하여 전체를 reverse_lazy 시도하였다. (쉼표 찍고, accounts -> user 변경, 템플릿 일단 삭제)

 

그러나 이 방법으로는 해결이 되지 않았다. 그래서 템플릿을 만들려 하였으나, 코드를 살펴보던 와중

path('', include('django.contrib.auth.urls')),

코드로 인해 오류가 발생하였음을 알게 되었다. 덕분에 템플릿 없이 해결을 할 수 있었다.

 

 

2. user 진행 회고

하단의 글은 제가 프로젝트를 진행하며 적어둔 많은 메모들을 살짝 정리한 내용입니다. 어떤 내용을 진행했는지 대략적으로 알 수 있습니다.

 

회원 관련 사항

- 비번 변경 구현

- 로그인(소셜 포함) 구현, 회원가입 구현 

email = EmailMessage('title', 'content', to=\['내이메일@gmail.com'\])

"내 이메일"에 여기사진 이메일을 입력함으로써 전송 구현

- 템플릿 설정하여 장고 기본 페이지 없도록 변경

- 유저 삭제 구현

 

로그인 탈퇴 관련

- 탈퇴한 유저로 변경될 시 로그아웃이 되어야 

- 비번 이미 있는 사람과 동일하면 안되도록 변경(아래처럼 수정)

- 로그인 성공시 user/login/  아닌 main 으로 리다이렉트 되도록 변경

 

그 외 최종 변경 사항

- 유저 개편

- 회원삭제에서도 에러 메시지 뜨도록 변경

- 회원 변경에서 비번 받는 것으로 변경

- 같은 비번도 가능하도록 변경 -> 다른 유저랑 비번이 같아도 상관이 없다. (역으로 남 비번 공개하는 것이 될 수도)

- 없는 유저일 때 예외처리 (http://127.0.0.1:8000/user/ )

 

- 부스 디테일 연결

     - 알림 창 디테일 넘어가기

     - 리뷰 디테일 넘어가기

     - 분실물 넘어가기

 

- 로그인 url 안에 회원가입 넣기 (로그인 들어가서 회원가입 하도록)

- 안 쓰는 주석 및 출력문 지우기

- Users 이름 더 직관적인 걸로 바꾸기

- CSS 마무리

 

user clean code

- 모델 삭제하기

- 소셜 로그인 카카오 구현

- 장고 소셜 로그인 오버라이딩 다시 하기

- View 수정사항

- 로그인 폼 이메일 삭제

- 안 받는 리퀘 매개변수 제거

- print문 전체 삭제

- 프론트 주석 전체 삭제

 

문제 되던 부분

회원가입에서 한글로 입력하면 유저 못잡는 문제-> 예외처리를 통해 해결

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.