2020년 회고
2020년 2월 경찰이라는 직무를 내려놓고 휴직 카드를 꺼냈다. 일을 하면서 내 적성과 성격에 맞지 않을 수도 있겠다는 생각이 종종 들었고 무엇보다 19년도에 관리자로서의 역량이 충분하지 못한 상사를 만나 많은 고민을 했었다. 겨우 20대인 내가 직원의 역량이 충분하지 못하다는 오만한 평가를 내릴 수 있을지 잘 모르겠으나 적어도 팀의 분위기는 엉망이 되었고 의욕있던 직원들 역시 마지막에 지쳐버렸던 상황을 생각하면 그 평가를 고칠 생각은 없다. 이리저리 방황하던 회의 시간을 떠올려보면 명확한 판단, 평가기준이 세워진 관리자의 중요성을 절실히 깨달을 수 있었다. 하지만 의경대원들을 관리하면서 내 자신을 다시 돌아보는 계기가 되어주었고 휴직으로의 결단을 내리게끔 만들었으니 기억 한켠에 두고 가끔 돌아보는 추억으로 묻을 수 있겠다.
2월 초 휴직계를 내고 서울을 돌아본 감상으로는 도시, 아무 생각없이 걷더라도 동네의 템포 자체가 다르다는 점이다. 직장을 다니면서 잠깐 거주했던 김해 장유도 굉장히 맘에 드는 동네였다. 그런데 서울에 올라와보니 주변 풍경은 그리 차이가 없어도 무언가 바쁘다는 느낌을 지울 수 없었다. 나 역시 그에 맞춰야 한다는 생각이 들었다. 김해에서도 서울에서도 똑같이 공부를 하는데 뭔가 설명하기 어려운 느낌이었다. 이전에 같이 일했던 직원 분께 연락이 왔다. COVID-19로 인해 상사가 더욱 피곤해졌다는 소식이었다. 죄송스러웠지만 괜찮다고 말씀하신다. 나는 인복이 그리 나쁜 편은 아니지 않을까.
3월 본격적으로 COVID-19가 한국에 퍼지면서 그 핑계로 집에서 뒹구는 시간이 많아졌다. 선배가 알고리즘 대회 일정을 알려줘서 풀어봤지만 역시나 결과는 참패. 제작년 선배가 리드했던 알고리즘 스터디에서 수학의 중요성을 알게되어 중등 올림피아드 기초 정수론 교재를 사서 공부하는데 알고리즘 기법을 전혀 공부하지 않았으니 당연한 결과였다.
4월 대학원의 본격적인 학사일정이 시작되면서 대학 때 배웠던 행정학, 법학이 아니라 공학 과목을 듣는다 생각하니 완전히 꺼져있던 학업의 열망이 조금은 켜진 듯 했다. 그리고 2020 코드잼에 참가하였으나 역시 알고리즘 공부를 전혀 하지 않아 18년에 잠깐 공부했던 기법을 떠올리며 코드를 작성해봤지만 Qual round만 통과 후 1round 참패.
5월 본격적으로 동문 선배들과 같이 구상한 안드로이드 사이드 프로젝트 개발에 착수했다. 학교다닐 때 앱 프로젝트를 몇 번 맡긴 했으나 동아리 선배가 하드캐리 해주셔서 버스만 탔던 적이 있다. BoB에서도 개발 프로젝트에 참여했었으나 압도적인 요구사항에 자연스레 손을 놓았으니 처음으로 1인분의 역할을 요구받는 개발 프로젝트라는 점에서 의미가 크다. 역시나 초심자의 행운따윈 없었고 Github 사용에서부터 꼬이기 시작했다.
6월 대학원 1학기 종강이 왔다. 뭔가 익숙치 않은 개념들이 많아 생각보다 받아들이기가 힘들다. 몇 개만 수강했음에도 일정의 피로도가 생각보다 상당하여 강의를 핑계삼아 신나게 게임하며 허송세월을 보냈다.
7월 본격적인 여름이다. 6월에 너무 신나게 놀아서였을까 관성이 작용된 것처럼 초여름에 대한 기억이 별로 없다. 아마 올해 시간을 제대로 쓰지 못했다는 평가는 6, 7월에서 비롯되지 않았나 싶다.
8월 정신을 차리고 사이드 프로젝트에 임하기로 했다. 요구사항에 따라 Serverless 기반 API를 구현하였다. 그리고 API 콜을 받으면 메소드 유형에 따라 AWS Labmda를 연결하여 Lambda에 연결된 Dynamo DB 데이터를 조회, 가공 후 다시 Response에 넣는 방식이다. 처음 볼 때는 엄청 어려웠는데 유데미 강의를 하나 결제해서 빠르게 보고나니 금방 끝낼 수 있었다. 애초에 서버없이 구현된 결과물이고 워낙 모듈화가 잘 되어있는 서비스에 올려만 뒀으니 당연하다. AWS 파트를 허겁지겁 끝낸 뒤 다시 정수론 공부를 시작했다.
9월 학창시절 수학을 싫어해서 의무감으로 공부했었는데 시험성적이 걸려있지 않으니 생각보다 재미를 붙일 수 있었다. 공부한 내용들을 블로그에 정리한 뒤 그제서야 알고리즘을 공부하기 시작했다. 예전에 선배로부터 추천받은 Geeks for Geeks 글들을 번역 후 코드를 공부하면서 블로그에 업로드했다. 안드로이드 프로젝트도 SNS 로그인 기능 구현을 공부할 겸 카카오, 네이버, 구글 로그인을 지원하게끔 만들었다. 그러나 클린 코드에 대해 개념이 잡혀있지 않았고 안드로이드에 대한 몰이해로 인해 생겨난 버그를 미리 발견하지 못하는 바람에 결국 선배가 마무리하는 모양새가 되어버렸다.
10월 추석을 기점으로 대부분의 안드로이드 앱 기능 구현을 끝내자는 요구사항이 있어 본가에 내려간 기간 내내 붙잡고 있었다. Cloudwatch로 정해진 시간에 Lambda 함수를 Invoke 하여 Dynamo DB 데이터를 가공하는 작업이었다. 클라이언트에서 요청하면 데이터를 반환해야 했는데 그 과정에서 또 오류가 발생했다. 백엔드에 대한 경험 없이 직관으로만 설계해왔어서 DB 레코드 각각에 대해 작성하는 시간을 고려하지 못해 발생한 에러였다. 이제까지 테스트하면서 그 점을 고려하지 못했는데 함수 호출 시간을 2분에 1회로 좁히자마자 DB 기록 지연시간과 호출시간이 맞물리면서 오류가 발생했다. DB를 구성한다면 당연히 고려해야 하는 문제일 수도 있지만 내게는 신선한 경험이었다. Protobuf를 사용해 유저 데이터를 관리하는 파트에서도 string 변환 함수에 대한 이해가 부족해 의미없는 삽질을 계속했다. 문제가 발생했을 때 원인이 될 수 있는 요인들을 근본부터 찾아보는 습관을 들여야했다.
11월 약 반년 간 시간을 들인 안드로이드 사이드 프로젝트의 첫 버전을 승진왕이라는 이름을 붙여 마켓에 출시하였다. 개발 총괄을 맡은 구글 재직 중인 선배 덕분에 코드 작성에 필요한 개념들을 많이 배울 수 있었다. 이전까지 요구받은 로직만 간결하게 설계, 작성하고 정상 동작하면 괜찮지 않느냐는 주의였다. 죄송스러울 정도로 피드백을 많이 받았지만 코드의 확장성, 함수화의 정도, 변수 네이밍 규칙, 변칙적인 입력값, 제3자 입장에서의 코드리딩 편의성 등 약 6개월 동안 생각보다 많이 구현하진 못했음에도 혼자 공부했더라면 배우기 힘들었을 내용들을 많이 접할 수 있었다. 안드로이드 푸시알림을 구현하자는 요구사항이 있어서 네트워크 의존 없이 알림을 보낼 수 있도록 구현을 시도했다. 안드로이드 백그라운드 정책이 엄격해지면서 다른 사람들의 코드가 별로 도움이 되지 않았다. 그래도 스택오버플로우를 쥐잡듯이 뒤져서 현재 구글이 권장하는 Workmanager 개발에 참여한 개발자의 컨퍼런스 발표 영상을 찾아 구현할 수 있었다. 이래서 자기 포지션의 컨퍼런스를 많이 찾아봐야 한다고 조언들을 하는 걸까. 그 와중에 또 클린하게 코드를 작성하지 못해 프로젝트에 반영되지 못했다. 막상 작성할 땐 깔끔하다고 생각했는데 막상 피드백을 받고 다시 읽으면 개선할 점이 보이는 걸 생각하면 아직 좋은 개발자가 되기엔 멀기만 하다.
12월 파이썬 알고리즘 인터뷰라는 책을 추천받아 공부를 시작했다. 한 달 내내 나름대로 몰입을 해봤더니 목표치를 달성하지 못했으나 나쁘지 않게 진도를 나갈 수 있었다. 승진왕 제작 팀과의 회의에서 설치 횟수 500회 자축과 함께 앱의 발전 방향과 추가로 구현할 내용을 논의했다. 병행이 힘들 수도 있지만 21년도 하반기에는 IT회사로의 이직을 염두에 두고 있으므로 포트폴리오로 활용할 수 있어야 하는데 1인분을 할 수 있을까 불안하다. 휴직 1년차를 돌아보면 19년도와 비교했을 때 실망할 수준은 아니지만 좀 더 발전할 여지가 있었음은 분명하다. 내년에는 20년도의 나와 비교하면서 작년보다 낫다고 스스로 평가할 수 있게끔 노력해야겠다.