[네이버부스트캠프 웹・모바일 10기] 멤버십 7주차 회고
- 네이버부스트캠프
- 회고
들어가며
이번 주는 아쉬움보다 조금 우울한 기분에 가까웠다. 기대만큼 결과가 나오지 않았기 때문이다. 3주차에 접어들었지만 여전히 2주차 작업을 마무리하지 못해 여기에 매달렸고, 그마저도 쉽지 않아 3주차 과정은 절반도 끝내지 못했다. 모르는 내용이 많아 학습량도 많고 시간도 오래 걸렸다. 구현 속도가 느리다는 건 알고 있었지만 학습을 포기할 수는 없어 천천히 나아갔고, 남과 비교하기보다 나만의 속도로 걸어가면 된다고 생각하며 버텼다.
그러던 중 지난 주차의 동료 피드백이 공개되면서 마음이 많이 흔들렸다. 구현이 느리다는 사실을 스스로도 알고 있었지만 다른 사람 입을 통해 들으니 생각이 복잡해졌다. 구현을 밀고 가야 하는 건지, 원리를 다 이해하지 못한 상태에서 코드부터 작성하는 게 맞는지 하는 고민 속에서 한 주를 보냈다.
익숙해진 만큼 좁아진 시야를 마주하다
오프라인 환경에는 점점 익숙해졌다. 이제는 알람이 울리기도 전에 일어나 커피를 사고 여유롭게 도착하고, 마친 뒤에는 카페에 남아 마무리 작업을 하다 집에 돌아와 PR을 작성하는 루틴이 자연스러워졌다. 그런데 익숙해지는 만큼 오프라인에서의 대화 시간은 오히려 줄었다. 예전엔 용기 내서 질문도 하고 토론도 자주 했는데 요즘은 그런 과정이 줄었다는 걸 느꼈고, 익숙함에 무뎌지고 있는 건 아닌지 돌아보게 됐다.
팀 동료들과는 코드에 대한 자신감과 확신이 뚜렷한 사람들을 만났다. 코드를 전부 이해하지는 못했지만 저마다 자신만의 스타일을 확실히 가진 사람들이라는 게 느껴졌고, 프로젝트 구조와 코드 스타일은 모두 달랐지만 누구의 코드가 정답이라는 느낌은 전혀 없었다. 마스터클래스에서는 데이터베이스에 대용량 데이터를 넣는 실습이 있었는데, 우리 그룹은 CSV 파일을 먼저 만들기로 했고 나는 스크립트로 반복문을 돌려 데이터를 생성하면 되겠다고 생각했다. 다른 분들은 가짜 데이터를 만들어주는 사이트를 이용하거나 여러 테이블 데이터를 한 번에 생성하는 스크립트를 짜기도 했는데, 서로 다른 접근 방식을 보며 내 경험이 부족하고 사고의 폭이 좁았다는 걸 느꼈다.
쿠키와 세션의 흐름을 풀스택의 시각으로 따라가다
이번 주에는 쿠키와 세션의 처리 과정을 새롭게 알게 됐다. 예전에는 백엔드에서 설정해주는 대로 사용하고 프론트엔드에서는 별다른 처리가 없어 깊이 생각하지 않았지만, 이번에는 백엔드에서 쿠키를 설정하고 브라우저와 주고받는 전체 흐름을 직접 확인하며 작동 방식을 이해했다. 검색과 동료 캠퍼와의 대화를 통해 쿠키와 로컬스토리지의 차이, 어떤 데이터를 어디에 저장해야 하는지를 함께 고민했고, 학습한 내용을 토대로 백엔드에서 쿠키를 설정하고 브라우저에 제대로 저장되는지 테스트했다.
이 과정에서 동료 캠퍼와 나눈 대화 하나가 생각을 더 밀고 나가게 만들었다. '오늘 그만 보기' 팝업의 값을 어디에 저장할지에 대한 이야기였다. 처음엔 단순히 로컬스토리지에 저장하면 되지 않을까 싶었지만, 왜 쿠키를 쓰는지 그 장점이 무엇인지 고민하다 렌더링 방식과 연결지어 생각하게 됐다. CSR은 초기 로딩에서 많은 자원을 받아오기 때문에 첫 페이지가 뜨기까지 오래 걸리는 반면, SSR을 사용하면 서버에서 페이지를 만들어 내려주니 초기 로딩이 빠르다. 이 흐름에서 쿠키를 활용하면 서버가 팝업이 열린 상태까지 렌더링해서 내려줄 수도 있을 것 같았다.
하지만 httpOnly 속성이 문제였다. 이 속성이 있으면 자바스크립트에서 쿠키에 접근할 수 없어 '오늘 그만 보기'를 클릭해도 쿠키 값을 변경할 수 없었고, 그렇다면 httpOnly를 풀어야 하는지 고민이 이어졌다. 결국 프론트엔드에서 로컬스토리지를 사용하는 편이 더 편하겠다는 결론에 도달했다. 팝업 관련 로직이 프론트와 백엔드로 나뉘는 게 마음에 들지 않았고, 하나의 파트 안에서 로직을 관리하는 편이 효율적이라 느꼈기 때문이다.
이런 생각의 과정을 거치며, 전체 흐름을 함께 생각할 수 있다는 점이 풀스택 개발의 강점이라는 걸 느꼈다. 아직 부족하지만 하나의 주제를 프론트엔드와 백엔드의 시각에서 함께 바라보는 연습을 하고 있고, 주어진 요구사항만 구현하는 데 그치지 않고 웹 서비스의 전체 구조와 흐름을 이해하려 노력하는 이 사고 과정이 나름 만족스러워 계속 이어가려 한다.
정리되지 않은 생각은 전달되지 않는다
가장 아쉬웠던 부분은 내가 깨닫고 놀랐던 부분을 팀원들에게 제대로 설명하지 못했다는 것이다. 프로젝트 전반의 데이터 타입 흐름을 이해하며 떠올린 방법이 꽤 효율적이라 생각해, 들뜬 마음으로 정리하고 스크럼 시간에 발표했지만 다들 잘 이해하지 못한 눈치였다. 발표를 마치고 팀원들의 반응을 보며 전적으로 내 탓이라는 생각이 들었다. 조금만 더 정리했더라면, 조금만 더 읽어봤더라면 하는 후회가 남았고, 발표 중에도 생각한 내용을 온전히 전달하지 못한 채 말이 꼬이기도 했다. 스스로도 완전히 정리되지 않았던 만큼 다른 사람들이 이해하기 어려웠을 것이다.
앞으로는 문서 정리에 더 많은 시간을 투자하려 한다. PR이나 문서를 작성할 때 시간에 쫓겨 급하게 마무리하는 경우가 많았는데, 이제는 시간을 정해두고 여러 번 읽어보며 다른 사람이 봤을 때 이해할 수 있을지를 계속 고민해볼 생각이다. 그렇게 조금씩 전달력을 키워가려 한다.
문서와 컨벤션의 빈틈을 메우고 설계를 공부하기로 하다
다음 주에는 목표 설정에 더 신경 쓰고 문서 템플릿을 수정하려 한다. 이번 프로젝트를 하며 README에 데이터베이스 기본 세팅 방법 같은 내용이 빠져 있어 다른 사람들이 테스트를 해볼 수 없었겠다는 걸 느꼈고, 기본 설정 방법이나 이전 PR을 첨부하는 등 프로젝트 이해를 돕는 내용을 반영할 계획이다. 코딩 컨벤션도 명확히 정할 생각이다. 상수, 타입명, 파일명 등 기본 컨벤션만 있었는데, 개발 중 더 적합한 접두사를 붙이고 싶은 순간마다 이전 작업 전체를 수정하지 않고 새 이름만 적용해 일관성이 깨진 적이 있었다. 이런 혼란을 막기 위해 고민할 부분들을 미리 정리해둘 것이다.
새롭게는 AI 리뷰를 더 적극적으로 활용해 구조와 설계에 대한 피드백을 더 많이 받아보려 한다. 이전에는 한 번만 진행했지만 여러 번 해보면 처음부터 구조를 잘 잡아갈 수 있을 것 같다. 이번 주에 만난 분들 중에는 아키텍처나 디자인 패턴을 아는 분들이 많았는데, 나도 조금씩 공부하며 실제 코드에 하나씩 적용해보려 한다. 로직을 짤 때 더 좋은 방법이 있지 않을까 고민이 많았는데 디자인 패턴을 살펴보니 내가 작성한 코드 일부도 그 패턴을 따르고 있음을 알 수 있었고, 패턴을 제대로 공부하면 고민 시간을 줄이고 효율적으로 개발할 수 있을 거라 생각한다.
정리하며
익숙함과 더딘 발걸음, 마이너스 기운이 짙었던 한 주였다. 이런 순간마다 초심을 잊지 말자는 말이 떠오르지만, 매주 변하는 환경에서 초심으로 되돌아가는 것은 현실적인 해결책이 되지 않는다. 오히려 지금의 상황을 더 잘 활용할 방법을 찾는 편이 나을 것이다. 고민해본 결과 구현과 학습, 커뮤니케이션 모두 시간적 여유가 뒷받침될 때 가능하다는 결론에 도달했다. 사람이 여유로워야 효율도 따라오는 만큼, 하루하루의 목표를 구체적으로 세우고 그에 맞춰 시간을 체계적으로 배분하는 노력이 필요하다. 지난 마스터클래스에서의 조언을 바탕으로 목표별 예상 시간과 실제 시간을 작성해보며 어떤 부분에서 오래 걸리는지 점검해볼 생각이다.
더 잘할 수 있는 부분으로는, 한 달 단위로 목표를 설정하기로 했다. 매달 구체적이고 실현 가능한 목표를 세우고 하나씩 차근차근 달성해 나갈 생각이다. 이렇게 계획을 세우면 어디에 집중해야 할지 명확해지고 학습 과정에서 놓치기 쉬운 부분도 쉽게 파악할 수 있어, 부족한 점을 명확히 인지하고 그에 맞춰 보완책을 마련하려 한다.