첫 회고록을 쓰게 됐다. 작년 이맘때는 잠 못 자고 공부만 했는데, 개발자가 된 지금은 지난 1년을 정리해볼 수 있게 됐다.
2019년은 내가 개발자가 된 해이다. 그래서 의미가 있고 평생 기억에 남을 것 같다. 어쩌면 나중에 꼰대처럼 ‘내가 2019년에 주저리주저리…’ 떠들고 있을지도 모르겠다.
의미있는 2019년을 정리해본다.
개발자
나는 고졸이다. 대학을 다녔었지만, 사정상 군대를 전역하고 일을 시작했다. 백화점, 영업, A/S 등 다양한 일을 경험했다.
하지만 경력이 쌓여도 나에게는 전혀 맞지 않는 직업들이었다. 참고 버텨서 살아남고 싶은 욕심도 없었다. (대부분 살아남는다고 표현했었다)
다른 꿈이 있던 것도 아니었지만, 내가 좋아하는 일을 찾고는 싶었다.
주어진 일을 하며 살고 있을 때 보안업계에 있는 친구에게서 소프트웨어 개발을 해보지 않겠냐는 권유를 받았다. 이때 ‘그거 천재들이 하는 거 아닌가?’라고 생각했던 것 같다. 컴퓨터와 친하지 않았던 나에게 개발자는 영화 속 천재 해커와 같았다.
<영화 후엠아이>
그래서일까? 흥미가 생겼다. 코드로 소프트웨어를 창조하는 천재가 멋있게 느껴졌다. 그래서 2018년 7월 취미로 생활코딩을 통해 웹 프로그래밍을 독학하기 시작했다.
일이 끝나면 생활코딩 영상을 보며 공부했다. 다니던 회사가 야근이 많아 저녁 11시에 귀가 하는게 다반사였지만, 적어도 2~3시까지는 공부했다.
운이 좋게도 프로그래밍이 재밌었다. 내가 작성한 코드가 동작하는 일이 멋있었다. 그리고 이고잉님의 화려한 언변은 나를 더욱 특별한 사람으로 만들어 주었기 때문에 힘이 났다. (생활코딩 코딩과 HTML에서 37초부터 나오는 음악과 장면은 잊지 못한다. 초심을 찾을 때 다시 보곤 한다.)
하다 보니 재밌다는 이유만으로 진지하게 개발자가 되기로 했다. 당시 섬유 프린트 기계 A/S를 했는데, 기계를 A/S 하면서 프로그래밍만 생각했다. 그래서 과감하게 일을 그만뒀다.
백수가 되니 공부할 시간이 많아졌다. 아침에 일어나 저녁까지 생활코딩과 인프런을 보며 공부했다. 하지만 돈을 벌어야 하는 환경이었기 때문에 시간이 많지는 않았다. 그래서 국비 지원교육을 신청했다.
그리고 국비 지원교육을 받기 시작했다. 필자가 사는 곳은 경기도 양주였고, 교육기관은 판교에 있었다. 매일 왕복 5시간 20분 정도를 움직였다.
지하철은 개인 공부를 하기 좋은 시간이었다. 오가는 지하철에서는 자바, 스프링, 네트워크, 컴퓨터공학 관련 책들을 읽었다. (이때 읽은 책들은 지금까지도 내게 큰 도움을 주고 있다)
그리고 집에 와서는 과제, 복습, 예습으로 마무리를 했다. 주말은 그 주에 어려웠던 것들을 공부하거나 여유가 있을 땐 JS, DB, GIT 등 JAVA 외 기술들을 공부했다.
공부하는 4개월 동안 5시간 이상 잘 수 없었지만 좋아하는 것을 공부하니 신이 났다. 쉬지도 못했기 때문에 면역력이 약해져 입 주위에 피부염이 생기기도 했지만 내 열정에 문제가 되지 않았다. (지금까지 이 피부염은 날 괴롭히고 있다)
그리고 당연히 이렇게 할 수밖에 없었다. 비전공자인 나는 컴공을 전공한 친구들이 대부분인 그곳에서 부족한 사람일 수밖에 없었기 때문이다. 비전공자로써 감당해야 할 일이었다.
결과적으로 노력한 만큼 마지막 프로젝트에선 팀장으로 팀을 이끌고 상을 받는 좋은 결과를 얻었다.
그리고 교육과정을 수료하고 2개월을 더 공부해서 2019년 2월 CODEF의 개발자가 되었다.
마침내 매일 아침 ‘Hello World’가 적힌 회사 입구를 지나, 아이맥 앞에서 종일 좋아하는 일을 하고 있다.
프로젝트
일이 끝나면 주로 공부를 했지만, 만들고 싶은 게 생기면 프로젝트를 진행하는데 더 많은 시간을 투자했다.
근데 토이 프로젝트를 하는 게 처음부터 수월하지는 않았다. 교육을 받으면서 진행한 프로젝트는 전부 CRUD 기능으로 이루어진 웹 프로젝트였기 때문에 웹이 아니면 막막했다.
그래서 프로젝트를 진행할 때 천천히 작은 것부터 알아보기로 했다. 먼저 업무의 순서를 정리해보았다. 예를 들어 웹 크롤러를 만들면 아래와 같다.
- 페이지 접속
- 로그인
- 페이지 이동
- 데이터 가져오기
그리고 업무별 키워드로 검색해서 관련 기술에 대한 정보를 얻거나, 관련 기술을 사용한 오픈소스를 찾아 분석했다. (오픈소스 분석이 정말 많은 공부가 됐다)
그리고 작은 프로토타입을 만들어보고, 준비하면서 공부한 것들을 정리했다. 정리되면 그때부터 프로젝트를 진행했다.
모든 비전공자가 그런 건 아닐 테지만, 교육기관에서 자바, 스프링으로 된 프로젝트 몇 개 해보고 능동적으로 개인 프로젝트를 수행하는 게 쉽지는 않았다.
그래도 고생해서 하나를 만들어보니 자신감이 생겼다. 자신감이 생기니 필요하다 생각 들면 일단 만들어보았고, 많지는 않지만, 실무 프로젝트 외 완성된 토이 프로젝트들도 늘어났다.
이번년도 진행한 프로젝트(개인 포함)는 아래와 같다.
CODEF 홈페이지
CODEF 홈페이지는 생애 첫 실무 프로젝트이기 때문에 시간이 지나도 잊지 못할 거다. 첫 정식 서비스를 배포한 날 페이지에 접속해서 꽤 오랫동안 넋 놓고 기쁨을 즐기고 있었으니 말이다.
하지만 매우 힘들었던 프로젝트였다. 첫 프로젝트를 퍼블리싱과 설계를 제외한 대부분의 작업을 혼자 할 수밖에 없었기 때문이다. 다행히 옆에서 조언을 아끼지 않았던 선임 개발자분들의 도움으로 무사히 마무리할 수 있었다.
- Java
- JavaScript
- Angular
- Spring
- MyBatis
- MySQL
Study Checker
Study Checker는 교육과정이 끝난 직후 JS와 친해지기 위해 진행한 토이 프로젝트다. 학습 시간을 깃허브 커밋처럼 기록하기 위해 만들었다. 처음으로 깃허브에 공유한 프로젝트다.
- JavaScript
- React
- Redux
- Electron
- LowDB
easy-codef-py
easy-codef-py는 CODEF API를 빠르게 적용할 수 있도록 사용자들을 위해 만든 토이 프로젝트다. 내가 처음으로 진행한 프로젝트를 많은 사람이 사용해봤으면 하는 바람으로 만들었다.
라이브러리를 만들어보면서 ‘어떻게 설계해야 쉽게 가져다 쓸 수 있을까?’, ‘README는 어떻게 작성해야 간단명료할까?’, ‘향후 이 라이브러리가 좋은 커뮤니티가 될 수 있을까?’ 등 평소 해보지 못했던 고민을 해볼 수 있었다.
- Python
- PYPI
명세서 체크 크롤러(비공개)
회사에서 사용하는 명세서 파일들의 업데이트 여부를 자동으로 검사하는 크롤러 만들었다.
하루에 두 번 회사에서 사용하는 서비스 명세서 수십 개를 자동으로 비교 분석하는 일을 한다. 사람이 하면 몇 시간이 걸릴 일을 1분도 안 걸리게 알아서 처리해주는 고마운 녀석이다. 귀찮은 걸 정말 싫어하기 때문에 일이 끝나고 짬짬이 만들었는데 유용하게 쓰이고 있다.
- Python
- Selenium
- Pandas
- Slack
- Mattermost
- Chrome
KSNET 데이터 매퍼(비공개)
KSNET에서 제공하는 카드사 정보를 코드에프에서 사용하는 코드 데이터를 추가해서 엑셀 파일로 만드는 프로그램이다. 데이터가 너무 많고 사람이 하면 너무 오래 걸려서 만들었다.
- Python
- Openpyxl
Chromedriver-boilerplate
chromedriver-boilerplate는 셀레니움과 크롬 드라이버를 활용한 크롤러 보일러 플레이트 코드다.
- Python
- Selenium
- Chrome
블로그
회사에서 앵귤러를 처음 도입했기 때문에 회사 내 레퍼런스가 없었다. 그래서 프로젝트를 진행하면서 발견되는 이슈를 분석한 내용, 직접 만든 모듈 가이드 등을 구글 드라이브에 공유하기 시작했다.
근데 선임 개발자가 글들을 보고 블로그를 해볼 생각 없냐고 물어봤다. 평소에 생각은 있었지만, 자신이 없었기 때문에 미루고 있던 일이었다. 하지만 선임 개발자의 격려 덕분에 바로 블로그를 시작하게 됐다.
어떻게 글을 써야 하고, 어떤 주제의 글들을 작성해야 할 지 모를 때 선임 개발자의 조언이 많은 힘이 됐다. (오세용 닷컴과 Stew를 운영하면서 얻은 경험으로 아낌없이 도움을 주신다)
블로그 글을 작성하면 얻는 게 매우 많다. 정확한 정보를 남겨야 하므로 깊게 공부할 수밖에 없고, 과정에서 생각하지 못했던 지식도 얻게 된다. 그리고 가끔 누군가가 내 글이 도움이 됐다는 이야기를 들을 때 뿌듯함도 얻고 있다.
공부
공부는 매일 하고 있다. 사실 호기심이 많고 답답한 걸 싫어해서 그냥 매일 하고 있다.
공부한 내용은 정리해서 레파지토리로 관리한다. 실습 코드나 응용해서 만든 작은 프로그램들도 레파지토리로 관리한다.
덕분에 깃허브의 잔디는 이쁘게 채워지고 있다. (1일 1커밋을 의도한 건 아닌데, 많이 채워지다 보니 이제는 커밋을 하지 않으면 죄짓는 것 같다)
<잔디가 예쁘게 심어졌다>
내가 하는 공부 방법은 여러가지가 있다.
기술 문서로 영어공부
기술 문서로 영어 공부를 하고 있다. 개발자라면 영어 문서를 빠르게 번역할 수 있어야 하므로 자연스럽게 하는 일이다.
영어 공부도 되고 프로그래밍 관련 지식도 얻고 일석 이조다.
클론 코딩
가끔 책과 문서를 보면서 연구하다 보면 지칠 때가 있다. 새로운 토이 프로젝트 아이디어도 없을 때는 클론 코딩을 한다.
그냥 괜찮은 동영상을 보면서 시키는 대로 따라 해보고, 혼자서 그 코드를 피드백해 보거나 리팩토링을 해본다.
동영상도 따라 하기 귀찮을 때면 현재 서비스 중인 프로젝트를 보고 어떻게 설계되었을지 직접 설계를 해보거나, 간단하게 프로토타입을 작성해본다.
기술 서적
원래 인문 고전을 좋아했기 때문에 책을 자주 읽었다. 현재는 인문 고전 대신 컴퓨터 관련 서적 또는 IT 서적을 주로 읽고 있다.
이번에는 회사에 적응하느라 책을 많이 읽지는 못한 것 같다. 내년에는 두 배로 늘려야겠다.
- Teach yourself C
- Do it! 점프 투 파이썬
- 그림으로 배우는 HTTP & Network Basic
- 스프링 철저 입문
- Servlet & JSP
- 뇌를 자극하는 Java 프로그래밍
- 머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로
- 러닝 자바스크립트
- You Don’t know JS
- 함수형 자바스크립트 프로그래밍
- 팀쿡
- 구글 스토리
- 소프트웨어 장인
- 초격차
- 파워풀
- 실리콘밸리를 그리다
오픈 소스 분석
심심할 때 평소 사용하던 라이브러리 코드를 분석한다. 평소 생각하지 못했던 코드 패턴도 볼 수 있고, 생소한 기술, 개발자들의 소통 등 재밌는 요소가 많다.
소소한 변화
VIM
매직 마우스를 사용하면서 가운뎃손가락 통증이 너무 심했다. 좋아하는 개발자인 이종립님이 새끼손가락이 아파서 vim을 사용했다는 걸 알고 나도 vim을 시작했다.
러닝 커브가 높다는 것에 걱정됐지만 생각보다 vim은 너무 편안했다. 이전에 일반 에디터를 사용할 때보다 생산성이 좋아졌고 손가락 통증도 좋아졌다.
지금은 실무에서는 에디터에 vim plugin을 설치해서 쓰고, 토이 프로젝트는 vim으로 개발하고 있다. 이제 vim 없으면 안 되는 vim 중독자가 되고 있다.
해피해킹 키보드
해피해킹 키보드를 사용하게 된 이유도 vim을 사용한 이유와 같다. 손가락은 아픈데 종일 매직키보드를 두드리니 손가락 여기저기가 쑤셨다.
그래서 어차피 vim을 사용하니 손에 이동범위를 최대한 줄여줄 수 있는 해피해킹을 사용하기로 했다.
지금은 매우 만족해서 사용하고 있고, 해피해킹 배열이 아니면 안 된다고 생각하는 중독자가 됐다.
애플
평생 윈도우를 사용했다. 하지만 회사에서 아이맥을 사용한 이후로 주변에 모든 기기를 애플 제품으로 바꿨다.
처음에는 CentOS, 우분투, 민트 등 설치해서 사용했으나, 애플의 안정성, 연동성과 편리함 때문에 이렇게 변했다.
가끔 팀에서 애플 중독자라며 걱정해주고 있다. 허허.
서른
이제 서른이 되었다. 음……………. 그냥 싱숭생숭하다.
다행인 건 30이 되기 전에 좋아하는 일을 찾았다.
우수사원
감사하게도 이번 연도 회사에서 우수사원으로 선정됐다. 나 말고도 충분히 받아야 할 사람들도 많았는데, 괜히 미안해지고 또 감사하다.
좋아하는 일을 하고 있고, 또 좋은 사람들과 일을 하고 있기 때문에 좋은 성적을 낼 수 있었던 것 같다.
참 많은 분께 감사하다.
<상으로 애플워치 받고 좋아하는 나>
새해 목표
방송대 컴퓨터과학과
방송대 편입학 신청을 했다. 대학을 다녀볼 생각이다.
클론 코딩
큰 서비스를 장기간 클론 코딩해볼 생각이다. 대학 과정 때문에 시간 관계상 내년에 완료될 수도 있겠지만 평소 궁금했던 요소들을 많이 해소할 수 있을 것 같다.
컨트리뷰터
오픈소스를 좋아한다. 입사 초 오픈소스에 기여한 경험이 있는데, 2020년에는 좀 더 적극적으로 해볼 생각이다.
Rust
Unmanaged Language로 핫한 언어다. Rust로 작성된 프로젝트가 많아지고 있는데, 틈틈이 공부해볼 생각이다.
인프라
서버 개발자라면 인프라도 할 줄 알아야 한다고 생각한다. 리눅스, 네트워크 등 틈틈이 공부해왔지만 대학 공부를 하면서 좀 더 체계적으로 해봐야겠다.
건강
웨이트 운동을 좋아한다. 하지만 공부하면서 운동을 할 수 없었다. 그래서 체력이 매우 나빠졌다. 롱런하기 위해서 운동량을 늘려볼 계획이다.