지난 해 회고는 개인 노트에 작성해놓고 외부에 발행하지 않았지만, 올해는 적당히 정리하여 블로그에 발행을 해보기로 했다.
시간 흐름대로 모든 것을 작성하기엔 내용이 쓸데없이 장황해질 것 같아 중요한 파트별로 나누어 작성을 했다.
1. Work(무슨 일을 했나)
2. Study(무엇을 익혔나)
3. Good(뭘 잘했나)
4. Bad(뭘 못했나)
5. Goal(내년엔 무엇을 해볼까)
Work(무슨 일을 했나)
상반기
야놀자 CX서비스실로 이동하자마자 받은 미션은 상반기까지 야놀자 iOS/안드로이드 앱과 유사한 경험을 줄 수 있는 모바일 웹 애플리케이션을 제작하는 것이었다. 어쩌다보니 하나의 제품을 시작부터 런칭까지 마무리하는 것이 나에게 처음 있는 일이었는데, 리소스(일정, 인력 등)는 부족하고 모르는 것은 많았다. 그런데 어쩌다 보니 자연스럽게 프로젝트의 기술적 방향을 이끄는 역할까지 맡고 있었다. 툴링, 설정, 트러블슈팅은 대부분 도맡아 하고 다른 팀원들이 비지니스 로직과 컴포넌트 개발에 집중할 수 있도록 도왔다.
거기다 특정 도메인에 맞추어 처리해야하는 데이터가 복잡했는데, 이를 최대한 안정적으로 처리하기 위해 이미 팀 빌딩이 되어있는 iOS/안드로이드 팀원분들을 열심히 쫓아가며 설계에 대한 조언을 얻기도 했다.
거기서 힌트를 얻은 것이 함수형 프로그래밍, Either
모나드 등이었다. 이미 타입스크립트와 Next.js 기반 커스텀 설계 등 알아야 할 것이 많은 상황에서, 무작정 나 혼자 공부해서 코드에 반영하고 전파하는것 보다 다 함께 스터디를 하는게 좋겠다는 생각이 들어 함수형 프로그래밍 책으로 아침 스터디를 진행했다.
다만 의욕이 너무 앞서서 업무 하느라 피곤한 와중에 2시간 일찍 출근해서 스터디를 진행하다 보니 그때나 회고를 작성하는 지금이나 죄송스러운 마음이 든다. 강제성이 없었는데도 함께 참여해주신 분들께 고마울 따름이다.
하지만 점점 내가 가진 능력 대비 해야 하는 업무가 부담스러워지고, 발전하고자 하는 욕구에 제동이 걸리기 시작하던 중 좋은 기회가 생겨서 프로토파이를 만드는 Studio XID(스튜디오씨드, 이하 씨드)에 프론트엔드 개발자로 이직하게 되었다.
하반기
회사 규모는 더 작을지라도 훌륭한 개발자분들이 많이 계신 곳에 오게 되어 전반적으로 만족스럽게 씨드에서 하반기를 보낼 수 있었다. 지난번 회사 프로젝트에서 처리해야 하는 데이터에 신경을 많이 썼다면 이번에 담당하게 된 프로젝트는 UI를 어떻게 미려하게 구현하고, 리액트+타입스크립트+MST(mobx-state-tree
)를 어떻게 잘 활용할 수 있을지 알아나갔다. 이 모든 것을 혼자 해두셨던 이현섭님 덕에 많은 것을 배울 수 있었다.
다른 파트 동료분들과의 교류를 하고 싶어서 매주 한번 씩 있는 Dev Weekly 과정을 개선하여 배운 점 / 이야기하고 싶은 점을 돌아가며 이야기할 수 있는 자리를 마련했다. 자신이 속한 밴드에서 가장 못하는 연주자가 되라는 말 처럼 못난 연주자 자리를 지키며 많은 것을 배우고 있다.
팀원들과 적극적인 의사소통을 하고 자기주도적인 환경에서 개발을 진행하다 보니 ‘개발자는 단순히 기능 구현만 잘 한다고 다가 아니다’ 라고 막연히 알고만 있던 말이 무척 실감났다. 내 자신의 개발 능력 뿐 아니라 업무 능력도 조금씩 진화해가고 있다는 느낌이 든다.
Study(무엇을 익혔나)
- 프로젝트에 TDD까진 아니더라도 최대한 테스트를 빠르게 도입할 수 있도록 노력을 기울여봤다.
- 각종 리액트 테스팅 관련 글 번역
- Kent C. Dodds의 Testing Javascript 코스 수강
- 데이터 처리 함수에 스냅샷 테스트라도 도입
- Storyshots,
react-testing-library
작게나마 도입 등
- 타입스크립트를 그럭저럭 익혀 리액트 프로젝트에 활용할 수 있을 정도는 익혔다. 많은 글과 영상을 탐독했다.
- 함수형 프로그래밍, JS 디자인 패턴 그룹 스터디를 진행했다. 디자인 패턴 스터디에 사용 된 책은 어지간하면 추천하고 싶지 않다.
- 프로그램 디자인, 어떻게 할 것인가 등 프로그래밍의 기초 자체에 소홀히 하지 않기 위한 책을 읽었다.
- 다른 프로그래밍 언어의 기초라도 익혀보려 시도했다.
- Scala: 프로그래밍 스칼라 책을 한번 쓱 보고 스칼라로 배우는 함수형 프로그래밍 책을 봤는데 둘 다 영문판으로 봐서 그런지 제대로 머리에 들어오지 않은데다, 함수형 프로그래밍 책은 어려워서 중간에 포기했다. 나중에 내공이 더 쌓인 다음 다시 도전하고 싶다.
- Go: Discovery Go 책을 가지고 스터디를 시도해봤으나 언어의 활용을 어떻게 할지 잘 와닿지 않은데다 동기부여가 잘 되지 않아 A Tour of Go 정도만 마친 수준으로 끝냈다.
- ClojureScript: 씨드의 백엔드가 클로저로 되어 있어서 관심이 생겼다. 근데 당장 JVM 클로저는 쓸 일이 없으니 JS로 변환되는 클로저스크립트라도 한번 익혀서 사이드 프로젝트를 해볼 마음으로 기초를 익혀봤다. 이걸 활용해서 JS로 된 웹 게임을 클로저스크립트로 포팅해보려 했으나 중간에 손 놓고있다 잊어버렸다.
- 블로그에 16개의 글을 발행했다. 번역문이 대다수였지만, 한 달에 한 편이라도 발행해보고자 노력했다. 글을 쓰지 못한 달도 있었다.
- 외부에서 기술 발표를 두 번이나 하게 되었다. 개발자로서 다른 사람들 앞에서 발표를 한 것은 처음이다.
- Seoul.js Lightning Talk에서 Maybe / Either 모나드에 대해 간단히 활용하는 이야기를 했다. 모나드의 개념까지 갈 시간도 없어서(나도 잘 설명 못하고) 어떤 예를 들어 활용하는 정도만 보여주었다.
- 이상한모임 원데이이모콘에서 웹 컴포넌트를 소개하는 발표를 했다. 우연히 흥미가 생겨서 회사 Dev Weekly 에서 발표했던 내용을 더 다듬어서 이야기한 것이다.
- 모 기업의 소프트웨어 교육 과정 첫 시간에 강연 초청을 받아 부족하게나마 학생들에게 어떤 커리어를 밟아나갈 수 있을지, 어떤 노력을 기울이면 좋을지 내 경험을 바탕으로 궁금증을 조금이라도 풀어주는 자리를 가졌다. 참가자분들의 열의 가득한 눈빛과 질문을 받고 나도 노력 에너지를 재충전한 기분이 들었다.
Good(뭘 잘했나)
- 이직하길 잘했다. 당시에는 이직하기 애매한 시기라고도 생각했고, 자신감도 부족했으나 모든 일에는 운과 타이밍이 적절히 맞아들어가고 좋은 기회가 왔을 때 그걸 거머쥐는 것도 능력 중 하나라고 느끼게 되었다.
- 연초에 타입스크립트 도입을 하길 잘했다. 또한 함수형 프로그래밍 개념을 조금이라도 이해한 뒤 적용을 한 것도 당시 데이터 처리를 효율적으로 하는데 많은 도움이 되었다.
- 외부 발표를 하길 잘했다. 사실 만약에 한다고 해도 내년에 도전해봐야겠다고 막연하게 생각하고 있었으나 기회가 더 빨리 찾아왔다. 불안하고 걱정되기도 했지만 만약 앞으로도 다른 분들에게 유용한 내용을 발표할 자리가 있으면 기꺼이 참여할 생각이다.
- 노트 앱으로 노션이 떠오르고, 나도 많이 추천을 하는 편이지만 내 메인 노트 앱은 베어로 유지하고 있길 잘했다. 노션도 훌륭한 앱이지만 내 글쓰기 패턴 상 베어가 더 적절한 도구였다. 올 10월에 프로 1년 구독이 갱신되었다.
- 몇 가지 장비를 구입하길 잘했다.
- 맥북 12인치 중고: 회사에서 지급받은 맥북 프로 15인치를 보조하고, 가볍게 가지고 다니기 편하니까 구입했다. 약간 느리지만 회사 프로젝트 개발도 충분히 가능하다. 다만 당시 중고장터에서 가장 저렴하고 적당한 사양의 물건을 구입하다보니 로즈골드 컬러를 쓰고 있는게 아쉽다. 스페이스 그레이가 좋은데..
- 플스4 프로: 틈틈이 재밌는 게임을 잘 즐길 수 있었다. 물론 바빠서 못할 때도 있었지만 날이 추워지면서 슬금슬금 플레이시간이 늘고 있다
- 델 U2718Q: 27인치 4K 모니터. 가격은 좀 비쌌지만 기존에 쓰던 싸구려 중소기업 4K 모니터와 비교하니 돈 값 한다고 느꼈다.
- 소니 WH-1000XM3: 노이즈 캔슬링 헤드폰. 사실 M2를 이베이 리퍼로 사서 잘 쓰다가 ‘굳이 업글 할 필요가 있어보이진 않는데?’ 라고 생각했으나 손에는 이미 M3가 들려있었다. 더 나은 노이즈 캔슬링, 음질, 착용감 등 좋은 업그레이드이긴 하지만 지출이 조금 뼈아프긴 했다. 지금도 M2 리퍼가 가격만 좋으면 충분히 권할만 하다고 생각한다.
- 아이폰 XS: 솔직히 이건 충동구매 맞지만, 화면이 커지면서 글 보기가 한결 편해지니 만족스럽다. 카메라는 아직 제대로 활용할 일이 없어서 모르겠다.
- 여행을 다녀오길 잘했다.
- 4월 일본, 6월 제주도, 12월 다시 일본
- 작년까지는 여기저기 돌아다니는데 신경을 썼지만 이제 여행을 간다고 하면 누군가를 만나기 위해 가거나 가볍게 현지인처럼 돌아다니는 느낌으로 가게 되었다. 특히 내가 평발이라 오래 걷기 힘들다는 것을 다시금 깨달은 이후 여행할 때 최대한 무리하지 않게 되었다. 만난 분들과 이런저런 이야기를 하며 좋은 영감을 얻기도 했다.
Bad(뭘 못했나)
- 겨울이 다가오자마자 의욕과 컨디션이 확 떨어졌다. 겨울 이전에도 컨디션 관리를 제대로 못해서 고생한 순간이 여럿 있었다. 특히 이 일을 오래 하고 싶으면 건강 관리는 알아서 꾸준히 해 주어야 하는데, 원체 몸을 움직이는데는 게을러서 그런지 쉽지 않다.
- 위의 장비 지름 이외에도 자잘하게 쓸데없는 지름들이 있었다. 괜히 시간낭비 돈낭비를 한 적도 있었지만 호기심 때문에라도 써보고 싶었던 것들이긴 했다.
- 진정 빡세게 집중해서 일한 순간이 그리 많지 않았다. 결과물은 내지만 자꾸 집중력이 딴데로 샐 때가 많았다. 뽀모도로 도입 등 개선의 여지는 있다.
- UI 개발 능력을 키우기 위한 시간 투지를 많이 하지 않았다. CSS를 잘 다루는 능력이나, 애니메이션을 잘 구현하는 능력 등은 아직 갈 길이 멀다. 있는 디자인 보고 페이지 구현하는 것은 그럭저럭 할 수 있다 하더라도 그 이상을 해 내는 능력을 갖추어야겠다. 특히 UI/UX 에 대해 기본 지식을 쌓아두려다 미처 손대지 못했다.
- 사이드 프로젝트를 하나도 못했다. 못 할 수도 있는거지만 원래 진행해보려던 클로저스크립트로 간단한 웹 게임 만들기도 손 놓고 있다가 잊어버린게 아쉽다. 6월즈음 사이드프로젝트로 Festa팀에 합류해보았으나 이직한 직후에 정신없어서 제대로 참여 하지 못했다. 얼렁뚱땅 발을 빼게 되어 죄송하다.
- 책을 더 많이 읽지 못했다. 올해 주로 자료를 얻었던 곳은 트위터였다. 하지만 마냥 트랜디한 정보를 흡수하고 전달하는 것 보다 본질적인 내용에 집중하고 싶을 때, 내가 원하는 호흡으로 지식을 습득하고자 할 때는 책이 더 맞는다고 생각한다. 읽으려고 모셔놓고 책갈피만 꽂혀있는 책들이 몇 권 된다.
- UI 테스트를 더 적극적으로 작성하지 못했다. UI 테스팅은 단순히 단위 테스트를 하는 것 보다 훨씬 어렵게 느껴졌다. 어디부터 시작해야할지 아직도 막막하긴 하지만 최근에 조금씩 실마리가 보이고 있어서 다시 천천히 접근해보려 한다.
Goal(내년에는 무엇을 해볼까)
- 더 미려한 UI, 편리한 UX 개발을 위해 노력한다.
- 견고한 테스트를 기반으로 더 안정적인 애플리케이션을 개발하기 위해 노력한다.
- 책을 통해 기반 지식을 견고히 다지는데 더 많은 시간을 써본다.
- 영어 학습을 별도로 진행한다.
- 더 좋은 글이나 번역문을 발행할 수 있도록 노력한다.
- 오픈 소스 커뮤니티에 코드로 기여할 기회를 더 만들어본다.
더 적어볼까 했지만 이미 너무 많은 욕심을 부린 것 같아 이 정도로 멈추고, 내년 6월에 다시 돌아보는 시간을 가져야겠다.
개발자로서 제 2의 인생을 시작한지 3년 3개월이 넘어가고 있다. 지금까지의 시간을 돌아보고 나서 앞을 바라보니 2019년은 내 삶에서 최고의 한 해가 될 수 있으리라 기대한다.
이 글을 읽는 분을 비롯해서 다른 분들에게도 좋은 일이 가득했으면 좋겠다.