우연히 기회가 닿아 지인분이 계신 회사에서 아르바이트로 일을 하게 되었습니다. 6월 1일부터 지금까지, 여름에서 겨울로 넘어가는 약 여섯 달 동안 일했는데, 그 중 최근 한달 반 정도 사이에 겪은 고통에 대해 이야기해보고자 합니다.
가장 힘들었던 부분은 두 개입니다. 개발자로서 내가 만들어 가는 프로젝트에 대한 통제력이 떨어져 가는 것, 그리고 이를 만회하기 위해 너무 애쓰다가 결국 지쳐버리는 것.
기본적으로 소프트웨어는 아주 정교한 물건이며, 그것을 다루기 위해서는 제대로 된 방법을 써야 한다고 생각합니다. 요구 사항이 있으면 잘 정제해서 튼튼하고 모순 없는 도메인 모델을 만들고, 그걸 깨끗한 코드로 읽기 쉽게 표현하는 것이 개발자의 필수 자질이라고 생각해 왔습니다.
코드에 대한 이해도를 90% 이상으로 유지해야 마음이 편합니다. 즉, 머리 속에서 프로젝트 패키지 트리가 그려지고, 최근에 작업한 파일을 띄워 상상 속에서 코드를 짤 수 있을 정도가 되어야 안심이 됩니다. 물론 방대한 프로젝트의 모든 코드를 모두 파악하고 있을 수는 없습니다. 그래서 이런 스타일로 작업을 하려면 프로젝트의 모든 구성 요소가 일관된 컨벤션을 유지하고 있어야 합니다. 그래야 코드가 머릿속에서 잠시 page out 되더라도 언제든 다시 들여다 보기만 하면 자연스럽게 가져올 수 있지요. 너무 이상적인 생각이었을까요, 상업 소프트웨어, 특히 시스템 통합 업계에서는 꿈만 같은 일이라는걸 깨달아 버렸습니다. 우리 회사는 아니겠지 하는 나름의 기대도 있었으나 와장창 무너져 버렸습니다.
10월에 새 프로젝트에 투입되면서, 기존의 레거시 코드를 이어받아 작성해야 하는 상황에 놓였습니다. 레거시 코드를 집어들고 그 위에 무언가를 쌓아 올리려면 그 코드 작성자의 컨벤션을 학습해야 합니다. 결국 그 코드를 완전히 학습하기 전에는 프로젝트에 대한 이해도가 상당히 내려가 있게 됩니다. 단순히 적응만 해서 끝나는 문제라면 다행입니다. 주어진 코드가 플랫폼의 문화에 대한 이해 없이 짜여진 코드라면, 또는 warning을 제거하려는 노력 없이 구동 자체에만 목적을 둔 코드라면 어떨까요. 저는 이런 상황에 심한 알러지를 겪습니다. 도메인의 영역에 이물질이 들어온 느낌. 이 코드를 계속 안고 갈 때 지속적으로 발생할 정신적 출혈과 처음부터 새로 작성할 때에 드는 비용을 계산해 보았습니다. 후자가 더 손실이 적다는 판단이 나왔습니다. 결국 모두 다시 작성하기 시작했습니다.
이 무렵 즈음에 약간의 불안증과 번아웃을 경험했습니다. 레거시 코드와 차마 함께 할 수는 없어 새로 작성하기를 택했고, 새로 작성하기 위해서는 개인 시간을 포기할 수 밖에 없었습니다. 그러다 보니 제 삶에 대한 통제력을 조금씩 잃어 갔습니다. 카메라 필름실이 빈 채로 방치되고, 기타에 먼지만 쌓여 갔습니다. 산책 나갈 시간도 없어 정신이 메말라 버렸습니다. 제일 고통스럽고 분노에 찼던 순간은 이러한 시도 자체가 금기시된다는 사실과 마주해야 할 때였습니다. 일정 지연에 대한 우려 때문이었습니다. 그래서 더 오버페이스로 달렸습니다.
얼핏 보면 바보같은 짓입니다. 누군가는 그냥 짜면 되지 왜 그러냐 고 할 수 있습니다. 그 생각을 존중합니다. 그게 되는 분이라면 그렇게 하면 됩니다. 후회는 없습니다. 남에게 피해 주는 것을 매우 싫어하는 성격인지라, 제가 짠 코드를 다른 누군가가 볼 때 폭탄이 아니라 재산이라고 느꼈으면 좋겠습니다. 폭탄이 제 차례에서 터지더라도 다음 사람에게 넘길 때에는 멀쩡한 물건으로 만들어 놓아야 직성이 풀립니다.
그렇게 에너지를 쏟아 부어 결국에는 어떤 수정사항에도 20분 내로 반응할 수 있는 민첩합과 확장성, 누가 읽어도 납득할 가독성, 트래픽과 동시성 이슈에도 대응할 수 있는 안정성을 확보했습니다. 그리고 제일 중요한 것, 일정에 대한 우려도 불식시켰습니다. 프로젝트 후반기에 들어선 지금, 그 선택이 옳았다는 생각이 갈수록 커집니다. 리팩토링 이후 디버그와 삽질에 쓴 시간이 거의 없습니다. 프로젝트의 호흡이 길어질수록, 이렇게 초반의 투자로 길게 수확하는 스타일이 더 큰 이득을 가져다 줄 것이라고 믿습니다.
한달 반의 시간을 떠올리며 스스로를 돌아 보았을 때, 코드의 품질에 한해서는 관대한 사람이 되지는 못할 것 같다는 생각이 들었습니다. 제 나름의 철학과 회사 사이에서 고통의 저울질을 한참 하다가, 결국 회사를 포기하기로 선택했습니다. 아침형 인간이 아니어도 매일 아침에 일어나는 것, 체력이 딸려도 먼 출근길을 소화하는 것, 밤 늦게까지 일하는 것, 주말에도 일하는 것, 나쁘지 않습니다. 일하다가 졸리면 인형을 끌어안고 엎드려 자도 됩니다. 아침 느긋하게 먹고 지각해도 딱히 눈치보이지 않습니다. 약속이 있으면 일찍 퇴근해도 됩니다. 얽매이는 것을 싫어하는 저에게 이상적인 근무 환경이고 함께 일하는 분들로부터 매일 배우는 것도 많습니다. 사실 많이 아쉽습니다. 그래도 제 길은 정해져 있는 것 같습니다.
댓글