며칠 전에 즐겨보던 유튜브 채널인 "포프 티비"에서 "클린 코드 때문에 취업 실패한 썰"이라는 제목의 영상이 하나 올라왔습니다. 이 영상의 주된 내용은 지인이 클린 코드라는 개념에 대해 면접에서 책 "클린 코드"에 대해 많은 거론을 했고 그에 동의하는 것처럼 설명을 해서 탈락했다였습니다. 그러면서 북미 일부 기업은 본인 스스로 올바른 판단을 내리지 못하고 유명한 책들의 내용을 광신하는 사람들을 거르기 위해 면접 또는 채용 공고에서 클린 코드라는 단어를 사용한다고 했습니다. 이 영상을 본 후, 개발에 대해 가지고 있던 생각들을 되돌아보면서 여러 글들을 찾아보았습니다. 예전에 흘려들었던 말들도 되새겨보았습니다. 그러면서 너무 좁은 시야로 답이 없는 문제들을 접근하고 있었다는 결론에 도달했습니다.
개발을 하다 보면 일부 문제들에 대해 해답을 내놔야 할 때가 있습니다. 여기서 주의할 점은 정답을 내놓는 것이 아닌 해답을 내놔야 한다는 것입니다. 정답은 "옳은 답"을 의미합니다. 해답은 "질문이나 의문을 풀이하는 것"입니다. 따라서 문제의 정답이라 하면 만인이 동의하는 답이지만, 해답이라 하면 여러 개의 답이 있다는 의미입니다. 저는 지금까지 정답이 없는 문제들에 대해 해답을 내놓기 위해 유명하다는 책들을 읽었습니다. 클린 코드, 오브젝트, 클린 아키텍처... . 개발을 좋아하는 사람들과 많은 얘기도 나누었죠. 그런 과정을 거치면서 "나만의 해답"을 찾은 듯했습니다. 하지만 곰곰이 생각해 보면 나의 해답보다는 책의 주장을 중계하며 이것들을 정답이라 여겼다는 생각이 듭니다. 나의 주장을 얘기할 때 대부분의 경우는 개인의 생각이나 경험보다는 책을 근거로 사용했으니까요. "XXX책 YY부분에 이런 주장이 있어~"라는 말과 함께 그것이 정답인양 말하곤 했습니다.
프로젝트를 할 때도 이런 식으로 정답을 정해놓고 프로젝트를 했습니다. 현재 친한 형이 약 1년간 진행했던 프로젝트에 합류해 같이 프로젝트를 진행하고 있습니다. 그러면서 1년간 쌓인 코드를 보면서 책에 나온 내용과 다르다는 이유로, 내가 생각하는 해답과 다르다는 이유로 "이건 정답이 아니야, 수정해야 해!"라고 주장했습니다. 사실, 지금까지 공부해 온 것과 다른 부분이 있을 뿐, 완전히 이상하고 못 알아볼 정도의 코드도 아녔는데 말이죠.
물론 책을 근거로 나만의 해답을 말하는 것이 나쁜 것은 아닙니다. 꼭 자신의 경험을 근거로 들어야 하는 것도 아닙니다. 겪었던 경험이 그리 인상 깊지 않았다면 기억에 남지 않을 수도 있습니다. 경험이 부족하지만 책의 해답에 동의하기에 책이 유일한 근거가 될 수도 있습니다. 하지만, 우리가 궁극적으로 추구하는 것은 정답이 아닌 해답이란 것을 항상 염두에 두어야 합니다. 책을 광신해서는 안됩니다. 이상을 추구해야 하지만 현실과 타협할 줄도 알아야 합니다. 모든 상황에서 리소스가 충분하지는 않으니까요.
그래서 좋은 코드, 좋은 객체지향에 대해 자세한 정의를 내리지 않기로 했습니다. 유명한 책들이 정답이라는 생각을 하지 않기로 했습니다. 인지도와 상관없이 모두 해답일 뿐이니까요. 앞으로는 여러 해답을 들어보고, 그 해답에 접근하게 된 바탕을 이해해보고자 합니다.
이 고민을 하면서 검색을 하다 보니, "잘 가, 클린 코드"라는 글을 찾게 되었습니다. 개인적으로 이 글도 한번 읽어보면 좋겠다는 생각에 링크를 첨부합니다.