테스트 코드라는 걸 처음 알게 되었을 때 얼마나 신선했는지 모른다.
내가 작성한 코드를 테스트하는 코드를 작성해야 한다니!
버그에 대한 불안감을 물리치고 자신 있게 코드를 수정하기 위해 거쳐야 하는 과정이다.
역시 공짜로 얻어지는 짜릿함은 없었다.
자연스럽게 객체 지향, TDD라는 이론에 매력을 느끼게 되었다.
진짜 개발자는 쉽게 읽히는 코드를 작성하고, 테스트 자동화에 능해야 한다는 생각을 가슴 깊이 품었다.
그런데 이게 정말 쉽지 않다는 걸 금방 알 수 있었다.
많은 사람들이 능숙하게 하기 어려워 하는 일에는 다 이유가 있는가 보다.
말은 참 쉽다. 뚝딱 뚝딱 이렇게 저렇게 하다 보면 짠!
될 것 같지만 안 된다.
우아한 결과물에는 피와 땀이 잔뜩 스며있는 법.
잘 읽히고 쉽게 테스트할 수 있는 구조로 코드를 작성하기 위해 부단히 노력해야 한다.
특히 나는 머리가 나빠서 책에 수도 없이 등장하는 단어 하나 하나를 이해하기 위해 많은 시행 착오를 거치곤 한다.
잘못된 이해를 바탕으로 이상한 코드를 작성하면서도 잘 된 코드인 줄 알고 신이 나기도 한다.
그러면서 ‘이렇게 하면 안 되는구나’, ‘그 말이 이 뜻이 아니었나?’, ‘이렇게 하는 게 더 나은 방법이겠구나’ 하는 깨달음을 쌓아 올리고 있다.
아마 10년 뒤에도 나는 여전히 깨달음을 쌓아가며 과거의 한심했던 나를 토닥이고 있지 않을까.
나에게 잘 하고 있다고 말해주고 싶다.