2018년 회고 및 2019년 계획

원래 이런 포스팅은 1월 1일에 해줘야 제맛이겠지만… 방 정리하고 계획짜고, 지난 학기 마무리겸 강의 정리도 하다보니 조금 늦어졌네요. 이 글에서는 2018년 회고를 순서없이 떠오르는 대로 나열해보고, 2019년 목표를 간단하게 정리해볼까 합니다.

2018년 회고

제 상반기를 갈아 넣었던 연구실 Lecture Management System 프로젝트가 가장 힘들었습니다. Vue.js 기반의 프론트엔드 담당 + PM까지 했었는데, 도대체 왜 내가 데이터베이스 연구실에 들어와서까지 프론트엔드를 계속한다는 자괴감에 생산력 저하도 있었고.

겨울방학 인턴으로 들어온 애들도 똑같이, 이런거(?) 하려고 인턴을 지원하진 않았을테니 하기 싫은 (= 적극적이지 않은) 사람들 2명을 이끌면서 교수님의 스펙을 맞추기란 여간 힘든 것이 아니였습니다. 특히, 프로젝트 중후반이 넘어가면서 2명의 코드리뷰/Merge Request 처리 + 담당 부분 구현 + PM등을 한 번에 수행한다는 것은 꽤나 지옥 같았습니다. 결국에, 중간에 디자인 (=웹 퍼블리싱)을 맡기는 겸 기획도 새로 맡기기 위해 외주를 찾아봤었는데, 처음 구했던 기획자 양반은 갑자기 잠수를 타서 교수님과 모든 팀원들이 저녁 7시부터 8시 반까지 기다리기만 하다가 결국 못 만났네요. 개같은 새끼.

그나마 써보고 싶었던 Vue.js를 쓰면서 기술 스택을 자유롭게 선택할 수 있다는 점에서 위안을 얻었고, 프론트엔드 일자 무식이던 인턴들을 키워내는 재미도 꽤 좋았던 것 같네요. 쓰고 싶었던 기술을 러닝커브 등의 문제로 전부 써보진 못했지만요.

Screenshot from 2019-01-18 22-46-42.png

중간고사 기간에 공부하느라 잠시 쉬었던 것을 뺴면 6월 초까지 정신없이 개발하고, 7월에 인수인계 하면서 이 프로젝트는 (Merge Commit 제외) 667개의 커밋으로 막을 내립니다. 여름방학부터 연구실 인턴으로 이 프로젝트에 들어온 후배에게 코드 칭찬도 받았습니다. 와~ 코드 볼 줄 아시는구나!


17년 12월 말부터 작업 시작했던 간호대 환자 매니지먼트 앱/시스템 외주도 1-2월에 스퍼트를 내서 3월에 알파 출시 했습니다. 2014, 15년 쯤에 친구와 함께 진행했던 앱과 구현 목표는 아주 비슷했습니다. 질병과 관련된 자료 보여주고, 환자가 자신의 활동을 기록하면 앱과 어드민 페이지에서는 통계를 볼 수 있는 시스템이 필요하다는 거였죠. 그 때 친구와 제가 (단가가 매우 쌌기 때문에) 좋은 피드백을 받았고, 다른 간호대 연구실에게 소개를 해주셔서 저 혼자 개발을 들어갔습니다. 백엔드를 맡았던 친구는 회사 일에 바빴거든요.

1월, 2월에 미팅 여러번 하면서 스토리보드 잡고, 디자이너 친구 하나 구해서 앱-메뉴 아이콘 입혀서 Ionic 3.20 버전으로 작업했습니다. 이 때 부터 TypeScript에 대한 사랑이 시작됐던 것 같아요. 아, 단가가 싼 이유 중에는 클라이언트가 대단한 디자인 대신에 기본 UI + 싼 단가를 원했다는 점도 있네요. Ionic 기본 컴포넌트들을 최대한 재활용했고, 추가적으로 구현한 부분은 Image가 필요한 Select-Option 버튼 정도 였습니다. 써보고 싶었던 Angular (Ionic) + Redux 조합으로 앱 짜고, express + sequalize로 백엔드, Vue + element-ui로 어드민 페이지를 구현했습니다.

앱(265) + 어드민 (51) + 백 (92) 정도의 커밋으로 이 프로젝트를 마무리 했습니다. 앱개발과는 아무런 상관도 없던 사람들에게서 그들이 뭘 원하는지 끄집어내는 경험이였는데, 아무래도 두 번째 간호대 외주였다보니, 우왕좌왕하지 않고 잘 리드했던 것 같습니다. 개인적으로는 아주 만족입니다. (페이도 개발자 혼자 다 먹으니 꽤 만족했습니다ㅎㅎ)

여담으로 모니터를 하나 더 살까 심각하게 고민 했었는데, 한 번에 에디터 3개를 쓰기란 꽤나 역겨운 경험이였거든요. 그리고 이 겨울방학을 기점으로 해서 angular.js, Angular, React, Vue를 전부 써본 변태가 됩니다.


지옥의 LMS 프로젝트가 끝난 뒤 7월부터는 기존 프로젝트의 리팩토링에 들어갔습니다. Swing으로 UI가 짜여진 자바 프로그램이였는데요. Database의 컬럼과 분석 코어 로직에 UI 관련 로직 & 플래그가 너무 많았으며, 3가지 데이터베이스를 지원하는데, A->A, A->B, A->C, …와 같은 총 9가지 조합에 대한 코드가 무려 9개의 서로 다른 자바 클래스로 존재하는 것을 보고 정신이 아찔해졌습니다.

심지어, 이 프로젝트를 가장 마지막까지 리드했던 선배는 이미 졸업했고, 그 후에 이 프로젝트에 참여했던 사람은 현재 모두 연구실을 나갔습니다. (…) 저는 이 저주받은 프로젝트의 코어 엔진을 TypeScript + Raw Query 기반으로 바꾸기로 정했습니다. 프로젝트의 동작 구성상 SQL로 모든 분석이 돌아갔으니, async/await을 쓸 수 있는 Node.js가 제격이였고, 저는 TS를 사랑하니까요.

같은 테이블의 min, max를 구하는 데에 SQL을 두 번execute하지 않나, 분석 결과를 저장하기 위해 동적으로 “데이터베이스”를 만들지 않나, Insert 한 번에 row 딱 하나 넣지 않나 (…) 이런 저런 지난한 노력 끝에 완성된 리팩토링 버전은 기존에 20-22분 걸리던 분석을 6초만에 끝내게 됩니다. 물론, 20분 걸리던 서버는 하드디스크여서 I/O 병목이 좀 더 심했다는 것은 고려해야겠지만요. (정확한 벤치마킹을 위해 새로운 서버에서 프로그램을 실행하고 Swing UI를 보는 순간 혈압이;;)

이 프로젝트는 UI와 최대한 독립적인 구조를 위해 앞 단에 koa.js를 붙여서 웹으로 분석요청을 받는 구조로 재작성했고, engine + koa 합쳐서 150개의 커밋을 공헌하는 것으로 적당히 마무리하고 이제는 SQL 부분을 Spark로 바꾸는 작업 중입니다. 러닝커브를 극도로 꺼리시는 교수님은 제가 Java로 Spark 로직을 구현하길 원하셨지만, 제가 졸업까지 이 프로젝트를 담당하는 조건으로 Scala로 작성하는 중입니다.


flurry.olaf.krant.design을 입혀서 React로 리팩토링하려다가, 2학기에 창업 동아리를 들어가게 되면서 아예 다른 방향으로 구현해봤는데, flurry가 시장성이 없었던 만큼 크게 다른 결과가 나오진 않았습니다. 그냥 제 개인 개발자 포트폴리오 아이디어를 팀원들에게서 착취한 걸로 (…)


이번에 친구가 석사 졸업하면서 리트코드(LeetCode)를 열심히 풀며 면접을 준비하는 모습을 보고, 저도 잠자던 PS의 두뇌를 깨우기 위해 호기롭게 Scala로 리트코드를 풀어버리겠다며 Github 저장소까지 만들었는데, 예상 외의 복병을 만났습니다. 리트코드에서 Scala로 답안을 제출한 사람이 너무 적어서 0.00%의 사용자보다 빠르다 (= 꼴등이다), 100.00%의 사용자보다 빠르다 (= 1등이다)라는 결과가 자주 보이거니와… 아예 뜨지 않는 경우도 왕왕 있었다는 것이죠. (…)

결국에는 Java아니면 Python으로 갈아타게 될 것 같습니다.

둘 다 나쁜 선택지는 아니지만, 가슴이 아프네요…


그 외에는!

일본/제주도/강촌/원주로 여행도 다녀오고, 책도 55권이나 읽고, 전 직장이였던 센트비 프로덕트 팀원분들과 홍대 시디 졸업전시회에서 봤던 국민청원 크롤링 + 데이터 시각화 능력자분을 같이 만나서 담소도 나누었고, 석사 2학기도 잘 마무리 했습니다.

2019년 계획

하나만 꼽으라면 역시 석사 무사 졸업입니다.

더 주절주절 해보자면, (다 이룰 수 있을지는 모르겠지만)

  • 창업 동아리에서 진행한 프로젝트 좀 더 가다듬어서 블로그에 소개해보고 싶고
  • 제가 프로그래밍 포스팅을 쓸 때는 Typora로 작성하는데, 코드는 Gist에 자동으로 올리는 간단한 스크립트도 정리해서 Github에 공유하고 싶고
  • (명색이 데이터베이스 연구실인데) SQL의 숙련도를 더 올리고 싶고
  • 책 60권 이상 읽고 싶고
  • 지나가던 고등학생 중에서도 안 해본 사람이 없다는 간단한 딥러닝 토이 프로젝트도 해보고 싶고
  • 운전연수 받아서 엄빠차 타고 놀러가보고 싶고
  • 간호대 외주 하나 더 진행하고 싶고
  • 블로그 방문자 많이 늘어났으면 좋겠고
  • 리트코드 100개 이상 풀고 싶고
  • React 기반으로 간단한 웹서비스 하나 더 만들고 싶고
  • 단기적으로는 1월 제안서, 2월 데모가 잘 끝났으면!

좋겠습니다!!

 

 

Leave a Reply