프로그래밍/생각노트

[코드스테이츠] 4주 Final 프로젝트 회고

제이콥J 2021. 11. 23. 14:58

코드스테이츠에서 4주 Final 프로젝트를 마무리했다.

 

2주 프로젝트를 함께했던 멤버들이 좋았어서, 팀원 교체 없이 파이널 프로젝트를 진행했다.

그러나 2주 프로젝트 때와 달리 파이널 프로젝트 때 나는 팀장을 자원해서 맡았다.

 

여기서 팀장의 역할은 해야 할 태스크와 그에 따른 데드라인을 꼼꼼하게 관리하는 것이었다.

동시에 UX 관점에서도 기획을 진행하고, 이후 서비스를 다듬고 완성도를 높여야 했다.

또한 코드스테이츠의 가이드에 따라 작성하고 제출해야 할 내용들이 있었다.

이 부분에서 팀에 기여할 수 있을 것이라 생각했고, 팀원들은 개발에만 매진할 수 있게 도와주고 싶어 팀장을 맡게 되었다.

 

프로젝트 관련 영상과 회고 내용을 아래에 작성했다.

 

https://www.youtube.com/watch?v=OrqeVoGMNGA 

서비스 소개 영상

https://www.youtube.com/watch?v=73BPjRKCBBs 

기술 영상

 

제작 서비스

1.  서비스 개요

  • 서비스명 : HomeTownAlba
  • 기획 의도 : 기존 플랫폼과 달리, 동네 알바를 구하는 데 최적화된 서비스 제공하기
  • 배포 링크 : https://www.hometownalba.com

2.  서비스 기능

  • 지도에서 일자리를 확인하고 지원하기
  • 지도에서 키워드 검색으로 일자리 검색이 가능하며, 목록에서 현위치 일자리 확인 가능
  • 사업자 마이페이지 : 일자리 등록, 지원자 관리
  • 구직자 마이페이지 : 경력 등록, 지원결과 확인

 

담당해서 개발했던 기능

1.  지도 페이지

  • 마커를 통한 일자리 확인, 지원하기, 지원 결과 확인
  • 위치, 월급, 근무 시간에 기반하여 데이터 필터링

2.  마이페이지

  • 사업자 마이페이지 : 일자리 등록, 지원자 확인, 지원 결과 생성, 회원 정보 수정
  • 구직자 마이페이지 : 경력 등록, 지원 결과 확인, 지원 삭제, 회원 정보 수정
  • 비회원 마이페이지 : 일자리 등록, 경력 등록, 지원자 확인, 지원 결과 생성/확인, 지원 삭제

3.  서버

  • 일자리 DB 테이블 및 CRUD API
  • 경력 DB 테이블 및 CRUD API
  • 지원자 조인테이블 및 CRUD API

 

해결했던 기술 문제

1.  React

  • setState를 통해 state가 변경되는 순서에 적합한 코드 작성
  • 객체 형태의 state 내에 key:value 추가하기
  • useEffect 무한루프 해결
  • setTimeout, useEffect, setState 관계를 통한 올바른 코드 작성

2.  JavaScript

  • async 중복 사용 : 콜백함수 내에서 await를 사용하려면 중복이더라도 콜백함수 앞에 async 사용하기

3.  카카오맵 API

  • 현재 위치 기반 데이터만 지도에 표시되도록 필터링
  • 인포윈도우 위에 버튼 클릭 이벤트 등록하기
  • 렌더링 이후 표시될 지도 위치 선정하기

 

느낀점

1.  완성도 100%를 향해서

  • 토익 점수가 900점까지는 잘 오르지만 그 위로는 잘 오르지 않는데, 서비스 완성도를 높이는 것도 비슷한 것 같다.
  • 기능 구현 단계에서는 진도가 빨리 나갔지만, 이후 UX를 개선 및 에러핸들링 과정에서 상당한 시간이 소요되었다.
  • 완성도를 0에서 80%까지 끌어올리는 것과 80%에서 90%까지 끌어올리는 데에는 같은 시간이 소요된다고 한다.
  • 완성도를 100% 까지 끌어올리는데 필요한 실력과 인내력 또한 전문성을 결정짓는 요소가 아닌가 싶다.
  • 완성도 100%를 향해 노력하는 끈기있는 개발자가 되자!

2.  기능 구현을 넘어 성능 개선까지

  • 이전까지는 기능 구현에만 초점을 맞추었으나, 지도 API를 활용해보니 성능 개선에도 관심을 갖게 되었다.
  • 지도페이지가 계속 렌더링되는데, 경우에 따라 속도가 느려지며 UX가 악화되었다.
  • 덕분에 처리해야할 데이터량과 처리 속도를 최소화할 필요성을 느꼈다.
  • 추후 클러스터링, 마커이미지 최적화, 캐싱을 통해서 성능을 개선해보자!

3.  배포 환경에서 기능 오류

  • 개발 환경인 localhost에서는 문제가 없었으나, 배포 이후 오류가 생긴 경우가 있었다. 
  • 배포 서버 오작동 문제가 가장 많았고, 브라우저 화면의 폰트가 변경되기도 했다.
  • 원인을 알 수 없는 오류들이라, 문제 해결력을 기르려면 경험을 많이 쌓는 방법밖에 없는 것 같다.

 

피드백

1.  Git과 버전 관리

  • 이번 프로젝트는 저번보다 Git을 적극적으로 사용하여 버전관리와 Merge를 했다.
  • Merge 과정에서 중요한 코드가 삭제된 적이 있지만, 브랜치에 백업된 정보로 복구할 수 있었다.
  • Conflict 해결 중 필요한 코드가 삭제되는 경우가 있었는데, 휴먼 에러를 줄이도록 신중해야겠다.

2.  추후 학습할 내용

  • ES Lint를 사용해보고 코드 품질 올리기
  • 기능 구현과 에러핸들링에 초점을 맞추다보니 CSS 사용 경험이 부족한데, 이 부분을 학습으로 보충하기
  • 프로젝트 코드 리팩토링 방향 : 클러스터링, 캐싱을 통한 성능 개선

3. 팀장으로서 아쉬웠던 점

  • 비대면으로 만난 뒤 각자 태스크를 맡아서 코딩을 하다보니, 팀원들의 고충을 세심하게 살피지 못했던 것 같다.
  • 자신이 맡은 태스크가 버겁더라도, 피해주지 않고 혼자 해결하려다 지치게 되는 팀원들도 있다고 느꼈다.
  • 비대면 모임에서는 서로의 심리 상태를 알기 어려워, 리더로서 더 물어보고 다가가기 위해 노력해야 하는 것 같다.
반응형