트레이드 오프라는 개념을 처음 배울 때는 서로 양립할 수 없다는 사실을 너무 명백히 알 수 있는 케이스들로 배웠던 것 같다.
예를 들면 시간복잡도와 공간복잡도, 또는 일정과 품질과 비용.
시간을 줄이려면 공간을 많이 써야하고, 공간을 아끼려면 시간을 더 써야한다.
일정을 줄이려면 품질이나 비용을 양보해야하고, 품질을 높이려면 일정과 비용을 더 들여야하고, 비용을 줄이려면 품질과 일정을 희생해야한다는 것은 그렇게 깊이 생각해보지 않아도 알 수 있는 것들이다.
그래서 이런 개념을 굳이 따로 배울 필요까지 있는 것인지 하는 생각이 들었는데, 요즘 설계작업들을 하다보니 트레이드 오프 관계에 있다는 것을 미처 발견하지 못한 채로 고민을 게속하는 경우가 있다는 것을 알게됐다.
설계상 여러가지 선택을 해야하는 순간들이 있었는데 가장 대표적인 경우가 유연성이었다.
어떻게 하면 다양한 케이스들을 두루 커버할 수 있으면서도 단순하고도 일관된 구조를 만들 수 있을지를 계속 고민을 했었는데, 한참 고민하다보니 이 두 가지는 트레이드 오프 관계에 있구나 하는 것을 문득 깨닫는 순간이 있었다.
극단적으로 말해서, 모든 케이스들을 커버하는 구조라는 건 있을 수 없고, 단순하면서도 일관된 구조는 경직되어있기 때문에 여러가지 케이스에 유연하게 대응할 수 없다.
지금 생각해보면 너무 명백한데 막상 고민을 하는 동안에는 알아차리질 못하고 있었던 것이다.
고민하고 있는 요소들이 트레이드 오프 관계에 있다는 것을 인식하지 못했다면 한없이 자료 조사만 하고 있었을지도 모르겠다.
양립할 수 없다는 것을 깨달았다면 적절한 타협점이 어디쯤인지를 잘 결정해야한다.