Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

2019년 회고

생산성 저하

올해는 개발을 하면서 유례가 없을 정도로 생산성이 저하된 한해였다. 처음에는 번아웃이 왔나? 하는 생각을 하다가(올 이유도 없었지만...) 몇 년 전에 번아웃 왔을 때와 비교하면 증상이 다르기도 했고(번아웃 증상이 매번 똑같진 않겠지만) 의욕이 아예 떨어진 것은 아니었다.

실제로 회사에서 업무를 할 때는 문제가 없었고 집에 와서 개발하거나 오픈소스에 참여하거나 공부하는 시간은 급격히 줄어들었다. 술을 자주 먹게 된 게 가장 큰 이유이기는 한데 해야지 하면서도 집에서 넷플릭스 보거나 술 먹고 잠들거나 하면서 학습에 시간을 거의 못 쓰게 되었다. 처음에는 "나 요즘 뭐 하는 거지?"하는 생각을 하다가 후반기 와서는 그냥 모르겠다 싶은 마음에 맘 편히 쉬기로 했다. 오래 달려왔으니 좀 여유 부려도 되지 않나 하는 생각을 하기도 했고 생각보다 다시 원래 패턴으로 돌아와 지지 않아서 이럴 바엔 좀 쉬자 하는 생각도 있었다.

예전처럼 학습을 빨리하지도 못하는 느낌이고 올해 이직하면서 맘먹은 인프라 관련 학습도 하지 못했다. 이쯤되면 인프라가 하고 싶은 게 맞긴 하는가 하는 생각도 들지만, 인프라뿐 아니라 전체적으로 학습패턴이 망가져서 이쪽을 회복하는 것이 먼저라고 보고 있다. 암튼 쉴 만큼 쉬었으니 내년에는 정신 차리고 다시 열심히 달려봐야겠다. 다른 건 몰라도 학습(성장)이 멈췄다는 느낌이 제일 걱정되는 부분이고 그래서 올해는 학습한 게 거의 없다.

그래도 올해 한 일

그렇다고 아무것도 안 한 건 아니었다. 자의로 회복이 잘 안 되어서 내가 움직일 수 있도록 여러 가지 장치를 마련했는데 오랫동안 하던 일이라서 그런지 딱 그 일 할 때는 신나서 하지만 끝나고 내 개인 시간으로 돌아오면 다시 멍하니 쉬면서 시간을 보내게 되었다.

그래도 올해 뭐 했지? 하고 찾아보니 "HTTP/3 explained"도 번역했고 JSConf Korea에서 mocha 프로젝트 관련 발표도 했고 SprintSeoul에도 계속 참여했다. SprintSeoul은 올해 제일 잘한 일 중 하나인데 이건 나중에 따로 후기를 정리해 봐야겠다.

나에겐 올해 가장 큰 이벤트 중 하나인 컨트리뷰톤 2019에도 참가했다. 후기에도 썼듯이 기존에 하던 일들과는 다른 형태였기 때문에 많이 배운 시간이었다. AWS 솔루션 아키텍트 어소시에이트 자격증도 취득했다.

stdout.fm 사람들과 친분이 있다 보니 5번이나 출현해서 떠들었다. 너무 방송 느낌 안 나고 잡담하듯이 할 수 있어서 편하다. 내가 운영하는 건 아니지만 팟캐스트는 그래도 참여했지만 야심 차게 만들었던 YouTube 채널은 키보드 자랑만 2번하고 정작 하려던 개발 얘기는 한 번도 못했다. 장비만 사놓고 못 하고 있는데 장비가 아까우니 내년에는 다시 시도해 봐야겠다. 아직 글과 달리 방송은 어떻게 녹음해야 하는지 감을 못 잡은 상태라서 그 사이에도 몇 번 시도했지만, 매번 실패했다.

회사

요즘은 회고때마다 이직 얘기를 하게 되는 것 같은데 올해도 이직을 했다. 본격적으로 인프라 업무를 해야겠다고 생각하고 SRE로 넘어왔지만 여러 가지 사정으로 인프라 관련 업무는 거의 하지 못하고 있다.

10월부터는 중간관리자 역할을 맡게 되어서 시간은 더 없어졌고 인프라 업무는 더 못하게 되었다. 같이 하시는 분한테 다 맡겨놓고 지금은 서비스 쪽 일을 하고 있다. 일을 다 떠넘긴 격이라 죄송하지만, 내년에는 내가 좀 더 회복하고 시간활용도 더 잘해서 인프라 쪽 업무도 같이 협업할 수 있기는 바라고 있다. 이건 내 커리어 상으로도 필요한 일이다.

프로젝트 리드 비슷하게는 해본 적이 있어도 관리를 해본 적은 없어서 우당탕하면서 답 없는 고민을 많이 하고 있다. 여기에서도 내가 배우는 게 많이 있겠지만 이 일은 혼자 해보고 실패하는 것과 달리 이제는 내가 실수하면 팀이 고생을 하므로 부담이 크고 고민이 더 많아지는 상황이다. 사실 난 개발은 오픈소스 위주로 많이 배웠기 때문에 대부분의 일을 자발적으로 진행되게 만들려는 편인데 이런 방식이 잘 통하진 않는 것 같아서 어떻게 하는 게 좋을지 고민을 하고 있고 이제 분위기를 파악한 상황이라면 내년에는 더 본격적으로 관리를 배우게 될 것 같다.

오픈소스

GitHub 컨트리뷰션 그래프

올해 생산성 얘기를 한 대로 GitHub 컨트리뷰션 그래프도 처참하다.

회사 GitHub 컨트리뷰션 그래프

코딩이 주 업무는 아니다 보니 그렇다고 회사 쪽 GitHub의 컨트리뷰션 그래프가 잘 채워진 것도 아니다. ㅠ

개인 프로젝트도 거의 못 했고 요즘은 아이디어도 별로 없다. 너무 안 해서 다시 뭔가 만들어야겠다고 생각하고 있고 Tesla API를 가지고 좀 놀아야겠다고 생각하고 있다. mocha는 메인테이너에서 잘리지 않을 정도로만 겨우 유지하고 있는데 이것도 내년에는 다시 열심히 해야겠다.

블로그

월별 블로그 글 통계

블로그도 별로 쓰지 못했고 후반기에 올수록 글은 점점 적어졌다. 이글까지 해서 올해 52개의 글을 올렸으니 블로그를 시작한 이래로 가장 적은 수의 글이다. 기술뉴스 때문에 한 달에 2개의 글은 꼬박꼬박 올리고 있으니 글은 한 달에 2~3개밖에 안 쓴 셈이다.

매년 페이지뷰가 많은 글을 정리해 보지만 항상 거의 같은 글이다. 이젠 대부분 10년씩 된 글이라 이제는 너무 오래된 정보가 많이 조회됨에 부담감이 느껴진다.

  1. Javascript에서 String을 Number타입으로 바꾸기 - 2009/08/19, 79,994 PV
  2. 여러 행 SELECT해서 INSERT 하기 - 2009/01/06, 39,009 PV
  3. 제발 a href="#" 좀 쓰지 말자.... - 2008/10/22, 36,592 PV
  4. Ubuntu의 apt-get 명령어 정리 - 2009/06/23,
  5. GET과 POST의 차이 - 2009/03/31, 35,447 PV
  6. 알고 있어야 할 8가지 정규식 표현 from nettuts+ - 2009/08/14, 34,740 PV
  7. JSON Text를 JSON Object로 변환하기 - 2008/12/21, 33,250 PV
  8. PM2 - Node.js 프로세스 관리 도구 - 2016/02/23, 25,091 PV
  9. Vim 단축키 정리 - 2010/10/20, 21,188 PV
  10. 토스가 현대카드를 연동하는 방법에 동의하지 않습니다 - 2019/05/18, 20,650 PV

보통 그해에 쓴 글이 조회수 Top 10에 드는 경우가 거의 없는데 토스 관련 글은 비 개발 쪽에도 퍼지다 보니 많이 조회된 것을 보인다.

연간 페이지뷰 그래프

1년간의 페이지뷰를 봐도 토스 글이 올린 날이 다른 때와 달리 엄청 높은 페이지뷰를 기록한 것을 알 수 있다.

아래는 올해 올린 글 중에서 조회가 많이 된 글이다. 글을 많이 안 쓰다 보니 기술뉴스가 Top 10에 들어온 점이 눈에 띈다.

  1. 토스가 현대카드를 연동하는 방법에 동의하지 않습니다 - 2019/05/18, 20,650 PV
  2. Electron으로 데스크톱 앱을 개발한 경험 - 2019/01/27, 7,700 PV
  3. 정적 사이트 생성기 Gatsby - 2019/02/08, 6,001 PV
  4. Git 계정 여러 개 동시 사용하기 - 2019/06/08, 2,886 PV
  5. 잦은 이직 - 2019/05/31, 2,740 PV
  6. "HTTP/3 explained" 한국어 번역 - 2019/02/23, 2,616 PV
  7. [Book] HTTP 완벽 가이드: 웹은 어떻게 동작하는가 - 2019/02/28, 2,176 PV
  8. 후원 버튼을 달았습니다 - 2019/02/05, 1,595 PV
  9. 기술 뉴스 #127 : 19-06-01 - 2019/06/01, 1,505 PV
  10. 기술 뉴스 #118 : 19-01-15 - 2019/01/15, 1,494 PV

내년은 정신 차리고 다시 달릴 수 있는 한 해가 되길 기대해 본다.

새해 복 많이 받으세요.

2019/12/31 19:08 2019/12/31 19:08

기술 뉴스 #140 : 19-12-16

웹개발 관련

  • Thinking in React Hooks : Chart 컴포넌트를 작성하면서 클래식 컴포넌트와 React Hook을 이용한 함수 컴포넌트를 비교하면서 개선하는 과정을 보여주면서 둘의 코드나 접근이 어떻게 달라지는지 설명하는 글이다.(영어)
  • Microbrowsers Are Everywhere : 웹브라우저 외에 메신저나 Slack 등에 공유했을 때 페이스북의 OpenGraph, Twitter Card처럼 웹페이지의 미리 보기를 보여주기 위해서 방문하는 크롤러를 여기서는 마이크로브라우저라고 부르고 있다. 이 마이크로브라우저가 이제는 검색 SEO를 위한 구글봇 보다도 중요하고 이런 정보를 잘 보여주는 것이 왜 중요한지를 설명하고 있다.(영어)

그 밖의 개발 관련

  • Django 3.0 릴리스와 주요 변경 사항 : 이번에 릴리스 된 Django 프레임워크 3.0의 새로운 기능을 정리한 글로 Django를 쓰고 있다면 참고해 볼 만하다.(한국어)
  • What's New for Node.js in 2020 : 현재 12 LTS 버전까지 나온 Node.js의 내년 계획을 정리한 글로 Node.js의 공식 글은 아니지만, 상황을 파악하는데 도움이 된다. 내년에 나올 14, 15버전으로 이어지는 릴리스 계획을 설명하고 이 릴리스에 포함될 주요 기능인 Modules, WebAssembly 지원, 진단 리포트 등을 설명하고 있다.(영어)
  • 러스트의 멋짐을 모르는 당신은 불쌍해요 : Rust 프로그래밍 언어를 배우게 된 계기를 설명하면서 Rust의 간단한 개발환경, 문법, 메모리 관리 등을 설명하면서 Rust의 장점을 소개하는 글이다.(한국어)
  • Behind the scenes: GitHub security alerts : GitHub에 올린 프로젝트에서 사용하는 의존성이 있으면 보안 취약점 경고를 하는 기능이 동작하는 방식을 설명하는 글이다. 코드에서 의존성의 변경이 있으면 의존성 그래프를 만들고 이 의존성 그래프를 바탕으로 National Vulnerability Database, WhiteSource 등의 데이터에서 취약점 정보를 가져와서 알림을 보낸다.(영어)
  • [iOS] Parallel UI Testing : iOS 앱의 테스트가 1시간 이상이 걸리고 이후 테스트를 더 많이 작성할 계획이라서 XCode에서 시뮬레이터를 다수 설정해서 테스트를 더 빠르게 실행하는 방법을 설명하고 있고 병렬 테스트의 이점을 얻기 위해서는 Class 단위로 나누는 게 좋다고 한다.(한국어)
  • 잘못 된 문서화, 잘 된 문서화 : 개발하면 문서화도 많이 하게 되는데 문서는 구현을 보충하는 역할을 해야 하므로 구현에서 표현하기 어려운 정보를 보여주어야 하고 구현을 대신하려는 문서화는 잘못된 것이라는 글이다. 문서화는 항상 어렵긴 하지만 동의하는 내용이다.(한국어)
  • GitHub Actions Starter Workflows : GitHub Actions를 쉽게 구성할 수 있도록 언어나 환경별 CI나 레이블 등을 붙이는 자동화 워크플러우를 모아놓은 저장소로 관련 작업을 할 때 참고하기 좋다.(영어)

인프라 관련

  • AWS re:Invent 2019 12월 2일, 12월 3일, 12월 5일 출시 소식 요약 : 이번 AWS re:Invent에서 새로 발표된 서비스를 요약해 놓은 글이다. Access Analyzer for Amazon S3, Amazon EKS on AWS Fargate, Amazon S3 Access Points, Amazon CodeGuru 등이 요약되어 있다.(한국어)
  • Private Docker Registry를 구축하기 위한 오픈소스 Harbor 도입기 : 라인에서 기존에 Docker의 리포지토리를 사용하다가 사내 Docker 사용이 늘어나면서 다른 Docker 프라이빗 레지스트리가 필요해져서 새 솔루션을 검토하다가 Harbor를 선택하고 구축한 과정을 설명하는 글이다. 새 솔루션의 요구사항을 정리하고 Harbor의 기능 및 접근제어, LDAP 연동, 스토리지 연동 등을 테스트하고 구축한 과정까지 나와 있다.(한국어)
  • 프로비저닝 자동화를 위한 Ansible AWX, 설치부터 엔터프라이즈 환경 적용까지 – 1, 2 : Ansible을 이용한 인프라스트럭처 관리를 중앙에서 할 수 있는 Red Hat의 Ansible Tower의 오픈소스 버전인 AWX를 소개하고 설정하는 방법을 설명하고 기업에서 운영하기 위한 고가용성 구성을 하는 방법을 설명하고 있다.(한국어)
  • How to migrate from Helm v2 to Helm v3 : Helm v3가 지난달에 릴리스 되었는데 2to3 플러그인을 이용해서 Helm v2에서 v3로 마이그레이션 하는 방법을 설명하는 글이다.(영어)

볼만한 링크

  • 일일커밋 3주년 회고 : 개발자로서 성장이 정말 빠른 이동욱 님이 3년간 일일커밋을 진행한 과정을 정리한 글이다. 3년간 일일커밋을 쉬지 않고 하는 것도 대단한 일이지만 나도 진행했을 때 여러 가지로 회의감이 들기 마련인데 그때 어떻게 극복하고 일일커밋을 하면서도 의미 있는 시간이 될 수 있도록 노력한 과정이 나와 있다.(한국어)
  • 폴 그레이엄 – 천재에 대한 버스표 이론 1편, 2편 : 폴 그레이엄이 작성한 The Bus Ticket Theory of Genius의 번역글이다. 의미는 없지만, 버스표에 집착하면서 모으는 사람들과 비교하면 천재들은 이와 비슷하게 집착하는 성향이 아주 중요한데 결과적으로 다른 부분은 버스표는 의미가 없지만 다른 천재들의 성과들은 의미 있는 일이었다고 하고 있다. 하지만 어떤 분야가 의미 있는 지는 알기 어렵고 이런 일은 시기에 따라서도 의미 있을 수도 없을 수도 있는데 이런 부분에 대한 폴 그레이엄의 고민이 담겨있는 글이다.(한국어)
  • 프로덕트, 프로그램, 프로젝트 매니저? 뭐가 다른가요? : 보통 PM이라고 부르지만 프로덕트 매니저, 프로그램 매니저, 프로젝트 매니저가 어떻게 다른지를 설명하는 글이다. 프로덕트 매니저는 제품의 총 책임을 지는 사람이고 프로젝트 매니저는 일정 내에 리소스를 활용해서 목표하는 품질을 맞추는 것을 목표로 한다. 프로그램 매니저는 산업마다 다를 수 있는데 보통 전체 제품군에서 공통되는 프로그램을 관리하거나 여러 프로젝트를 모아서 관리하는 매니저를 의미한다고 한다.(한국어)
  • 2019 AI Index report : 인공지능 분야의 2019년 현황을 R&D, 콘퍼런스, 기술 성과, 경제, 교육 등의 챕터를 구성해서 정리한 291페이지짜리 리포트다.(영어)

IT 업계 뉴스

프로젝트

  • Space : JetBrains에서 버전관리, 채팅, 이슈트래커, 팀 디렉터리 등을 포함한 팀 통합환경을 발표했다.
  • SWR : Zeit에서 만든 데이터 패치 React Hook.
  • kyaml2go : Kubernetes의 YAML을 클라이언트용 Go 코드로 변환해 주는 사이트.
  • Gatekeeper : Open Policy Agent의 Kubernetes 용 정책 컨트롤러.
  • Tesseract.js : JavaScript OCR 엔진.
  • Freezeframe.js : 애니메이션 GIF를 제어하는 JavaScript 라이브러리.

버전 업데이트

2019/12/16 03:52 2019/12/16 03:52