brunch

You can make anything
by writing

C.S.Lewis

by 안영회 습작 Mar 28. 2022

TDD의 Fail과 삶의 직면(直面)에 대하여

프로그래밍에서 배운 지식을 삶의 다른 영역에도 적용하기

코로나 확진으로 인해 격리하는 기간에 무려 네 권 가까운 책을 읽을 수 있었다. 그 중에서 서로 아무런 연관성이 없어 보이는 두 권의 책에서, 역시 아무런 관련성 없는 주제에 대해 글을 쓰게 만들었다.


TDD 에서 배운 아기발걸음 아이디어

먼저 혼자만 이해하는 글이 되지 않기 위해 이전에 쓴 글 일부를 인용한다.

제가 아기발걸음을 떼는 방법을 익힌 경로는 <Test Driven Development: By Example> 에서 배운 프로그래밍 기법입니다. TDD를 어렵게(?) 익히고 나서 프로그래밍을 할 일이 없어지자 너무 아깝다는 생각이 들었습니다. 그래서 저의 다른 업무도 같은 방식으로 해보고 싶어서 도전하던 삶이 꾸역꾸역 이어지자 아기발걸음 원칙이라는 말을 알기도 전에 비슷한 방법에 익숙해지는 결과를 낳습니다. XP 책을 두 번째 읽을 때 비로소 아기발걸음 원칙이라는 말을 알았는데, 마침 걸음마를 배우는 아이를 키우는 중이라 그 말의 뜻을 온몸으로 새기는 행운도 누렸습니다.

언제였을까? TDD 책을 처음 접한 시기는 (블로그를 날려버려서) 기록이 남아 있지 않지만 2006년 즈음이 아니었을까 싶다. 분명한 기억은 익숙해지지 않아 고군분투했던 기억과 효과가 얼마나 나는지 측정하고 놀랐던 기억이 있다. 하지만 15년이 지난 지금, 더군다가 코딩을 10 년도 넘게 안하는 지금도 잊지 못하는 감각은 바로 TDD의 첫 단계가 실패하는 코드를 실행하는 일이었다. 


굳이 실패하는 코드를 실행해서 불편함을 맛보아야 하는가?

지금은 여러 가지 경험속에서 직면(直面)의 순간이 얼마나 중요한지에 대한 확신이 있다. 하지만, TDD를 처음 배울 당시는 부당해보였다. 꼭 그렇게 해야 하는지 납득이 되지 않았다. 아직 해당 기능을 짜지 않아서 실패할 것이 뻔한데 그걸 눈으로 꼭 확인해야 할까? 


나는 여기서 TDD에서 실패를 확인하는 순간을 직면(直面)이라는 개념과 연결했다. TDD 저자가 그리 알려준 것은 아니고, 코딩을 하지 않게 된 일상에서도 그 방법을 응용하려던 내가 스스로 찾은 연관성이다. 나는 두 가지 경험이 질적인 측면에서 매우 유사하다고 믿는다. 


그러던 차에 오늘 읽은 두 권의 책에서 그런 나의 믿음에 활용할만한 구절이 등장했다. 


이해의 시작은 그렇게 다름에 다가가는 것

첫 번째 인용한 문구는 정한경님의 책 <안녕, 소중한 사람>에 등장한다. 먼저 문구가 등장한 맥락을 이해하기 위해 나무위키에 소개된 책 소개를 인용한다.

당신이 붙잡아야 할 소중함에 대한 모든 것. 『안녕, 소중한 사람』은 익숙함 뒤에 가려진 삶의 진정 소중한 가치들을 일깨우는 책이다. 정한경 작가가 섬세하고 따뜻한 언어로 써내려간 이야기 한 편 한 편은 우리 곁에 머물렀던 누군가를 떠올리게 한다. 감정의 여운은 오래 남아, 책을 덮고도 한참을 생각하게 만든다. 그때의 당신을, 그때의 나를, 그때의 우리를.

당연스럽게도 TDD는 커녕, 프로그래밍과 전혀 무관한 책이다. 그렇다면 직면(直面)과는 관련이 있을까? 그래 보인다. 여기서 내가 인용하고 싶은 구절은 바로 아래 문장이다.

그렇게 다름에 다가가는 것

위 문장으로 끝나는 장의 제목이 바로 <이해의 시작>이다. 나는 이 부분을 읽을 때, 놀랍게도 아주 오래전 TDD를 처음 익힐 때 '왜 꼭 실패를 확인해야 하는거지?' 라는 질문에 대한 답을 듣는 듯했다. 이 책 <안녕, 소중한 사람>은 사랑하는 사이에서 놓치는 부분에 대해 주로 이야기한다. 그래서인지 나는 다름에 다가가는 것이 이해의 시작이라는 설명이 굉장히 마음에 들었다. 


그런데 다름에 다가가려면 무엇을 해야할까? 일단 내가 대상과 다르다는 사실을 알아야 한다. 그러기 위해서는 옳고 그름에서 벗어나야 한다. 왜냐하면 옳고 그름은 주관의 세상이고, 내 머릿속이지 진짜 세상이 아니기 때문이다. 


두려움은 무지에 따른 것이니 가능성을 보려면 직면하라

TDD에서 지금까지 내가 구축한 세상(프로그램)의 한계를 확인하는 작업이 Fail을 확인하는 일이다. 거기서 우리는 지금까지와는 다른 것을 행해 나아갈 수 있다. 책에는 또한 <내가 선 위치가 다른 사람과 다르다는 것>이라는 제목의 장이 있다. 나의 논리에 활용하기에 굉장히 좋은 제목이다. 해당 장에 내가 밑줄 친 내용에 이런 문장이 있다.

모든 두려움은 스스로를 알지 못해 피어난 것이었어요.

프로그래밍을 할 때 새로 무언가를 짜야 할 때 설레거나 두렵다. 두려움이 큰 순간은 프로그램 전체에 대해 이해가 부족할 경우가 대부분이다. 결국 Fail을 만나 구체적으로 무엇이 다른지 확인하면 우리는 두려움에 맞설 수 있다. 그것이 아마도 내가 직면(直面)과 TDD의 Fail을 강하게 연관시켜온 이유인지도 모르겠다.


더불어 두려움은 어쩌면 아직 알지 못하는 나의 진면목을 만나기 위해서 반드시 마주쳐야 할 관문일 수도 있다는 생각이 든다.


'좋아!'라고 긍정하는 태도와 TDD의 FAIL

또 한 권의 책은 전혀 성격이 다른 밀리언셀러 <타이탄의 도구들>이다. 여기 나오는 문구 하나가 비슷하게 직면의 순간을 암시한다. 앞선 글과는 다르게 Fail이 주는 불편함과 연관성이 있다.

'좋아!'라고 외치는 건 해결책에 초점을 맞추는 자세다. 갖가지 문제, 실패, 장애물을 미리 알고 받아들이는 자세를 갖게 한다. 이 자세만이 우리를 앞으로 나가게 한다. '좋아!'라고 외치며 기꺼이 받아들여라. 그리고 '좋아!'라고 외치며 앞으로 나가라.

위 문장은 '네이비 실'에서 강력한 리더십을 보여주었던 조코 윌링크의 노하우다. 부하직원이 상황이 안 좋아 그를 찾아올 때마다 그가 했던 말은 '좋아!'라는 것이다. 부하직원은 이렇게 답한 일도 있다고 한다.

'좋아!'라고 하실 거잖아요. 뭔가 잘못되고 악화될 때는 늘 좋다고 하셨으니까요.

저자는 이를 두고 상투적인 조언이나 긍정적인 척하려는 것이 아니라고 강조한다. 긍정적인 태도가 문제를 해결해주지는 않는다. 조코 윌링크의 '좋아!'는 FAIL을 확인하고 바로 무엇을 해야 하는지 집중하는 TDD의 프랙티스와 굉장히 닮아 있다.








작가의 이전글 빙산을 운행하는 일이 순리대로 사는 법인가?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari