부스트캠프 7기 3,4주차 회고

새로운 것들을 여럿 시도해본 나날들

Featured image

들어가며

2주전 쯤에 1,2 주차 회고를 적었으니, 5주차가 시작하기 전에 3,4 주차 회고를 적어보자 합니다. 멤버십 일정이 어떻게 돌아가는가에 대한 이야기는 전에 쓴 1,2주차 회고에서 했으니, 이번엔 3,4주차때 무엇을 했고, 제가 이 과정 속에서 어떤것을 배웠고, 어떤것을 느꼈는지를 중점적으로 이야기 하고자 합니다.

참고로 이 글을 쓰는 10월 3일은 제 생일입니다. 와!

어떤 과제를 받았는가?

학습 컨텐츠를 누출하는것은 금지되어 있기 때문에, 간략하게 최대한 추상적으로, 이야기 해보겠습니다.

2~3주차 2번째 프로젝트

생각보다 할게 많은 달력 컴포넌트

이것도 전에 쓴 1,2주차 회고에서 이야기 했던 그러한 스택을 사용했습니다. 3주차때 느낀 점이라면, 에어비엔비에서 쓰이는 달력 컴포넌트를 만드는데, 달력 관련 날짜 계산이라던지 관련 해야 할 이런저런 작업들이 많아서 생각보다 많은 시간이 걸렸었네요. 한 주의 단위는 월요일부터 금요일이지만, 금요일에는 많은 시간이 한 주동안 해왔던 작업결과물 등을 공유하는 시간이 되기에 사실상 4일이 되고, 전 그 한주의 일정의 1/4를 달력 컴포넌트를 완성하는데에 사용을 했네요.

생각보다 어려운 DB 작업

그리고 남은 시간 동안에는 백엔드 작업을 했습니다. 저는 주로 프론트엔드만 주구장창 해왔고, 제가 백엔드 상에서 돌아가는 API 같은 물건을 만들어야 했을 때는, 해당 과제에서 사용해라고 주어진 MySQL같은 RDBMS가 아닌, mongoDB나 firebase같은 noSQL 데이타베이스로 작업을 했기 때문에, 직접 쿼리문을 짜는것에 능숙하지 못하였고, 타입이 정해진 스키마를 만들어 내는것이 능숙하지 못해서 ERD를 만드는데 많은 시간을 사용했던것 같습니다. 그리고 mongoose를 통해서 DB 작업을 했던 기억이 나기도 했고, 쿼리문을 Controller 부분에 넣는것이 보이는 것이나 유지보수에 있어서 좋아 보이지 않아 보였습니다. 코드 리뷰어 분의 의견으로는 쿼리를 따로 다른 파일로 빼놓는다거나 하는 그런 합리적인 안을 제시해 주셨지만, 저는 ‘이왕 학습을 하러 부스트캠프에 들어온건데, 직접 ORM을 만들어 보자 하는 생각을 하였고, 모든 쿼리문(이를테면 JOIN 연산)을 만들지는 못하였지만, 해당 프로젝트에서 쓸 쿼리문 정도를 OO로 짤 수 있는 간이 ORM을 만드는데 성공은 하였습니다.

나는 인프라에 대해서 아무것도 몰랐다.

유노낫띵

네 저는 인프라에 대해서 참 아는것이 없는 사람입니다. 전에 군대에 있을때 적었던 tabnine 설치기를 보면 알 수 있는데, 사실 되게 간단하게 vps 구매해서, nginx 설치하고 SSL 걸어주는 너무나도 간단한 일을 대단한 일이라도 되는듯 글로 정리해서 남겨두는것 보면 견적이 나오지 않나요? 이런 인간이 mySQL을 DB에 깔고, 프로젝트 배포와 관련된 지식도 없으면서, 알고 싶어 하는 궁금증은 더럽게 많아서, 이거 공부한다고 참 많은 시간을 썼던것 같네요. 그때 서버 설정하고 한다고 했던걸 이 블로그에 로도 남겨놓았습니다. 당시 제가 공부했던 키워드들과 링크가 담겨있는 제 개인 노션 링크를 남겨놓겠습니다.

3~4주차 3번째 프로젝트

시작부터 시작된 삽질 본능

저는 예전에 React를 많이 사용했고, 나름 익숙하다고 생각합니다.(생각합니다. 리액트를 완전 잘 빠싹하게 아느냐 하면 사실 그건 아니지만…) 3번째 프로젝트에서는 SPA를 구현해라는 것이 명세에 있었고, 1,2번째 프로젝트와는 다르게 FE쪽에서 라이브러리 사용 제한이 해금이 되었지만, 저에게 너무나도 익숙한 React, 그것도 CRA(create-react-app)을 사용해서 프로젝트를 진행한다면, 마스터님께서 늘상 강조하신, 학습이 아닌 노동을 하게 될것 같다고 생각하여서, ‘완전히 낯선 스택을 선택하여, 완전 처음부터 SPA와 CSR을 한번 만들어보자!’ 하는 생각을 하게 되었고, 이것이 저의 수많은 시간을 잡아먹은 삽질의 근원이 되었습니다.

최대한 어떠한 라이브러리를 사용하지 않은 바닐라JS에 근접한 형태로 작업을 하고 싶어서, 바닐라 JS에서 제공하는 Custom Element 문법과 관련된 것들을 알아보았고 (관련 사항들을 정리한 노선 링크) 제가 개발을 할 때, 관련 도움을 받을 수 있는 커뮤니티가 잘 되어 있는가 등의 나름의 여러 기준을 거쳐서 lit 라는 라이브러리를 선택하였고, 해당 라이브러리로 SPA 작업을 하기 위해서, 여러 자료들을 찾아보았고, 이를 노션에 정리하였고, 이제 이 지식을 기반으로, Typescript까지 붙여서 프로젝트를 위한 webpack 설정을 하는데, 여기에서도 여럿 문제가 생겼고, 이 문제를 해결하기 위해서 많은 시간을 구글링에 쏟았고, 이 역시 노션에 정리해 두었습니다. 아마 이 과정들은 정리해서 전에 ncloud 포스팅처럼 이 역시 별도의 포스팅으로 만들지 않을까 싶습니다.

new Date()는 거지같습니다. 그래서 Temporal을 사용했습니다.

3주차에 달력 컴포넌트를 만들면서 느꼈던건데, 바닐라JS에 있는 new Date()는 거지같은 부분이 많아서, 이런저런 문제가 많습니다.(월이 0부터 시작한다거나, 날짜의 차이를 구하기가 어렵다거나…) 해당 문제는 JS를 사용하는 여러 개발자들이 공감하는 문제인지라, 유튜브 영상으로도 다루어져있습니다.

해당 영상에도 나오는 것인데, 차기 JS 스펙으로 사실상 진출이 확정된 Temporal을 이용해서 작업을 하기 위해서 폴리필을 다운로드 받아서 날짜 관련 문자열 등을 포맷팅하는 커스텀 라이브러리를 간략하게 작성하였습니다. 정확히 말하면, 시간 계산은 Temporal로 하고, 문자열 포맷팅이라던가 하는 기능은, ECMAScript Intl API를 사용하여 포맷팅하는 식으로 라이브러리를 작성했습니다. 프론트엔드 개발자라고 하면서 ECMAScript 스펙을 100% 활용하지 못하고 있던 저를 한층 더 성장시켜주는 좋은 과정이라고 생각했습니다. 4주차 마무리때 피어세션 공유시간때 수많은 캠퍼들 앞에서 자랑도 하고 참 뿌듯했습니다 ㅎㅎ

주어지지 않았던 프로젝트 : 운동

하루 하루 쫒기듯이 살아서 블로그에 손을 감히 댈 수도 없던 챌린지 기간과는 다르게, 멤버십은 상대적으로 여유가 있습니다. 그래서 물좋고 경치좋은 곳을 찾아서 신선처럼 방랑하면서 맛난것도 먹고 뷰 좋은 카페에서 코딩도 하면서 그렇게 살 수 있어서 참 좋긴 합니다. 그리고 1개월동안 통조림 당하면서 갉아먹힌 몸 상태등이 슬슬 몸에 반영이 되기 시작하는 때이기도 합니다. (살이 찐다거나, 살이 찐다거나, 체력이 떨어진다거나…) 괜히 캠퍼들이 슬랙에서 런데이 기록을 공유하면서 동기부여에 힘을 쓰는지 알것 같았습니다… 슬랙에 올라오는 런데이 인증들과, 저에게 많은 도움을 주시는 캠퍼님의 적극 추천으로 오늘 휴대폰과 제 갤워치4에 런데이 관련 세팅을 열심히 해놨습니다. 오늘은 생일이니 친구들이랑 놀아서 안되고, 내일은 예비군이라서 안되고, 모래부터 열심히 런데이 도장찍기에 도전해보려고 합니다.(작심삼일이 아니었으면 좋겠네요) 주변 개발자 친구들이 운동을 강조하는 이유를 점점 알아가는듯한 요즈음 입니다. 체력관리 정말 중요… 런데이로 유산소 운동도 하면서, 아파트 커뮤니티 헬스장도 적극적으로 이용하면서 21년도의 운동 열심히 하면서 살던 이휘찬으로 돌아가고 싶다라는 생각도 하고 있습니다.(생각만으로 끝나질 않길…)

마치며 : 나에게 부스트캠프란?

네이버 부스트캠프는 사실 샌드박스 같은 공간입니다. 학교에서는 이떠한 과제를 내주고, 해당 과제를 완수해라 하는 그런 느낌으로 일방통행의 느낌이라면, 부스트캠프는 대략적인 목표를 주고, ‘본인의 학습에 도움이 되는 방향으로’ 알아서 가라는 그런 일방통행식 교육과는 대비되는 느낌의 현장입니다. 처음에는 과연 이런 추상적인 환경이 내 학습에 도움이 될까 하는 의구심으로 출발했지만, 네이버 커넥트재단의 명성에 맞게 개발자 개인의 학습에 도움을 주는 그러한 환경임을 알 수 있었습니다. 혼자서 책상에 앉아서 공부하는것과는 다르더라고요. 한 프로젝트를 만들기 위해서 밑에 깔려있는 지식들을 흡수하고 하는 과정들이 빠른 성장을 위한 정말 key factor가 아닌가 싶습니다. 왜 수많은 사람들이 네이버 부스트캠프가 정말 좋은 곳이라고 칭찬에 칭찬을 하는지 조금씩 알게 되는것 같습니다. 만약 제 주변 개발을 공부하는 친구들이 부스트캠프에 대해서 어떻게 생각하느냐고 묻는다면, 저는 적극적으로 지원해봐라고 추천해줄것 같습니다. (운영진분들 보고 계시다면 댓글을 남겨주세요)