하고 싶으면 그냥 해라
본 내용은 2015년 4월에 썼던 글이다.
(원본 : http://www.banglab.com/articles/tdd-in-prototyping)
작년에 내가 맡았던 업무의 하나로, 개발 전문가 집단 약 50명에 대해 개인 인터뷰를 진행했다. 이 글은 인터뷰 중 나온 질문으로 내가 관심 있어하는 분야라서 내부 전문가들과 이야기해 보고 정리했다.
다른 소프트웨어 개발자 중에서도 비슷한 고충을 느끼는 사람이 있지 않을까 해서..
“주 업무가 fast prototyping이다. Prototyping이다 보니 만들고 버려지는 코드가 많다. 이런 상황에서 TDD(Test Driven Development)나 리팩토링을 적용할 수 있는 좋은 방법을 알려주면 좋겠다.”
내가 하는 프로토타이핑의 목적이 무엇인지에 따라 다를 것 같다.
예를 들어, 제품이나 기술의 콘셉트를 잡는 단계라면 도구의 제약은 없어도 된다.
내가 최종적으로 만들어야 하는 제품이 안드로이드 웨어라고 해서 꼭 안드로이드 SDK를 사용해서 해야 하는 건 아니라는 뜻이다.
지금 내가 하는 것은 콘셉트를 잡기 위한 프로토타이핑이란 걸 명심하자.
콘셉트만 잘 나타나면 되니까 PPT를 써도 되는 거고, 종이에 그림을 그려도 된다. 굳이 인터랙션을 봐야 한다고 해서 꼭 웹과 모바일 중의 하나를 골라야 하는 건 아니다.
그저 그 콘셉트를 충분히 표현할 수 있는 도구면 어떤 것이든 상관없다.
프로토타이핑이니까 실제로 제품 안에서 이 코드가 그대로 돌아갈 것으로 생각하면서 짜지 않아도 되고,
프로토타이핑이니까 코드가 버려져도 죄책감을 느끼지 않아도 된다.
내가 만든 프로토타이핑이 버려지는 게 아까워진다는 건, 프로토타이핑의 넓은 레인지 중에 내가 만들어야 하는 수준의 적당한 도구를 잘 선택하지 못해서 생기는 문제가 아닐까 싶다.
즉, TDD가 들어가는 것 자체가 이미 프로토타입보다는 제품이라는 가정이 된 것 같다.
프로토타이핑은 원하는 것을 빠르게 보기 위해 하는 건데, 하려는 프로토타이핑의 수준이나 범위가 어디까지인가?
예를 들어, 하드웨어가 있는 제품 개발을 위해 프로토타입에선 라즈베리 파이나 아두이노로 한다. 하지만 실제 제품을 양산할 때는 보드를 새로 만들지 않나.
TDD가 하고 싶은 거면 어떤 상황이든 그냥 하면 된다.
‘내가 만든 이 코드가 잘 돌아갈까?’ 하는 불안감에 TDD가 하고 싶은 거면 fast prototyping이라는 상황에서도 방법을 찾아가며 해갈 수 있는 거라고 본다.
하지만 TDD가 좋다고 하니까 막연하게 하고 싶은 거면, 어차피 프로토타이핑인데 굳이 그렇게까지 할 이유가 있을까?