아직도 내가 개발자라는 직업을 가질 수 있는것에 대해서 감사하고 있다. 나는 정식적인 개발을 배운적은 없으며, 대학교에서도 실질적으로 컴퓨터 관련 이론을 제대로 배운적도 없고, 자료구조를 몰라서 대기열을 구현하기 위해 2일 넘는 밤낮을 새운적도 있었다.(지금와서 생각하면 정말 웃긴 일이다)

능력 좋은분들이 보면 웃을만한 일들이다. 그렇지만 나는 이걸 딱히 숨길 생각은 없다. 그만큼 제자리에 머물지 않고 노력하고 있기 때문이다. 이런 나도 자의식 과잉이 아닌 이유로 개발자라고 할 수 있음을, 그리고 다른이들에게도 개발자임을 말할 수 있는 이유는 단 하나일것이다. 내가 만든것을 누군가가 쓰고 누군가가 즐거워하기 때문이다.

2012년

대학교에 들어가고 나서부터 뭔가 프로그래밍을 본격적으로 하기 시작했다. 그 전에는 PHP4 책을 보고 개발을 시작했다. 개발 도구는 2달넘게 밤을 지새워 편의점 야간알바를 하며 겨우 모은 돈으로 구매한 맥북에어 13인치가 전부였다. 그 전에 넷북이라는 포지셔닝의 랩탑이 존재했지만, 이건 산업폐기물이나 다름없었다.

시야각이 심해서 디자인용으론 전혀 쓸수도 없던 물건을 통해 디자인을 시작했다. 테마 오브 이지투디제이라는 사이트의 모바일 페이지를 개발했고(이때 고정형과 유동적 레이아웃의 개념을 알게되었다. 링크) 서비스했다. 처음으로 뭔가를 다른사람들을 위해 만들어본 순간이였다. 그동안 이상한것들이나 만들고 다녔으니까.

2013년

모바일을 집중하여 개발을 진행했다. 크리크루라는 동영상 플랫폼 사이트의 모바일 사이트를 제작하기도 했고, 크리크루 랭킹이라는것을 만들어서 사용자들에게 통계치를 제공해주기도 했다.

스트리밍서버를 구축했냐면 X. 그냥 mp4파일을 제공해주는 방식이라서 반쪽짜리 서비스였다. nginx를 통해 mp4 스트리밍 서버를 만들고싶긴 했는데 자바스크립트 라이브러리 비디오 플레이어들이 그때당시 HTML5를 제대로 지원하지 않는 상태였다.

랭킹은 웹 크롤링 및 데이터 마이닝을 처음 시작한거나 다름없는데, 돌리던 서버 사양이 넷북이였다. 넷북은 이때까지 우리집에서 썩어가던 상황이였다.

그 뒤에 라즈베리 파이가 출시되었다. 라즈베리 파이를 통해서 운영체제 설치, 웹서버 운영도 해보고 여러모로 이것저것 많이 해봤다.

그외엔 이때서야 웹표준이라는 개념과 어느정도 디자인하는 방법을 알게 되었다. 웹 표준과 웹 접근성을 알게 해주신분이 계신데, 그분에게는 정말 감사함을 표하고싶다.

2014년

군대에 들어가기 전이였다. 이때까지 PHP를 버리지 못해서 CodeIgniter 프레임워크를 통해 사이트를 하나 개발했다. 내부 코드는 V2였고. 게시판+댓글+파일처리 기타 사항들이 있었는데 댓글이 많으면 많을수록 페이지가 느려져서 고민이 컸었다. 내부 백엔드 개발은 이때가 처음이였고 분명 MVC기반 프레임워크임에도 불구하고 스파게티코드가 난립하는 코드를 보면 아직도 현기증이 날것같다. 덧붙여 달러사인도.

그 외의 개발한것들은 XpressEngine의 게시판 스킨, 애드온 등이였는데 솔직히 지금 생각해도 제대로 된 개발이라고 보기 어려웠다. 이때 개발했던 멀티미디어 섬네일 애드온은 아직도 모두들 잘 사용하는 물건인듯 보인다. 가끔가다가 업데이트 안하냐는 쪽지도 있었는데 공식홈페이지 계정이 휴먼상태로 들어가서 로그인도 안된다. 알게뭐람.

사이트의 디자인, 서버관리, 백엔드, 프론트 모두 다 개발했었으니 어찌보면 철인같다 할수도 있을것같다. 이때는 풀스택이 자랑인줄 알았다.

2014년 말~2016년 중

왜 하나로 묶었냐면 군대. 딱히 적을게 없는 구간이라 하나로 뭉쳤다.

군대 가기전까지는 외주 수정작업 진행하다가 군대에 굴러들어갔다. 한 2달동안 정신을 못차렸던걸로 기억한다.

웃긴건 군대에서 휴가나와서도 컨퍼런스(정확힌 XpressEngine CMS의 발표회..)에도 다녀오고, PC를 사용할 수 있는 환경인 싸지방에서 프로그래밍을 하겠다고 이것저것 해보기도했다. 그 결과물은 여기에 올려둔 상황이다. 웃기게도 이 저장소의 덕을 본분들이 꽤 계신지 fork해가신분들이 상당히 많다. fork대신 star좀 눌러주시라.

이때 잠깐 Angular와 Angular2를 배워보기도 했고, ES6의 스탠다드가 규정된 상황에서 ES6(지금의 ES2015)을 써보기 위해 Nodejs 기반의 프레임워크를 제작해보기도 했고, NoSQL기반의 데이터베이스(RethinkDB)를 사용해보기도 했다. 소스를 올리면 너무 쪽팔려서 bitbucket에만 저장해놓긴 했지만, 이 프레임워크를 제작하면서 ES6을 배워둔건 정말 신의 한수였다고 생각한다.

물론 군대 전역하고는 놀러다니고 아주 환장을 했기때문에 그 뒤의 기억은 전혀 존재하지 않는다. 멍청한놈 아닌가.

2017년

이때 블랙회사에 들어갔던 암울한 시기중 하나였다. 2017년 1월경부터 6월인가 7월까지 다녔으니 참 오래도 다녔다.

여기서 PHP개발, 퍼블리싱 다 했는데 그누보드와 회사에서 자체개발하셨다고 자부심을 가지시는 프레임워크 위주로 사이트를 개발했다. 퍼블리싱에서 뭔가 배운 기억은 없었고, 막판에 Cordova로 개발하다가 Cordova+Vue로 개발하던 프로젝트를 다 완료하지 못하고 개인 사정상 퇴사하게 되었다.

블랙회사를 관둘때의 개인적 일에 대한 후유증으로 프로그래머의 커리어도 잠깐 끊겼다.

다행이였던건 그 회사에서 접했던 Vue 개발이 행복했다. 내가 아마 지금도 개발을 하게 만든 고마운 프레임워크가 아닐까 싶다.

2018년

2018년에는 큰 개발을 진행하지 않았다. 솔직히 이때 암호화폐 트레이딩을 통해서 어느정도 덕을 본 덕분에 자금이 살짝 여유로웠던 상황이라서 그동안 수고한 나에게 주는 휴식을 줬었다. 프로그래머로써의 커리어만 적었지만, 2012년부터 2018년까지 군대에 왔다갔다 하기 전까지 다 아르바이트를 하고있던 상황이였기 때문이다.

그렇지만 간과한건 웹개발자는 트렌드에 뒤쳐지면 죽는것이라는것 하나. 선택과 집중을 하기로 결정하고, XpressEngine3을 위해서 공부하던 Laravel Framework 책을 버렸다. 지금 생각해도 잘한것중 하나인것같다.

그런 뒤에 JS를 통한 개발에 있어 감을 찾기 위해 나 혼자 자기만족용으로 만드는 Electron 어플리케이션을 제작하기 시작했다.

그런 상황에서 1.0의 alpha 릴리즈가 나온 VuePress를 건드리면서 다시 감을 잡기 시작했다. 지금 블로그에 사용중인 테마를 제작하고, 오픈소스의 버그를 잡아 Pull Request를 보내거나 이슈 작성을 통해 프로그래밍에 대한 열정에 다시 불이 붙기 시작했다. 2018년 중반까진 그래도 멍하니 있었다면, 후반은 알차게 보냈다고 평가하고 싶다.

VuePress 저장소에 PR을 남기거나 이슈를 남기고 다른이들을 도와줄법한 항목들엔 답변을 남기는 활동도 시작했다. 영어가 잘 되지 않아 나름대로 번역기 돌려가면서 영어를 교정하고 있지만, 매번 반복되는 단어와 표현 형태를 보면 아직 한참 멀었구나 생각된다.

2019년의 목표

2019년의 목표는 다음과 같이 정했다

  • 웹 개발과 관련없는 분야의 개발 시도해보기(블록체인, 머신러닝, 데이터 마이닝, 언어 분석)
  • Typescript 배우기
  • React Native 혹은 그에 준하는것들로 모바일 어플리케이션 개발해보기
  • 실제 공과계열 학교들의 컴퓨터 공학 기초 커리큘럼 따라가보기

우선순위는 위에서 아래로 정했다.

웹 개발과 관련없는 분야의 개발 시도는 블록체인으로 이전에 창업을 하려고 했던 적이 있어서다. 그때를 위해서 블록체인인 이더리움의 스마트 컨트랙트(프로그래밍된 계약)를 작성하기 위한 언어인 Solidity도 CryptoZombies를 통해 기본정도만 훑고갔었다. dApp을 개발하거나, 아니면 요즘 트렌드인 머신 러닝(러닝머신이 아니다)을 배우기 위해서 공부하거나, 현재 창업을 준비중이며 통계와 직접적으로 연관있는 데이터 마이닝에 관련된 공부를 해보고싶다.

Typescript는 이제 가면 갈수록 피할 수 없는 대세가 된것같아서 배워볼까 한다. Vue에서도 차후 메이저 릴리즈에 Typescript를 지원할것이고, Babel등에도 마이그레이션 되어 이젠 typescript관련 설정을 번거롭게 할 필요가 없다. decorator같은 개념은 정말 혼란스럽지만, 그래도 차근차근 시간을 내어 정리하면 이해할 수 있고 쉽게 습득할 수 있을거라고 생각한다.

React Native는 단지 호기심으로 하고픈것인데, 이를 위해서 최근에 맥미니 2018 Late와 iPhone SE를 구매했다. 과연 맥미니를 제대로 사용할 수 있을것인가. 요즘 스팸문자에 시달리고 있는데, 메세지 관리 어플리케이션을 개발할 수 있으면 스팸문자 차단, 기프티콘이나 선물받는것들 날짜/사용 관리용 어플리케이션을 만들고 싶다.

컴퓨터 공학에 대한 기초를 배우고픈건 대학교에서 제대로 배운적이 없기때문이다. 위에도 적었었지만 자료구조를 몰라서 대기열 자료구조를 혼자서 2일동안 끙끙대며 만든건 정말 아직도 나에게 있어서 흑역사중 하나로 취급하고 싶다.

마치며

언제 한번 정리좀 했음 좋겠다 싶다가 완성했다. 나름 흑역사를 정리해서 쓴 글이지만, 확실하게 말해두는데 부끄럽지 않다. 부끄러우면 그동안의 노력들을 부정하는것이 되니까.

처음엔 아무것도 몰라서 풀스택 개발을 했지만, 지금은 완벽히 웹 프론트엔드 개발자로 전향했다. 난 프론트엔드 개발 말곤 전혀 할 생각이 이제 더이상 없다(물론 취업이 안된다면 달라지겠지만).

지금 내가 바라는것을 위해 계속 공부하고 계속 연구하고 계속 만들어 볼 것이다. 그동안의 노력이 물거품이 되지 않도록 앞으로 내가 프로그래머를 할수있을 때 까지, 최선을 다 할 것이다.