2020 돌아보기


숲에서 길을 잃은 나그네들은 이쪽으로 갔다가, 저쪽으로 갔다가 해서도 안 되며 또한 한 장소에 멈춰 있어서도 안 된다. 꾸준히 한 방향으로 향해 되도록 똑바로 걸어가야 한다. 그들이 그 방향을 선택한 것이 처음에는 단순한 우연에 불과했을지라도 사소한 이유로 그 방향을 바꾸어서는 안 된다. - 데카르트

실무 개발의 세계

2020년의 시작과 함께 프론트엔드 개발자로 입사했다. 투자 규모를 포함해 여러 지표를 보면 작은 규모의 회사는 아니었다. 웹 프론트 개발자는 혼자뿐이었다. 웹 프로젝트의 규모가 크지 않았고, 웹보다는 앱의 중요도가 높았다. 그럼에도 메인 리액트 1개를 포함해 5개 정도의 프론트 레포지토리를 (문서로) 인수 받았다.

로컬에 서버를 세팅해야 한다.

프론트 코드가 익숙해지기도 전에, 당시 CTO님 께서 '로컬 서버를 세팅해 주세요. 말씀하셨다. 서버라곤 부트캠프에서 express 튜토리얼을 진행해 본 게 전부였다. 심지어 개발 서버에 대한 개념도 흐릿한 상태였다. 지금 생각해보면 docker 이미지 왜 안 만들지 않으셨는지 궁금하다. pip가 무엇인지도 모른 채 가상 환경(virtualenv) 부터 설치하기 시작했다. 문서를 보고도 설치가 매끄럽게 이루어지지 않았다. 퇴근 후 회사 노트북을 들고 와 친구와 카페에 갔다. 빈 화면에서 ps aux | grep uwsgi , kill -9 121311 을 반복하며 (방화벽이 설정된 것도 모른 채) '왜 회사에서는 됐는데 뭐가 잘못된 걸까?' 생각했다. 이 모습을 본 친구는 나에게 컴퓨터를 잘한다고 말했다. 참 그러고 보면 뭐든 별거 없을 수도 있겠다.

돌아보면 여기서 많이 배웠다.

컴퓨터공학 '기본' 지식

서버를 무사히 세팅하고 PM(대표님)의 제안하신 수정사항과 작은 기능들을 추가하며 조금씩 리액트 프로젝트에 익숙해졌다. 필자를 어렵게 했던 CSS도 flex box 문서를 여러 번 살펴보며 얼추 반응형에 대한 개념을 제대로 이해하기 시작했다. 한가지 JQuery로 만든 관리자 페이지를 유지 보수하며 애로사항이 있었는데, 주로 '이렇게 수정해도 될까?' 하는 의문들이었다. 한 파일에 기본적으로 3000줄 이상이었고, 6000줄이 넘는 HTML 파일도 있었다. 당연하게도 DRY(Don't Repeat Yourself) 원칙은 찾아볼 수 없었다. 가벼운 기능을 추가하려 할 때도 마음이 불편했다.

기초가 생각났다. 컴퓨터 기본에 대한 지식을 익힌다면 적어도 내가 'JQuery로 만들어진 6000줄 HTML 파일을 만드는 일은 없겠다.' 생각했다. (지금 생각하면 꼭 그런 것 같진 않다).

넘지 못했던 두 개의 산으로 시작했다. 자료구조와 알고리즘이었다. 교육 플랫폼 코*잇에서 저렴하게 배울 수 있을 것 같아 신청했다. 도저히 짬이 나지않아 일찍 일어나기 시작했다. 강의를 잘 듣고 따라 한 것만으로는 뭔가 충분하지 않다고 느꼈다. 트리, 해시 테이블, 브루트 포스 등 배운 내용을 블로그에 정리하기 시작했다.

이어서 반효경 교수님의 운영체제 수업 수강을 시작했다. 운영체제는 신세계였다. 어렴풋이 알고 있었던 비동기부터, 스레드, 페이징 등 들어봤지만 대체 무슨 말인지 몰랐던 개념이 쏟아져나왔다. 5월부터 7월까지 열심히 수강하며 블로그에 정리했다.

지금 생각해보면 많은 부분을 까먹은 것 같다. 분명 강의를 잘 듣고 열심히 블로그에도 정리했는데도 말이다. 지금 누군가가 나에게 운영체제의 한 개념, 예를 들면 페이징 시스템에 관해 설명해달라고 하면 '음…. 그건……. 위키를 같이 읽어보자 이야기할 것 같다. 공부했던 방식이 잘못되었을 수도 있다. 기억이 아닌 이해를 하는 영역인데 이해가 부족했을 수도 있다. 하지만 공부했던 것들이 어렴풋이 들어본 것이 되었다고 하더라도 전혀 들어보지 못한 것보다는 낫다. 여러 번 반복하면 언젠간 자신 있게 설명할 수 있는 날이 올 거라고 생각한다. 다시 흐릿한 개념을 접하는 날에는 조금 더 내 것으로 만들면 된다.

Data visualization 그리고 Backend

그렇게 아침에는 컴퓨터 기초를 공부하는 학생으로, 일과 시간에는 프론트엔드 개발자로, 저녁에는 사이드 프로젝트에 열심인 개발자로 초 봄부터 여름까지 몇 개월을 보냈다. 그리고 어느 순간 방향성에 대해 생각하게 되었다. 조금 더 자세히, 프론트엔드에서도 어떤 한 분야를 파야겠다는 생각을 했다. 지금 생각해보면 회사와 사이드 프로젝트에서 했던 작업이 반복적으로 느껴졌던 것 같다. 지금은 조금 다르게 생각한다. 반복적으로 느껴졌다는 것은 내가 다양한 상황을 고려하지 않았던 것을 의심해야 하고, 과거의 방식이나 다른 사람의 문제 해결 방식을 그대로를 답습하는 형태를 지양해야 한다. 그러니까 한마디로 좋지 못한 형태로 개발하고 있었음을 적어도 한 번쯤은 의심했어야 한다. 나를 조금 위로하자면, 시간상으로 쫓겨 쌓여 있는 태스크를 쳐내는 것이 우선이었다.

여튼, 이런 고민을 거쳐 Data visualization을 해보기로 정했다. 데이터 관련 학과를 졸업하기도 했고, 프론트엔드에 대해 얕게나마 경험이 있으니, 괜찮을 거로 생각했다. 물론 유려한 그래프를 보는 것에도 관심이 있었던 것 같다. D3로 시간에 따라 움직이는 scatter plot을 그려보기도 하고, Data visualization society slack과 이런저런 레퍼런스를 보기 시작했다. 마지막으로 개인 프로젝트로 Life To Pixel이라는 프로젝트를 시작했는데 일상을 pixel로 나타내는 지금 생각해보면 꽤 규모가 큰 솔로 프로젝트를 기획했다.

그런데 왜일까? 영 진도가 나가지 않았다. 사이드 프로젝트에서도 서버와 기록하는 프론트 단은 금방 완성했는데 막상 데이터를 표현하는 visualization 영역에서 진도가 나가지 않았다. 어렵다거나, 도저히 못하겠어 서는 아니었다.

상상 vs 실제

이 무렵 하고 싶었던 분야와 가장 일치하고 느꼈던 회사에 면접 볼 기회가 생겼다. 면접 초반 분위기, 그러니까 배경과 지원 동기와 현 회사에서 했던 일들까지는 괜찮았다. 가장 기억에 남는 면접 질문은 '도메인 지식으로 문제를 해결한 사례' 였는데, 과거에 데이터 분석 프로젝트를 진행하며 했던 이야기를 말씀드렸다. 여기까지는 정말 좋았다. 그다음부터 CSS, HTML 등 면접관님이 생각하시는 프론트엔드의 기본 지식에 대해 질문하셨다. 아는 선에서 답변 드렸지만 뭔가 나도, 그분도 시원하지 않았다. 이 면접은 장장 3시간에 걸쳐 보았다. 그 후에는 React를 사용해 어떤 컴포넌트를 만드는 live coding을 진행했다.

이튿날 '귀하가 가진 역량은…. 시작하는 메일을 받았다.

나를 객관적으로 바라보기

앞서 말한 면접을 통해 나를 더 객관적으로 바라보게 되었다. 사이드 프로젝트에서 데이터 시각화를 미루어 둔 지도 꽤 되었다. '왜 서버는 만드는데 막상 앱을 만든 이유였던 그래프는 안 그리지?' 생각해봤다. 여기에 대한 결론은 하고 싶다고 생각했던 일과 실제로 했을 때의 간극에 있었다. 사실 회사에서 API의 작은 부분을 수정하는 것으로 시작해 정기 결제를 도입하며 관련 로직을 구현하기도 했다. 또한 사이드 프로젝트 에서도 서버와 인프라를 알아가며 재미를 느끼고 있었다. 부족하지만 서버를 띄우는 것에 재미를 느꼈다. 낯설지언정 두렵지 않았다.

다시 한번 부딪혀보자.

방향성에 대한 고민, 면접, 사이드 프로젝트를 거쳐 남은 것은 서버 개발에 대한 생각이였다. 데이터 간의 관계, 나아가 데이터를 여러 방면에서 사용할 수 있는 환경 구축 등 해보고 싶은 것들이 있다. 그리고 퇴사를 결정했다. 현재 회사와 팀에 상황애 내가 생각하는 성장의 요건들이 이루어지기 어렵다는 판단이 있었다. 개발, 인사 팀장님을 거쳐 대표님까지 면담했다. 정말 감사하게도 모든 분이 좋게 생각해주셨다는 것을 느꼈다. 함께 할 수 있는 길을 모색했고, 그 과정에서 직원이기 전에 인간으로, 팀원이기 전에 개발을 시작하는 후배로 생각해주셨다는 느낌을 받았다. 그리고 2021년이 시작하는 지금 새로 오신 분에게 열심히 전달해 드리고 있다.

앞으로의 계획

수치를 포함한 명확한 목표는 없다. 아래 두 가지 생각과 실천은 매 순간 이어 나갔으면 한다.

  1. 기본기 (알고리즘, 자료구조, 운영체제, 컴퓨터 구조)를 탄탄히 하고 싶다. 지난해에 어렴풋이 아는 것에서 만족했다면, 올해는 더 깊이 알아가고 싶다. 다만 활용하기 위해 배우는 것이라는 점을 잊지 않았으면 한다.
  2. 지난해에는 천직(天職)을 찾아 헤맸다. 올해도 그만 둘 생각은 없지만, 내 앞에 있는 일을 어떻게 하는지에 따라 재미있고 의미 있는 일이 될 수 있다는 점을 잊지 않았으면 한다.
반복의 느린 變化
oowgnoj github
© 2022, by oowgnoj