개발자는 유독 다른 직업에 비해 끊임없이 공부하고 성장해야 한다는 인식이 강하다. 탁월한 실력을 갖춘 개발자가 되려면 알아야 할 영역이 방대한 데다가 새로운 기술이 등장하는 주기가 너무 빨라서 평생 공부를 놓지 않아야 한다는 것이다.
업무 시간에는 보통 일을 쳐내느라 바쁘니 결국 여가 시간을 활용하여 개발 공부를 하는 경우가 많다. 자신의 역량을 키우기 위해 업무 시간 외에 공부를 한다는 게 아무나 할 수 있는 일은 아니다. 인터넷에 돌아다니는 ‘진짜 무서운 직장인들 특징’을 보면 ‘출근 전 새벽 운동하는 사람’, ‘퇴근하자마자 바로 씻는 직장인’, ‘매일 브이로그 찍고 편집하는 직장인’과 같은 항목이 있다. ‘업무 시간 외에 따로 업무 관련 공부를 하는 직장인’이 이보다 더하면 더했지 덜하진 않은 듯하다.
저 연차 개발자일수록 낯선 업무에 빠르게 적응하고 소속된 조직에 기여하기 위해 더 부지런히 공부를 해야 한다. 저 연차 개발자라면 개발자보다는 소위 ‘코더coder’에 가까울 확률이 높기 때문이다. 개발자(또는 프로그래머)란 적어도 두세 가지 언어를 능숙하게 다룰 줄 아는 사람, 다른 사람이 파악하기 쉽고 유지와 보수가 쉽게 코드를 작성할 줄 아는 사람, 알고리즘 지식을 활용하여 보다 정교한 형태의 코드를 만들어낼 줄 아는 사람이다. 반면 코더란 간단히 말하면 코드를 작성할 수는 있지만 개발자만큼의 역량은 갖추지 못한 사람이다. 한 가지 언어만 사용할 수 있으며 기본적인 컴퓨터 과학 지식이나 알고리즘 지식이 부족하다. 그래서 코더에게는 주로 어렵지 않은 코딩 작업만이 주어진다. 코더에서 개발자로 도약하려면 공부 말고는 답이 없다.
좋은 소식은 적어도 개발자로서 일을 하기 시작한 사람이라면 천성 자체가 새로운 것을 배우는 데 거부감이 없으리라는 것이고, 나쁜 소식은 기계가 아니고 피가 흐르는 인간인 이상 언젠가는 지칠 수 있다는 것이다. 처음에는 새로 배우고 깨닫는 것 자체가 재밌겠으나 주야장천 공부하다 보면 번아웃의 수렁은 필연적이다. 실제로 수많은 현직 개발자들이 꾸준히 공부해야 한다는 압박을 개발자의 단점으로 꼽기도 한다. 아마 나 또한 평생 공부를 감당하기 어려운 평범한 개발자인 것 같다.
처음 입사했을 때 친한 연구실 선배와 팀을 이루어 윈도우Windows 응용 프로그램을 개발하게 되었다. 어찌어찌 코딩을 하다 보니 제 기능을 하는 프로그램이 만들어지긴 했다. 내가 짠 대로 프로그램이 돌아가니까 ‘이 정도면 나도 나름 쓸 만한 개발자인가 보다.’라고 믿었다.
하지만 프로그램의 간단한 기능을 구현하는 일은 코더도 할 수 있다. 대신 그 코드는 구성 요소들이 복잡하게 엉켜 알아보기 힘든 ‘스파게티 코드’일 테다. 개발자는 같은 기능이라도 더 깔끔하고 정교하게, 그리고 더 큰 그림을 그려가며 구현할 수 있다. 게다가 개발자의 결과물은 코더의 결과물보다 더 빠르고 안정적인 법이다. 애초에 생각이 틀려먹었다. 나는 ‘나름 쓸 만한 코더’였을 뿐이었고 여기서 더 공부를 해 진짜 개발자가 되어야 한다는 사실조차 인지하지 못했다.
그렇게 우물 밖 세상이 있는 줄도 모르는 개구리로 1년여를 보내다가 제법 연차가 되는 시니어 개발자가 입사하면서 내 시야도 넓어졌다. 함께 개발 스터디를 한 덕분에 언어 자체에 대한 지식은 물론이고 이전에는 어렴풋이 알거나 존재조차 몰랐던 개발 관련 지식들을 알게 됐다. 이때 접한 ‘객체 지향’, ‘디자인 패턴’, ‘유닛 테스트’, ‘리팩터링’, ‘클린 코드’ 등의 키워드들은 코더에서 개발자로 나아가기 위해 반드시 알아야만 하는 것들이었다.
개발 스터디를 하면서 다른 사람의 발표에서 배우고, 내가 발표 준비를 하면서 또 배우고, 배우다 보니 재밌어서 더 공부하는 나날이 이어졌다. 공부한 내용을 실제로 업무에 활용하여 코드를 짜고 나면 그 기쁨과 성취감은 이루 말할 수 없었다. 이때는 진심으로 개발 공부가 재밌었다. 퇴근 후에도 공부를 놓지 않았고 잠에 들 때면 어서 일어나 출근하고 싶을 지경이었다. 더 열심히 공부하고 역량을 키워서 인정받는 개발자가 되고 싶었다. 물론 기업들이 능력 있는 개발자를 어떻게든 ‘모셔’가려는 분위기도 한몫했지만.
그런데 우물 밖 세상은 자못 컸다. 개발 공부를 하면 할수록, 영향력이 큰 일을 하면 할수록, 알아야 할 건 많아 보였고 내 부족함은 더 거대해 보였다. 각종 프로그래밍 언어나 개발 도구들이 변화하고 개선되는 걸 꾸준히 추적해야 할 것만 같고, 더 좋은 코드를 짜기 위해 컴퓨터 구조, 운영체제, 네트워크, 알고리즘 공부도 놓을 수 없을 것만 같고, 코드를 잘 설계하고 작성하는 것 이상으로 조직의 비즈니스를 파악하고 최종 결과물의 퀄리티를 고려할 수 있는 역량을 갖추어야 할 것만 같았다. 내 욕심으로 설정한 좋은 개발자의 기준에 압도당할 때쯤 아내와 함께 와인바 프로젝트를 시작했다.
막상 와인바를 차리고 보니 이 일도 ‘제대로’ 하려면 신경 써야 할 게 한둘이 아니었다. 와인의 세계도 워낙 방대해서 지식을 갖추자면 한도 끝도 없이 파고들어야 한다. 포도 재배부터 와인 양조 과정까지 뭐 그리 복잡한 것이며 와인 생산지와 포도 품종은 왜 이리 많은 건지 머리가 지끈거릴 지경이다. 한편 수입사들은 계속해서 새로운 생산자를 발굴하고 새로운 와인을 출시한다. 이미 거래 중이거나 잠재적 거래처라 여기는 수입사들만도 두 손으로 세기 힘든데 설상가상으로 신규 수입사가 갑자기 등장하기도 한다. 내추럴 와인의 전 세계 시장 점유율은 3%에 불과하다는데 내 눈에는 선택지가 이미 차고 넘친다. 우리 가게의 와인을 손님에게 어떻게 소개하고 설명해야 할지도 중요한 고민거리다. 정리해 보니 개발자로서 했던 고민과 별반 다르지 않다. 그래서인지 고민의 끝도 비슷하다. 내가 이 모든 걸 똑바로 해낼 수 있을지 별로 자신이 없다.
그리고 자영업자에게는 일이 곧 삶이고 삶이 곧 일이다. 개발자로서 업무 시간 외에 공부하는 걸 대단한 것처럼 이야기했지만 자영업자는 원래 업무 시간과 여가 시간의 경계가 흐릿한 법이다. 월급 받는 직장인이라면 적어도 퇴근 후에는 ‘오프 모드’로 마음 놓고 지낼 수 있겠지만 자영업자는 모든 게 자신의 일이자 책임이기에 쉽사리 그렇게 하지 못한다. 결국 가게에 나가 있는 동안에는 영업 준비를 하고 손님을 맞고 마감을 할 테고, 집에 돌아와서는 다음 영업 준비를 하고 위에서 말한 고민거리를 조금씩이라도 풀어보려 애쓰게 된다. 이 일도 정말 만만치 않다.
내 앞에는 프로그래밍과 와인이라는 두 마리 토끼가 있다. 문제는 두 마리 토끼 모두 굉장히 잽싼 데다가 힘도 좋아 어지간해서는 잡히지 않는다는 점이다. 이미 한 마리 토끼를 잡는 것마저 어렵다고 느낀 주제에 두 마리 토끼를 동시에 잡겠다는 발상은 당연히 어불성설이다. 죽을 각오로 모든 것을 쏟아붓는다면 불가능하지는 않을 텐데 나는 그 정도로 열심히 살 만한 위인이 아니란 걸 스스로 잘 알고 있다.
이러면 마치 답이 없는 문제 같지만 알고 보면 답은 간단하다. 토끼를 잡겠다는 결심을 깔끔하게 버리고 토끼들과 적당히 놀아 주면서 살면 된다. 토끼가 시야에 없어도 그러려니 하다가 필요할 때면 어디 숨었는지 찾아서 잡을 듯 말 듯 노는 것이다. 애당초 토끼 두 마리 모두와 놀아 주는 것만으로도 충분히 힘들다. 토끼들에게 아예 무관심으로 일관하지만 않으면 된다. 그렇게 살기로 결심한 지 벌써 1년이 다 되어 간다. 회사에서든 가게에서든 내 힘을 120% 발휘하는 게 힘들어서 그렇지 양쪽에서 100%만큼 쓰는 데는 의외로 별 무리가 없다.
그럼에도 본업인 개발자로서의 커리어가 못내 신경이 쓰이는 건 어쩔 수 없다. 개발자로서 그릇을 키울 수 있는 ‘골든타임’을 흘려보내고 있다는 걱정도 든다. 이미 내 성장 곡선은 완만해질 대로 완만해져 버렸다. 내가 말한 100%는 주어진 업무를 빈틈없이 잘 처리하는 것. 물론 업무만으로도 성장할 수는 있다. 그러나 어떻게든 결과물을 내야 하는 상황에서 새로운 것을 배우고 시도할 만한 여유는 부족하기 마련이다. 분명 연차에 따라 기대하는 바가 있고 그에 걸맞은 실력을 제때 키워 놓아야 좋은 대접을 받을 수 있는데 내가 그러고 있나 의문이 든다. 우리 회사에 경력직으로 지원한 개발자들이 연차에 비해 이력과 코드가 미흡하다며 인터뷰조차 보지 못하고 탈락하는 걸 눈앞에서 봤기에 더더욱 생각이 깊어진다.
이쯤에서 근본적인 질문은 개발자로서 얼마나 더 커리어를 이어갈 것인지일 텐데 이에 대한 답을 아직은 명쾌하게 내리지 못했다. 그래서 회사 동료가 5년 뒤에는 어떤 개발자가 되어 있을 것 같냐고 물어볼 때면 조금 당혹스럽다. 질문을 바꾸어 5년 뒤에 무슨 일을 하고 있을 것 같냐고 물어도 여전히 당혹스러울 듯하다. 솔직히 나도 내가 무슨 일을 하고 있을지 잘 모르겠다. 프로그래밍에서 느꼈던 열정과 흥미를 되찾을 수 있을까? 아니면 여기서 느닷없이 커리어를 틀어야 하나? 만약 그럴 거면 어느 방향으로 틀어야 하나? 만에 하나 와인바가 대박이 나더라도 요식업에 몇 년을 더 몸담는 건 잘 상상이 안 되는데? 스물여덟의 제이지Jay-Z, 서른의 하루키를 떠올려 보기엔 이제 내 나이가 더 많다. 원래 직장인 3년 차 정도 되면 많이들 ‘현타’를 겪는다던데 나도 예외가 아닌가 보다.
이런 글 쓸 시간에 코딩 공부 하나, 와인 공부 하나라도 더 하는 게 맞겠지만 이렇게라도 기록을 남겨야 머릿속이 정리가 된다. 솔직히 말하면 코딩보다 글쓰기가 더 재밌고 편하다. 한국 사람이라면 C++이나 파이썬보다 한국어가 더 편한 게 당연하지 않나. 나 자신을 두고 평범한 개발자라고 하기도 좀 부끄러울 지경이다. 이렇게 별 소득 없는 고민만으로 시간을 보내다 ‘가라’ 개발자의 하루가 간다. 물론 내일 아침 해가 뜨면 토끼들과 놀아 주러 집을 나서야 한다.