2023년 17주차 주간회고

샨티(shanti)·2023년 5월 7일
1

혹등고래 성장일기

목록 보기
43/49
post-thumbnail

개발자가 되기 위해 공부하며, 혹등고래 성장일기를 쓰는 샨티입니다.
지극히 주관적이고 개인적인 이야기가 가득합니다. 😅

팀으로 수행한 기업과제

이번주 팀 과제는 솔직히 좀 고통스러웠다.
실제 기업에서 제공하는 과제였고 팀원이 9명이나 되었지만 제출 마감 시간 1분 전까지 부던히 리팩터링하는 데 뛰어들었던 것 같다.
만약 실제 면접 프로세스에서 제시된 과제였다면 스스로의 힘으로 해결하지 못하고 제출하게 되었을 이번 과제.

여러 페이지도 아니고 단 하나의 페이지를 클론하고 요구사항을 구현하는 것이었는데 내가 아는 선에서 해결할 수 있는 내용이 아니었다. 그나마 팀원들이 있었기에 빠짐없이 구현하고 제출할 수 있었다.

몇몇 요구사항 중에서 앞으로도 반드시 활용하게 될 주제이자, 뜯어보면 웹사이트의 사용성을 높이기 위해 흔히 사용되는 것들이 있기에 기록한다.

먼저 캐싱.
캐시 기능을 제공하는 라이브러리 사용을 하지 않고 캐시 기능을 구현해야 했다.
사실 이론적으로 '캐시'가 무엇인지는 얼핏 알고있었지만 구현할 수 있느냐? 라는 질문에는 그저 '한번도 안 해봤다'는 답변만...
그래서 우선 급한대로 구글링을 해봤는데 '캐시 스토리지'라는 것이 있더라. 웹 스토리지로 로컬, 세션 스토리지는 들어도 보았고 사용해본 경험이 있는데 '캐시 스토리지'라니...? 너무 생소했지만 어쨌든 '캐시'라는 것이 붙어있기도 하고 (;;) 내 생각엔 캐시의 속성이 임의로 삭제하지 않는 한 적어도 일정 기간은 남아있어야 하는 동시에 페이지 refresh에도 소멸되지 않아야 한다고 생각했기에 이를 활용하기로 선택했다.

물론 나중에 팀원들과 이야기 하면서 알게됐지만, 리액트 쿼리와 같은 캐시 기능을 제공하는 라이브러리들은 페이지 refresh 시 캐시된 정보들이 날아간다고 한다. 피상적으로 아는 것과 써보고 아는 것이 정말 다르다는 걸 느꼈다.

어쨌든 팀원 각자가 구현한 방법들을 공유하고 베스트 프랙티스라고 생각되는 방법을 선택해 리팩터링 한 후 제출했다.

따지고 보면 캐시 라는 기능을 구현하는 방법은 참 다양하다. 라이브러리를 활용할수도, Map 자료 구조를 이용할 수도, 웹 스토리지를 이용할 수도... 여전히 나는 정해진 답 하나만 있으면 좋겠다~ 하는 마음이 들지만 그래도 예전만큼의 불편함은 사라진 것 같다. 이런 상황을 맞닥뜨릴 때, 예전같았으면 '그래서 젤 좋은 방법이 뭔데!!' 만 생각했겠지만 지금은 '서너가지 방법으로 캐시를 한번 만들어볼까?' 라는 생각이 든다.

좀 아쉽게도 이번 기업과제에서는 한계를 느끼기도 했고 여전히 많은 것을 모른다는 생각이 들었다. 특히 지식의 부재로 인해 코드로 기여할 영역이 줄어듦을 느꼈기에 더욱 아쉬웠다.
팀에 폐를 끼치고 싶지 않아 Wiki로 기여했지만 마음 한켠에선 '나도 이제는 코드로 더 많이 보여주고, 또 선택받고 싶다.'는 생각이 들었다.

ref
사실 캐싱은 여러 방법이 생각 났기에 구현에 큰 어려움을 겪진 않았었다. 그저 무엇을 '선택'할 것인지의 문제였기에.
하지만 정말 골때렸던건(?) 오히려 ref 이녀석이었다.

키보드로 특정 검색어를 선택 후 엔터를 누르거나, 마우스로 검색어를 선택하면 이벤트를 발생시키는 부분이었는데 솔직히 어떻게 구현해야 할지 감이 잡히지 않았다.

물론 팀원들과 스몰톡을 하면서 ref를 활용하면 된다는 힌트를 얻긴 했는데 머릿속에선 'ref 어쩌라고..'였다.

li 요소에 마우스, 키보드 이벤트를 붙이는 것에서 문제를 맞닥뜨렸고 결국은 혼자 해결하지 못하고 팀원들의 베스트 프랙티스를 제출하게 됐다.
아직도 어떻게 구현하는 것인지 잘 모르겠는데... 언뜻 보기엔 굉장히 간단하게 느껴졌던 기능을 '어디서부터, 어떤 방향으로' 해결해나가야 할지 모르는 상황을 마주하니 실무에서 이런 상황이 벌어지면 얼마나 아찔할까 하는 생각이 들었다.

배포
나는 아직도 배포를 어떻게 해야할지... 나만의 프로세스를 정리해둔 것이 없다. 그러다보니 팀원들이 헤로쿠나 웹팩 이야기를 하면 위축되곤 한다.
배포를 맡아 진행한 팀원들의 모습을 보면 크게 고생하지 않고 뚝딱 배포를 해내는 것 같은데;; 도대체 어떻게 하는건지..

좀 모험이긴 하지만 다음 기업 팀과제를 진행할 땐 배포파트를 맡아볼까 싶다...🥲


이제 마지막 기업과제를 앞두고 있다.
어떤 과제가 나올지 궁금한 마음도 있지만 무엇보다도 다음 기업과제에는 코드로 더 기여하고 싶다. 정말로.


커리어 코칭 - 자신의 강점

커리어 코칭 세션을 들었다. 그 날 아마 근로자의 날이었지..? 아이 어린이집도 휴무라 키즈카페 구석에서 세션을 들었던 기억이 새록새록.ㅎㅎ

'개발자로서의 자신의 강점'을 반페이지 정도 작성하여 제출하는 것이 과제였는데 참 여러가지 생각이 들었던 것 같다.

취업의 문턱에서 좌절하기를 수차례. 사실 지난 몇 달은 바닥이라고 생각했던 그 모든 것 아래에 또다른 바닥이 있다는 걸 알아가는 시간들이었다.
그리고 어느 순간엔 더이상 '바닥'을 의식하지 않고 그냥 해야할 것을 천천히 하는데 집중했다.
지금은 몸도 마음도 너무 망가져 있었기에 강점이란 걸 찾아 무언갈 작성하는 것이 쉽지 않지만 꾹꾹 쥐어 짜내며 반페이지 무언가를 써서 냈다.

이번 커리어 코칭에서 작성하는 것들을 통해 내가 개발자로서 가질 수 있는 장점과 역량에 대해 분명하게 드러낼 수 있었으면 한다. ㅎㅎ


액션플랜

  • 해보고 싶은 것과 모르는 것들을 list-up 하고 우선순위와 시급성 정해서 구분해보기
    - 캐시(웹 스토리지, 라이브러리 활용)
    - 각 캐시 구현에 따른 expire time 설정
    - 프론트 개발 단에서 CORS 에러 해결하는 방법 정리
    - 배포(AWS, fly, 헤로쿠)
    - 디바운스, 쓰로틀링 차이점과 구현 방법
    - useRef
    - 키보드 이벤트, 마우스 이벤트 설정
    - service worker
    - 캐러셀 구현 시 최초, 최종 아이템에서 cycle 돌게 하는 방법
profile
가벼운 사진, 그렇지 못한 글

0개의 댓글