개발자들 사이에 ‘기술 부채(technical debt)‘라는 말이 있습니다. 빚이라는 익숙한 단어가 들어 있어 뜻을 짐작하기 어렵지 않습니다. 지금 당장 편한 길을 택하는 대신, 그 대가를 나중에 치른다는 것입니다.
급한 마감에 쫓길 때, 개발자는 종종 “일단 돌아가게만” 코드를 짭니다. 제대로 설계할 시간이 없으니, 우선 되는 값을 코드에 직접 박아 넣습니다. 흔히 ‘하드코딩’이라 부르는 것이지요. 비슷한 코드를 이곳저곳 복사해 붙이고, ”// 나중에 정리할 것” 같은 주석 한 줄로 뒷일을 미뤄 둡니다. 당장은 시간을 법니다. 그러나 그렇게 대충 지어둔 부분은 나중에 무언가를 고치거나 더하려 할 때마다 발목을 잡습니다. 원래라면 한 시간이면 될 일이 사흘이 걸리고, 한 줄만 바꾸면 될 일이 열 군데를 손봐야 하는 일이 됩니다. 그 더 드는 수고가 바로 빚에 붙는 ‘이자’입니다.
이자는 복리로 불어난다
진짜 빚이 그렇듯, 기술 부채의 무서움도 원금보다 이자에 있습니다. 그리고 그 이자는 복리로 불어납니다.
빚이 빚을 부르는 데는 까닭이 있습니다. 급히 지어 둔 곳 위에 새 기능을 올리면, 그 기능도 아래의 임시방편을 전제로 짜입니다. 그래서 나중에 아래를 바로잡으려면 위에 얹힌 것까지 함께 뜯어봐야 합니다. 고칠 엄두가 점점 나지 않는 것이지요.
원인은 모르지만 큰 문제가 아니어서 방치해 둔 이슈 하나는 처음엔 사소해 보입니다. 그러나 그 위에 또 무언가가 얹히고, 그 위에 또 쌓이다 보면, 어느새 그 부분은 아무도 함부로 건드릴 수 없는 지뢰밭이 됩니다. 미뤄둔 정리들이 서로 얽히고설켜, 작은 빚들이 갚을 수 없는 크기로 자라는 것입니다. 어느 시점에 이르면, 새 기능 하나를 더하는 것보다 그동안 쌓인 빚을 감당하는 데 더 많은 시간이 들어갑니다. 기획자는 간단한 요청에도 “개발자가 오늘도 안된다고 말했다”를 경험하고, 팀 전체의 속도는 눈에 띄게 느려집니다. 그제야 빚의 존재를 절감하지만, 이미 이자가 눈덩이처럼 불어난 뒤입니다.
그래서 개발에서도, 삶에서도, 빚은 작을 때 자주 갚는 편이 낫습니다. 미룰수록 갚기 어려워지고, 어느 선을 넘으면 갚는 것 자체가 불가능해지기 때문입니다.
빚 자체가 죄는 아니다
그렇다면 빚은 무조건 피해야 할까요. 꼭 그렇지는 않습니다. 여기서 오해가 하나 생기기 쉽습니다. 바로 빚을 졌다는 사실 자체는 잘못이 아니라는 것입니다.
현실의 금융에서도 빚을 잘 쓰면 기회를 잡습니다. 빌린 돈으로 먼저 사업을 시작하고, 그 성과로 빚을 갚아나가는 것은 어리석은 일이 아니라 현명한 전략일 수 있습니다. 기술 부채도 마찬가지입니다. 때로는 완벽하게 다듬기보다, 일부러 빚을 내서라도 일단 빠르게 세상에 내놓는 편이 옳습니다. 시장이 기다려주지 않을 때, 기회가 지나가버릴 때, 빚은 그 순간을 붙잡는 도구가 됩니다. 이를테면 사람이 얼마나 몰릴지 아직 모르는 서비스라면, 수백만 명을 감당할 구조를 처음부터 갖추느라 몇 달을 쓰기보다, 단순하게 지어 빨리 내놓고 반응을 살핀 뒤 그때 다시 손보는 편이 낫습니다. 정교하게 짓느라 때를 놓치면, 흠잡을 데 없는 코드와 함께 사업이 문을 닫을 수도 있으니까요.
그러니 빚을 졌다는 사실 자체를 탓할 일은 아닙니다. 같은 빚이라도 갚을 셈으로 계획 아래 낸 빚과 그저 급해서 마구 낸 빚은 전혀 다르니까요. 정말 중요한 건 그 빚을 어떻게 대하느냐이지요.
잊은 빚, 그리고 모르고 진 빚
빚을 대하는 방식에는 몇 가지 층위가 있습니다.
가장 건강한 것은 의식하고 진 빚입니다. “지금은 급하니 이 부분을 대충 넘기되, 출시하고 나면 반드시 정리하자.” 이렇게 알고서 진 빚은, 갚을 계획을 세울 수 있습니다. 어디에 무슨 빚이 있는지 알기에, 때가 되면 찾아가 갚을 수 있는 것입니다.
그다음은 잊은 빚입니다. 분명 알고서 미뤘는데, 바쁜 일에 휩쓸려 그 존재를 잊어버린 빚입니다. 갚을 생각을 하지 않으니 이자만 조용히 쌓여갑니다. 그래서 노련한 개발자들은 빚을 질 때 그 사실을 어딘가에 적어둡니다. 할 일 목록에 ‘기술 부채’라고 남기거나, 코드에 ‘FIXME’라는 표시를 붙여 ‘여기 갚을 것이 있다’고 훗날의 자신에게 일러두는 것이지요. 미룰 거라면, 적어도 _미뤘다는 사실만은 잊지 않기 위해서_입니다.
그런데 가장 다루기 어려운 빚은 따로 있습니다. 빚을 졌다는 사실조차 몰랐던 빚입니다. 그때는 분명 잘 만들었다고 믿었습니다. 최선을 다했고, 스스로 만족스럽기까지 했습니다. 그런데 한참이 지나 돌아보니, 그것이 빚이었습니다. 경험이 부족해서, 더 나은 길을 몰라서, 혹은 그 일을 충분히 이해하지 못해서, 자기도 모르는 사이에 미래에 갚아야 할 빚을 지고 있었던 것입니다.
이런 빚은 대개 상황이 달라질 때 드러납니다. 이를테면 이용자 천 명을 염두에 두고 짠 구조가, 십만 명이 몰리는 순간 곳곳에서 삐걱대기 시작하는 식입니다. 그때는 그것이 최선이었지만, 규모가 커지고 나서야 비로소 빚이었음을 알게 되는 것이지요.
이런 빚이 가장 무서운 이유는 분명합니다. 모르는 빚은 갚을 수가 없기 때문입니다. 있는 줄도 모르는데 갚을 도리가 없습니다. 그것은 오직, 내가 자라고 난 뒤에야 비로소 모습을 드러냅니다.
자라야 보이는 빚
그런데 여기엔 뜻밖의 위로가 하나 있습니다.
모르고 진 빚이 뒤늦게 보인다는 것은, 그만큼 내 눈이 밝아졌다는 뜻입니다. 예전의 눈으로는 보이지 않던 것이 지금은 보인다는 것이니까요. “그때 내가 왜 이렇게 했을까” 하고 자기 과거의 코드를 보며 부끄러워하는 개발자는, 사실 부끄러워할 일이 아니라 안심해도 됩니다. 그 부끄러움이야말로 그가 성장했다는 가장 확실한 증거이기 때문입니다. 과거의 빚이 보이지 않는다면, 그건 아직 그것을 알아볼 만큼 자라지 못했다는 뜻일 뿐입니다.
그렇다면 자연히 따라오는 깨달음이 있습니다. 지금의 나 역시, 분명 빚을 지고 있다는 것입니다. 다만 아직 그것을 알아볼 눈이 없어 보이지 않을 뿐입니다. 지금 최선이라 믿는 이 선택들 가운데에도, 훗날의 내가 “왜 그랬을까” 돌아볼 빚이 섞여 있을 것입니다. 이 사실은 우리를 겸손하게 만듭니다. 내가 지금 옳다고 믿는 것이 전부가 아닐 수 있음을, 보이지 않는 빚이 어딘가 쌓이고 있음을 인정하게 하기 때문입니다.
우리가 짊어진 짐 중에도 알고서 택한 것이 있고, 알았지만 잊은 것이 있고, 진 줄도 모른 채 떠안은 것이 있습니다. 그 모르고 진 빚들은 자책할 일이 아닙니다. 그때의 나로서는 알 수 없었던 것이니까요. 우리가 할 수 있는 일은 자라면서 하나씩 그것을 알아보고, 보이게 된 것부터 차근차근 갚아가는 것입니다.
‘빚만 안지고 살아도 성공한 인생이다’라는 말도 있습니다. 하지만 우리는 아쉽게도 우리는 무한한 자원을 갖고 있지않습니다. 그래서 약속된 빚은 잘 활용하기만 한다면 분명히 아주 유용한 도구가 됩니다. 빚을 한 번도 지지 않는 일이 아니라, 자라면서 자신의 빚을 알아보고 갚아갈 줄 아는 일일 것입니다. 그렇다면 지금 내가 옳다고 믿는 이 선택들 가운데, 훗날의 내가 돌아보며 갚게 될 빚은 무엇일까요. 이 질문을 놓치지 않는 것이, 외부 환경에 여기저기 끌려다니지 않고 나 자신이 확실하게 내 삶의 키를 잡고 갈 수 있게 만들 것입니다.
댓글 (0)
아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요.