과거의 내가 미래의 나에게
클린 코드에 대한 고찰 본문
결과의 변경 없이 코드의 구조를 재조정하는 리팩토링이라는 단계가 별도로 존재하는 만큼 코드를 이쁘고 가독성있게 짜는 것은 중요하다. 많은 개발자들이 리팩토링 단계가 중요하다는 것을 알고 또 이를 위해 많은 공부를 한다. 이번에 내가 클린코드 책을 읽은 이유 또한 좀 더 나은 코드를 짜기 위해서였다. 아직 책을 완독하지는 못하였지만 책을 읽고 생각하게 되었던 점을 정리해서 글로 옮겨본다.
클린 코드는 왜 필요한가?
우리는 코드가 효율적으로 돌아가도록 그리고 최적화 할 수 있도록 여러가지 기법을 사용하고 또 그러한 환경을 마련하기 위해 많은 노력한다. 하지만 코드를 깔끔하게 짜고 정리하는 것은 컴퓨터가 코드를 이해하는 속도에 관한 것이나 혹은 최적화 하는 것과는 약간 결이 다른 작업이라 생각한다. 클린 코드는 컴퓨터를 위한 작업이 아니라 사람을 위한 작업이기 때문이다.
개발자의 1순위 목적은 코드가 원활히 돌아가서 제품이 정상 작동되도록 하는 것이다. 첫 번째 목표가 이것이기 때문에 코드가 어떻든 잘 돌아가기만 하면 된다라는 생각을 가진 개발자들도 우리 주변에서 심심치 않게 보게 된다.
그렇다면 제품만 돌아가게 하면 되는데 무엇하러 코드를 정리하고 깨끗하게 만들기 위해 노력하는 것인가?
이유는 아주 단순하다. 개발자는 제품을 만드는데 혼자서 모든 것을 만들지 않는다. 우리는 코드를 제품의 완성을 위해 짜기도 하지만 동료 개발자들에게 코드를 전달하고 공유하기 위해서도 짠다. 코드를 깨끗하게 짜야하는 이유는 사람을 위한 것이다.
물론 혼자서도 제품을 만들어내는 경우도 있지만 개발자는 단순히 제품을 만들어내고 일을 끝내지 않는다. 제품은 시간이 흐르면서 꾸준히 발전하며 이 때 이것을 만들어 낸 개발자는 코드에 살을 붙여 제품을 더 발전시켜야 한다. 하지만 사람의 기억력은 완전치 않고 약간의 시간만 흘러도 과거의 내 코드는 타인의 코드와 다름없게 된다. 결국 내가 쓴 코드를 다시 분석해야하는데 코드가 더럽다면 해석하기도 그리고 또 무언가 살을 붙이기도 어렵게 되어버린다.
흔히들 개발자라 하면 어두컴컴한 독실에서 헤드셋을 끼고 컴퓨터와 단 둘이서 지내는 그림을 생각하게 되는데, 우리는 알다시피 굉장히 많은 시간을 사람들과 소통하고 의견을 나누며 작업한다. 그렇기 때문에 작동이 잘되는 코드도 중요하지만 사람들과 소통이 잘되는 코드도 중요하다.
개발 전문가는 컴퓨터뿐만 아니라 사람과의 소통도 중요하다는 것을 깨달아야하며 이것이 클린 코드의 존재 이유일 것이다.
클린 코드는 어떻게 해야 하는 것인가?
아마 클린 코드 책을 읽은 사람들은 모두 클린 코드의 중요성을 알기에 이 책을 읽었을 것이라 생각한다. 나도 클린 코드가 중요하다 생각했고 그래서 이 책을 읽었다.
책을 읽기 전까지는 단순히 이 책에 나오는 여러 방법과 기준점들을 학습하고 암기하여 나의 코드에 녹아들게 하면 될 것이라 생각했지만 책을 읽을수록 그 생각은 옅어져갔다. 당연히 책이 형평없다라고 말하려는 것은 절대!!! 아니다. 내가 말하고 싶은 것은 이 책은 참고서 정도로만 사용해야하는 것이지 이 책을 절대적 기준점 삼으면 안될 것 이라는 것이다.
책의 저자는 저자가 겪은 세계에서 느끼고 깨달았던 것을 종합하여 클린 코드를 정의하였다. 그리고 우리는 책의 저자와 같은 일을 하고 있지만 그들이 살고 있는 세상과 똑같은 곳에서 살고 있지는 않다. 그렇기에 이 책을 모두 따라하여도 어쩌면 여전히 더 나아진 점이 없어보일지도 모르고 오히려 더 불편해지는 것이 나올 수도 있다.
클린 코드를 행하는 이유는 위에서 말했듯 나와 같이 일하는 사람들을 위한 것이다. 그러므로 만약 클린 코드 책대로 했다가 사람들과의 소통이 별 변화가 없거나 혹은 더 불편해진다면 이것은 클린 코드라고 할 수 없을 것 같다.
클린 코드를 한다는 것은 단순히 전세계적인 룰을 따르는 것이 아니라 나와 같이 일할 사람들이 더 편하게 코드를 볼 수 있도록 노력하는 과정이다. 우리는 책을 읽고 끝내는 것이 아닌 계속해서 끊임없이 타인을 위한 코드를 짜기 위해 노력해야 하는 것이다. 이것이 책에서 말하는 세세함에 집중하는 태도라고 할 수 있지 않을까 생각한다.
사람을 위한 코드, 클린 코드
클린 코드 책을 읽고 관련하여 이야기를 나눌 기회가 있었는데 그 중 클린 코드 책에서 제시하는 내용이 있는데 따라하긴 하지만 이것으로 더 나아지고 있는지도 모르겠고 사실 더 좋은 것인지 모르겠다라는 이야기가 나왔고 꽤 많은 사람들이 공감해주었다.
그러나 책의 서두에서 밝혔듯 이 책은 한 선배 개발자 집단의 훌륭한 한 사례에 불과하다. 클린 코드 책을 읽고 우리가 정말 상기시켜야 할 것은 변수명을 어떻게 지어야하는지, 함수는 어떻게 나열해야하는 지가 아니라 다른 사람이 내 코드를 보고 잘 이해할 수 있을지를 끊임없이 생각하며 컴퓨터를 위한 그리고 사람을 위한 코드를 짜야한다는 것이다.
이번 클린 코드 책을 읽고 또 이야기를 나누며 클린 코드에 대해서 다시 한 번 생각하게 되는 계기가 되었다. 앞으로 일을 하면서 앞으로 코드를 작성하는 데 있어서 시간이 없다는 이유로 포기하지 않고 내 옆의 동료를 위해서 그리고 나와 같은 모든 개발자들을 위해서 클린 코드에 힘을 쏟아야겠다는 생각을 하게 되었다.