인식론적 겸손의 필요성
소프트웨어 개발에서 가장 중요한 덕목 중 하나가 기술적 역량이라면, 그다음으로 중요한 것은 **인식론적 겸손(epistemic humility)**이다. 이는 “내가 무엇을 모르는지 아는 것”의 능력이다.
전문가 수준의 통찰
TDD가 발전해온 역사는 사실 인식론적 겸손의 역사다. TDD는 “내 코드가 완벽하다”는 오만을 버리고 “내 코드는 반드시 실패할 것이므로 먼저 테스트하자”는 겸손에서 시작되었다.
그러나 TDD는 내부 검증에 집중함으로써 또 다른 형태의 인식론적 오만에 빠질 위험이 있다: “내가 테스트를 통과했으니 시스템은 올바르다”는 착각이다.
BDD로의 전환은 이 두 번째 오만을 극복하기 위한 움직임이다. 이는 “내 검증만으로는 충분하지 않으며, 외부의 시선이 필요하다”는 인식을 반영한다.
소크라테스적 방법론
BDD의 Given-When-Then 패턴은 소크라테스의 대화법과 놀라운 유사성을 보인다:
- Given: 상황 설정 (소크라테스의 “전제”)
- When: 행동 (소크라테스의 “질문”)
- Then: 결과 검증 (소크라테스의 “반박과 정제”)
이러한 유사성은 BDD가 단순한 테스트 방법론이 아니라, 진리를 추구하는 철학적 방법론임을 시사한다.
실용적 함의
인식론적 겸손을 실천하기 위한 구체적 방법:
- 정기적인 가정 검증 세션: 팀이 암묵적으로 가정하고 있는 것들을 명시화
- 외부 관점의 정기적 통합: 도메인 전문가, 사용자, 이해관계자의 피드백 주기적 수집
- 실패의 적극적 환영: 실패를 학습 기회로 전환하는 문화 구축
이 통찰은 20260615-test-driven-to-behavior-driven의 전환이 단순한 기술적 변화가 아니라 인식론적 성숙의 과정임을 보여준다.