올해 한 것 중 뿌듯한 일


At Work

  • Vue 를 사용하면서 ES6 Proxy, composable에 대한 이해도가 높아진 것
  • 내 의견을 정리해서 말하는 것에 능숙해진 것
  • 언제 질문을 해야 나에게 가장 도움이 되는지 알게 된 것
  • 어떤 질문이 좋은 질문인지 알게 된 것
  • Typescript를 좋아하게 된 것
  • 종종 다른 주니어분들의 에러를 해결해줄 수 있게 된 것
  • 온라인 커뮤니케이션에서 오해가 없도록 한 번 더 생각해보는 습관이 생긴 것

Personal

  • 요가, 필라테스를 3개월 꾸준히 한 것
  • 적절한 가구와 모니터 위치 등 재택 환경 세팅을 한 것
  • 출근 전 아침에 일찍 일어나서 2시간 공부하는 습관이 생긴 것
  • 가족들과 보내는 시간이 길어지고, 내가 요리하는 빈도가 잦아진 것
  • 스트레스를 푸는 방식을 더 확실히 습관화한 것 (일기 쓰기, 그림 그리기)
  • 금연에 성공!
  • 만년필 드로잉 취미가 생긴 것.

올해 한 것 중 아쉬운 일

At Work

  • LMS Admin 초기 구축 때, 아키텍쳐 설계에 적극 의견을 내지 못한 것.
  • composable에 대해 많이 고민하지 못했던 것.
  • Nuxt, SSR 에 능숙하지 못한 것.

Personal

  • 일과 프로그래밍이 내 삶에서 차지하는 시간이 너무 길어진 것.
  • 운동을 3개월만 꾸준히 한 것.
  • 그림 그리는 시간이 줄어들고, 개인 일러스트 굿즈를 제작하지 못한 것.


일하는 건 어때?

주니어로 첫 해를 보낸 2021년, 2020년에 부트캠프를 수료하고 여기저기 원서를 넣던 중에 언제가 될까?하는 생각은 있었지만, 내가 과연 될까?라는 생각은 없었다. 그만큼 내가 보낸 시간과 쏟아온 노력에 자신이 있었고, 2020년 12월, 패스트캠퍼스에 합류하게 된다.

자신감 넘치게 입장했던 시작과 다르게 실무 개발자로 일한다는 것은 가끔은 무겁고 벅찬 일이었다. 회의 때마다 다른 개발자 분들이 말하는 내용 중의 대부분을 이해하지 못해서 모르는 단어를 메모하고 검색하는 날들이 이어졌다. 아직 취업 준비 중인 친구들이 취직해서 일하는건 어때? 라고 물어보면 나는, ‘왕좌의 게임에 나오는 장벽 있지? 그게 내 앞에 거대하게 서있는 기분이야.’ 라고 말했다.



LMS Admin - 나의 첫 프로젝트

새로운 스택, 업무 방식이 얼렁뚱땅 머릿 속에 주입되는 중에 나는 첫 프로젝트에 투입되었다. LMS Admin은 패캠 내 사이트에서 제공하는 강의의 학습관리를 돕는 서비스이다. 쉽게 생각해 강사분들이 학생들의 학습률, 시험관리 등을 돕는 툴이다. 현재는 회사 내 다양한 사이트에서 쓰이기 위한 공통 모듈로 발전하고 있다.

운이 좋게도 프로젝트의 초기 아키텍쳐를 구축하는 단계부터 프로젝트에 합류할 수 있었다. 나 역시도 아키텍쳐 설계 회의에 참여했다. 아키텍쳐 설계에 있어서는 경험해본 프로젝트의 구조가 많지 않으니 각 구조별 장단점을 알지 못해, 적극적으로 의견을 내지 못했던 아쉬움이 있다. 하지만 그 외의 기능 개발에 있어서는 꽤나 뿌듯했던 프로젝트였다.

정말 아무것도 모르는 주니어였음에도 패캠의 업무 방식은 시니어분들이 떼어주는 피쳐만 작업하는 방식이 아니었고, LMS 프로젝트에서도 일부 페이지와 그 페이지 내부의 피쳐 전체를 맡았기 때문에 직접 그 페이지에 속한 컴포넌트와 store를 구성하면서 자연스럽게 실무 방식에 익숙해질 수 있었다.



뭐하는 애니, Vue.js 3

프로젝트를 하며 가장 의미 있었던 건 사수분들도 처음 도입하는 스택인 Vue3, Typescript를 함께 공부하며 가이드까지 만들어나갈 수 있었던 점이다. Vue.js 3는 2020년 9월에 등장한 스택인데, composition api를 적극적으로 채택하면서 이전보다 함수형으로 프로젝트를 제작하고, 기능 함수와 템플릿을 분리하는 것에 효율화된 스택이다. 이전 프로젝트에서 Vue.js 2 를 사용했기 때문에 얼마나 다르겠어 싶었지만 Vue3는 예상외로 Vue2도 아니었고, 리액트도 아니었다.

Vue 2를 사용할 때는 UI 레벨의 로직은 내부 computed와 methods 로 관리했고, 하나의 페이지와 컴포넌트가 재사용될 때 하나의 온전한 부품처럼 사용되는 것에 익숙했다. (mixin은 모달처럼 반복적이고 광역으로 사용되는 것이 아니면 사용을 자제했다.) 그런데 Vue 3에서 사용한 composition api는 setup 함수를 사용해 내부에서 사용되는 모든 값을 composable이라고 불리는 함수들의 묶음으로 분리할 수 있다. 리액트만 사용해보신 분들이라면 그럼 그냥 React Hooks 아니야? 라고 생각하실 수도 있겠지만, Vue 는 side effect가 아닌 자바스크립트 프록시(proxy)를 사용해서 상태관리를 한다. Vue 3에서는 ref를 사용해 state로 사용될 값들을 프록시화할 수 있다. 가장 기본적으로 상태를 관리해주는 뼈대와 부모 자식 컴포넌트간에 상태를 주고받는 emit 기능을 제외하면 대부분의 보일러플레이트를 제거하고 좀 더 자유롭게 사용할 수 있다. 그로 인해 재사용하는 composable 함수(React로 치면 Hook)을 어떻게 만들지에 대한 고민을 많이하게 되었다. 그렇게 머리를 쥐어뜯어가며 에러를 해결해가다가 보니, 안되는걸 되게 하는 사수님의 하드 캐리로 어느샌가 LMS 프로젝트가 오픈했다.



Typescript, My Favorite

타입스크립트를 처음 사용하기 시작했을 때, 타입 에러는 너무 성가시고, 대체 왜 타입스크립트를 사용하는걸까?하는 생각을 했었는데, 타입스크립트를 사용하다 자바스크립트를 사용하니 왜 TS의 인기가 하늘을 찌르는지 알게 되었다. 타입스크립트를 사용하면 런타임에서 에러가 발생해 뻗어버리기 전에 미리 캐치 가능한 요소들이 너무 많았고, 다른 사람의 코드를 이해하는게 훨씬 쉬워졌다.

나에게 개인적으로 가장 의미있었던 작업은 타입스크립트의 Interface를 리팩토링한 일이었다. TS 공부를 이제 막 시작한 상태에서 당장 이번주까지 끝내야할 태스크들이 주어지다보니, TS 관련한 논의가 다소 부족했다. 우리는 타입에러를 해결하면서 필요할때마다 새로운 Interface를 생성하고 있었다. 그러다보니 타입들이 거대해져 조치가 필요한 상황이 되었다. 논의를 거쳐 Interface를 최대한 잘게 쪼개고, 무조건 사용되는 property만 유지하기로 결정했다. 실제로 필요없는 property를 걷어내고 Mapped Types, Generic을 적극 활용하여 Interface를 합치고 나니, 코드가 3분의 1로 줄었다.



제로베이스(zero-base)


그 이후, 패스트캠퍼스이던 사명은 데이원 컴퍼니로 변경 되고, LMS 프로젝트를 함께했던 팀원 분들과 Snowball이라는 새로운 CIC에 속해 일하게 되었다. 스노우볼 CIC는 아직 스노우볼이 담당하고 관리하는 사이트가 필요한 상태였고, 그렇게 나는 ‘제로베이스’라는 사이트의 초기 구축을 담당하게 되었다. 사이트 구축이라는 단어를 듣고 부담스러워서 기절할 뻔 하였지만, 다행히 내가 우려했던만큼 헤비한 태스크는 아니었다. 기존에 만들어져 있는 콜로소라는 사이트의 뼈대를 가져와 제로베이스에 맞게 변경하는 프로젝트였다.

데이원 컴퍼니 내부에 CIC로 나뉘면서, 공통으로 사용하는 모듈이 NPM 패키지로 완전히 분리되는 작업이 선행되었다. 제로베이스는 프론트엔드로 기존의 콜로소 사이트 코드를 활용하고, 백엔드로는 모듈화된 여러 기능의 조합으로 시작했고, 그래서 빠르게 오픈 가능했던 것 같다. 물론 그 과정이 그리 순탄하지만은 않았다. 요구사항을 구현하려고 만들어져있는 프론트엔드 코드를 들여다보면, 그 기능이 없거나 제대로 동작하지 않는 경우가 꽤 있었다. QA 과정에서 기존에 존재하고 있던 버그를 고쳐야하기도 했다. 백엔드를 내가 담당한 것은 아니였지만, 패키지 버전 관리는 내가 하였는데, 내가 느낀 것은.. 매를 먼저 맞았다고 할까? 모듈이 분리된 이후에 그것을 적극적으로 뽑아다 사용한 것이 우리 팀이었기에 패키지 업데이트 후, 발견되고 개선된 점들이 있었다. 거기에 내가 아직 익숙하지 않은 SSR 스택인 Nuxt 를 사용해야했기에 그 어려움도 한 몫 했다. 개발자로 지낸 1년 중 가장 심적으로 힘들었던 시기였던 것 같다. 오픈 후에는 제로베이스 유지보수 및 CS 업무도 담당하였는데, 실제로 내가 만들어낸 버그로 인해서 유저에게 불편이 생긴다는 점에서 오는 압박감이 꽤 컸던 것 같다.



자립하기

제로베이스 사이트가 오픈하고 나니 여름쯤이었던 것 같다. 그 이후 새로운 팀원분이 팀에 합류하고, 우리는 또 경주마처럼 달리기 시작했다. 현재 제로베이스 사이트에 포함되어있는 커리어관리 프로젝트가 시작되었다. 커리어관리는 유저들이 프로필과 이력서를 업데이트하여 1:1 커리어 상담 및 기업으로부터 면접 요청을 받을 수 있는 서비스이다. 유저에게 노출되고 바로바로 피드백이 오는 부분이다보니, 업무를 진행할 때 좀 더 꼼꼼히 신경써야했다. 하지만 그만큼 뿌듯함이 컸던 것 같다. LMS Admin은 아무래도 내부용 어드민 사이트라는 성격이 강했기 때문에 유저로부터 피드백을 얻는데 어려움이 있었기 때문이다.

커리어 상담 프로젝트는 꽤나 스펙이 많은 큰 규모의 프로젝트였기 때문에 나 역시도 큼직한 덩어리를 가져가서 작업하게 되었다. 제로베이스 구축을 진행할 때 까지만 해도 사수분께 의지하는 면이 커서 그 점이 문제라고 인지하고 있었다. 그런데, 커리어 상담 프로젝트에서는 내가 온전히 하나의 영역을 맡아서 작업했다. 업무 스케줄링이나 커뮤니케이션 면에서 다른 분들께 많이 의지하지 않게 되어서 이제 정말 당당히 몫을 해내는 개발자가 되었다는 생각을 했다.



모르는 지식에 대한 긍정

제로베이스 내의 다양한 프로젝트들은 현재진행형이다. 아무튼 일복이 터진 1년이었는데, 잘 완주해낸 내가 멋지다. 그만큼 성장한 내가 느껴지기도 하고, 오히려 시야가 넓어지니 내가 모르는 것이 엄청 많다는 걸 알게되기도 했다. 입사 초에는 모르는 지식이 거대한 벽처럼 느껴졌다면, 요즘은 조금 다르다.

조금은 과장 된 생각일 수도 있지만, 프로그래밍 영역에서 내가 아는 지식의 비율이 지구에서 내가 아는 사람 수만큼인 것 같다는 생각을 해봤다. 그런데 그건 그렇게 부정적이지만은 않다. 친구를 통해 지인을 알게되거나, 스쳐가는 인연도 생기듯이, 새롭게 발견하는 지식들에 대해서 나의 마음이 좀 더 유해졌다는 뜻이라고 생각한다. 이전에는 누군가 나에게 말을 걸 때마다, ‘왜이렇게 모르냐고 혼나는 것일까? 그래 혼날만 하지.’ 하는 생각이 들 정도로 모르는 지식에 대해 불안하고 답답한 기분이 들었는데, 지금은 ‘아, 그런 것도 있어요? 신기하네요!’ 정도의 생각이 들고, 내 기억을 스쳐지나갈 지식이더라도 그 지식에 대해 들어보는 것이 즐겁다.

1개의 댓글

comment-user-thumbnail
2022년 4월 8일

오 그간 고생 많이하셨네요

답글 달기