코드 제어, 지적 vs 통계적 접근 방식: 당신의 선택은?
프로그래밍 제어에 대한 추상적인 논의를 위해, Rich Hickey의 비유를 활용하여 설명함
테스트(Tests)를 가드레일에, 코딩을 운전에 비유하여, 테스트 통과 여부로 제어 수준을 평가함
지적 제어(Intellectual Control)는 코드에 대한 깊은 이해를 바탕으로, 테스트를 예측하고 통제하는 접근 방식임
통계적 제어(Statistical Control)는 테스트를 통해 가설을 검증하고, 점진적으로 코드를 개선하는 접근 방식을 의미함
지적 제어(Intellectual Control)와 코드 이해
논의에서는 지적 제어(Intellectual Control)를 코드에 대한 깊은 이해를 바탕으로, 테스트를 예측하고 통제하는 접근 방식으로 정의한다. 이는 개발자가 코드를 작성하기 전에 프로그램의 작동 방식에 대한 명확한 이론(Theory)을 구축하는 것을 의미한다. 즉, 코드를 작성하기 전에 설계(Design)에 충분한 시간을 투자하고, 예상되는 결과를 미리 예측하는 것이다. 이러한 접근 방식은 코드의 품질(Code Quality)을 높이고, 유지 보수성을 향상시키는 데 기여한다.
통계적 제어(Statistical Control)와 가설 검증
반면, 통계적 제어(Statistical Control)는 테스트를 통해 가설을 검증하고, 점진적으로 코드를 개선하는 접근 방식을 의미한다. 개발자는 코드 변경 사항을 가설(Hypothesis)로 간주하고, 테스트를 통해 그 타당성을 검증한다. 테스트 실패는 코드에 대한 이해 부족을 의미하며, 이를 통해 개발자는 학습(Learning)하고, 코드를 개선해 나간다. 이러한 반복적인 과정을 통해, 개발자는 코드에 대한 이해도를 높이고(Improve Understanding), 궁극적으로 코드의 품질을 향상시킬 수 있다.
테스트 주도 개발(TDD)과의 연관성
커뮤니티에서는 테스트 주도 개발(TDD)이 통계적 제어 방식과 유사하다는 의견이 제시된다. TDD는 테스트를 먼저 작성하고, 테스트를 통과하도록 코드를 작성하는 방식이다. 이는 개발자가 코드의 작동 방식을 미리 예측(Predict)하고, 테스트를 통해 그 예측을 검증하는 과정이다. TDD는 코드의 품질을 높이고, 버그(Bug) 발생 가능성을 줄이는 데 기여하며, 지속적인 리팩토링(Refactoring)을 가능하게 한다.