TechnicalDebt
TechnicalDebtQuadrant
What is technical debt? How to pay it off (with examples)
"일을 성급하고 지저분하게 처리하면 기술 부채가 쌓이는데, 이는 금융 부채와 비슷하다. 금융 부채처럼 이자를 지불해야 하고, 결국은 나중에 개발해야만 하는 추가적인 업무의 형태로 남는다. - 마틴 파울러 -
기술부채는, 어떤 이유로 하지 못하고 뒤로 미루거나 수준을 낮춰서 해결한 기술적인 문제를 말합니다. 기술부채는 워드 커닝햄(Ward Cunningham)이 처음 사용한 용어로, 소프트웨어의 내적품질 수준에 따라 운영 단계에서 쏟아야 하는 노력의 크기가 달라진다는 걸 표현할 때 사용하는 용어입니다.
금융 부채를 지면 이자를 내듯이, 내적품질 수준이 떨어지는 소프트웨어는 운영 비용을 증가시킨다는 걸 은유적으로 표현한 개념입니다.
Prudent and deliberate - 신속하게 개발하고 나중에 결과를 처리하기로 결정하면 신중하고 고의적인 부채가 발생한다. 이 유형의 부채는 제품의 지분이 상대적으로 낮고 빠른 개발의 이점이 위험보다 클 때 가장 일반적으로 사용된다.
Prudent and inadvertent - 신중하고 부주의한 부채는 최상의 코드를 생성하려는 욕구가 있지만, 구현 후에 더 나은 솔루션을 찾을 때 발생한다.
Reckless and deliberate - 최고의 코드를 생성하는 방법을 알고 있지만 그보다 빠른 개발을 우선시하는 것이 무모하고 고의적인 부채의 원인이다.
Reckless and inadvertent - 무모하고 부주의한 부채는 팀이 필요한 지식 없이 최고의 코드를 생성하려고 할 때 발생한다. 그리고 자신들이 저지르는 실수를 인지하지 못한다.
금융 부채와 마찬가지로 기술 부채도 좋은 의미와 나쁜 의미로 모두 활용될 수 있습니다.
어떤 경우에는 기술 부채가 소프트웨어 마감일을 맞추고 고품질의 코드를 스프린트 내에 출시하기 위한 계산된 움직임의 결과이기도 합니다. 다른 경우에는 소프트웨어 업데이트를 릴리스할 때 피할 수 없는 실수로 인해 기술 부채가 발생하기도 합니다.