실제 TDD를 적용하고 전파하고 계신 전문가 분들께 인터뷰 요청을 드렸습니다. "책안의 지식"이 아닌 "살아있는 기술로써의 TDD"에 대한 의견을 묻고 듣고 나누고 싶었기 때문입니다.
본 인터뷰 내용은
테스트 주도 개발 : 고품질 쾌속개발을 위한 TDD 실천법과 도구에 개재된 전문가 인터뷰에서 발췌한 내용으로 저자이신 채수원님께서
애자일 컨설팅 대표 김창준님과의 인터뷰한 내용입니다.
채수원 안녕하십니까? 김창준 대표님. 인터뷰에 응해주셔서 감사합니다. 대표님을 아직 잘 모르는 분들을 위해 간략한 소개 부탁드립니다. 그와 함께 현재 하고 계신 일이나 최근 관심사에 대해 이야기해주실 수 있으신지요?
김창준 네. 저는 애자일 컨설팅의 대표 김창준입니다. 저희 회사는 애자일 방법론을 조직과 개인에게 컨설팅 및 코칭하는 회사입니다. 최근에는 애자일 코치를 키우는 과정(AC2, http://ac2.kr)에 모든 노력을 기울이고 있습니다. 우리나라에 애자일이 퍼지고 성숙하려면 수준 높은 애자일 코치들이 생기지 않으면 불가능하다는 생각에 일종의 사명감을 갖고 노력하고 있습니다.
채수원 대표님께서 TDD 책을 번역해서 국내에 본격적으로 소개한 지도 적지 않은 시간이 지났습니다. 하지만 TDD는 여타 기술이나 기법에 비해 확산이 느린 것처럼 보입니다. 이유가 무엇이라고 생각하시는지요? 혹시 TDD의 가치가 크지 않아서 확산이 더딘 건 아닌지요?
김창준 몸에 좋은 약은 쓴 법입니다. TDD는 개발자에게 체질적 변화를 요구합니다. 그래서 생각만큼 확산이 빠르지 않습니다. 하지만 점진적인 변화는 계속 벌어지고 있으며, 100도를 넘으면 산업 전체의 체질적 변화가 생길 것이리라 예측합니다. 실제로 국내 성공 사례를 보면 2차원에서 3차원으로의 도약 같은 엄청난 변화가 있었습니다. 그리고 TDD 도입에 어려움을 겪는 개인과 조직은 TDD를 좀 더 넓은 의미로 그리고 원칙(결정과 피드백 사이의 갭을 조정) 중심으로 생각해볼 필요가 있습니다.
채수원 혹 기억에 남는 TDD에 대한 경험담이나 이야기를 소개해주실 수 있으신지요? 좋은 기억이 아니어도 무방합니다.
김창준 제가 코칭한 프로젝트에서 TDD의 효과에 대한 실험을 한 적이 있습니다. C 언어로 개발했던 금융거래 프로젝트였습니다. TDD로 개발한 경우 그렇지 않은 코드에 비해 모듈별 개발 시간이 15% 증가했습니다. 반면 TDD로 개발한 코드에서는 결함이 60% 줄었습니다. 이 프로젝트에서 TDD를 하는가 안 하는가의 선택은 결국, 조금 빨리 개발하면서 버그는 2.5배 늘어나는 방식(TDD로 개발하지 않는 방식)을 택하겠는가 말겠는가의 문제였습니다.
채수원 초급 개발자가 TDD를 적용할 때 집중해야 할 부분이나 유의해야 할 부분은 무엇이라고 생각하십니까?
김창준 모든 단위 테스트가 통과하는 시점에서 다시 모든 단위 테스트가 통과하는 시점까지 걸리는 시간을 GBC(Green Bar Cycle)라고 저는 부릅니다. 이 GBC를 짧게 유지하는 것이 첫번째 혈자리이고, 두 번째 혈자리는 시스템의 핵심을 끝에서 끝까지 간단하게 관통하는 테스트가 가급적 일찍 나오게 하는 것입니다. 이 두 가지 혈자리를 잘 보존하면 TDD를 성공적으로 할 수 있습니다.
채수원 강규영님과 함께 TDD를 통해 Line Reader를 만들어가는
동영상은, 지금까지도 많은이들이 참고하는 소중한 자료 중 하나입니다. 혹시 그 동영상에 대해 아쉬운 점이나, 생각이 변해서 지금이라면 좀 다르게 접근할 것 같은 부분은 없으신지요?
김창준 촬영한 것이 2003년입니다. 웹 채팅 서비스를 TDD로 구현했는데, 그중에서 일부분을 보여드렸죠. 재미있게 잘했다고 생각합니다. 아쉬운 점도 몇 가지가 있지만 하나만 꼽는다면 위에서 언급한 두 번째 혈자리를 잘 지키지 못했다고 생각합니다. 예를 들자면 아무것도 없을 때(Empty)를 첫 번째 테스트 케이스로 잡았는데, 지금이라면 그것보다 뭔가 있는 케이스를 먼저 잡고 전체를 가볍게 관통한 다음, 부분들을 키워나가는 식을 시도하겠습니다.
채수원 만일 개발을 잘 모르는 관리자나 경영층 인사가 "TDD가 뭔가요?"라고 묻는다면 어떻게 대답하십니까?
김창준 일단 그런 경우가 많지가 않았습니다만, 요즘은 이렇게 시작합니다. "개발 기간은 조금 늘어나지만 결함을 획기적으로 줄일 수 있는 개발 기법인데..."
채수원 굳이 TDD 관련 내용이 아니더라도, 좋은 소프트웨어를 만들고 싶어하는 IT 개발자들에게 해주고 싶으신 이야기나 조언은 없으신지요?
김창준 다음 세 가지 질문을 자신에게 묻고 솔직하게 대답해볼 것을 권합니다.
- 내가 어떻게 해서 이 자리에 있게 되었는가?
- 내가 이 자리에 있는 것에 대해 어떻게 느끼는가?
- 나는 어떤 일이 일어나기를 원하는가?
채수원 귀한 시간을 내어 인터뷰에 응해주셔서 감사합니다.
김창준 TDD를 소개하는 좋은 책을 써주셔서 감사합니다. 이 책을 통해 우리나라에 TDD가 더많이 퍼지고, 개발자들이 스트레스를 덜 받고 자신의 작업에 대해 뿌듯함을 느끼며 일하게 되기를 기원합니다.
* 현재 해당 동영상은 XPer 커뮤니티의 위키 사이트(
http://xper.org/LineReaderTdd/)에서 찾아볼 수 있습니다.