2023-11-05
소프트웨어는 그 본질상 변경이 용이해야 합니다. 변경이 어렵다면 그것은 하드웨어에 더 가깝다고 할 수 있죠. 우리는 진정한 소프트웨어 개발자로서 지속적으로 변하는 요구사항을 수용하고 적절히 대응하는 능력을 가져야 합니다. 변화에 빠르게 대응하는 것은 우리의 강점이자 필수적인 작업입니다.
결함이 없고 변화에 잘 적응하는 고품질 소프트웨어를 개발하는 것은 아주 어려운 과제입니다. 이에 대한 만병통치약은 없으나, 큰 도움이 되는 접근법 하나는 바로 테스트 주도 개발(Test-Driven Development, TDD)의 도입입니다.
소프트웨어 개발과 매우 비슷한 분야로 회계가 있습니다. 두 분야 모두 방대한 문서 작성을 요구하며, 작은 실수 하나가 치명적인 결과를 초래할 수 있다는 공통점이 있죠. 잘못된 데이터로 인해 사업은 실패할 위기에 처할 수 있고, 최악의 경우는 재산이나 생명을 위협할 수 있습니다.
회계 분야에서는 이러한 오류를 방지하기 위해 복식부기라는 방식을 1000년 전부터 사용해왔습니다. 회계 오류를 최소화하는데 필수적인 복식부기의 중요성은 널리 인식되고 있으며, 대부분의 국가에서는 기업들이 복식부기를 법률적으로 의무적으로 진행하도록 규정하고 있습니다.
소프트웨어 개발에서의 복식부기는 바로 TDD입니다. 미리 테스트 케이스를 작성함으로써 소프트웨어의 결함을 찾아내고 예방하기 때문입니다. 소프트웨어 오류 역시 재산과 생명에 심각한 영향을 미칠 수 있지만, 아직 TDD는 법적인 강제력이 없는 상황입니다. 이는 다소 의아한 점입니다만, 머지않아 TDD가 의무화되는 날이 올 수도 있습니다.