개발 공부를 시작하고나서 TDD 테스트 주도 개발은 장고를 배우면서 처음 보았다. 카테고리나, 제목, 태그등 특정 요소가 잘 로딩이 되었는지 어떤 목적에 따라서 정상적으로 출력을 하는지 확인해나가며 개발하는 것이었고 그 취지와 중요도는 충분히 공감하였다. 그러다가 스타트업에 면접을보게 되면서 CTO님에게 물었던 것 중 “코드리뷰 문화”에 대한 것이었는데 그분은 코드리뷰를 하는 것 보다는 전체적으로 내가 어떤 코드를 설명을 할 수 있고 TDD로 진행을 한다고 했다. 말씀을 조금 나누어보니 한국식 코딩테스트에도 부정적이신 분이고 프로그래밍에 있어서 정답이 없다고 생각하시기에 그 개발철학을 바탕을 하지 않았는가 싶다.
문제는 이제 시작이다. 그렇다면 나는 일단 ML엔지니어로 일을 한다면 머신러닝에 TDD가 있나….? 하고 생각해보았으나 쉽게 떠오르지 않았다. 프론트든 백엔드등 어떤 지점에서 기대하는 값이 있을 것이고 이에 따라서 TDD를 짜면 되겠지만 ML/DL에서 TDD를 어떻게 한다는 건지 쉽게 감이 오지 않았다. 모델에서 에러가 발생을 하면 다른 개발과 마찬가지로 중간에 터지거나 결과 값이 이상하게 나오는 것인데 이 부분을 TDD를 활용하면 더 쉽게 잡아 낼 수 있다는 점인가? 여러 생각을 해보았다.
평소에 책을 좋아하던 만큼 또 자연스럽게 출판도서부터 검색해보니 파이썬을 활용한 TDD를 제외하고 정확하게 “테스트 주도 머신러닝” 이라는 2016년도의 책이 딱 하나 있었다. (심지어 파이썬 2.7 기반) 이미 오래된거라 코드를 따라 해도 작동은 하지 않을 것이니 매커니즘을 충분히 봐야 겠다는 생각으로 책을 봐야 겠다는 생각으로 포스팅을 시작해본다.
TDD말고도 굉장히 다양한 개발문화와 철학이 있는 것도 이번에 처음 알게 되었는데. 나는 공부의 시작을 “용어정리”부터 하는 편이니 필요한 개념부터 찾아보자
- TDD Test-Driven Development 테스트 주도 개발
- BDD Behavior-Driven Development 동작 주도 개발
- DDD Domain-Driven Development 도메인 주도 개발
- EDM Event-Driven Microservices 이벤트 주도 마이크로서비스
그리고 마침 책의 첫 장에서도 목표는 내가 필요한 3가지가 중심이다. TDD와 BDD의 의미는, 그리고 이를 머신러닝 개념에 적용하고 추론분석과 예측분석 모델을 만들 수 있는 방법, 마지막으로 이런 분석 모델은 어떻게 작동하는가?
{% if site.disqus.shortname %} {% include disqus.html %} {% endif %}
Comments powered by Disqus.