요즘 TDD에 대해 공부를 하고 있어서 너무 반가운 주제였다. TDD에 대한 간단한 정의와 예시를 알려줬다. TDD를 이론적으로는 이해를 하였지만 아직 구현을 안해봐서 그런지 실전에서 어떻게 쓰는지가 너무 궁금했다.
짧은 시간이였기 때문에 기대보다는 얕게 끝났지만 핵심은 원하는대로 동작하는지 확인하기 위해서는 빠르게 피드백을 받아야 한다는 것이다. 여기서 피드백을 도와주는 것이 테스트 도구가 되는 것이다.
테스트 코드나 테스트 자동화 도구를 사용했다는 자체보다 내 코드의 무결성을 위해서 꾸준히 피드백을 받았다는 것이 중요하다는 것이다. 이 피드백에서 발생하는 테스크 코드는 의도치 않은 유용한 부산물이라고 했다.
지금 듣고 있는 강의에서 강조하는 부분과 일맥상통한다. TDD니 테스트 자동화 도구니 하는 것들을 많이 사용하니 알아둬야겠다는 마음으로 공부를 시작했는데 jUnit이나 Jest같은 도구 자체를 써보는게 중요한 것이 아니라 테스트 코드가 전해주는 피드백을 이용해서 찐코드를 내 의도대로 정확히 짤 수 있어야 한다.
원래는 내가 알고 있으면 상대방도 그만큼 알 거라고 생각하는 것을 지식의 저주라고 한다. 해당 세션 멘토님은 개발자들이 많은 것을 알게 되니 모르는게 계속 보이고 알면 알수록 배워야 할 것이 너무 많다는 것을 지식의 저주라고 정의하였다. 그래서 내 실력에 비해서 배워야 할 것이 많아서 배울 것이 많다는것에 압도된다고 하였다.
하지만 그것에 압도되는 것이 아니라 배울게 많다는 것은 그만큼 성장할 여지가 크다!라고 생각해야 한다. 채용공고나 코딩테스트, 면접(혹은 후기) 등을 통해서 현재 내 지식 수준과 상태를 꾸준히 점검해봐야 한다. 다른 개발자는 어떤지, 또 그 개발자들중에서 내가 가고 싶은 길을 먼저 간 사람은 어떻게 그 곳에 가게 되었는지를 파악해야 한다는 것이다.
함께 일하기 좋은 개발자 그리고 성과를 이룩한 개발자라고 하셨다. 개발 세계에 관심을 가지고 성장을 위한 노력을 함께 하면서 성장할 수 있는 개발자가 함께 일하기 좋은 개발자라는 것이다. 물론 좋은 개발자는 상황과 환경에 따라서 굉장히 상대적이라고 생각한다.
보통 개발자들의 연봉이 높다는 이야기를 하다보면 상위 1%에 해당하는 사람들만 해당되는 얘기라고, 그런 사람들은 타고 난거라고들 많이 얘기한다. 하지만 그 1%의 사람들이 정말 타고난 것인지, 노력으로 이뤄낸 것인지는 모르는 것이다. 가끔 나도 틀린 말은 아니라고 생각한다. (특히 코딩테스트 문제풀 때..)
그렇다고 그것에 얽매여서는 안된다. 재능은 선택할 수 없지만 꾸준함은 선택할 수 있는 것이다. 내가 선택한 길에 책임을 지고 극복해야 하는 것이다. 극복하지 못하면 역시 타고나는건가보다 하고 못난 합리화를 하게 될텐데 그런 내 모습을 보게 될 바엔 그냥 지금 견디는게 낫다고 생각하자.
언젠가 이해하겠지라고 대충 알고 넘어가지말고 러닝 커브를 극복하자. 처음엔 늘 어려운 것이다. 그 순간은 고통스럽지만 그걸 버텨내면 완벽하게 이해할 수 있다. 그러니까 쉬운 길 찾지말고 어렵더라도 제대로 알고 넘어가야 한다. 쉽게 얻은 것은 잃는 것도 쉽다.
이게 어렵다. 머리로는 알지만 파고 들수록 위에서 정의한 지식의 저주에 빠지는 경우가 많았다. 검색하다보면 꼬리에 꼬리를 물게 되고 아 이것도 알아야해?
하면서 학습해야 할 것들에 압도되는 것이다. 결국엔 원래 뭘 알고자 했었는지도 모호해진 경우가 꽤 된다.
그렇게 놓아버린 내용이 나에게 걸림돌로 돌아올지도 모른다. 최대한 이해하고 넘어가야한다.
한 시간 반 정도의 간단한 세션이었고 주제 역시 무겁지는 않았다. 지금 내 상황에서 와닿는 세션이었다. TDD 공부를 시작한 시점도 그렇고 생각이 많아지는 시기에 마음을 다잡을 수 있었다.
요즘 어려운건 어렵게 얻겠다는 양심이라는 문구를 자주 되새긴다.
지름길은 없다. 시간의 가성비를 따지지도 말자. 당장 잘해야 한다는 마음을 내려놓고 계속 해보자라는 마음으로 하다보면 언젠간 도착할 것이다.
(깜빡하고 유데미 할인 쿠폰 날렸다...😫)