[네이버부스트캠프 웹・모바일 10기] 멤버십 6주차 회고
- 네이버부스트캠프
- 회고
들어가며
빠르게 달리다 급브레이크를 밟은 한 주였다. 오프라인에서 작업하니 확실히 집중이 잘 됐고, 그만큼 구현 속도도 빨라져 수요일 저녁까지는 몰입해서 작업을 이어갔다. 그런데 에러 처리와 타입 선언에서 미흡했던 부분이 드러나며 오류가 터졌다. 빠르게 구현하기만 하는 게 맞는 걸까 하는 의문이 들었고, 목요일은 온전히 학습에만 쓰기로 했다.
오프라인에서는 실무나 다른 교육을 경험한 분들까지 다양한 사람들을 만났다. 예전 그룹원과 다시 만나 학습 고민을 나눴는데, 마스터클래스에서 그분의 코드를 보고 얼마나 확실히 이해해야 저런 코드가 나오는지 실감했고, 나는 아직 부족하다는 걸 다시 확인했다. 이번 주 팀원들도 다른 사람의 코드까지 이해할 만큼 지식이 풍부해서, 미션을 과제가 아니라 즐기는 과정처럼 대하는 듯했다. 그동안은 현업자 리뷰를 한 번 받아들이고 끝냈는데, 이번 주에는 내 것으로 만들려고 추가 질문도 남겼다. 부스트캠프가 요구하는 것도 결국 이런 과정이었을 텐데, 조금 늦게 깨달은 게 아쉽다.
에러를 대충 처리했더니 성공 응답이 돌아왔다
수요일에 급브레이크를 밟게 된 직접적인 이유는 에러 처리였다. 에러를 대수롭지 않게 여기고 대충 처리해둔 탓에, 오류가 발생했는데도 성공 응답이 반환되는 상황이 생겼다. 이 때문에 디버깅도 쉽지 않았고, 현타가 세게 왔다. 모든 것을 내려놓고 이번에는 이 문제 하나만 파겠다는 마음으로 다시 시작했다.
시간에 쫓기지 말고 학습부터 끝내자는 생각으로, 관련 도서의 에러 처리 챕터를 읽으며 try...catch 방식부터 다시 살펴봤다. 그동안 아무런 이해 없이 그저 사용만 해왔다는 걸 그제야 깨달았다. 이어서 커스텀 에러 처리 방식을 학습하면서는 정말 많은 걸 새롭게 알게 됐다. 에러를 상속 구조로 점점 구체화한다는 발상이 새로웠는데, 처음에는 왜 굳이 이렇게까지 할까 싶었지만, 가장 상위 에러 클래스의 인스턴스 여부만 판단하면 모든 에러를 잡을 수 있다는 점이 신선한 충격이었다. 이 방식이라면 원하던 일관되고 구조적인 에러 처리가 가능하겠다는 확신이 들었다.
어디에서 에러 처리가 필요하고 그 사이에 어떤 공통점이 있는지를 찾아가며 상속 구조를 설계했다. 기본 에러 클래스를 응답 상태 코드별 에러로 확장하고, 이를 다시 도메인별 에러로 세분화했다. 처음 구상한 흐름도대로 최하단에서 에러를 던지고 최상단에서 이를 처리하도록 구현했더니, 다른 모듈이 불필요하게 개입하지 않고 에러만 전달하면 되어 의존성이 줄었고 적용 과정도 생각보다 오래 걸리지 않았다.
적용해보고 나서 가장 크게 느낀 건 구조 설계 자체의 중요성이었다. 다른 캠퍼들의 코드를 보며 어떻게 이렇게 깔끔하게 설계하는지 의문이었는데, 중요한 건 단지 깔끔함이 아니라 그만큼 구조가 잘 잡혀 있다는 점이었고, 그 구조를 위해 얼마나 많은 학습이 필요했을지도 이번에야 실감할 수 있었다. 돌아보면 문제가 발생했을 때 코드 흐름 자체가 어딘가 꼬여 있었던 게 근본 원인이었다. 다음에 비슷한 상황을 마주하면, 코드부터 고치기보다 전체 흐름을 천천히 다시 짚어보는 쪽을 먼저 시도해보려 한다.
흩어져 있던 타입도 구조로 정리하다
에러 처리를 정리하고 나니 비슷한 문제가 타입 관리에도 있다는 게 보였다. 이전에는 타입이 중구난방으로 흩어져 있었고, 필요할 때마다 무작정 가져다 썼다. 스스로 확신이 없다 보니 "이렇게 하는 게 맞나" 싶어 매번 다른 방법을 시도했고, 그럴수록 일관성 없이 여기저기 흩어지기만 했다.
그래서 주말 동안 타입 관리 흐름을 명확히 정리했다. 리뷰어의 조언을 듣고 깊이 생각해보니 생각보다 어렵지 않은 문제였다. 서버와 클라이언트 사이에서 데이터가 어떻게 전달되고 변환되는지 흐름에 집중해, 순수해야 할 타입을 정하고 그 사이에서 적절히 변환해주는 구조를 세웠다. 클라이언트만 생각했을 때는 데이터 흐름과 전달 과정을 미처 고려하지 못했는데, 서버까지 함께 생각하니 전체 과정을 더 넓게 바라볼 수 있었다. 풀스택으로 개발하는 것의 장점을 이번에 확실히 느꼈다.
정리하며
같은 그룹 안에서도 캠퍼마다 우선순위와 속도가 달라, 쿠키와 세션, 배포처럼 미션에서 반드시 겪어야 할 과정을 아직 하나도 해보지 못했다. 다른 사람들과 같은 고민을 함께 나누지 못한 게 아쉬운데, 다음 주에는 요구사항을 다시 검토하고 우선순위를 재조정하는 과정이 필요할 것 같다.
지난주부터 새롭게 깨달은 점이 많아지면서 변화의 폭이 확실히 커졌다는 느낌을 받는다. 이전에는 천천히 성장하는 느낌이었다면 지금은 갑자기 한 걸음씩 크게 나아가는 기분인데, 결국 무엇이 불편했고 무엇을 공부했으며 어떻게 적용했는지, 그 결과 무엇이 달라졌는지를 스스로 정리하는 과정이 컸다. 이 흐름을 계속 이어가기 위해 체크리스트처럼 확인할 수 있는 수단이 필요하다고 느꼈는데, 가볍게 만들면 일회성에 그칠 것 같아 조금 더 나를 다잡을 수 있는 방법을 고민해보려 한다.