All Articles

Goodbye 2020, Hello 2021

연말이 다가오면 ‘올해도 회고록을 써야지’란 생각으로 올 한해 있었던 일들을 되돌아보곤 한다. 그럴 때마다 1년 전의 나보다 더 성장한 모습의 나 자신을 마주하면서 뿌듯하기도 하고, 내년에 이루고자 다짐했던 것들을 달성하지 못했단 사실을 깨달을 땐 또 여전히 나의 부족함을 느끼게 된다. 그래서 부족한 점이 있었다면 이를 보완하는 것을 다음 목표로 삼고, 매일 조금씩 성장해 나가기 위해 나는 2020년도 회고록을 쓰기 위해 노트북을 열었다. 개발자로서의 나의 모습은 2019년에 비해서 얼마나 성장했는지 되돌아보도록 하자.

2020년 개발자로서의 나

TL;DR

2020년 나는 오르비스 에이아이에서 개발자 커리어를 시작해서 위힐드를 거쳐 매스프레소에 재직 중이며 총 2,057개의 커밋을 남겼다. 또한 3개의 크고 작은 사이드 프로젝트(큐링, 유니뷰, 롤링페이퍼)를 진행했으며 2개의 자격증(정보처리기사, AWS Solution Architect Associate)을 취득했다. 2020년에 내가 새롭게 배운 기술들은 대략 다음과 같다.

  • 언어: Typescript
  • 프레임워크: Next.js, Django
  • 라이브러리: Redux, MobX, I18n
  • 결제 도구: Stripe, Iamport
  • 테스트 도구: Cypress, Storybook
  • 기타: Docker, AWS, ELK, Kubernetes

직장 생활의 시작

첫 커리어를 시작하다

나는 2020년 2월 7일 오르비스 에이아이에 입사하여 개발자로서의 첫 번째 커리어를 시작했다. 오르비스 에이아이는 인원이 10명 채 안 되는 작은 스타트업 이었고 음성 합성 기술을 활용하여 사용자에게 웹 서비스를 제공하는 B2C 기업이었는데, 적은 인원은 내가 다양한 영역에 발을 들일 기회를 제공해주었다. 입사할 때 나의 주 업무는 React, Typescript, Redux를 활용한 웹 프론트엔드 개발이었고, AI 서버로부터 전달받은 합성된 음성을 Web Audio API를 활용하여 사용자에게 들려주는 업무를 맡았다. 또 음성 데이터를 정제하는 사내 툴을 개발하였으며 우리 회사 웹 사이트가 아닌 다른 써드 파티에서도 우리 서비스를 사용할 수 있도록 API 서비스를 만드는 역할도 맡게 됐다.

시간이 지나면서 내가 손댈 수 있는 코드의 영역이 점차 넓어지면서 백엔드 개발도 담당하게 되었는데, 국내 사용자가 아닌 해외 사용자들을 타겟으로 한 서비스였기 때문에 해외 결제를 위해 Stripe와 Node.js(Express), MongoDB로 결제 서버를 구축하기도 했다. 이는 내가 평소에 추구했던 소프트웨어 개발 사이클의 전반적인 부분을 경험하는 것과 얼라인되어 나에게 개발 동기를 제공해주었고, 그 덕분에 만족도 높은 직장 생활을 이어나갈 수 있었다. 그러나 산업기능요원 현역 편입을 목표로 하고 있는 나는 이 직장이 병역지정업체가 아니었고 또 8월까지 정보처리기사 자격증을 취득하지 못하게 되면서 자격증 취득과 병역지정업체로의 이직을 준비하기 위해 20년 9월 4일 첫 직장에서 퇴사하게 되었다.

orbis namecard
오르비스 에이아이에서 받은 상패. 내 영어 이름은 David 였다.

병역지정업체로 이직하다

첫 직장에서 퇴사한 뒤로 지인의 권유로 헬스케어 스타트업인 위힐드에서 잠깐 프리랜서로 일하면서 학업과 수입을 만드는 것을 병행하였다. 그러던 중 링크드인에서 만난 한 테크 리크루터의 도움으로 여러 병역지정업체를 소개받을 수 있었는데, 그러던 중 매스프레소와 인연이 닿게 되었다. 매스프레소는 병역지정업체이자 동시에 700만 MAU를 달성하고 누적 투자 650억 원을 유치한 교육 분야에서의 유망 스타트업이다. 또한 개발자 수만 약 40명 가까이 되어 유능한 동료와 함께 성장하는 것을 추구하는 나에게 매스프레소는 충분히 매력적인 기업이었다. 그리하여 나는 리크루터분의 도움으로 매스프레소의 채용 프로세스를 밟게 되었고, 1차 서류 검토 이후 3차례의 면접을 본 뒤 얼마 후 매스프레소로부터 오퍼레터를 전달받게 되었다. 그리하여 2020년 10월 5일 매스프레소에 입사하여 개발자로서의 두 번째 커리어를 시작하게 되었다.

나는 매스프레소에서 온보딩으로 홈페이지 개편 업무를 맡았고 내부 기술 스택, 협업 방식을 배우기 시작했다. 매스프레소에선 대부분의 웹 프로젝트에 Next.js 와 Mobx, MST를 적용하고 있었는데, CRA와 Redux 에 익숙했던 나는 새로운 기술들을 배우면서 CSR과 SSR, Redux 와 Mobx 의 특징을 서로 비교하면서 어떤 기술이 어떤 환경에 접목하면 좋은지에 대한 내 지식의 지평을 조금 더 넓힐 수 있었다. 온보딩이 끝나고 나는 매스프레소에서 새롭게 준비하고 있는 실시간 온라인 강의 플랫폼 ‘콴다 클래스’를 개발하는 TF에 소속되었다. 콴다 클래스는 코로나 19로 인해 학원이 문을 닫으면서 학원과 학생 간의 연결이 중단되지 않을 수 있도록 대치동 수준의 학원 강의를 실시간, 온라인으로 제공하는 웹 서비스이다. 콴다 클래스를 개발하면서 나는 Next.js와 MST를 자연스레 이해할 수 있게 되었고 교육 사이트이다 보니 IE11을 지원해야 했기 때문에 브라우저 호환성도 고려하면서 개발할 수 있었다. 또 콴다 클래스는 초기 기획에서 글로벌 확장을 목표했기 때문에 다국어 지원이 필수적이었는데, 이로 인해 나는 콴다 클래스를 개발하면서 localization을 위해 어떻게 전략적으로 접근해야 하는지와 I18n을 다루는 것을 경험할 수 있었다.

비록 2020년에 이곳에서 산업기능요원으로 편입하지는 못했지만, 나보다 먼저 대기하고 있던 분들이 모두 편입에 성공하면서 대기자는 나 혼자 남게 되었다. 2021년에는 더욱 퍼포먼스를 내보이면서 재배정 TO를 내 몫으로 만들 수 있도록 노력하고자 한다.

mathpresso namecard
매스프레소 명함. 이곳에서 내 영어이름은 Peter 다.
mathpresso view
사무실에서 바라본 선릉 전경. 저 멀리 잠실타워가 보인다.

사이드 프로젝트의 시작

나는 회사 업무와는 별개로 사이드 프로젝트로 직접 서비스를 만들어 보는 것을 매우 중요하게 생각하는데, 그 이유는 이론적으로만 알고 있는 개발 지식을 사이드 프로젝트에 접목하면서 깊이 있는 이해를 얻을 수 있기 때문이다. 또한 실제 사용자가 존재하는 서비스를 만들고 발전 시켜 나가는 경험은 회사 업무에도 도움이 되고, 급여 이외의 부가 수익을 창출할 기회를 만들어 삶의 질을 높일 수 있기 때문이다. 그리하여 나는 2020년 초부터 사이드 프로젝트를 경험할 수 있는 대외활동을 찾기 시작했는데, 지인들을 통해 전국 대학생들이 참여하는 IT 동아리가 있다는 소식을 듣게 되었고, 그렇게 SOPT를 알게 되었다. SOPT는 개발뿐만 아니라 기획, 디자인에 관심 있는 대학생들이 참여해 팀을 꾸려 하나의 서비스를 만들어내는 대외활동인데, 나는 평소에 관심이 있던 UI/UX 디자인을 배우면서 사이드 프로젝트를 하고 싶던 마음에 디자인파트로 지원하게 되었고, 2020년 4월 SOPT 26기 YB로 활동을 시작하게 되었다.

큐링 - 모임의 시작

SOPT에서 만난 사람들과 처음으로 만든 서비스는 ‘큐링’이었다. 큐링은 QR코드로 소모임 사람들의 출결을 관리하고 피드백을 받을 수 있는 앱 서비스이다. 기획 의도는 트레바리, 남의 집 등 소모임 단체에서 느끼는 코로나로 인한 모임 준비의 부담을 줄이기 위함이었다. 이 프로젝트를 기획할 당시엔 지금처럼 여러 오프라인 매장에서 네이버 QR코드를 찍지 않고 수기로 방명록을 작성하고 있었기 때문에, 소모임뿐만 아니라 오프라인 매장으로도 사용할 수 있을 것이라 예상하였다. 이 프로젝트를 진행하면서 나는 Xd, Ai, 제플린 등 디자인 툴을 활용하여 앱의 와이어 프레임, GUI를 그리고 개발자에게 전달하는 업무를 맡았는데, 그러면서 사용자에게 더 나은 UX를 제공하기 위해 고민하고 또 개발자의 입장에서 디자이너들과 함께 협업하는 것을 경험할 수 있었다.

2020년 여름에는 앱을 플레이스토어, 앱스토어에 올려서 사용자들을 찾아 나서기도 했었다. 하지만 안타깝게도 우리의 서비스는 실제 사용자들의 니즈를 충족시키지 못한 채 프로젝트를 종료하게 되었다. 이 프로젝트를 통해 깨닫게 된 점은 프로젝트를 처음 시작할 때부터 지속적으로 사용자들을 만나서 피드백을 주고받으며 서비스를 실제 사용자 쓸 수 있도록 만들어나가야 했는데, 그렇지 못했단 것이다. 프로젝트 처음부터 끝까지 사용자와의 교류가 없었고 서비스를 다 만들고 난 다음에야 사용자들을 찾아 나선 것이 사용자의 니즈를 충족시키는 데에 실패한 원인이 된 것으로 생각된다.

비록 첫 번째 프로젝트는 그 마무리가 미약했지만, 함께 프로젝트를 진행한 팀원들과 매우 친해질 수 있었고, 이를 통해 다시 한번 팀원들과 의기투합하여 두 번째 프로젝트를 진행하게 되었다.

qring
서울에 올라와서 처음으로 사귄 친구들. 너희들을 만나게 되서 너무나 감사하다. 새해 복 많이 받자 우리

유니뷰 - 대학교 공지사항 & 학사일정 한눈에 보고, 알림까지!

두 번째 프로젝트는 ’유니뷰‘란 이름으로, 학교 공지사항을 보려면 매번 홈페이지에 접속해서 확인해야 하는 불편함을 해소하기 위해 기획된 앱 서비스이다. 학교 공지사항에는 학생들에게 유익한 정보가 많이 올라오지만, 이를 주기적으로 확인하는 일은 대학생이라면 매우 번거롭다는 데에 대부분 동의할 것이다. 물론 대학 차원에서 대학교 앱을 만들어서 공지사항을 확인할 수 있게 해주는 곳도 있지만, 공지사항이 올라올 때마다 알림을 보내주지는 않는다. 또 나중에 다시 보고 싶었던 공지사항을 찾기 위해 공지사항을 뒤지는 것도 매우 번거로운 일이다. 우리 팀은 이러한 문제를 해결하기 위해 학생들이 주로 관심을 갖는 ‘장학’, ‘공모전, ‘인턴’ 등의 키워드가 포함된 공지사항이 올라오면 푸시 알람을 보내주고, 또 나중에 다시 보고자 하는 공지사항을 북마크 할 수 있는 앱을 만들기 시작했다.

나는 Typescript, Node.js(Express)를 활용하여 API 서버와 배치 서버를 만들고, Firebase FCM을 활용하여 배치 서버에서 주기적으로 푸시 알람을 보내도록 하는 업무를 맡았다. 또 Docker와 AWS를 활용하여 서버를 배포하고 VPC구성 및 LB, EC2 세팅 등의 역할을 맡았다. 최종적으로 유니뷰는 10월 플레이스토어, 앱스토어에 출시되어 현재까지 약 4천 건의 누적 다운로드 수를 달성했다. 유니뷰는 실제 사용자를 유치하는 데 성공하였고 마켓 평가도 좋은 편인데, 이 프로젝트에 참여한 팀원 모두가 대학생이었기 때문에 실제 사용자의 입장을 잘 이해할 수 있었던 것이 좋은 평가를 받는 데 도움이 되었다고 생각한다.

다만 아쉬운 것은 처음부터 공익을 목적으로 기획한 서비스였기 때문에 수익을 만들어내는 단계에 오르진 못 했던 것이다. 서비스를 더 확장하는 것도 고려해 보았지만 함께한 팀원들이 취업을 준비하고 저마다의 길을 걷게 되면서 서비스를 고도화시킬 여건이 마련되지 않았기 때문에 진행되지 못했다. 그렇지만 우리 서비스에 사용자를 유치하는 것까지 달성한 것만으로도 정말 많은 것을 배우고 경험할 수 있었다.

uniview 1
유니뷰 소개 이미지
uniview 2
키워드 알람 기능 소개 이미지
uniview 3
북마크 기능 소개 이미지

롤링페이퍼 - 우리가 만들어가는 이야기

세 번째 프로젝트는 SW마에스트로 10기를 함께 수료했던 사람들과 진행하고 있는 ’롤링페이퍼‘이다. 롤링페이퍼는 온라인으로 롤링페이퍼를 작성하고 공유할 수 있는 서비스인데, 2020년 넥스터즈에서 처음 시작된 이 프로젝트는 SW마에스트로를 수료한 친한 형이 넥스터즈 이후에 주도권을 갖게 되면서 팀이 꾸려지고 지금도 개발되고 있는 프로젝트이다. 2020년 12월의 어느 날 그 형은 나에게 롤링페이퍼를 같이 만들어나가는 것을 제안했고, 나는 이미 꾸려진 팀원들 대부분이 SW마에스트로 연수생 시절 가깝게 지냈던 분들이라 흔쾌히 수락하게 되었다. 그리하여 12월 10일 나는 롤링페이퍼, 정확히는 ’왼손잡이‘팀에 합류하여 본격적으로 프로젝트에 기여하기 시작했다.

나는 롤링페이퍼에 합류하자마자 크리스마스 템플릿을 추가하는 업무를 맡게 되었다. 기존의 하얀 배경을 눈 내리는 배경으로 교체하고 헤더와 푸터에 스크롤 트랜지션을 추가하는 등의 작업이었는데, 기능을 구현하는 것보다도 기존 코드를 이해하고 템플릿을 추가하면서 발생하는 코드의 중복을 최소화하기 위해 리팩토링을 병행하다 보니 어려움이 많았다. 우여곡절 끝에 크리스마스 템플릿은 12월 19일 날 배포가 되었고, 그 이후로 롤링페이퍼 트래픽은 지속적으로 상승하여 12월 31일 기준 DAU 20만 명, MAU 198만 명을 달성하게 되었다. 사이드 프로젝트로 일궈낸 수치라곤 믿기지 않을 정도로 경이로운 기록을 세우게 된 것이다. 나는 우리 팀이 만든 서비스가 아무런 홍보 없이도 사용자들의 입소문에 의해 퍼져나가고 또 종종 인스타그램 스토리에서 보이는 것을 목격하면서 큰 행복감을 느꼈다. 사용자들이 즐겨 쓰며 저마다의 의미를 찾을 수 있는 서비스를 만든다는 것은 참 가슴 뛰는 일이다.

롤링페이퍼는 2021년부터 서비스 고도화를 위한 기반을 다지기 시작할 예정이다. 사용자 인증을 도입해 퍼블릭, 프라이빗 롤링페이퍼를 구분하고, 제휴사 협업 및 결제 시스템을 도입하여 본격적으로 매출을 만들어 낼 준비를 하려고 한다. 지금까지도 엄청나게 빠른 성장을 해 왔지만, 이 속도감을 잃지 않으면서 올바른 방향으로 나아갈 수 있도록 왼손잡이 팀들은 오늘도 각자의 자리에서 제 할 일을 찾아가는 중이다.

rollingpaper
롤링페이퍼 크리스마스 템플릿

자격증 취득

정보처리기사

나는 2020년에 산업기능요원 현역 편입을 희망하고 있었기 때문에, 편입 자격요건을 갖추기 위해 필수적으로 정보처리 기능사 혹은 정보처리기사 자격증을 10월 전까지는 취득해서 12월 말 재배정 TO를 받을 수 있도록 해야 했다. 그러나 내가 8월에 있던 3차 정보처리기사 실기시험 답안을 연필로 쓴 나머지 0점을 받는 바람에 2020년 편입의 꿈은 물거품이 되고 말았다. 경각심을 다시 한번 상기하게 된 나는 첫 직장에서 퇴사한 뒤 본격적으로 정보처리기사 시험을 준비하기 시작했고, 2020년 10월에 있었던 4회차 정보처리기사 실기시험에서 75점을 기록하며 최종적으로 11월 12일 정보처리기사 자격증을 취득했다.

AWS Solution Architect Associate

나는 12월 1일 AWS SAA(C02)시험에 응시하고 곧 바로 합격 소식을 전달받았다. 내가 AWS SAA시험을 알게 된 것은 첫 직장에서 만난 동료분을 통해서였다. 그분은 새로 오신 지 얼마 되지 않았음에도 불구하고 기존 AWS 아키텍처의 문제점을 많은 부분에서 개선해주셨고, 서비스의 가용성과 내결함성을 크게 향상시켜 주셨다. 그분을 통해서 AWS를 많이 배울 수 있었는데, 당신께서 소유하고 계신 자격증이 바로 AWS SAA였다. 나는 당시 그 일로부터 크게 감명을 받았었고, 나도 AWS를 공부해보고 가능하다면 자격증도 취득하고 싶단 생각이 들었다. 그리하여 SOPT에서 만난 친구들 중 AWS에 관심이 많은 친구들과 함께 스터디를 시작했고, 스터디가 끝나갈 무렵 나는 AWS SAA시험에 응시해 자격증을 취득할 수 있었다. 참고로 나는 Udemy에서 인터넷 강의를 듣고 인터넷을 통해 구한 덤프 문제집을 풀면서 AWS SAA시험을 준비했다.

AWS
AWS SAA Certification

부족했던 점

나는 2020년에 0권의 책을 완독했고, 단 2회에 걸쳐 총 6km의 러닝을 하였다. 나는 책을 읽는 것을 좋아하지만, 주로 개발 서적을 읽기 때문에 한 권을 다 읽는 것보단 필요한 부분을 찾아서 보는 편이다. 그러다 보니 2020년에 책을 아예 읽지 않은 것은 아니었지만, 손에 든 책마다 마지막 장을 넘기지 못한 채 책장 속으로 들어가 버렸다. 또 러닝을 좋아했던 나는 2019년 총 17회에 걸쳐 총 54km의 러닝을 하였는데, 서울에서 직장을 다니기 시작하면서 러닝을 포함한 운동 횟수가 현저하게 줄어들었다. 그러다보니 체력이 많이 안 좋아졌고 쉽게 피로하고 지치는 몸 상태가 만들어졌다. 평소 남는 시간에 개발 공부와 사이드 프로젝트에 집중한 나머지 마음의 양식을 채우는 것과 나의 몸을 건강하게 만드는 데에는 소홀히 하고 만 것이다. 그리하여 2021년에는 내가 소홀했던 책 읽기와 운동에 시간을 더 투자할 수 있도록 노력하고자 한다.

2021년

2021년에 나는 어떤 목표를 이루고 싶은지 생각해보았다. 제일 먼저 떠오른 것은 역시 산업기능요원으로 편입하는 것인데, 이는 나뿐만 아니라 회사의 노력도 필요하겠지만 회사에서 현역 TO를 나에게 제일 먼저 제공해줄 수 있도록 나부터 우수한 퍼포먼스를 보일 수 있기 위해 노력하고자 한다.

또 다른 목표로는 진행 중인 사이드 프로젝트에서 매출을 올리는 것이다. 사이드 프로젝트에서 초기 사용자를 유치하였을 때 기분이 정말 좋았는데, 사용자를 유치하는 것에서 나아가 수익을 만들어내게 된다면, 그때 느끼는 감정은 어떠할지 궁금하기 때문이다.

마지막 목표는 나만의 취미를 만들어 보는 것이다. 평소에는 일 끝나고 자격증 공부나 사이드 프로젝트 개발한다고 여유 시간이 별로 없어서 느끼지 못했지만, 이번 연초처럼 시간상으로 조금 여유로워졌을 때 남는 시간을 어떻게 보내야 할지 몰라 어색해하는 나를 발견했기 때문이다. 그리고 그 취미에 관한 내용과 가벼운 일상 주제도 블로그에 조금씩 올려보면 어떨까 생각하고 있다.

벌써 새로운 해가 밝고 하루가 더 지났다. 나는 하루라도 더 빨리 성장해야만 하는 주니어 개발자이지만, 올해는 그 조급해하는 마음을 조금 진정시키고 내가 좋아하는 것들에 조금 더 집중하고자 한다. 빠른 속도로 달리는 기차 안에서는 주위에 핀 꽃들을 관찰할 수 없는 법이니까.