기술 부채
Technical Debt
개념
당장 빨리 가려고 미뤄 둔 정리가 쌓여 나중에 더 큰 시간과 비용으로 돌아오는 것을 말합니다.
등장 배경
개발자가 "코드가 지저분해서 이번 작업은 오래 걸립니다" 라고 말하면, 코드를 보지 않는 사람에게는 핑계처럼 들렸습니다. 지난달에는 비슷한 일을 이틀 만에 했는데 왜 이번에는 2주가 필요한지 설명할 말이 없었던 겁니다.
일정 회의는 그래서 매번 같은 자리에서 막혔습니다. 개발팀은 "정리할 시간이 필요합니다" 라고 하고, 듣는 쪽은 "정리하면 고객에게 뭐가 좋아지는데요" 라고 되물었습니다. 답이 "당장은 아무것도 안 좋아집니다" 이니 그 일은 언제나 뒤로 밀렸고, 밀린 만큼 다음 작업은 더 느려졌습니다.
부채라는 말이 그 자리를 메웠습니다. 빌린 돈처럼 원금과 이자가 있고 갚지 않으면 이자가 계속 나갑니다. 이 구조로 옮기고 나서야 일정과 예산을 다루는 사람들과 같은 언어로 이야기할 수 있게 됐습니다. "지금 정리 안 하면 앞으로 모든 작업이 20퍼센트씩 느려집니다" 는 문장은 "코드가 지저분합니다" 와 달리 결정 가능한 정보입니다.
작동 방식
원금은 미뤄 둔 정리 작업 자체입니다. 급해서 복사해 붙인 코드, 나중에 나누기로 하고 한 덩어리로 둔 파일, 쓰지 않는데 지우기 무서워 남겨 둔 설정 같은 것들입니다. 하나하나는 대수롭지 않고, 그래서 계속 쌓입니다.
이자는 그 상태 때문에 매번 더 드는 시간입니다. 세금처럼 한꺼번에 청구되지 않고 모든 작업에 조금씩 섞여 들어옵니다.
- 같은 값이 세 군데에 복사돼 있어서 바꿀 때마다 세 곳을 다 찾아 고쳐야 합니다. 한 곳을 놓치면 그게 다음 주의 장애가 됩니다.
- 어디를 건드리면 어디가 깨지는지 몰라 확인에만 반나절이 듭니다.
- 새로 온 사람이 이 영역을 이해하는 데 이틀이 걸립니다. 정리된 영역이면 두 시간이면 될 일입니다.
이자가 눈에 안 띄는 게 이 개념의 핵심입니다. 팀이 느려진 이유를 사람이 부족한 탓으로 오해하는 것도 이 때문입니다. 사람을 더 뽑아도 새로 온 사람 역시 같은 이자를 물기 때문에 속도는 기대만큼 오르지 않습니다.
갚는 방법은 리팩터링입니다. 동작을 바꾸지 않고 구조만 고쳐 이자를 줄이는 작업입니다. 화면에서 보이는 것은 아무것도 달라지지 않기 때문에, 이 작업의 성과는 "앞으로 비슷한 일을 할 때 얼마나 빨라지는가" 로만 확인됩니다.
다만 모든 부채가 실수는 아닙니다. 마감을 맞추려고 알고 빌리는 경우가 있습니다. 투자 데모가 2주 뒤인데 제대로 만들면 6주가 걸린다면, 임시로 만들고 나중에 갚는 편이 낫습니다. 이때는 무엇을 빌렸는지 적어 두는 것이 상환 계획의 시작입니다. 적어 둔다는 건 "결제 화면은 임시 구조, 데모 끝나고 2주 안에 정리" 처럼 무엇을 언제 갚을지까지 남긴다는 뜻입니다. 문제가 되는 건 빌린 줄도 모르고 쌓인 쪽입니다.
쓰이는 곳
일정을 협상하는 자리에서 가장 많이 나옵니다. "이번 분기는 기능 대신 부채를 갚는 데 20퍼센트를 쓰겠습니다" 처럼 상환을 일정에 올릴 때 쓰는 말입니다. 이 말이 통하려면 무엇을 갚으면 무엇이 빨라지는지가 함께 나와야 합니다. 그냥 "정리가 필요합니다" 는 여전히 밀립니다. "결제 모듈 정리에 2주를 쓰면 그다음부터 결제 쪽 작업마다 하루씩 덜 듭니다" 정도는 되어야 듣는 쪽이 저울에 올릴 수 있습니다.
회고에서는 느려진 원인을 지목하는 데 씁니다. 회고는 주기가 끝날 때 무엇이 잘됐고 무엇이 막혔는지 팀이 돌아보는 자리입니다. 같은 영역에서 예상이 계속 빗나가면 그 영역의 부채를 의심합니다. "결제 쪽만 손대면 항상 두 배씩 걸린다" 는 관찰이 나오면 그게 상환 대상 후보입니다.
코드 리뷰에서 지금 고칠지 미룰지를 가를 때도 씁니다. 코드 리뷰는 다른 개발자가 올린 변경을 동료가 읽고 의견을 다는 절차입니다. 여기서 "이 부분은 구조가 아쉬운데 이번 범위는 아닌 것 같다" 는 판단이 나오면, 그 자리에서 항목으로 남겨야 부채가 아니라 기록이 됩니다. 남기지 않으면 아무도 기억하지 못하고, 반년 뒤에 아무도 원인을 모르는 느린 영역만 남습니다.
실무 용례
"이번엔 기술 부채로 남기고 티켓만 끊어 둘게요."
지금은 제대로 안 고치지만 잊지 않게 기록은 남기겠다는 말입니다.
"속도가 안 나는 건 사람이 부족해서가 아니라 부채 때문이에요."
인원을 늘려도 해결되지 않는다는 뜻입니다. 새로 온 사람도 같은 이자를 물기 때문입니다.
"이건 의도한 부채예요. 데모 끝나면 바로 갚을 겁니다."
실수가 아니라 기한을 맞추려고 일부러 택한 방식이라는 말입니다.
페이지덱에서는 태오가 결제 모듈을 손볼 때마다 같은 말을 반복했습니다. 초기에 급하게 붙인 구조를 아무도 정리하지 않은 채 기능만 세 번 얹은 상태라 작은 수정에도 확인할 곳이 너무 많았습니다. 규원이 다음 분기 계획에서 일정의 일부를 상환에 떼기로 하면서 태오는 무엇을 먼저 갚을지 목록을 만들었습니다. 전부 갚는 목록이 아니라, 앞으로 자주 건드릴 곳부터 고르는 목록이었습니다.
흔한 오해
나쁜 코드의 다른 이름으로 읽는 경우가 많습니다. 둘 다 결과가 "고치기 어려운 상태" 라서 같아 보입니다. 하지만 알고 빌린 것과 모르고 쌓인 것은 다루는 방법이 다릅니다. 앞의 것은 이미 드러나 있으니 갚을 계획을 세우면 됩니다. 뒤의 것은 무엇이 있는지부터 모르기 때문에 드러내는 일이 먼저입니다. 둘을 같은 말로 부르면 "우리 코드가 더럽다" 는 한탄에서 대화가 끝나고 상환 계획까지 가지 못합니다.
전부 갚아야 한다고 읽는 것도 흔합니다. 빚이니까 없애야 할 것 같기 때문입니다. 하지만 앞으로 손댈 일이 없는 영역의 부채는 이자가 나가지 않습니다. 곧 없앨 화면을 예쁘게 정리하는 데 2주를 쓰면 갚은 게 아니라 버린 겁니다. 갚을 곳은 자주 고치는 곳입니다. 전부 갚겠다고 나서면 정작 이자가 큰 곳에 쓸 시간이 사라집니다.
자주 헷갈리는 용어
같이 보면 좋은 페이지
연관 용어
마지막 업데이트 2026-09-16