# 들어가며

인생여구과극(人生如駒過隙; 시간이 지나가는 것은 당나귀가 문틈사이를 휙 지나가는것 같아서, 순식간에 슬쩍 지나감)이라는 말이 실감나는 한 해 였다. 2018년 회고록을 작성한지 얼마 되지 않은것 같은데, 벌써 2019년의 회고록을 작성하는 시간이 돌아와 버렸으니 말이다.

1월 1일에 회고록을 쓴다는 것이 많이 늦은감이 있지만, 덕분에 생각할 시간이 더 늘어났다는 긍정적인 자기합리화 효과도 있었다고 생각한다. 사실 새로운 회사의 프로세스에 적응하고 제품을 만드느라 정신이 없었어서, 쓸 거리가 생각보다 많지 않을것이라 생각했다. 하지만 잘 생각해보니 그 와중에도 의미있는 일들, 아쉬운 일들이 많았다.

# 1. 이직

  • # 이전 회사

먼저 간단히 결론을 내보자면, 여러가지로 나의 한계를 많이 느꼈고, 대기업 특유의 분위기를 간접경험을 할 수 있었다.

권한은 전혀없고 책임만 있는 고기방패 이상한 리드 자리를 잠시 맡았을때도 스트레스가 심하였다. 협업을 위해 티켓을 나눠주고, 모르는 것에 대해 주도적으로 스터디를 하며, 적당한 가이드를 해주는 일이 상상외로 힘들었다. 일단 나 역시 한참 배워야할(지금도 그렇지만, 남들에게 가이드를 해주기엔 아직 실력이 모자라다) 일개 개발자였고, 관리 업무 뿐만 아니라 개발 업무가 같이 주어졌기 때문이다.

나의 가치관과 많은 차이를 가진 사람들과 일하는 것이 힘들다는 것도 새삼 느꼈다. 기본적으로 나는 모든 사람들의 각기다른 경험과 가치관을 존중하지만, 이번 경우에는 조금 힘들었다. 항상 미묘하게 부딪히거나 서로에 대해 신뢰를 쌓지 못하였고, 그것이 퇴사로 이어졌다. 지금와서 생각해보면 선입견을 걷어내고 진지한 대화를 해볼걸, 하는 생각도 든다.

솔직히 말하자면, 여기서는 반면교사로 삼을 만한 경험들을 많이 했다고 생각한다. 그렇기 때문에 여기서 보낸 시간들이 그렇게 의미가 없다고 생각하지는 않는다.

  • # ODKmedia

와! 시니어가 많다!
사실 지금의 회사의 첫인상을 말하자면 위의 문장으로 정리된다. 개발자로 일하는 동안 스타트업만 다녀서그런지, 이렇게 많은 시니어들이 모인 회사는 처음 경험해 보았다. 그렇기 때문에 이전 회사와는 다르게 묘한 안정감을 누리며 농축된 경험을 그대로 전수받을 기회가 많았다.

특히 파트를 가리지않고, 많은 경험을 쌓은 시니어들의 시각이나 코드쓰는 방법 등을 어깨너머로 습득할 수 있어 굉장히 의미있었다. 가끔 진행했던 페어 프로그래밍이나 티타임이 백미였다고 생각한다(의외로 개발자들은 굉장히 수다스러우며, 그 수다를 통해 느끼는 것들이 종종 있다).

그동안 내가 별로 생각해보지 않았던 프로세스에 대해 많은 생각을 할 수 있었다. PM과의 협업, 개발자간의 협업, Jira와 코드리뷰 등등 프로세스가 잡혀있는 회사에서 협업하며 개발하는 방법을 잘 배울수 있는 한 해였다.

결론: 정말 좋은 회사다(아직까지는).

# 2. ODC 런칭

회사에 적응을 하고 새로운 제품을 개발하였는데, ondemandchina라는 서비스 이다. 짧은 일정으로 인한 혼돈의 대홍수 속에서 몇 가지 일이 있었다.

  • # HDD에 당해버린 나

    나는 절대 걸리지 않을것이라 다짐했던 HDD(Hype Driven Development; 설레발 주도 개발)의 마법에 걸려버렸다. 사실 FE팀 전체가 결정한 사안이기도 한데, redux를 걷어내고 hooks와 context만으로 제품을 만들기로 정한 것이다.

    마침 react의 16.8버전이 릴리즈 되어 hooks를 쓸 수 있게 된 시점에 개발이 시작되었다. 우리팀은 설레는 마음으로 hooks라는 테라진에 흠뻑취했고 그 속에서 허우적거리다가 지금은 원래의 계획대로 redux를 다시 붙여넣고 있다.

    슬프지만 굉장히 좋은 경험이었기 때문에(역시 맞아보지 않으면 아픈줄 모른다) 함께한 동료들과 연말에 발표도 하였다. 무엇이 우리팀을 괴롭게 하였는지는 발표자료에서 확인해 볼 수 있다.

  • # 접근성, semantic web

    생존을 위해 프론트엔드를 개발할때는 전혀 신경도 못(안)쓰고 있던 부분이었다. 하지만 이전 회사에서 같이 일했던 동료를 통해 중요성을 깨닫게 되어, ODC는 많이 신경써서 component를 설계했다.

    사실 접근성이나 semantic web의 경우 굉장히 신경이 많이 쓰이지만, 겉으로는 잘 드러나지 않기때문에 간과하기 쉬운 부분이라고 생각한다. 하지만 감사하게도 팀원들이 semantic web에 대해 전체적인 공감대가 있었기에 나의 집착에 가까운 고집과 코드리뷰를 잘 받아주었다.

    런칭한 결과 wordpress로 구축된 기존의 서비스에 비해 2~3배 많은 페이지들이 수집되었고, 유저들이 다양한 검색어로 사이트에 진입하게되는 현상에 일정 부분 기여하였다. SEO를 위해 SSR같은 기술들도 중요하지만, 가장 기본이 되는 것은 semantic markup이라는 사실을 어느정도 증명한 것 같아 뿌듯했다(당연히 현재의 상태에서도 개선은 필요하다).

    여담으로, ODC는 현재 serverless로 운영되고 있고, SSR은 하지 않는다. 자세한 기술 스택은 여기에서 확인하면 된다.

  • # 코드리뷰

    몇 번을 강조해도 지나침이 없는 코드리뷰를 다행히 이 회사에서도 경험할 수 있었다. 다양한 경험의 동료들이 리뷰를 해주는 상황이라 실수를 많이 방지할 수 있었고, 반대로 나 역시 동료들의 코드를 통해 배우는 것이 많았다.

    다만 아쉬운 것은 설계수준의 리뷰를 충분히 받지 못했다는 것인데, 이 경우 단순히 코드리뷰만으로 설계수준의 리뷰를 받을 수 있을거라는 생각 자체가 잘못되었다고 생각한다. 단편적으로 올라오는 코드 조각들을 통해 전체적인 설계와 작성자의 의도를 파악하는 것은 어느 누구나 힘든 일이기 때문이다.

    이 점에 대해 그분들과 이야기를 나눈 후, 본격적으로 개발하기 전에 offline prereview를 갖기로 합의 하였다.

  • # 뜬금없는 react native

    정말 뜬금없이 같이 런칭되는 app을 개발하는 것을 support 할 기회가 생겨서 처음으로 react native를 사용해 보고 있다. App에도 어느정도 관심은 있어서 가능하면 native언어로 시작하려고 했었는데, 회사 사정상 뜬금없이 시작하게 되었다. 이것에 대한 글은 좀 더 스프린트를 진행해 보고 의미있는 경험치가 쌓이면 작성해볼 생각이다.

  • # 좋은 동료

    이번 프로젝트는 좋은 동료들과 일할수있어 굉장히 행복했다. 서로의 시스템에 대해 이해하고 있는 프론트엔드와 백엔드는 물론, 개발지식과 경험이 많은 PM 등 협력자들이 굉장한 능력자들이었다.

    특히 완전 새로운 유형의 디자이너와 일하게되어 재미있었는데, 플랫폼에 대한 이해와 component적 사고(단어가 묘하지만 달리 다른 표현이 생각나지 않는다)를 하는, markup을 할 줄 아는 능력자였다. 그렇기때문에, 커뮤니케이션에 소모되는 비용이 엄청 적었고 억지스러운 UI/UX를 개발할 일이 없었다.

    새해에는 디자인팀과 디자인 시스템을 구축해 협업하기로 결정하였기때문에, 좋은 경험을 할 수 있을거라 생각한다.

# 3. 처음으로 해본 발표

어느날 뜬금없이 백엔드팀의 py님이 발표를 해보는 것이 어떻겠냐는 제안을 하셨다. 사실 그때는 "뭐 언젠가는 해야죠."라고 대답하며 가볍게 넘겼는데, py님은 꽤나 진심이셨다. 나보다 더 발표자료의 초안에 대해 기대하셨고 더 적극적으로 나의 발표를 밀어붙이셨다. 나중에야 py님은 팀의 유명한 발표 브로커 였고, 이 분을 통해 다른 동료분이 이미 발표를 하신 것을 알게되었다.

처음부터 기술적인 것을 주제로 하기에는 나의 내공과 자신감이 부족해서, 개발자 성장기를 주제로 슬라이드를 만들었고, 그 이름도 부담스러운 GDG 프론트엔드게임에서 발표하게 되었다. 발표자 명단을 보니 커뮤니티에서 이름이 많이 알려진 실력자들이 많아서 더 부담이 되었지만, 그 틈바구니에서 발표를 무사히 끝낼 수 있었다. 아무말 대잔치를 했다고 생각했는데, 다행히 재밌게 들어주시는 분들이 많았고, 다른분이 후기도 잘 작성해 주셔서 큰 의미가 있었다고 생각한다.

아무튼 엉겁결에 py님 덕분에 발표를 해서 굉장히 감사하게 느끼고 있고, 2020년에는 기술적인 주제로 발표를 해볼 생각이다.

# 4. 처음으로 가본 해외여행

결혼을 하고나서 처음으로 여유가 생겼다. 와이프와 나름 아껴모은 돈으로 10월 말에 4박5일 사이판으로 자유여행을 다녀왔다. 영어로 의사소통을 해야하는 것과 자유여행이기 때문에 모든걸 알아서 해야한다는 압박감이 있었는데, 몇가지 해프닝은 있었지만 늘 그렇듯 다녀오니 정말 좋은 추억으로 남았다. 둘 다 지친상태였기 때문에 여기저기 돌아다니지 않고 말 그대로 쉬러 간 곳이었는데, 생각보다 할 것이 더 없어서 정말 여유롭게 지냈다.

아침에 일어나 해변산책 후 모닝커피 + 브런치 -> 점심먹고 카페에서 각자 할 일 -> 저녁먹고 술 이라는 반복되는 일정을 보내는 와중에 책을 두 권 읽었다. 서양철학에 관한 책과 공부법에 대한 책이었는데, 공부법에 대한것은 나중에 메모하면서 다시 읽어보고 몸소 테스트해보고 후기를 작성할 생각이다.

덧붙여, 그동안 개발과 관련한 서적들만 읽었었다. 이번에 서양철학에 대한 책을 읽으니 학부때 생각도나고 간만에 신선하다는 느낌을 받았다. 같은 팀의 동료 제프리처럼 나도 올해에는 다양한 분야의 책들을 읽어볼 생각이다. 늘 느끼지만, 내 주변에는 좋은 영향을 주는 동료들이 많다는 것을 또 느낀다.

# 5. 처음으로 진행해본 스터디

그분2의 제안으로 프로그래머스에서 진행하는 자바스크립트 스터디그분2, 같은 팀원인 제프리와 진행하였다. 무엇을 가르친다기보다는 회사보다 조금 더 친절히 코드리뷰만 하면 된다는 말에 선뜻 참여해 보았는데, 생각보다 몇가지 의미있는 점들이 있었다.

  • # 생각보다 코드리뷰를 할 수 있는 환경이 드물다.

    스터디를 진행해보니 스터디원분들이 코드리뷰에 격하게 목말라있었는데, 이야기를 듣다보니 꽤나 놀라웠다. 혼자 개발하거나, 회사에 코드리뷰 문화가 없어서 이 자체를 처음 경험하시는 분들이 많았다는 것. 나도 이전 회사에서 코드리뷰를 도입하며 느낀 것이지만 처음에 좋은 느낌과 부담을 주지 않아야 하기 때문에, 리뷰를 할 때마다 나름 고심해서 멘트를 골랐다. 다행히 스터디원분들이 코드리뷰라는 문화에 대해 상당히 긍정적, 적극적으로 받아주셨고 늘 그렇듯 나 역시 다른분들의 생각을 듣고 많은 것을 얻을 수 있어서 좋았다.

    사실 나는 운좋게도 개발자 생활을 시작할때 코드리뷰를 적극 장려하는 회사에서 일했기 때문에, 코드리뷰라는 것을 당연한 개발 프로세스의 일부분으로 받아들이고 있었다(코드리뷰도 없이 어떻게 개발해요?). 그런데 이 스터디를 통해 의외로 그런 환경에서 개발하시는 분들이 많이 없다는 것을 알게 되었다. 새삼 내 주변의 환경에 대해 감사하고, 코드리뷰 문화를 경험할 수 있게 도와드리고 싶다는 생각이 강해졌다. 그래서 이번 기수그분2, 제프리와 함께할 생각이다(홍보 맞습니다).

  • # 태도가 문제인가?

    스터디를 진행하다가 내 코드리뷰의 말투나 방향에 대해서 그분2에게 조언을 들을 기회가 있었다. 너무 넘겨짚어 설명하지 말고, 좀 더 부드럽게 말투를 고쳐보라는 것. 너가 아는 것을 모두가 알것이라 생각하지말고, 좀 더 자세하게 리뷰하라는 조언이었다. 최근에 py님에게도 코드리뷰를 좀 더 본연의 목적에 맞게 담백하게 하라는 조언을 들었던 적이 있던터라, 내 코드리뷰 태도에 대해 많이 생각해보게 되었다.

    그래서 2020년에는 팀원도 늘어나고, 프로젝트도 많이 진행되는 만큼 내 코드리뷰 스타일에 대해 끊임없이 테스트하고, 변경해볼 생각이다.

  • # 아는것을 공유하는 것은 중요하다.

    개인마다 생각은 다르겠지만, 나 혼자 아는것이 중요하고 그것이 내 무기가 된다는 말에는 개인적으로 동의하지 않는다. 아는것은 나누는 것이 중요하고, 나와 협업하는 사람들과 지식 교환을 통해 어느정도의 pool을 형성하는 것이 효율이 좋다고 생각하기 때문이다(우리는 프로토스처럼 칼라가 없다). 이번 스터디를 진행하면서도 내가 몰랐던 것들을 스터디원들이나 그분2, 제프리를 통해 많이 알게 되었고 내가 아는 개념들을 잘 나눠드릴 수 있어서 의미있었다고 생각한다.

# 6. 그 밖의 일들

  • # 가계부 만들기

    와이프와 겁없이 덤볐다가 참교육을 당한 프로젝트이다(괜히 뱅크샐러드가 회사로 존재하는 것이 아니다). 처음에는 굉장히 가볍게 수입, 지출만 기록하려고했는데 와이프가 엑셀에 가계부를 운영하는 방식으로 만들자니 처음 생각했던 간단한 앱과는 5만광년만큼 멀어진 느낌이었다. 결국 중도에 포기하고 말았는데, 배운것도 상당히 많았다.

    1. Docker compose를 통해 배포환경 구성함
    2. OAuth2.0을 직접 구현해봄
    3. CI/CD툴 (bitbucket pipeline)을 통해 직접 build pipeline 구성하여 배포 자동화
    4. 백엔드 개발자의 입장이 되어 프론트 개발자와 일해보기
    5. Task관리

    위의 경험들로 얻은 것들이 굉장히 많다. 이를테면 요새 작은 프로젝트를 진행하더라도 github actions를 통해 무조건 배포 pipeline을 구성한다. 그렇기때문에, 2020년에도 의미있는 토이프로젝트를 하나 더 진행해 보고싶다.

  • # Haskell, Rust

    Haskell은 단순히 monad라는 개념을 알고싶어서 + 그동안의 숙원사업을 해결하자는 마음으로 공부를 해보았다. 이 잔망스러운 언어는 굉장히 편한 개념들이 언어 자체적으로 지원되는 것들이 많았고, 언어자체의 허들이 꽤나 높다는 생각이 들었다.

    패턴매칭이나, 모든 함수가 기본적으로 curried되어있다는 것은 개인취향에 너무나 잘 맞았다. 덧붙여 강타입 + 컴파일언어라는 점도 꽤나 취향을 저격하는 부분이었다.

    하지만 좀 더 공부를 진행해보니 type class 개념이나 cabal, stack등의 의존성관리 시스템이 쉽지 않게 다가왔다. 아마 이때쯤 혼자공부하는 것에 지치고, 흥미가 떨어졌기 때문에 제대로 공부를 하지 않았기 때문인 것 같다. 결국 haskell도 중도에 포기하고 말았는데, 꽤나 두고두고 아쉽운 마음이 한켠에 자리하고 있다.

    Rust는 앞으로 다가올지도 모를 WASM의 시대에 대비해 미리 공부해 보자는 생각으로 시작했다. 어쩌면 또 HDD를 하고있는지도 모르겠지만, 일단 재미있게 진행하고 있다. Rust는 소유권의 개념이나 참조 / 역참조등 javascript로 개발하다보면 신경쓰지 않아도 되는 부분을 세세하게 신경써야하고, 역시나 강타입 언어기때문에 개인적으로는 손발이 묶인채 개발한다는 느낌이 들었다. Rust 커뮤니티의 discord 채널에 가입해서 눈팅만 하는 편인데, 대체적으로 c++의 superset같다는 의견이 많아 흥미롭게 생각하고 있다.

  • # 읽었던 책들

    올해는 개인적으로 흥미롭게 읽었던 책들이 꽤 있었다. 아쉬운점은 소위 말하는 독서록을 작성하지 않았다는 것.

    • The nature of software
    • 함께자라기
    • 웹접근성 프로젝트 시작하기
    • 성공하는 프로그래밍 공부법
    • 인터페이스 없는 인터페이스
    • IT에 몸담은 이들을 위한 지적생산 기술
    • 하룻밤에 읽는 서양철학
    • 프로그래밍 심리학
    • 실용주의 프로그래머, Clean code(매년 초 읽는 책들)
    • 프로그래밍 수련법(읽는 중)

# 7. 마치며

늘 그렇듯 한 해를 마무리하며 그동안의 일을 생각해보면 늘 아쉬움만 남는 것 같다. 내 의지가 부족해서, 순간의 감정에 휘둘려서, 상황이 생각보다 좋지 않아서 등등. 하지만 늘 느끼는 부분은 결국 어떻게든 아쉬움은 남을 것이고, 내가 할 수 있는 것은 이 아쉬움을 어떻게든 최소화 해야한다는 것이다. 그렇기때문에 글을 마무리하며, 아쉬움을 최소화 하기 위해 구체적인 목표를 세우고 그것을 달성하기 위해 2020년을 보낼 생각이다. 이 글을 읽고 계신 분들도 희망차고 생산적인 2020년을 보내시길 바란다.

  • # 아쉬운 것들

    • 가계부 프로젝트와 Haskell 공부를 중도 포기한 것
    • 좀 더 적극적으로 새로운 환경에 놓여보지 않은 것
    • 기술적인 내용으로 발표하지 못한 것
    • 블로그에 글을 꾸준히 쓰지 않은 것
    • 독서록을 쓰지 않은 것
    • 운동을 꾸준히 하지 못한 것
  • # 내년의 목표

    1. 꾸준한 운동 (필라테스, 자전거 2000km 타기)
    2. 영어(화상 영어를 고민중)
    3. 블로그 글(독서록 포함)을 꾸준히 작성하기
    4. 기술적인 내용으로 발표하기
    5. Haskell, Rust 공부하기
    6. 꾸준한 의식적 수련에 대해 목표를 정하고 정진히기
    7. 위의 목표들을 개인 OKR을 통해 보다 구체화하고, 2020년 회고에 반영해보기.
Last modified: 2/23/2020, 8:23:59 AM