모든 개발자는 사실 TDD를 하고 있다

나는 아닌데…

아니긴 뭐가 아닌가.

개발자라면 누구나 다 코드를 써내려가기 전 머리 속에서 간단한 테스트가 휘리릭 만들어진다. 이런 조건을 가진 경우 이렇게 액션이 일어나면 이런 결과가 나오겠구나. 그리고 코드를 몇줄 써내려 가고, 코드를 눈으로 따라 보면서 역시 머리 속에서 테스트가 돌아간다. OK. 이러면 잘 돌아가겠다. 생각이 들면 다음 기능으로. 아니면, 이거 좀 이상한데, 여기서 잘못된 값이 나오겠다라고 생각하고 수정으로 들어간다.

매우 짧고, 매우 불안정하며, 실수하기 쉽고, 용량이 감당이 안되서 결국 엉망으로 테스트가 돌아가게 되서 그렇지, 모든 코딩과정에는 머리 속에서 함께 테스트가 일어나기 마련이다.

사람의 두뇌라는게 매우 빠르게 복잡한 사고를 할 수 있기는 하지만, 양이 늘어나면 감당이 안되고 병렬로 처리도 잘 안되고 오류도 잘 나기 마련이다. 그래서 그 머리 속에서 일어나는 그런 코드를 보면서 하는 인간지능 TDD를, 밖으로 끄집어 내서 코드로 만들어버리면, 실수도 안하고 아무리 길고 복잡해도 불평한번 없이 알아서 수행해주는 컴퓨터가 그 귀찮은 일을 대신 해주는 것이다. 그런 사이 개발자는 맘편히 다른 문제에 더 집중할 수 있고.

어짜피 테스트코드를 사용하는 TDD를 못하는 사람이라면, 머리 속으로도 비슷한 작업이 그다지 잘 돌아갈 것이라고 생각되지 않는다. 그나마 두뇌의 스트레스를 줄여주는 쪽으로 하는게 결국 결과가 낫지 않을까?

코딩이란 걸 시작한 이후로 쭉 해온 습관이라 그럭저럭 돌아가는 인간지능 TDD를, 별로 안만들어봐서 어색한 코드로 표현하는 불편이 있긴 하지만 자꾸 노력해서 인간-컴퓨터 협력 TDD로 바꾸면 인생이 편해질 거다. 켄트 벡의 얘기대로 "맘편하게 잠자리에 들 수 있다". 맘편하게 데이트에 나갈 수 있고, 맘편히 휴가를, 맘편하게 가족과 시간을…

 

책에 들어갈 TDD 내용 좀 쉽게 설명하려고 생각해 본건데.. 좀 억지스러운가?

영회한테 배운 제목 낚시 연습으로는 뭐 괜찮은 듯.

8 Comments

OutsiderJune 5th, 2009 at 11:19 am

생각해 보니까 맞는 말이신듯 합니다.. ㅎ

영회June 5th, 2009 at 11:51 am

한 수 더 가르쳐주지.. ㅋㅋ

형이 말한 논리대로라면
자동화 도구를 써서 명시적으로 TDD를 하는 경우와 암산(?)으로 하는 묵시적 TDD가 있겠군.
차이는 묵시적이냐 암시적이냐 차이겠지.

기록을 남길 경우
- 다시 써 먹을 수 있고
- 다시 써 먹다 보니 전보다 더 나은 형태로 발전이 가능하고…

위 두 가지 측면은 묵시적으로도 가능하지만, 아무래도 기록을 해두는게 유리할 듯

- 남도 써 먹을 수 있고

이건 묵시적일 땐 불가능하고…

지식 경영이나 집단 지성도 명시적인 재사용과 진화, 확산의 흔적 아닌가?

TobyJune 5th, 2009 at 11:56 am

영회/ 묵시적은 뭐지?

머리에서 꺼내서 다른 형태로 재구성하는 과정에서 그 아이디어가 명확해진다는 장점도 있지,
반면에 실제화 시키는데 서투르면 혼란에 빠질 가능성도.

내가 말하고자하는 것은 결국

“부디 TDD 한번 해보세요…”

narusasJune 5th, 2009 at 2:41 pm

전두엽 자체가 아직 일어나지 않은 사건에 대한 시뮬레이션을 위해 진화된 기관이니까요.
http://www.ted.com/talks/lang/kor/dan_gilbert_asks_why_are_we_happy.html

TobyJune 5th, 2009 at 4:27 pm

narusas/ 처음 들어보는 얘기인데.. 흥미롭네요.

잇츠굳June 5th, 2009 at 5:25 pm

영회싸한테 제목 낚는 법을 좀 배워야 겠네요. ㅎㅎ
글 잘 읽었습니다. 맞는 내용이네요.
TDD 쉬운 것 같으면서 막상 적용할려면 먼산을 보게 되는 데…
정말 큰 맘 먹고 한번 해봐야겠네요. ㅎㅎ

영회June 5th, 2009 at 7:29 pm

잇츠굳/ 제목 낚시는 신문기사에서 배우심이~

KiteJune 6th, 2009 at 8:35 pm

마침, 며칠전에 회사 사람들에게 이야기 한 것과 비슷한 맥략의 이야기라서….
개발자들은 자기 만의 방법들을 가지고 테스트 코드를 작성한다는 이야기를 누군가 하더라구,
나도 거기에는 동의하지만, 단 한순간만을 위한 테스트 코드를 작성하면, 결국 버려지는
코드를 만드는 것이데, 이런 경우라면 시간이 흘러갈 수록 효과는 반감하게 되겠지.
TDD는 코드 작성시 뿐만 아니라, 개발하고, 유지 보수하고, 리펙토링과 테스트 할때도
유지되어야 누적 효과적인 측면에서 효율 적인 것 같아.

하지만 결국은 개발자에게 도움이 되어야, 끈기 있게 이루어 질텐데… 아직은 이런 예를
못찾아서 아쉽네.

Leave a comment

Your comment