소프트웨어 개발에서 흔히 인용되는 YAGNI(You Aren't Gonna Need It) 원칙은 '아직 필요 없는 코드는 만들지 말라'는 뜻으로 알려져 있습니다. 하지만 이 원칙의 진정한 의미는 단순히 코드 작성 비용을 절약하는 것을 넘어, 필요가 명확해지기 전에 미래를 추측하여 시스템 구조를 미리 설계하는 행위가 가져오는 복합적인 비용을 경고합니다. 즉, 문제의 핵심은 '무엇을 설계할 것인가'가 아니라 '언제 설계할 것인가'에 있다는 것입니다.
YAGNI가 지적하는 비용은 크게 두 가지입니다. 첫째는 '선택권 비용(option cost)'입니다. 요구사항이 명확해지기 전에 미리 구조를 만들면, 아직 알 수 없는 미래의 요구사항에 대해 섣불리 약속(commit)하게 됩니다. 이는 결국 잘못된 구조를 우회하거나 다시 뜯어내는 추가 비용을 발생시킵니다. 설령 추측이 맞더라도, 미리 약속하지 않고 나중에 올바른 구조를 만들 수 있는 '선택권'을 잃는다는 점에서 손해입니다. 둘째는 'NPV(순현재가치) 비용'입니다. 3개월 뒤에 필요할 기능을 위해 지금 구조를 만들면, 비용은 앞당겨지고 실제 수익을 창출할 기능의 출시는 늦어집니다. 이는 완벽한 예측을 하더라도 비용이 수익보다 먼저 발생하는 시간적 간격에서 손실이 발생함을 의미합니다.
흥미로운 점은 인공지능(AI) 시대에 코드 생성 비용이 거의 0에 가까워져도 YAGNI 원칙은 사라지지 않는다는 것입니다. 오히려 값싼 코드 생성은 추측 기반의 프레임워크를 더 쉽게 만들 수 있어, 잘못된 구조를 더 빠르게 확산시킬 위험이 있습니다. YAGNI가 겨냥하는 것은 코드 생산 비용이 아니라, 실제 기능이 필요하기 전에 미리 만들어진 '투기적 구조(speculative structure)'이기 때문입니다. AI가 리팩터링(refactoring)과 구조 변경 비용을 낮출 수 있다는 주장도 있지만, 깨지기 쉬운 AI 생성 테스트가 늘어나면서 오히려 구조 변경 비용이 커질 수 있다는 반론도 제기됩니다. 결국 YAGNI의 결론은 코드가 비싸서 기다리라는 것이 아니라, '선택권'과 '돈'은 쓰지 않았을 때 더 큰 가치를 지니므로 필요할 때 만들라는 것입니다. 이는 개발자가 현재의 요구사항에 집중하고, 미래의 불확실한 변화에 대한 섣부른 예측과 투자를 경계해야 함을 강조합니다.