2022년 회고

2022년 회고

덕업일치를 이루니 워라블이 아주 잘 맞더라

이제 사회생활 11년 차다.

개발자로서는 이제 경력이 만 2년이니 3년 차다.

그동안의 행적을 정리하고 앞으로의 목표를 정하며 2022년 회고를 한번 작성해본다.

정말 천직을 찾았구나!

집이 정말 가난해서 중학생 때 군대에 가지 않고 돈을 벌겠다고 생각했고, 방법을 알아보던 중 산업기능요원, 그러니까 병역특례 혹은 병특이라고 알려진 제도를 알게 됐다. 이 제도를 이용하기 위해 준비했고, 산업기능요원으로서 20살에 사회생활을 시작할 수 있게 되었다. 직장에선 쉴 틈 없이 일해 돈을 벌고, 퇴근 후엔 취미를 즐겼다. 나에게 직장은 단순히 생활을 영위하기 위해 돈을 벌러 가는 곳이었을 뿐이다. 이 시기의 나는 워라밸을 추구했었다.

20대 중후반에는 내 평생의 꿈 중 하나를 성취할 수 있었다. 어릴 때부터 이사를 워낙 많이 다녔기에 이사를 하는 게 정말 지긋지긋해서 내 집을 갖는 게 평생의 소원 중 하나가 되었는데, 다행히 사회생활을 일찍 시작한 만큼 돈을 차곡차곡 모아서 대출을 끼고 내 집을 마련할 수 있었다. 언젠가 등본을 뗐는데, 장표가 많이 나오길래 뭔가 하여 보니 모두 이사기록이었고, 내가 이사를 한 횟수가 20번 가까이 되었던 기억이 난다… 😩

2020년에 갑자기 어머니가 장의 1/3가량을 절제하는 큰 수술을 하게 되셨다. 다니던 직장을 그만두고 서울로 올라왔다. 당시는 코로나가 한참 난리였던 시기여서 보호자 신분으로 어머니와 함께 병원에 들어간 후 2개월 가까이 밖으로 잘 나오질 못했다.

그리고 이 사건은 내가 개발자로 직종 전환을 하게 된 가장 큰 계기가 되었다.

병원에서 갑자기 큰 수술을 하게 되어 누워계신 어머니와, 아픈 많은 사람을 보면서 정말 많은 생각이 들었다. 병실의 밤은 마치 온 세상에 죽음이 깔린 느낌이었으며, 이런 상황에 쳐해지니 돈만 보고 살아온 그동안의 10년 가까운 내 세월이 덧없게 느껴졌다. 막말로 나도 출퇴근하다 갑자기 교통사고를 당해 죽으면 내 수중에 돈이 얼마가 있던 아무런 의미가 없지 않겠는가?

병원에서 퇴원한 후 나는 다시 직장을 구해야 했는데, 이때 내 관심사는 단 하나였다. “내가 즐겁게 할 수 있는 일을 내 직업으로 가져야겠다.” 나는 평생을 취미생활이 직업이 되면 그조차 재미가 없어지고 말 것이라고 생각을 해온 사람이었는데, 이 시기의 나는 이 생각을 뒤집고 재미있는 일을 하고 싶었다. 근데 진심으로 내가 뭘 좋아하는지 나조차도 알 수가 없어서 어떤 직업을 골라야 할지 알 수 없었다. 그래서 한참을 궁리한 끝에 여러 가지 검사들을 해봤다. 심리검사, 적성검사, 직무검사 등을… 내 스스로를 모르겠다면 검사를 받으면 된다고 생각했다. 모든 검사 결과의 교집합에 추천 직업으로 개발자라는 직종이 있었고, 나는 그 즉시 C언어 책을 하나 사 들고 공부를 시작했다. 사실 모든 과정이 굉장히 미심쩍었는데, 막상 코딩을 시작해보니 정말 재미있어서 금방 결정할 수 있었다.

공부는 어떻게?

학원은 다 사짜였다. 딱 봐도 제대로 아는 게 없어 보이는 사람들이 강의하고 있는 곳이 많았다. 나는 사회생활을 오래 한 만큼 사기꾼(?) 같아 보이는 사람들을 보는 즉시 알 수 있었다.

그래서 그냥 독학했다. 책, 인터넷 강의의 도움을 많이 받았다. 개발 관련 자료들은 인터넷에 무료로 모두 풀려있었고, 이를 제대로 이해할 수 있는 기본기만 갖출 수 있으면 되었다. 책이나 강의를 보면서 내가 보고 들은 한 문장에 내가 제대로 이해하지 못하는 단어가 단 하나라도 있으면 그 단어부터 다시 찾아보러 갔다. 내가 생각하기에 공부할 때 가장 중요한 것은 메타인지다. 자기 객관화, 내가 알고 있는 게 제대로 알고 있는 게 맞는 것인지 등을 객관적인 시선으로 바라볼 수 있어야 한다. 그리고 사실 공부고 자시고 할 것도 없는 게 그냥 엄청 재미있어서 이것저것 닥치는 대로 다 보고 닥치는 대로 다 코딩했다.

돌이켜보면 이때 한 공부량을 고등학생 때 했으면 최소 서성한 라인 정도는 그냥 갔지 않았을까 싶긴 하다. 물론 나는 수능이란걸 봐본적이 없는 녀석이기 때문에 헛된 망상에 가까울 것이다. (ㅋㅋ) 아무튼 이때 제일 어려운 건 영어였고, 영어로 된 문서들은 번역기의 도움을 받아 가면서 봤다. 영어를 더럽게 못 하니 굉장히 지루하고 어렵고 힘든 일이었는데 그래도 피하지 않으려고 했다. 당장 힘들어도 영어에 익숙해지는 게 장기적으로 좋다고 생각했다. 이 생각과 행동원칙은 아직도 계속 유효하다.

첫직장 회고

21년 2월 1일에 개발자로서 첫 회사에 취업하게 되었다. 회사는 굉장히 안정적이고 보수적이었다. 사실 개발팀은 그렇게 보수적이라고 느끼진 않았는데, C 레벨의 성향이 보수적이었고, 이게 회사의 운영방침이 되었다. 워라밸은 칼같이 지켜졌고, 업무는 한가했다. 그래서 자기 계발에 많은 시간을 할애할 수 있었다.

이때 내가 가장 크게 성장을 했다고 생각하는 것은 내가 한가한 시간에 계속 진행한 코드 카타다. 코딩을 훈련처럼 하는 것인데, 간단한 주제와 무지막지하게 빡빡한 코딩 규약을 정하고 이에 맞게 코딩을 진행한다. 그리고 코딩을 마치면 작성한 모든 코드를 폐기하고 처음부터 다시 작성한다. 단, 이전에 진행했던 방식과는 차별화된 방식을 생각하고 적용해야 했다. 위의 순서를 계속 반복한다.

나는 이 훈련을 몇 달 동안 반복하면서 간단한 CRUD를 할 수 있는 게시판 API와 테스트 코드를 10분 이내에 모조리 구현할 수 있을 정도로 자바 코딩에 능숙해질 수 있었고, 실패에 대한 두려움을 없앨 수 있었다. 실패에 대한 두려움이란 이런 거다. 내가 아무것도 없는 빈 프로젝트에서 어떤 것을 개발해야 한다고 상상해보자. 나는 아무런 부담감 없이, 거리낌 없이 개발을 즉시 진행할 수 있을까? 나는 더 아름다운 코드를 작성하고 싶은 욕심에 코딩을 시작조차 못 하는 상황을 많이 겪어왔고, 훈련 끝에 이 욕심을 버릴 수 있게 되었다. 아름다운 코드는 테스트 코드와 리팩토링으로 추구할 수 있다는 것을 알 수 있게 되었다. 그리고 테스트 코드를 작성할 수 있는 코드란 것은 이미 그 자체로 훌륭한 설계가 뒷받침된 것임도 알 수 있게 되었다.

그리고 비전공자인 만큼(사실 전공이랄게 없다. 고졸이니까.) KOCW와 책을 통해 운영체제, 네트워크, 데이터베이스, 자료구조 등의 컴퓨터 과학 기본기에 계속 시간을 투자했다. 겸사겸사 이때 정보처리기사도 취득했다. 정보처리기사의 경우 막 개편된 시점이었는데 이때 합격률이 3%였다. 목적이 자격증을 취득하는데 있지 않았고, 그냥 기사 자격증(조건이 4년제 졸업인 자격증이므로)의 필기과목을 다 씹어먹으면 전공자 뒤꽁무니에라도 비벼볼 수준은 되지 않을까? 였다. 그리고 이 정도 되면 자격증은 그냥 따라오는거라고 생각했고, 이 생각은 유효했다. 정보처리기사 필기 과목을 빡세게 공부한 후 적어도 내가 뭘 모르는지 정도는 아는 상태가 됐다고 생각한다. 막히면 어떤 키워드로 검색해봐야 하는지 알게 됐다. 이 시기의 나는 회사에서는 회사 업무에 충실하고(이때 리팩토링, 디자인패턴을 실무에서 많이 연습해볼 수 있었다), 퇴근 후에는 CS와 코드 카타를 병행하는 삶의 나날이었다. 재미가 없었다면 계속할 수 없었을 거다.

첫번째 이직

그동안 쌓아온 개발 실력과 업무 능력을 팀장님께 인정받아 연봉이 천만원 이상 올랐다. 우리 회사에서 굉장히 이례적인 일이었고 이때 회사에 여러 가지 말이 많았던 걸로 안다.

근데 결국 작년 중순에 현 직장으로 이직했다. 이유는 아주 단순했다. 다니고 있던 회사는 성장에 대한 열망이 없다고 느꼈기 때문이다. 돈은 물론 중요하고 다다익선이지만, 나한테 이제 돈은 사실 내가 먹고 싶은 거 먹고, 사고 싶은 거 부담 없이 살 수 있을 정도만 받으면 더 욕심을 부릴만한 가치가 없는 그런 것이였다.

나는 오늘의 나보다 내일의 내가 조금이라도 더 나아질 거라 믿고, 성장에서 오는 재미에 중독되어있었다. 이제 직장은 나한테 자아실현, 지적성장의 장이었다.

근데 내가 아무리 성장을 해도 회사의 성장이 정체되면 나의 성장도 둔화될 수밖에 없다. 내가 다니던 회사는 안정적이었고, 보수적이었다. 대부분의 임직원이 공무원처럼 일하는 곳이었다. 업무는 치열하지 않았고, 워라밸은 철저하게 지켜졌다.

즉, 도전의 기회가 없었다.

이게 나쁘다는 게 아니다.

단지 나한테 잘 맞지 않았을 뿐. 도전이 없다면 실패도 없고, 실패가 없다면 성장도 없다. 개개인이 성장하지 못하는데, 회사가 성장할 수 있을까?

지금 다니는 회사에 오게 된 계기는 사실 별것 없었다. 오픈 카톡방에 HR 직군에 종사하시는 어떤 분이 주기적으로 채용 홍보를 했는데, 마침 이직 생각을 하고 있었어서 그냥 별생각 없이 지원서를 넣어봤었다. 어떻게 어떻게 프로세스가 진행되고 첫 면접을 보게 됐는데, 애초에 아무 생각 없이 지원했기에 첫 면접도 사실 준비를 아예 하지 않았다. 면접도 그날 퇴근 후 회사 근처 카페에 가서 대충 노트북 열고 봤다. 애초에 그냥 면접이나 한번 봐보자는 생각이었기 때문에… 그리고 이때 첫 면접관으로 들어오신 분이 쿠팡을 다니시던 시니어 개발자분이셨다. 현재는 함께 일하고 계신 동료 개발자중 한분이시다.

나는 사실 여태 시니어 개발자라는 존재에 대해 아무런 의미를 두지 않고 살아왔다. 내가 나를 잘 통제해내면 내가 잘하는 건 상수지만, 다른 사람이 나에게 어떤 도움을 준다거나 하는 것은 내가 통제할 수 없는 변수기 때문에 애초에 남의 도움이란 없는 거다 라는 게 내 가치관이었고 그렇게 살아왔기 때문이다. 그러니까, 어차피 성장은 결국 내가 노력해야 이뤄지는 것이라 생각해왔고, 시니어 개발자가 주변에 있건 없건 결국 나만 잘하면 성장은 지속할 수 있는 것이라고 생각했다.

이런 생각을 갖고 있었는데 첫 면접에서의 임팩트가 대단히 컸다. 그러니까, 주변에 시니어 개발자가 있건 없건 사실 아무런 의미가 없다는 마인드였는데, 이 시기를 기점으로 훌륭한 시니어 개발자가 주변에 있다면 그것은 아주 좋은것이라고 생각이 바뀐 셈이다.

첫 면접을 마치고 최종면접이 남았는데 CTO님과 첫 면접에서 만난 개발자분이 들어온다고 하셨다. 나도 이 최종 면접은 준비를 꽤 많이 했다. 첫 면접에서의 임팩트가 강렬했고, 첫 면접에 나오셨던 분도 CTO님과 면접을 보고 쿠팡을 나와 여기로 오게 되셨다고 하여서 회사와 개발팀에 관심이 많이 생겼기 때문이다. 결국 최종면접도 굉장히 느낌이 좋았다. 다행히 사측도 생각이 비슷했는지 가부가 금방 나왔고 나도 입사하기로 결정하였다.

근황

현재 회사에 근무한 지 이제 5개월이 지났는데, 정말 많은 도전을 하고 있다. 내가 작업한 것 하나하나가 내 눈에 보이고 내가 체감할 수 있을 정도의 임팩트를 만들어내고 있다. 하루하루가 즐겁다 보니 요즘은 아예 워라블을 추구하고 있다.

워라블이 무엇이냐? Work Life Blending, 즉 일과 삶의 경계가 없어지는 거다. 이렇게 말하면 그냥 일만 하는 것처럼 느껴질 수도 있겠다 싶긴 한데 전혀 그렇지 않다. 왜냐하면 그냥 개발 자체가 재미있기 때문이다.

오히려 근무 시간에도 쉬거나 놀고 싶으면 즉시 일에서 손을 떼고 카페에 가서 쉬다 온다거나 산책한다거나 한다. 회사에서도 아무런 터치를 하지 않는다. 어디 놀러 가서도 개발이 하고 싶으면 그냥 그 자리에서 노트북을 열고 개발한다. 밤이든 주말이든 새벽이든 개발이 하고 싶으면 그냥 개발하고, 놀고 싶다면 놀고, 쉬고 싶다면 쉰다. 원래는 내가 관심 있는 분야에 관한 공부를 하거나 코드 카타를 하고 깃허브에 코드를 올렸는데, 이제는 회사 코드를 개선하고 Pull Request를 연다. 훈련은 충분히 해왔고, 이제 훈련의 성과를 실무에서 보일 차례다.

일과 삶이 분리된 생활, 즉 워라밸을 추구할 때는 일하는 시간이 그저 시간을 낭비하는 것이라고 생각했었다. 회사는 출근하자마자 퇴근이 하고 싶어지는 곳이었다. 햄스터가 매일매일 쳇바퀴를 돌듯이, 직장은 나에게 이와 같았다.

하지만 지금은 전혀 그렇지 않다. 덕업일치가 이뤄지고 나니 워라블을 추구하는 삶이 지금 나한테는 아주 잘 맞는 것 같다.

올해의 목표

우선 회사의 기술 부채를 청산하는 작업을 올해 안에 마무리는 못 하겠지만 그래도 끝이 보일 정도까지는 진행하고 싶다. 회사가 시리즈 B까지 쉴 틈 없이 달려온 만큼 그동안 쌓아온 기술 부채가 굉장하긴 하다. 기술 부채가 어느 정도냐면, 내가 입사 후 2개월 동안 손댄 것만으로 월 서버비가 2천만원이 넘게 줄었다. 내가 뭐 대단한걸 한 게 아니다. 그냥 깨진 유리창 위에 쌓여있는 쓰레기들을 좀 치웠을 뿐이다. 단지 그 쓰레기가 워낙 많아 쓰레기를 좀 치운 것만으로도 굉장한 임팩트를 냈을 뿐이고. 그리고 사실 이 기술 부채를 개선하는 건 내 기술적인 역량으로나 멘탈적인 측면으로나 전혀 힘들고 고된 일이 아니었다. 오히려 내가 오를 산이 있음이 좋고, 산을 올랐을 때 느낄 성취감이 기대마저 된다. 역경과 고난이 큰 만큼 성취감도 비례해서 커지는법 아니겠는가?

두번째로는 개발팀을 정상으로 되돌리는것이다. 현재 CTO님 입사 시기를 기준으로 이전에 계시던 개발자분들과 이후에 입사하신 개발자분들간의 괴리감이 상당히 크게 느껴지는데, 심적으로 나를 괴롭히는것은 타성에 젖어온 기존 개발팀의 개발문화다. 깨진 유리창 하나를 고쳐도 다른데서 여러개의 유리창이 또 깨진다면 그만큼 지치는게 없다. 빠르게 개발을 해야하는것과 코드 퀄리티를 지키는것. 이 사이의 밸런스를 잡는다는게 물론 굉장히 어려운 일임은 너무 잘 알고 있다. 하지만 여지껏 빠르게 개발을 하는데만 치중해왔기 때문에 이제는 더 이상 빠르게 개발을 할 수 없는 상태다. 일정조차 예측할 수 없다. 코드를 이해할 수 없으니까. 그리고 빠르게 개발을 하는 데에만 집중해왔기 때문에 이에 대한 타성에 젖어있다. 요즘은 “빠르게 개발하려면 퀄리티 포기하는 게 너무 당연한 거 아니냐? 시간을 더 주던가!” 라는 느낌마저 들 정도긴 하다. 어느정도 이해되는 입장이긴 한데, 기본적으로 개발자는 자신의 코드에 프라이드가 있어야 한다고 생각한다. 당연하게 여기는 것과 어쩔 수 없이 선택하는 것은 아예 다른 차원의 얘기라고 생각한다. 본인이 유리창을 계속 깨왔고 계속 깨고 있으면서 막상 개발해야 할 때가 오면 “유리창이 너무 많이 깨져있어 개발이 오래 걸릴 것 같습니다. 개발이 언제 끝날지 알 수 없습니다.”라고 하는 것은 굉장히 무책임한 행동과 발언들이라고 생각한다.

개발자는 기본적으로 회사에서 개발 업무를 하지만, 그 근본은 비즈니스다. 그리고 비즈니스는 항상 Cost vs Benefit이다. 개발자의 인건비, 서버비, 사무실 임대료 등 그냥 자연스레 흐르는 시간의 흐름만으로도 회사는 막대한 비용을 지불하고 있다. 한 팀에 연봉 3천만원을 받는 직원이 5명만 있어도 하루에 약 52만 원 정도의 지출이 발생한다. 어떤 기능 하나를 개발하기 위해 5일이 걸렸다면 회사는 약 260만원+@의 비용을 지불한 셈이다. 그러니까, 때로는 기능을 개발하지 않는 게 더 이득일 수도 있다는 소리이다. 왜? 이렇게 막대한 비용을 들여 기능을 개발했는데 막상 돈은 벌지 못하는데도 불구하고 오히려 해당 기능을 유지보수하기 위해 인력이 투입되는 경우도 많기 때문이다.

개발자라고 마냥 개발만 하지 말고 비즈니스를 알아야 한다. 정말 개발할만한 가치가 있는 것인지, 이것을 개발하면 최소 내 인건비라도 건질 수 있는 일인 것인지, 그럼에도 불구하고 개발해야 한다면 최대한 빠른 기간 안에 정말 필요한 스펙만을 정의해 개발에 들어가야 한다. 일정이 부족하다고 느낀다면 왜 일정이 부족한 것인지 동료들을 설득할 수 있어야 한다. 이러한 고민 없이 그냥 “일정이 촉박해요. 불가능해요.” 혹은 “일정이 부족하니까 돌아가게 만이라도 개발해야지” 같은 태도가 즉시 나온다면 그것은 일을 제대로 잘못하고 있는 것이다. 경력이 쌓일수록 이러한 자세와 스킬이 더더욱 중요해진다고 생각한다.

큰 목표는 이정도들이고, 요즘은 테스트코드를 작성하고 코드리뷰를 잘 할 수 있게끔 시스템을 구축하고 개발 문화를 정착시키고 있다. VCS 플랫폼을 깃허브로 통째로 이전해왔고, 각종 자동화를 추가하고 있다. 그리고 깨져있던 모든 테스트를 고치고 코드 스타일을 통일시켰다. 이제 PR을 열면 PR의 제목이 형식에 맞는지, 신규 개발로 인해 테스트가 깨지진 않았는지, 코드 스타일이 안맞지는 않는지, 앱이 제대로 실행이 되기는 하는건지 등을 모두 자동으로 체크한다.

그리고 방치되어있던 젠킨스를 청소하고 버전을 LTS로 올리고 각종 job을 작성하고 젠킨스 유저들의 권한을 재정립했다.

마지막으로, 모든 데이터베이스의 쿼리 통계를 기록하도록 변경하고, 슬로우 쿼리를 모니터링하며 쿼리 튜닝을 꾸준히 진행하고 있다.

그동안 해왔던대로, 누군가가 또 다시 별 생각없이 유리창을 깨지 않게끔, 그게 깨서는 안되는 유리창임을 인지할 수 있게끔 계속 감시하고 목소리를 내고 있다. 그래서 최종적으로 코드 레벨과 서비스 품질이 더이상 떨어지지 않게끔, 더 좋아질 수 있게끔 노력하고 있다. 이렇게 돌이켜보니 현재 나라는 놈은 아마 현재 우리 개발팀에서 꽤 피곤한녀석으로 느껴지고 있지 않을까 싶기는 하다. 정말 그렇다면 마음 아픈 일이겠지만, 내가 인상 깊게 봤던 어떤 드라마에서 나온 대사를 되새겨본다.

내가 매일 보는 동료들이, 내 옆의 완전 보통 사람들이 이러는 게, 난 이게 더 안 돼요 이게. 받아들이는 게. 저 사람들이 죄다 처음부터 저랬겠어요? 하다 보니까, 되니까 그러는 거예요. 눈감아주고 침묵하니까. 누구 하나만 눈을 제대로 부릅뜨고 짖어주면 바꿀 수 있어요.


© 2022. All rights reserved.