태어나서 처음으로 “나도 회고 글 써서 블로그에 포스팅 해야지"라는 다짐을 한게 2017년 12월이였다. 그리고 3년이 지난 지금 2017년의 다짐을 실천하고 있다. 이 글이 올라갈지는 2021년 1월 1일이 되어봐야지 알겠지만…

사실 2017년 12월 24일에 회고를 목표한 양 60%로 정도 쓰긴 했었다. 개인적으로 좋아하는 카페에서 맥북 13인치 2015년 형을 열어놓고 열심히 썼지만 밤에 약속이 잡혀 있어서 중간에 멈춰야 했다. 마침 25일 오전에 중국 청도에 갈 일정이 잡혀 있어서, 비행기에서 끝낼 생각으로 약속에 갔다.

하지만 밤새 술을 마시고 바로 공항으로 가서 실패….! 호텔에서 쓸려 했지만 청도의 추위를 얕잡아 본 결과 심한 감기에 걸려서 실패…! 그렇게 2017년은 끝났고 내가 쓴 글은 이제 어디있는지 모르겠다.

과거는 과거일 뿐 2020 회고가 포스팅 되는 것에 집중하자! 2017년에 쓴 사라진 회고에서는 시간 순으로 글을 진행했다. 이 때 좀 어려웠던 점이 하나 있었는데, 수 개월 진행 되었던 프로젝트를 시간 순으로 진행 되는 글에 넣기가 어려웠다. 그래서 이번 회고는 내가 2020년에 한 일을 쭉 나열하고 공통 키워드를 찾고 대제목으로 두기로 했다.

이번 회고는 꼭 포스팅 되길 기도하며 2020년도 회고를 시작해보자!

우물 128번지 회고 워크숍

회고 글의 시작은 글을 쓰기 전부터 “19년 연말 워크숍에서 했던 다짐"으로 하기로 결정했었다. 2019년, 우물 128번지와 눈누난나 멤버들 함께 했던 연말 워크숍에서 각자 2020년 목표(아님 다짐)을 공유하는 시간을 가졌었다. 그때 내가 했던 다짐은 “좀 더 날카로운 사람이 되자"였다. 19년의 회고를 썼다면 더 정확하겠지만.. 아마 난 19년에 이리 저리 고개 돌리며 하나의 일에 집중을 하지 못했던 시간을 보냈었다.

그래서 난 2020년을 날카롭게 살았을까? 올해 내가 한 일을 하나 씩 되짚어보면 답이 나오겠지.

졸업

13학번으로 부경대학교 수학과를 입학해서 15년도에 서울시립대 수학과로 편입 한 뒤 20년도에 졸업을 했다. 이렇게 보니 장장 7년을 대학생 신분으로 있었다!

“프로그래밍으로 먹고 살아야지!“라는 마음을 먹기 전까지 수학 교수가 되는 꿈을 가질 정도로 수학을 좋아했었다. 프로그래밍을 시작하고 나서는 좋아하는 마음이 싹 사라지긴 했다. 마음이 사라져서인지 얼른 졸업을 하고 싶었다. 근데 막상 졸업을 하고 나니 자유로운 감정보다는 아쉽운 감정이 더 컸었다. 대학생 시절이 그립다.

역시 개발은 장비빨이지

17년도 말에 맥북 13인치 15년형을 중고로 샀었다. 2년동안 합을 잘 맞추다가 8GB의 램으로는 도저히 버티기 힘들었는지 노트북이 파업 선언을 자주 했다. 고로 은퇴 시켜주기로 결정(사실 맥북 16인치가 나와서 은퇴시켜준거지 안 나왔으면 넌 나랑 끝까지 가는거였어^^)하고 맥북 16인치를 영입했다. 무려 램 업그레이드를 해서!

13인치에서 1분이 걸리는 빌드 타임을 3~4초만에 뚝딱하는 16인치의 힘은 대단했다!

너무나 좋은 노트북이고 제 값 하지만 요즘들어 “내가 하는 일 비해 오버 스펙으로 지른거 아닌가?” 하는 아쉬움이 든다. 오래오래 쓰자..!

스페인 갔다가 한국 못 돌아올 뻔

2월 말, 그러니깐 우리 나라에서 코로나가 막 시작할 때 쯤 나는 스페인에 있었다. 심지어 스페인에는 코로나 확진자가 1명도 없었다.(지금은 신규확진자가 1만명이 넘는다 ㄷ ㄷ) 어느 중동 국가에서는 한국인이 못 돌아오고 있다는 기사를 보고 겁에 질렸었는데, 다행히도 잘 돌아왔다. 지금 사람들한테 이 기간 때 스페인 갔다고 하면 굉장히 놀라워 한다.

해외 여행 가고 싶다.

운동하자

프로그래밍을 시작하면서 느낀 것 중 하나는, “운동 안하면 일찍 죽겠다..”. 근데 선천적으로 운동을 좋아하지 않는 나에게는 항상 2순위였다. 그럴 시간에 글 하나 더 보고 코드 한 줄 더 치지 ㅎ.

그렇게 몸을 썩히고 있다가 우연찮게 한강에서 따릉이를 탔는데 자전거가 꽤 재밌었다. 와 혹시 나도 운동을 좋아하는 DNA가 있는걸까? 하는 마음에 10만원짜리 자전거를 지렀다. 자전거도 장비빨이라 지금은 자전거 스펙업을 하고 잘 타고 다니고 있다.

오래 개발하고 싶으면 운동하자..!

Hexo → Hugo

원래 블로그는 hexo라는 툴을 이용해서 만들었다. 이걸 만들었을 때는 “내 손으로 디자인도 해야지"라는 미친 생각으로 css는 하나부터 모두 다 내가 만들었다. 그렇게 “Simple is best"를 추구한 결과물은 안 이쁜 심플이 되버렸다…

회고 글을 차마 똥 같은 디자인의 블로그에 올리기 싫어서, 금손들이 만들어 놓은 이쁜 테마를 찾기 시작했다. 분명 새로운 툴을 쓰는 것은 자제하자(왜냐면 좀 있으면 21년이니깐)라고 마음을 먹었는데 정신 차려보니 Hugo 문서의 Quick start를 읽고 있었다!? 언제나 새로운 배움은 설레긴 하지.

Hugo는 go를 기반하고 있고, go 언어에 관심이 많기도 했고 마음에 드는 테마도 있기도 했고 이전 블로그 글이 많지 않기도 했고 이러저런 이유로 마이그레이션을 결정했다.

테마를 적용하니, 와.. 이거 매일 글 쓰고 싶은 느낌인걸? 앞으로 글 꼬박 꼬박 써야지(응 아니야^^)

Dollar to Food Emoji

Airbnb에서 9월 쯤에 visx라는 visualization components library를 정식 출시 했다. README를 살펴보다 Demo List에 눈길이 갔다. “어? 나도 Airbnb에 github에 이름 한 번 올려볼까?“라는 생각과 오픈 소스 기여에 관심이 있던 시기라 추석 내에 뚝딱 해보자 결정을 내렸다.

아이디어는 간단했다. 사용자가 달러를 Input 필드에 입력하면 과일 이모지를 나열한 뒤 Walmart에서 파는 과일 가격으로 환산하여 시각적 컴포넌트로 보여주는 아이디어였다. 단순하게 component들의 데모를 보여주기 위한 목적이였지 어떤 문제를 해결할 목적은 없었다. 뭐 여차저차 추석을 넘겨서 몇일 작업을 하니 3개의 visx 컴포넌트를 사용해서 마무리 했다. 퀄리티가 맘에 안들었지만 다른 일정도 있었고 해서 PR을 남겼더니, 흔쾌히 merge 시켜줬다. (https://github.com/airbnb/visx/pull/860) Wow!

추가적으로 컴포넌트도 넣고 유지보수를 좀 하고 싶은데, 항상 그렇듯이 아무 생각 없이 일 벌리는데 환장한 나는 해야 할 일들이 너무 많이 쌓여있었다…

21년에는 꼭 추가 개발을 할테니 리스트에서 내 프로젝트를 빼지만 않았으면 좋겠다.

(만약 이 프로젝트에 관심이 있으면 메일(gmlwo530@gmail.com) 주세요. 같이 재밌게 해요 ㅎㅎ)

Project github url: https://github.com/gmlwo530/dollar-to-food-emoji

스페이스X: 첫 민간 유인 우주선 크루 드래건 우주정거장 도킹에 성공 - 주식에 관심을 갖게 되다

2020년 5월 31일 새벽 2시 유튜브로 스페이스 X의 첫 민간 유인 우주선 발사를 라이브로 보고 있었다. 평소에 우주에 관심이 있는 것은 아니였고, 스페이스 X와 일론 머스크에 관심이 있던 것도 아니였다.

그런데 스페이스 X가 성공적으로 발사되고 발사체가 육지에 착륙하는 영상을 보니 가슴이 뛰었다. “와..! 저런 회사에서 일해보고 싶다"라는 상상을 했지만 비현실적이지 않은가? 이전에 어디선가 특정 산업에 관심이 많거나 일해보고 싶은데 능력이 되지 않으면 그 산업에 종사하는 회사의 주식을 사라고 들었다.

그렇게 어른들의 합법적 돈 따먹기 게임! “주식"을 시작하게 되었다.

다짐: 선은 지켜가며 위험할 정도로 하지 않겠다. 투기가 아닌 투자를 하겠다.

안드로이드 개발자에서 다시 백엔드 개발자로

나는 2019년 1분기까지는 서버 개발을 주로 했었다. 그러다 이직을 하며 안드로이드 개발자로 포지션 전향을 했다. 이직한 회사에 안드로이드 개발자가 없어서 내가 하나부터 열까지 스스로 학습 해가면서 하는 바람에 고통스러웠지만 빠르게 성장했다고 생각한다.(뭐 그렇다고 좋은 실력은 아니였다.) 막 디자인 패턴에 눈을 뜨며 클린 아케텍처와 안드로이드 TDD에 관심을 가지게 될 쯤.. 또 한 번 포지션 선택의 순간이 다가왔다. 선택지는 단순 했다.

안드로이드 개발 VS Django API 서버 개발.

일단 회사가 스타트업인지라 어떤 포지션을 선택하든 스스로 커야되는 것은 마찬가지였다. 그리고 마음 한 편으로는 옛날에 Ruby on rails로 서버 개발을 했던 좋은 기억들(나쁜 기억은 잊은거 같다)이 스멀스멀 머리 속을 헤집었다. “10년 뒤 내 모습을 상상 했을 때 서버 개발자가 나에게 더 어울리지 않을까?“라는 생각까지 하면서 마음은 하나의 선택지로 거의 기운 상태였다. 문제는 프레임워크가 “Django"라는 것이였다. Rails로 개발을 시작한 입장에서 Django의 개발 프로세스가 마음에 들지 않았다. 특히 PIP package 의존성 관리! 다른 프레임워크로 마이그레이션 하기에는 리소스도 부족하고 어차피 서버 개발에 필요한 도구가 아니겠는가.. 내가 이 도구를 좋아하도록 바뀌면 되지하는 마음으로 안드로이드 개발자 1년차를 채우지 못한 채 서버 개발자로 포지션 변경을 했다. 아마 이제 적어도 웹/앱 서비스 개발에서 포지션 변경을 하지는 않을 것 같다. 하나만 진득하게 해서 전문가가 되고 싶은 마음이다.

아! 지금은 Django와 Python의 매력에 빠져있다 :-)

파이썬 스터디. 언어에 대한 이해

같은 동아리와 같은 과에서 대학 생활을 보낸 친구들이랑 5월 중순부터 파이썬 스터디를 시작했다. 스터디는 책을 하나 선정해서 읽어오고 정리한 다음 일주일에 한 번씩 만나서 토론하는 방식으로 진행했다. 책은 Fluent Python으로 결정했는데, 중급자를 위한 파이썬 책이고 현재 4분의 3정도 읽은 입장에서 꽤 괜찮은 책이라고 생각한다. 주니어 파이썬 개발자들에게 한 번 쯤 읽어보라고 권유하고 싶다. 좀 아쉬운 점은 2016년 출판한 책이라 현재 파이썬 버전과 맞지 않는 부분들이 조금 있는데 불편하지는 않았다.

다시 스터디 얘기로 돌아오자. 지금도 스터디를 진행하고 있다. 책 양이 많기도 했고, 스터디원들 모두 다 직장이 있는 상태라 불가피하게 스터디를 못했던 주도 있었다. 그래도 나는 우리 스터디가 건강하게 진행되었다고 생각한다. 모두 수학과 출신이라 그런지 논리적으로 설명이 되지 않는 문제나 원리에 대해서는 해결이 될 때까지 논의를 해야지만 직성이 풀리는 성향이 있다. 나에게 친구들의 이러한 성향은 학습을 할 때 굉장히 도움이 되었다.

스터디 내용을 정리 할 때 거의 모든 내용은 책을 따라 쓰게 된다. 스터디를 하지 않는 다른 친구가 그걸 보더니 “그걸 따라쓰면 뭔 의미가 있냐?” 하드라. 틀린 말은 아니라서 곰곰히 생각하다가 아래와 같은 결론을 내렸다.

  • 무조건 따라 쓰는 것보다 책의 내용과 함께 본인의 생각 또는 추가 자료가 첨부하는 것이 학습에 더 도움이 되는 것은 맞다.
  • 하지만 따라 쓰면 책을 굉장히 자세하게 읽게 된다. 내용 요약을 하기 위해 여러 번 읽는 경우가 많기 때문이다. 뒤에서 얘기하겠지만 이 효과가 배로 증가되는 방법은 번역이다.
  • 개인적으로 나는 코드든 글이든 써보거나 타자로 쳐봐야지 머리 속에 더 잘 들어온다.(like 깜지)

아무튼 조금 더 진행해야지만 파이썬 스터디는 굉장히 성공적이였다. 21년 때 같은 멤버로 또 스터디를 할 예정이니 기대하시라.

Study github url: https://github.com/arkss/Fluent_Python

Framework7, React, 그리고 Typescript

나는 리액트의 컴포넌트 개념을 좋아한다. 좋아하지 잘하지는 않는다. 그런데 스타트업 개발자란 무엇인가.. 수단과 방법을 가리지 않고 문제를 해결해야 한다.

2020년도 여름 회사에서 실험적인 피처를 개발해야 했다. 실험적인 피처라 세부 기능이 자주 바뀌고 버그에 즉각 대응해야 되는 니즈가 있다. 이 니즈를 해결하기 위해서 내 능력으로 선택 할 수 있는 선택지는 하이브리드 앱 밖에 없었다.

자 그럼 웹을 구현해야 되는데 네이티브 느낌의 UI를 그릴 필요가 있었다. 그리고 구조가 자주 바뀔 예정이므로 컴포넌트화를 시켜 html 코드들이 쉽게 변경 되도록 유연하게 만들어야 했다.

일단 컴포넌트화는 답은 하나! React다. React는 진짜 튜토리얼 영상 및 문서만 따라해본 수준이라 자신은 없었지만 같은 선상에 있는 Vue.js와 Angular보다 친숙하긴 했다. 여기다 안드로이드 개발을 시작 했을 때 나를 혹사시키면 금방 성정한다는 경험을 하여 본능적으로 새로운 시도를 해보기로 했다.(고통은 미래의 내가 알아서 하겠지^^) 바로 Typescript!(두둥!). 자바스크립트를 크게 벗어나지 않는 친구라서 시작은 어렵지 않았다. 게다가 타입도 딱딱 정해줘서 편-안한 기분을 주는게 참 인상적이였다. 항상 새로운 배움은 설레기 때문에, 설레는 마음~~(과 고통의 시간)~~으로 React 프로젝트를 시작했다. (개발이 끝나고 타입스크립트 문서들을 좀 보게 될 시간적 여유가 생겼었는데, 내가 어렵지 않게 쓴 이유는 타입스크립트의 기능들을 제대로 사용한 적이 없어서 였음을 느꼈다.)

두 번째 니즈로 네이티브 느낌의 UI를 그렸어야 했는데, 이것 또한 도구의 힘을 빌리기로 했다.(당장 1~2주 뒤에 출시를 해야 되는데 내가 언제 한땀 한땀 만들고 있겠나..) 이전 회사에서 자주 사용했던 Framework7이란 프레임워크를 채택했다. 단순하게 말하면 js와 css로 컴포넌트들을 ios, android의 컴포넌트처럼 만들어주는 프레임워크다. 홈페이지에 들어가면 바로 누르면서 확인 해볼 수 있는 데모가 뜨니깐, 홈페이지에 들어가면 바로 느낌이 올거다. 이 프레임워크가 또 React랑 찰떡이라 패키지 설치하고 코드 띡띡 넣어주면 내가 iOS 개발을 하고 있나 착각할만한 모바일웹 페이지를 만들어준다. major version이 5이기도 하고 스타도 15000개 이상이니 관심 있는 분들은 한 번 참고해봐도 좋을 것 같다.(Framework7으로 만든 프로젝트를 네이티브 앱에 패키징 할 때 속 썩이는 포인트들이 있는데 나중에 블로그에 따로 한 번 정리해보겠다.)

아무튼 성공적으로 2주만에 손가락에 쥐나듯이(진짜 쥐남) 개발하여 출시에 성공 했다. 특정 피처 부분에 버그가 조금씩 있어서 아쉬웠지만, 서비스는 원할하게 제공 할 수 있어서 뿌듯한 프로젝트였다.

만약 당신이 어떤 프레임워크, 라이브러리, 언어를 공부해보고 싶다하면 당신을 절벽 끝으로 밀어 붙여라. 과정은 지옥 같겠지만 결과는 그 무엇보다 값지다.

ultimate-go-korean/translation

Go lang에 대한 자료를 찾다가 재밌는 repo를 발견했다. ultimate-go라는 프로젝트인데, go lang을 심도있게 다루는 문서였다. go 파일에 주석으로 개념 설명을 해주는 점이 마음에 들었다. 포크를 따고 따로 번역을 해볼까 하는 도중에 나처럼 번역을 시도하시는 분이 있다는 것을 이슈를 통해 알게 되었다.

그래서 참여가 가능한지 메일을 보냈고, 한 달 뒤 ultimate-go-korean/translation에 참여하게 되었다.

파이썬 스터디 회고에서 글의 내용을 습득할 때 따라 적거나 타이핑 하는 것은 큰 도움이 된다고 했었다. 이 효과를 배로 누릴 수 있는게 번역이다. 왜냐하면 번역을 하게 되면 한 문장을 여러번 읽게 된다. 이게 꽤 괜찮은 학습 효과를 보여준다. 내가 맡은 부분은 Array와 Slice에 관한 부분이였는데, go의 다른 부분은 몰라도 이 부분은 확실하게 학습했다.

현재 1차 번역이 거의 끝났다. 내용을 계속 다듬어 go에 관심 있는 한국 개발자들이 보기 좋은 자료가 되도록 노력하겠다.

Project github url: https://github.com/ultimate-go-korean/translation

우아한 테크러닝

이번 해는 React와 접점이 많았다. 운이 좋게 8월 맞게 우아한 형제들에서 제공하는 단기 개발 교육 우아한 테크 러닝을 참여 할 수 있는 기회를 얻게 되었다. 교육의 주제는 React&Typescript였다.

교육은 개발자 김민태님께서 진행 해주셨다. 한달이란 짧은 시간동안 굉장히 많은 것을 가르쳐 주셨다. 유익한 시간이였으며 앞으로 React에 대해 어떻게 공부를 해야 할지 갈피를 잡을 수 있게되서 만족스러운 강의였다.

강의를 성공적으로 진행시켜주신 김민태님께 감사하다.

Code Process Generator

우아한 테크러닝 과정의 교육 과정은 대부분 좋았지만 불편한 부분이 하나 있었다. 강의자 분께서 코드를 지웠다 적었다 지웠다 적었다를 반복하여 교육 내용의 순서에 맞게 코드를 볼 수가 없었다. 교육에서 전하고자 하는 결과만 있지 결과로 다가 가는 과정은 급하게 따라 적거나 사라지거나였다.

이 문제를 해결하기 위해서 이 프로젝트를 시작했다. 프로젝트의 컨셉은 https://carbon.now.sh/에서 가져오기로 했다. 아직 v0.0.1이지만 좋은 프로젝트로 계속 개발하고 싶다

(만약 이 프로젝트에 관심이 있으면 메일(gmlwo530@gmail.com) 주세요. 같이 재밌게 해요 ㅎㅎ)

Project github url: https://github.com/gmlwo530/code-process-generator

컨트리뷰트톤

정말 일 벌리는거 하나는 잘하는 것 같다고 또 다시 한번 느끼게 해준 행사였다. 컨트리뷰트톤은 ‘오픈소스 기여(contribute)‘와 ‘마라톤(marathon)‘의 합성어다. 선배 개발자와 참가자들이 6주동안 오픈 소스 기여를 하게 된다.

나는 yorkie라는 프로젝트에 참여하게 됐다. yorkie 프로젝트는 notion이나 goole docs 같이 문서를 동시 편집을 가능하게 해주는 솔루션을 만드는 프로젝트다. v0.1.0을 최근에 공개 했으며, 현재도 개발이 진행 중인 프로젝트다.

아쉽게 이 프로젝트를 진행하는 도중에 여러가지 일들이 겹쳐서 많은 기여를 하지 못했다. 컨트리뷰트톤은 잘 마무리 됐지만 행사가 끝난 뒤에도 계속 기여를 하고 싶은 마음이 크다.

프로젝트를 잘 진행시켜주신 다른 기여자분들께 감사하다.

마무리와 2021년 계획

다행이다 20년 회고는 썼다. 거의 1주일 동안 틈틈히 쓴 것 같다. 의식의 흐름대로 써서 나중에 고치거나 추가해야 할 부분이 많아보이긴 하지만 미래의 나에게 맡기겠다.

20년 회고를 마무리하면서 21년 계획을 적고 끝내겠다.

  • 자세가 너무 안 좋아서 요가를 배워볼까 한다.
  • 오픈 소스와 수익형 서비스(기획 단계와 개발 단계에 있는 프로젝트 2개가 있다)를 사이드 프로젝트로 계속 진행 할 예정이다. 느려도 멈추지만 말자.
  • 한국의 웹 서버 개발을 장악한 Spring framework에 대해 공부를 해보고 싶다.
  • 17년 때 개발을 하루에 14시간은 했었다. 그 이후로 게을러진 내 자신을 보며 반성하고, 21년에는 하루 개발 시간을 늘려볼까 한다. 공부하자!
  • 웹/앱 개발 외적으로 다음과 같은 항목들을 공부하고 싶다.
    • 부동산
    • 전기자동차