joeun.dev

moon indicating dark mode
sun indicating light mode

회고 - 벌써 일년

July 17, 2017

지난 1년을 되돌아보자

입사

작년 7월 17일에 마켓프레스에 첫 출근을 했다. 입사하게 된 과정은 지금 생각해봐도 놀랍고 신기하다. 첫 출근보다 약 2개월 전인 5월 13일, 뜬금없이 받은 메일 한 통이 날아왔다. 팀장님이었다. 간단한 자기소개와 함께 이런 말을 남겼다. ”꼭 만나보고 싶군요! 왜냐면 하조은님이 꼭 만나고 싶은 회사고 꼭 만나고 싶은 사람일 겁니다. ^^b” 지금 생각해봐도 참 황당한 메일이다. 헛웃음이 나온다. (지금은 팀장님이 가졌던 자신감의 이유를 알고 있다.) 다짜고짜 내가 만나고 싶을 회사라고 주장하는 사람으로부터 메일을 받았으니 황당했을 법하다. 그런데 나는 또 15분만에 답장을 했고 몇 차례 메일을 주고받은 뒤 나는 곧장 서울로 향했다. 그리고 다시 포항으로 내려가는 길, 나는 그렇게 첫 메일을 받고 92시간 만에 마켓프레스에서 일하기로 했다. 정작 첫 출근에 2개월 남짓 걸린 이유는 졸업을 위해 이수해야 하는 수업이 있었기 때문이다.

공부

졸업 이후에 나는 더 많은 공부를 하게 된 것 같다. 컴퓨터 공학을 전공한 것이 분명한데 모르는 것이 너무 많았다. 특히나 웹에 관해서는 거의 무지했다. 웹 서비스를 개발하는 회사에 입사했으니 웹을 공부해야 했고 그에 맞춰 필요한 언어도 공부해야 했다. 자바스크립트(JavaScript)였다. 그때까지만 해도 나의 주 언어는 C였다. 자바를 배운 적도 있고 C++도 배웠지만, 첫 언어인 C만큼 잘하진 못했다. C도 나름대로 잘하는 편이었는데, 자바스크립트는 전혀 다른 느낌이었다. 처음부터 배웠다. 이전에 공부해본답시고 사둔 책들과 회사에 있는 책을 모두 읽었다. 코뿔소 책으로 알려진 자바스크립트 완벽 가이드, 더글라스 크락포드의 자바스크립트 핵심 가이드, 만인의 모니터 받침대인 노란책 프론트엔드 개발자를 위한 자바스크립트 프로그래밍, 존 레식 형님의 자바스크립트 닌자 비급 등을 섭렵했다. 책을 읽으면서 코드를 직접 타이핑하고 요약했다. 그 내용을 Today I Learned(TIL)Javascript Jedi에 정리했다. 100일간 일일 커밋도 했다. 그렇게 자바스크립트가 익숙해지기 시작했다.

실전

처음으로 동료(지금은 떠나버린 동료)와 함께 짝코딩(페어 프로그래밍 - Pair Programming)을 했던 코드는 어디로 갔는지 모르겠다. github이 아닌 bitbucket에 프라이빗 저장소를 이용했는데 연습용 프로젝트였던 것 같다. 다른 사람 앞에서 코드를 짜는게 낯설었던 시기라 오타도 많이 났었다. (물론 지금도 팀장님이나 다른 고수분들 앞에서 코드를 짜려면 버벅거린다.) 그때 처음으로 누군가와 함께 코딩하는 것이 얼마나 유익한지 알게 되었던 것 같다. 그래서 이후에 대학교 친구들과도 그런 시간을 가져보려고 했지만 정작 자신의 일이 아니고, 주 사용 언어도 다르니 쉽지 않은 일이라는 것을 알게 되었다. 그래도 그 친구들과 한동안 ES6를 함께 공부했었다. 여하튼 실제로 무언가를 만드는 과정에서 공부라는 게 읽고 요약하는 것의 한계와 실행해보는 것의 이점을 다시금 깨달았다. 한 줄을 적더라도 내가 생각해낸 논리로 코드를 짜보는 게 가장 효과적인 학습이었다.

종종 팀장님과 함께 코드를 짜는 일도 있었는데, 처음엔 몹시 버거웠다. 팀장님은 우아한 코드를 지향하시는데 내가 느끼기에 우아한 코드란 문법적으로 창의적이며, 논리적으로 깔끔하고, 짧은 코드를 의미했다. 당시 나에게 창의성과 논리적 탁월함은 없었고 짧은 코드는 가능했지만, 코드가 짧은 만큼 기능도 짧아서 쓸모없는 코드가 되어버리곤 했다. 결국 iffor문의 향연이 될 수밖에 없었고 그 코드는 우아한 코드가 아니었다. 팀장님을 비롯한 팀의 선배들은 삼항 연산자를 즐겨 썼는데, 당시에 나는 그게 나쁜 습관이라고 생각했다. 학교에서 배운 바대로라면 읽기 쉬운 코드가 좋은 코드인데 삼항 연산자는 읽기가 너무 어려웠기 때문이다! 그런데 지금은 삼항 연산자가 없는 코드는 상상할 수도 없다. (삼항 연산자는 코드를 훨씬 짧게 만들어줄 뿐만 아니라 어디서나 사용 할 수 있기에 더 창의적인 표현이 가능한 사랑스러운 연산자가 아닐 수 없다) 물론 지금도 팀장님의 코드는 한 번에 따라가기 어렵다. 하지만 시간이 지나면 상당 부분 이해할 수 있으며, 요즘은 가끔 혼자서도 우아한 코드를 짤 수 있게 되었다. 우아한 코드를 짜고 나면 흥분해서 혼자 “훌륭해”라며 감탄하는 날이 잦아지고 있다.

오픈소스

우리 팀은 함수형 프로그래밍을 지향한다. 때문에 함수형 라이브러리를 사용하는데, Partial.js라는 자체 제작 라이브러리를 사용한다. 이를 제작하는 과정에 나도 참여할 수 있었다. 이 전에는 팀에서 abc.js라는 라이브러리를 만들기도 했는데, 이 라이브러리가 발전한 형태가 Partial.js다. 오픈소스로 공개해서 작업하다보니 많은 배움이 있었다. 특별히 문서 페이지를 만드는 작업을 도맡아서 했는데, 처음에는 정적 페이지를 처음부터 끝까지 다 구현하느라 정말 많이 배울 수 있었다. 특별히 코드 하이라이트 기능을 지원하는 codemirror를 사용해서 abc.js의 문서 페이지를 만들었었다. 이후에 Partial 프로젝트가 시작되면서 partial.js의 문서 페이지도 만들었는데, 코드 실행까지 가능한 나름 제법 완성도 있는 문서 페이지였다. 하지만 단순한 HTML, CSS로 구성된 정적 페이지는 관리가 용이하지 않았기에 최종적으로 Partial 프로젝트의 페이지hexo 라는 오픈소스를 이용했다. 덕분에 마크다운 문법으로 문서를 작성하고 편집할 수 있었다. hexo의 기본 테마를 바탕으로 상당 부분을 뜯어고쳐서 지금의 페이지를 만들었다. 그리고 요즘 우리 팀은 don.js 라는 함수형 jQuery를 만들어 달러 $를 뺏어오려고 하고 있다. (Partial은 언더스코어 _를 네임스페이스로 쓰고 있다.)

팀에서 직접 오픈소스를 만들다보니 다른 사람들의 코드를 구경할 일도 잦았다. underscore.jsjQuery가 대표적이다. Partial의 파이썬 버전을 구현하면서 살펴본 underscore.py도 있다. 뒤의 두개는 객체지향적으로 구현되어 있는데 함수형과의 차이를 알 수 있었다. 코드로서의 오픈소스 뿐만 아니라 문서로서의 오픈소스에도 자주 접근했는데, 그중에 하나가 DjangoGirls 튜토리얼이었다. 이 문서에는 풀리퀘스트를 날리기도 했다. 한글 문서에 문법나 띄어쓰기 오타를 고쳤다. 그리고 최근에는 don.js를 만들며 살펴보다가 You Don’t Need jQuery에도 관여했다. (며칠보다가 알게된 점은 제이쿼리가 필요하지 않다고 말하기에는 이 문서가 충분하지 않다는 점이다.) 요즘은 이렇게 문서와 간단한 코드에 자주 접근하다보니 뭔가 글로벌한 개발자가 된 기분이다. (오늘은 제이쿼리에도 뭔가 문제가 있는 것 같아서 풀리퀘스트를 날렸는데, 10분도 안 돼서 리젝을 당하면서 글로벌한 개발자에 더욱 가까워졌다.)

맺음

글을 맺어야겠다. 7월 17일 11시 20분쯤 글을 적기 시작했는데, 적다 보니 12시 30분이 지났다. 지난 1년 간의 변화는 앞으로 있을 변화에 비해 별것 아닌 변화일 것이지만 지금의 나로서는 이 변화가 참 감사하다. 자바스크립트를 편하게 사용할 수 있게 되었고 하루종일 머리를 쥐어짜다가 보면 가끔씩 제법 우아한 코드를 작성할 수 있게 되었다. 파이썬, 엘릭서, 클로저를 공부했고 리액트 네이티브를 이용해 을 만들기도 했다. 친구들과 토이 프로젝트로 만든 이 현재도 서비스되고 있으며, 서버와 클라이언트를 오가며 코드를 짤 수 있게 되었다. 무엇보다도 내가 속한 회사와 팀에 대한 확신이 생겼으며 특히 내가 공부하고 있는 언어와 분야가 잘 될 것이라는 기대가 커졌다. 팀장님이 집필한 책도 곧 나올 것이고 함수형 프로그래밍에 대한 관심도 커질 것 같다. 그때가 되면 당당하게 개발자로서 사람들 앞에 설 수 있는 개발자가 되기까지 더 열심히 머리를 쥐어짜야겠다.

놀라운 점: 이 블로그의 전신인 RABBYLAB이 시작한 날은 2015년 7월 17일이었다.