Prototyping 만들면서 TDD하기

지난주부터 제가 맡게된 업무의 일환으로 약 50명 정도의 인원에 대해 개인 별로 인터뷰를 진행하고 있습니다. 인터뷰 중 나온 문의사항/질문에 대해 내부 전문가들과 이야기를 나눠본 내용을 공유합니다.
개인적인 내용은 없으며, 아마 다른 SW 개발하시는 분들 중에도 업무를 하면서 비슷한 고충을 느끼실 수 있어서 공유합니다.

Question
“주 업무가 Fast prototyping인데, prototyping이다보니 만들고 버려지는 코드가 많다. 이런 상황에서 TDD나 리팩토링을 적용할 수 있는 좋은 방법을 알려주면 좋겠다.”

Answer
내가 하는 프로토타이핑의 목적이 무엇인지에 따라 다를 것 같다.
예를 들어, 제품이나 기술의 컨셉을 잡는 단계라면 툴의 제약은 없어도 된다.
내가 최종적으로 만들어야 하는 제품이 안드로이드 웨어라고 해서 꼭 안드로이드 SDK를 사용해서 해야하는건 아니라는 뜻이다.

지금 내가 하고 있는 것은 컨셉을 잡기 위한 프로토타이핑이란걸 명심하자.

컨셉이니까 그냥 ppt를 써도 되는거고, 종이에 그림을 그려도 된다. 굳이 interaction을 봐야한다고 해서 꼭 웹과 모바일 중에 하나를 골라야 하는건 아니다.
그 컨셉을 충분히 표현할 수 있는 도구면 어떤 것이든 상관 없다.

프로토타이핑이니까 실제로 제품 안에서 이 코드가 그대로 돌아갈 것이라고 생각하면서 짜지 않아도 되고, 프로토타이핑이니까 코드가 버려져도 죄책감을 느끼지 않아도 된다.

내가 만든 프로토타이핑이 버려지는게 아까워진다는건 프로토타이핑의 넓은 레인지 중에 내가 만들어야 하는 수준의 적당한 툴을 선택함에서 생기는 문제가 아닐까 싶다.
즉, TDD가 들어가는 것 자체가 이미 프로토타입보다는 제품이라는 가정이 된 것 같다.

프로토타이핑은 원하는 것을 빠르게 보기 위해 하는건데, 하려는 프로토타이핑의 수준이나 범위가 어디까지인가?
예를 들어, 하드웨어가 있는 제품 개발을 위해 프로토타입에선 라즈베리 파이로 하지만 실제 제품을 양산할 때는 보드를 새로 만들지 않나.

TDD가 하고싶은거면 어떤 상황이든 그냥 하면 된다.
‘내가 만든 이 코드가 잘 돌아갈까?’ 하는 불안감에 TDD가 하고싶은거면 fast prototyping이라는 상황에서도 방법을 찾아가며 해갈 수 있는거라고 본다.
하지만 TDD가 좋다고 하니까 막연하게 하고 싶은거면, 프로토타이핑인데 굳이 그렇게까지 할 이유가 있을까 싶다.