연말인만큼 블로그에 회고글 하나 장만해야겠어요.
개인적으로 의미있다고 생각하는 TOP 열정 광고. 신청자들의 다짐들을 공개적으로 광고에 싣어버려서(?), 혼자서는 지키기 어려운 다짐들을 행동으로 옮기고 성공할 수 있게 돕자는 의미를 갖고 있습니다. 회고글도 그런 의미가 아닐까 싶어요.
드디어 올 한해도 다 갔습니다. 연말이라 그런지 요새 이상하게도 잠자리에 들기 전에 이것저것 잡생각들이 많이 떠오르는데, 막상 컴퓨터 앞에만 앉으면 머릿속이 새햐얘지네요… 그래서 사실 이번에 회고글을 쓸까말까 고민을 많이 했습니다. 그러다가 어떤 분이 잘 정리해두신 2019 회고글 모음집을 읽게 되었는데 여기서 몇 개를 좀 감명깊게 읽었던 것 같습니다. 몇몇 회고글은 이미 글쓰는 개발자 모임인 글또에서 봤던 거라 반가웠습니다. 여기에 또 자극을 받아서 결국 노트북 앞에 앉게 되었습니다.
이미 지난 7월에 중간회고글을 한 번 썼기 때문에 이번 회고글은 올해 후반기를 다시 한 번 되돌아보는 시간이 될 거 같습니다. 5개월 만에 같은 주제로 글을 쓰기가 망설여지긴 했지만, 그래도 많은 일이 있었던 것 같아서 정리해보려 합니다. 그리고 덧붙여서 한 해 동안의 목표를 공개적으로 정해놓고 싶기도 했구요.
지난 목표
지난 7월에 저는 연말까지 달성하고 싶은 목표를 작성했었습니다. 회고 타임인만큼, 하나씩 되짚어 봐야겠죠?
글또와의 약속(2주에 1포스팅)을 잘 지키기
점수: ⭐⭐⭐⭐
지난 5개월 간 총 12개의 글을 작성했어야 했는데, 10개의 글을 작성했으니… 그래도 별 4개를 줄 수 있겠네요. 글을 패스할 수 있는 패스권
이 두 개 있었지만 두 개 다 쓰고도 사실 한 번 글을 빼먹었는데, 그때가 훈련소를 다녀온 직후라 도저히 글을 쓸 만한 게 생각이 안나서 어쩔 수가 없더라구요…(ㅠㅠ) 그때를 제외하고서는 글을 일부러(?) 빼먹은 적은 없었습니다.
사실 글을 쓸 주제가 떠오르면 상관 없는데, 2주마다 새로운 주제를 찾는 것도 여간 쉬운 일이 아니었습니다. 특히 마감일이 닥쳐오는데 글감이 떠오르지 않아서 고통받은 적이 두어 번 있었던 것 같아요. 가끔씩 제 주변의 지인들에게도 글또 얘기를 해주는데, 거의 대부분이 고개를 절레절레 젓더군요. 보증금도 맡기고, 글도 꾸준히 써야하고, 피드백도 해야하는데 힘들지 않냐는 의견이 대부분이었습니다.
사실 조금 벅차다고 느낄 때도 있었습니다. 하지만 그럼에도 불구하고, 꾸준하게 글을 쓰게 만드는 동기를 부여해 준다는 건 나쁘지 않은 경험이었습니다. 원래 한 달에 하나씩 글을 쓰자는 마인드였는데, 주기가 두 배나 더 빨라지면서 강제로 성장당해버린(?) 느낌이었습니다. 가끔씩 글에 덧글이 달리는데, “글을 너무 재밌게 읽었다”, “덕분에 도움을 받았다” 같은 긍정적인 피드백을 받으면 그 글을 쓰느라 쌓인 피로가 싹 사라지는 느낌이었습니다.
디자인 툴(일러스트레이터, 포토샵) 배워보기
점수: 🌧
이거는 시도조차 못해서 0점입니다(…) 아무래도 개발적으로 배워보고 싶은 게 더 많다보니 우선순위가 좀 밀렸어요. 아무래도 혼자 있으면 안 할 거 같아서, 요새 떠오르고 있는 개인 과외 서비스들을 한 번 이용해볼까 라는 생각도 있습니다.
개인 프로젝트에 테스트 코드 적용해보기
점수: ⭐⭐
개인 프로젝트로는 사실 시도도 못했고, 회사 업무로 간단한 유닛 테스트 코드를 짤 수 있을 정도는 되어서 별 2개입니다. 사실 회사의 프론트엔드 프로젝트에는 이미 Jest를 이용해 유닛 테스트를 도입한 상태였는데, 문법도 잘 몰랐었고 무엇을 테스트로 짜야 하는지에 대한 심리적인 막막함(?)도 있어서 저에게는 테스트 코드를 짜는 게 굉장히 어렵게 느꼈었습니다.
다른 분들은 잘만 하시는데 저만 못하다 보니, 요게 또 은근히 자존심이 상했습니다. 그래서 하루는 다른 팀원들이 구현해놓은 테스트 코드를 참고해가며 한 번 제 나름대로 테스트 코드를 짜 보았습니다. API와 라우트를 모킹하고, 특정 경우에 따라서 취해질 수 있는 액션들을 시나리오 별로 잘 정리해두었습니다. 만들다보니 문법이 조금 낯설긴 하지만… 나름 재미가 또 있더군요? 그리고 내가 짠 코드가 잘 동작한다는 하나의 보험을 들어놓은 느낌이라 심리적인 든든함(…)까지 느껴졌습니다. 이래서 테스트 코드 짜나 싶더라구요.
그래서 요새는 가능하면 유닛 테스트 코드를 작성하려 노력하고 있습니다. 아직 뭐 TDD를 논할 만큼 능숙하지는 않지만, 지금보다 더 깊게 테스트를 배워보고 적용해보고 싶다는 생각이 들었습니다.
개인 프로젝트를 좀 더 전문적으로 운영해보기
점수: ⭐⭐⭐⭐
전문적으로 운영해보기
에 대한 정의가 명확하지가 않았네요. 비록 간단한 프론트엔드 프로젝트이지만, 전역일 계산기와 곽철용 짤 생성기를 잘 굴려왔다는 점에서 별 4개를 주었습니다. 1개의 별을 깎아먹은 이유는 너무 간단한 프로젝트라서 이걸 운영이라고 얘기하기가 애매해서요(…)
그래도 나름 전역일 계산기는 Github의 릴리즈 기능을 활용해서 새로운 버전이 릴리즈되면 사용자의 어플리케이션에서 릴리즈 목록과 함께 별도의 시각적 알림이 가는 기능까지 구현해놓았습니다. 곽철용 짤 생성기에는 구글 태그 관리자를 활용한 통계 수집 및 광고 부착까지 해놨구요. 아무튼 두 프로젝트 모두 아직까지 사용자가 있긴 하니, 비록 구멍가게지만 나름 운영을 했다고 칩시다. 흠흠.
TypeScript 공부하기
점수: ⭐⭐⭐⭐
이 목표를 세울 당시에는 TypeScript를 배운지 얼마 되지 않은 시점이었는데, 지금은 그래도 업무에서는 무난하게 쓸 수 있을 정도로 익숙해졌기 때문에 별 4개를 주었습니다. 예전의 회사에서는 JavaScript로만 개발을 하다보니 아무래도 프로덕션 서버에서 런타임 에러(!)가 종종 발생했었는데, 새 회사에서 TypeScript를 경험하고 난 이후에는 그런 것들을 개발 과정 자체에서 막을 수 있다는 게 엄청 좋다고 느꼈습니다. 특히 텍스트 에디터에서 지원해주는 TypeScript의 자동완성 기능들이 유용했습니다.
점진적으로 백엔드도 공부하기
점수: ⭐
점진적이긴 한데 너무… 너무 점진적이었던 것 같습니다. 한 공부라고는 SQL 작성 방법과 관련된 책을 읽은 것뿐이네요. 그래도 이거라도 배운 덕분에 요새는 백엔드 개발자분의 손을 거치지 않고 직접 DB 스키마를 확인해서 필요한 프론트엔드 작업을 마무리하기도 합니다.
하지만 요새 백엔드 지식을 잘 몰라서 불편하다는 거를 자주 느끼는 것 같습니다. 종종 사이드 프로젝트로 해볼만 한 재미있는 아이디어들이 떠오르는데, 이를 실제로 구현하려면 백엔드 지식이 필요해서 시작조차 못하고 막히는 경우가 있습니다. 그럴 때마다 아… 백엔드 공부 해야 하는데… 생각은 하지만, 아무래도 본업이 프론트엔드 개발인지라 우선순위를 낮게 여겼던 것 같습니다. 이거는 정말 반성해야겠군요… (ㅠㅠ)
2019년 타임라인
독서
올 하반기에는 책을 단 한 권 읽었군요(…) 도널드 노먼의 UX 디자인 특강: 복잡한 세상의 디자인 라는 책을 읽었는데, 원래 읽어보고 싶었던 책이어서 엄청 기대를 했었는데 생각했던 거랑은 쪼금 달랐습니다. IT와 관련된 내용보다는 일상 생활에서의 UX를 찾는 내용이 대부분이어서, 저번에 서평을 쓸 때는 책의 내용을 IT 분야에 적용시키는 식으로 썼습니다.
내년에는 지금보다는 좀 더 책을 읽어야 할 거 같습니다. 올해 4월에 읽었던 소프트웨어 장인은 엄청 유익하게 읽었던 기억이 나서, 구글에 찾아 봤는데 관련된 시리즈 서적들이 있더군요. 내년 상반기에는 한 번 이 책들을 읽어보는 걸 목표로 하고 있습니다. 아, 그리고 유명하다는데 아직 못 읽어본 클린 코드랑 GoF 디자인패턴도요.
버티컬 마우스
어느 날 우연히 와디즈에서 버티컬 마우스 펀딩을 하는 걸 보았습니다. 버티컬 마우스가 손목 질환 예방에 좋다는 얘기를 듣기도 했고, 신기한 생김새 때문에 호기심에 한 번 정도는 써보고 싶었기에 자세히 살펴보았습니다. 가격도 개당 약 19,000원 선으로 저렴했고, 아는 지인분도 같이 사신다고 하길래 업무 용도로 부담없이 도전해보았습니다.
대략 한 달 후에 버티컬 마우스를 배송받았습니다. 처음에 손에 쥐었을 때는 일반적인 마우스와는 다른 그립감이 들긴 합니다. 낯선 느낌이 완전히 사라지기까지는 저는 한 4~5일 정도 걸린 것 같았습니다. 일반적인 마우스를 조작할 때처럼 손목을 움직이는 게 아니라 팔 자체를 움직이기 때문에 손목에 힘이 덜 가는 것도 체감할 수 있었습니다. 그리고 적응 후에는 버티컬 마우스와 일반 마우스를 번갈아 쓰는데에도 전혀 무리가 없었습니다. 버티컬 마우스로 게임은 안 해봤습니다.
하지만 단점이 없었던 것은 아닙니다. 초반 적응기 때 오른손으로 키보드와 마우스를 옮겨다닐 때 마우스를 넘어뜨리는 일이 잦았고, MacOS에서는 앞으로/뒤로가기 버튼이 동작하지 않는 것처럼 호환성이 그닥 좋지 못했고, 마지막으로 초반에 끊김 현상이 좀 심했다는 것입니다. 마우스를 움직이다보면 꽤 잦은 주기로 사소한 움직임을 감지하지 못했었는데 이 때문에 해당 펀딩의 댓글창이 폭발(…)해버렸습니다. 지금은 마우스를 넘어뜨리지도 않고, 언젠가부터 MacOS에서도 호환이 잘되고, 끊김현상도 많이 개선이 되긴 했습니다. 초반에 쓸 때는 아… 이거 괜히 샀나… 라는 생각이 들긴 했어요.
총평을 하자면, 지금의 저는 버티컬 마우스에 만족하고 있지만 다음에 살 때는 좀 더 고급형 모델을 사볼까 생각하고 있습니다.
이사
1년 8개월 간의 자취방을 뒤로하고 전망 좋은 새 집으로
8월 15일에 이직으로 인해 이사를 했습니다. 도보 15분의 쾌적한 출근길이 이직 후에 1시간 반으로 변해버리는 불상사가 일어났기 때문입니다. 덕분에 새 회사에 첫 출근을 끝내고 집에 돌아오는 길에 바로 집주인에게 연락을 했습니다.
✉️ 이직 때문에 방을 빼야할 것 같습니다…^^;;
물론 방을 바로 뺄 수는 없고, 3개월 간의 완충 기간이 있었습니다. 하지만 그 말인 즉슨 3개월 동안은 지옥같은 출퇴근길을 버텨야 한다는 것을 의미했죠. 아침에는 최소 7시에 일어나야 10시까지 도착할 수 있었고, 7시에 정시 퇴근을 해도 집에 도착하면 9시가 거의 다 되어서야 돌아왔습니다. 그래서 집에 도착할 때 쯤이면 너무 피곤해서, 3개월동안 저녁을 거의 편의점 도시락만 먹었습니다(ㅠㅠ).
그리고 새 자취방을 알아봐야해서, 며칠동안은 퇴근 후에 부동산에 가서 여러 매물을 보러 다녔습니다. 2~3일 동안 발품을 팔고 다니며 그나마 괜찮은 매물을 찾게 되었고, 8월 15일에 이사를 했습니다. 마침 광복절(?)이었는데 진짜로 광복해버렸네요. 아무튼 이사한 덕분에 출퇴근 시간이 10분으로 줄어서 확실히 삶의 질이 좋아졌습니다. 역시 이 맛에 현질(?) 하나 봅니다.
이사 때문에 부동산에 발걸음을 자주 하다보니 관심이 좀 생겼습니다. MBC에서 구해줘 홈즈
라고 집을 대신 찾아주는 예능 프로그램이 있는데, 집을 구하러 다녀본 입장에서 보니 엄청 재미있었습니다ㅋㅋㅋ
전역일 계산기
어떤 친절하신 개발자 분께서 크롬 확장 프로그램 코드가 파이어폭스 애드온에도 호환이 된다고 가르쳐주셔서, 다른 플랫폼에도 이 프로젝트를 이식하는 여정이 시작되었습니다.
크롬에서는 빌드된 소스코드를 압축해서 올리기만 하면 배포가 끝나는데, 파이어폭스는 앱스토어나 구글플레이마냥 일일이 소스코드 검수를 하는 것 같더군요. 오죽하면 빌드 파일 제출할 때, 압축되지 않은 소스코드 원본도 같이 올려달라고 하더군요.
이런 정책 상의 차이 때문에, 크롬에서는 잘 돌아갔던 확장 프로그램이 파이어폭스 애드온 심사에서는 리젝(reject)을 먹어버리는 크로스 브라우징 이슈가 생기게 됩니다. 하… 이 망할 놈의 크로스 브라우징 이슈 때문에 삽질을 많이 했습니다.
일례로, 파이어폭스에서는 보안상의 이유로 index.html
에서 외부 스크립트(<script>
)를 일절 로드할 수 없게 되어있습니다. 당시에 저는 확장 프로그램의 통계를 확인하기 위해 구글 애널리틱스(Google Analytics)를 불러오는 외부 스크립트를 붙여놓은 상태였는데, 이거를 작동되게 하려고 별의 별 짓을 다하다가… 결국에는 애널리틱스 스크립트를 뺐습니다. 이 외에도 사용한 UI 프레임워크가 파이어폭스에서 잘 동작하지 않는 이슈도 있었고… 요런 이슈들이 있었지만 지금은 다행히 파이어폭스에서도 잘 동작합니다.
사이드 프로젝트
9월부터 사이드 프로젝트를 하나 하게 되었습니다. 프로젝트 주제는 반려동물 CCTV 서비스고, 저는 웹과 관련된 부분을 담당하게 되었습니다.
예전에 대학교 동아리 선배가 창업을 했는데, 주변에 알고있는 웹 개발자가 부족하다고 해서 저에게 도움을 요청했었습니다. 그래서 한 번 만나서 이야기를 들어보았고, 평일에는 직장이 있다보니 주말에만 도움을 주는 것으로 얘기를 마무리했습니다.
처음에 가서 코드를 살펴봤을 때에는 전문적인 웹 개발자가 없었던 탓인지 품질이 좋지 않았습니다. 라이브러리의 예시 코드를 그대로 수정한 수준이었고, 불필요하게 서버 사이드 렌더링이 일어나 서버 리소스가 낭비되고 있었습니다. 제가 보기에 불필요한 로직도 많았고, 무엇보다 개발 환경이 제대로 갖추어지지 않아서 매번 손배포를 해주어야 하는 불편함이 있었습니다.
그래서 저는 아래처럼 환경을 개선했습니다.
- 프로젝트에서 메인으로 사용하고 있는 라이브러리 로직을 분석하고 최적화
- 한 군데 섞여있는 프론트 로직과 서버 로직을 별개의 리포지터리로 분리
- Github Actions를 활용해 배포 자동화 환경을 구축
- 기타 웹뷰에서 필요로 하는 페이지나 기능, 애니메이션들을 구현
주말에 시간을 내서 일을 돕는다는게 쉽지만은 않더군요. 그래도 곧 시제품 출시를 앞두고 있어서, 요것만 바라보고 버티는 중입니다.
곽철용 짤 생성기
곽철용 드립이 한창 흥할 때, 뒤늦게 영화 타짜를 보고 꽂혀서 만든 패러디 짤 생성 사이트입니다. 방금 확인해봤는데 오늘 기준으로 누적 1만 개(!)의 짤이 생성되었다고 통계에서 확인할 수 있군요.
또 재밌는 게 있는데, Deview 같은 큰 컨퍼런스의 연사 분들께서 발표를 할 때 이 짤 생성기를 활용해서 발표 자료를 만들어주셨다는 걸 다른 분들께 전해들었습니다. 다른 사람들이 실제로 이 페이지를 잘 활용하는 걸 보고 나니까 뿌듯하더군요. 다른 데서는 어떻게 인용했는지도 궁금하네요.
훈련소
10월 24일부터 11월 21일까지 논산에 있는 육군훈련소를 다녀왔습니다. 1달이 넘게 지났는데도 아직 머리는 자랄 기미가 안보이는군요(…) 이것 때문에 글또 약속을 지키지 못할 거 같아서 미리 패스권 예약을 해놓고 갔다는 후문이…
컨퍼런스
12월 4일, 원티드가 역삼 위워크에서 주최한 Developer Meetup - 요즘 “프론트엔드 개발” 어떻게 하지? 컨퍼런스를 다녀왔습니다. 평소에 프론트엔드를 주제로 한 컨퍼런스에 꼭 참석해보고 싶었는데, 부득이하게 기회를 번번히 놓치다가 이번에 본격적으로 참석을 해보았습니다. 평일 저녁에 진행된 행산데, 감사하게도 회사에서 배려를 해 준 덕분에 다행히 늦지 않게 참석할 수 있었습니다.
원티드랩의 김민영 개발자님께서는 AB테스트
를 주제로, 우아한형제들의 김민태 개발자님께서는 디자인 시스템
을 주제로, 토스의 박서진 개발자님께서는 마이크로서비스 아키텍쳐와 자동화
를 주제로 발표를 해주셨습니다.
전체적으로 공감할 수 있는 부분이 많아서 재밌게 들었습니다. 컨퍼런스 리뷰도 직접 쓰고 싶은데, 내용이 길어질 것 같아 우선 벨로퍼트 님이 작성해주신 후기를 걸어놓고 제 리뷰를 차차 추가해보도록 하겠습니다.
오픈소스
Google의 Web Fundamental의 문서 중 하나인 웹에서 가변 폰트의 도입를 번역했습니다.
번역 방식은 GitLocalize라는 서비스를 활용해서 번역본을 올리면, 번역한 언어 관리자의 검토를 거친 후 PR이 만들어지게 됩니다. 근데 이거 한 달 전에 PR 올린 것 같은데 아직도 확인을 못 받은 것 같군요… 가서 한 번 확인을 요청드려야겠습니다.
앞으로의 목표
저는 적당히 쓰고 끝내려 했는데 적다보니까 양이 좀 많아졌네요… 지금까지는 올해 한 활동을 적어봤고, 내년에는 아래와 같은 마음가짐을 가져보려 합니다.
주니어 딱지를 떼자
저는 아직 다른 사람을 가르치거나 조직을 이끌만큼 퍼포먼스를 낼 수 있는 시니어는 아니지만, 어느 순간부터 주니어 라는 딱지를 방패처럼 생각했던 적이 있습니다. 제가 실수를 하거나 잘 모르는 부분이 있으면 아, 나는 아직 주니어니까 라고 대수롭지 않게 생각했던 거죠. 사실 실력은 연차와 관계가 있는게 아님에도 불구하고 말이죠.
새해에는 이런 생각들을 고쳐볼 예정입니다. 내가 조직에서 주니어든 시니어든은 상관없이 나에게 할당된 태스크가 있다면 그것만큼은 프로페셔널하게 해결할 수 있어야 한다고 생각합니다. 물론 모든 사람이 전문가는 아니기 때문에 해결하기 어렵거나 잘 모르는 부분이 있을 수 있죠. 하지만 이를 내가 주니어여서 해결하지 못했다 는 변명을 하지는 말자는 것이죠. 그것은 그저 나의 지식이 모자랐기 때문이라는 것을 인정할 수 있어야 합니다.
겸손하자
종종 저는 작은 성취로도 쉽게 자만한다는 느낌을 받곤 합니다. 뭐 작은 것 하나라도 자랑하고 싶은게 있으면, 괜히 뽐내고 싶어서 입이 근질근질하죠. 이게 다른 사람들에게 있어서는 정말 별 것도 아닌 것일 수 있는데 말이죠.
흔히 “빈 수레가 요란하다” 고 얘기하는 상황들이 일어나지 않게 행동하려고 합니다. 어줍잖게 떠들어대기보다는, 내실을 잘 닦는 것이 두 번째 마음가짐입니다.
시야를 넓히자
그래도 나름 개발자 짬(?)이 차다보니 스스로 만들어보고 싶은 서비스들이 생겼습니다. 하지만 제가 너무 프론트엔드만 파서 그런걸까요… 종종 제 기술적 한계에 막혀 아이디어를 실현하지 못 한 적이 꽤 있습니다. 물론 하나라도 잘하면 다행(?)이라는 말도 있지만, 내년에는 백엔드나 네이티브 클라이언트처럼 시도하지 못했던 분야로 시야를 넓혀보려 합니다.
그래서 이런 마인드를 바탕으로 저는 아래처럼 목표를 세웠습니다. 내년에도 겸손하고 꾸준하게 실력을 길러 무사히 복학할 수 있는 한 해가 되었으면 좋겠습니다.
- 백엔드, DB 공부 열심히 하기
- 공인어학점수 취득하기
- 무사히 산업기능요원 소집해제하기
- 복학하기 전에 여행 꼭 가기
- 복학해서 성적 잘 받기
- 학교에서 지원하는 해외연수/해외인턴에 합격하기
- 소프트웨어 마에스트로같은 대외활동 합격하기
- 시간 나면 디자인 툴 좀 배워보기