켄트 벡이 정리 시점을 판단하려고 꺼내는 경제학 틀. 소프트웨어는 두 가지 가치를 만든다. 오늘 하는 일(동작)과, 내일 새로 할 수 있게 되는 일(옵션)이다. 구조는 동작을 바꾸지 않지만 옵션을 만든다.
두 원리가 부딪친다
- 현금흐름할인(Discounted Cash Flow): 오늘의 1달러가 내일의 1달러보다 가치 있다. 먼저 벌고 나중에 쓰라. 정리는 미루고 동작 변경부터 하라는 쪽으로 기운다
- 옵션(Options): 불확실할수록 "무엇을 살 권리"가 그 물건보다 값지다. 오늘의 설계는 내일의 동작 변경을 살 수 있는 옵션의 프리미엄이다. 정리를 먼저 하라는 쪽으로 기운다
- 판단 기준: 정리 후 변경의 비용이 정리 없이 변경하는 비용보다 작으면 망설이지 말고 먼저 정리한다. 그렇지 않을 때가 고민할 지점이다
옵션을 줄이는 요인으로는 핵심 인력의 이탈, 고객과의 거리, 높은 변경 비용이 있다. 정리가 손댈 수 있는 것은 마지막 하나다.
가역성(Reversibility)
구조 변경은 대체로 되돌릴 수 있고, 동작 변경은 (배포되고 나면) 되돌리기 어렵거나 비싸다. 되돌릴 수 있는 결정은 가볍게 내리고 되돌릴 수 없는 결정은 신중하게 다룬다. 큰 설계 변경을 되돌릴 수 있는 작은 정리의 연속으로 바꾸는 것이 요령이다(병렬 수정 (팽창-수축)).
로드맵이 기능 목록으로만 채워지는 이유도 여기 있다. 동작은 눈에 보이고 구조는 보이지 않는다. 구조 변경 비용의 대부분은 결합도에서 온다. 비유가 비슷한 개념으로 기술 부채가 있다.
출처: 『켄트 벡의 Tidy First?』 켄트 벡 (원서 Tidy First?)