Technical Debt
개요
선풍기
기술적 부채(또는 기술 부채)는 지금 당장 해두지 않아도 되거나, (상대적으로 덜 필수적인) 안해도 티가 잘 나지 않는 작업들을 이런저런 이유로 포기하거나 미뤘다가 파생된 결과가 부채(debt)의 개념으로 돌아오는것을 지칭한다. 이 부채라는 것이, 빨리 해소하지 않으면 실제 빚처럼 점점 더 커진다는 것도 비슷하다.
원인
- 사업적인 이유: 기술적인 문제를 해결하기 위해서는 시간과 돈이 더 필요한데, 이런 문제를 해결하다가 완료가 늦어지면 그 기간만큼 사업을 정상적으로 할 수 없으므로, 수익성이 악화된다. 당연히 윗선에서는 그걸 좋지않게 여기고, 어떻게든 빨리끝내라고 압박을 가한다. 결국 마감기한에는 잘 굴러가는것처럼 내놓기는 하는데...
- 기술적 부채에 대한 이해 부족
- 테스트 스위트(Test Suite) 부족: 어떤 일부 상황에만 적용가능한 임시방편으로 해결하게 된다. 이후의 다른 문제가 나오면 그걸 또 덮고...
- 문서 부족: 관련 문서(나 주석) 없이 코드를 작성할 경우, 차후 그 코드에 관련된 설명 문서를 만드는것이 그 부채가 된다.
- 지식 부족: 깔끔하게 코드를 작성하는 방법을 모를때 (지저분한 코드)
결과
이 빚은 미래에 어떤 형태로든 갚게 되는데, 뭔가 끝낸것 같은 시점 이후의 디버깅을 비롯한 문제해결 작업같은것이 이에 해당된다. 이런 문제해결 작업은 지체되면 지체될수록 작업에 필요한 시간과 비용은 더 커져만가니 실제 빚 개념과도 유사하다고 할 수 있다.
그리고 문제점이 누적되어서 '어디서부터 손대야 하는지 모르는 수준'에 다다르게 되면, 유지보수의 수준이 아니라 시스템 재구축을 해야 하는 상황에 이를 수도 있다. 경우에 따라서는 기존의 것을 완전히 폐기하는 매몰비용까지 고려해야 한다는 것. 이 재구축에 소요되는 시간과 비용 + 매몰비용이 갚아야할 빚에 해당된다.
사례
관련 사이트
- ontechnicaldebt - 기술적 부채에 관해서 논의하는 커뮤니티
각주
이 문서의 일부는 영어 위키백과의 en:Technical debt 문서를 원출처로 합니다.