요즘 책을 너무 읽지 않은 것 같다. 회사에서는 일하고 집에서는 진행하고 있는 프로젝트가 있어 책 읽을 시간이 많이 없었다. (는 핑계를 항상 대고있다.) 출/퇴근길에 Effective Java를 ebook으로 조금씩 읽기도 했는데 전철에서 서서 작은 화면으로 읽으며 이해할 수 있는 만큼 쉬운 책이 아니라서.. 책장을 넘기지 못한지 꽤 된 것 같다. 그러던 와중에 요즘 성장의 필요를 느꼈다.
이제 슬슬 회사에 적응하고 코드를 보고 작성하면서 문제들을 많이 느끼는데 그 문제를 어떻게 해결하고 무엇이 문제인지 구체적으로 알기가 어렵더라.
또 최근에 프로젝트를 하면서 같은 백엔드 파트 팀원에게,
~~보다 ~~로 하는 방법이 더 좋다고 느껴지는데 이게 일반적인 방법인지, 항상 좋은 방법인지는 잘 모르겠어요. 단순 의견이니 참고만 해주세요!
와 같은 말을 많이 했는데, 이제는 의견을 내는 것도 좋지만 왜 좋은 방법인지 설명할 수 있는 단계가 되어야 할 것 같았다.
그래서 책을 좀 읽어야겠다.
라는 결론을 내리고 여러 고민 끝에 Clean Code
를 먼저 읽기로 했다.
1장에 들어오면서 곧바로 요즘 핫한 주제에 대해서도 이야기한다. 코드를 자동으로 생성하는 시대가 다가오며 요구 사항만 있으면 누구나 코드를 작성할 수 있어 프로그래머가 필요 없어질 수 있다. 라는 주장에 대해 그 요구사항을 적는 것이 프로그래머이며 상세한 요구사항을 적기 위해 존재하는 것이 코드다. 라고 말한다.
평소에 내가 하던 생각과 비슷해서 재밌었다. 요즘 생성형 AI가 만능인 것 처럼 쉽게 생각하는 경향이 있는데 질 좋은 답을 얻기 위해서는 상세한 요구사항으로 요청하는 것이 필요하다. 컴퓨터가 이 요구사항을 이해하고 답을 내뱉는 것인데, 이 요구사항을 상세하게 쓴 것이 코드고 컴퓨터가 가장 잘 이해할 수 있는 언어가 코드니까.. 프로그래머가 없어진다는 얘기는 다소 호들갑처럼 느껴지기도 한다. 잘 작성된 코드를 내뱉는다고 해도 코드가 맞는지 해석하고 검증하고 정리하는 과정이 필요하다. 이 일도 프로그래머의 일이다.
프로그래머는 사라지지 않고 코드는 항상 존재한다. 그래서 Clean Code는 중요하다.
책의 내용에서 나쁜 코드와 나쁜 코드로 치르는 대가에 대해서 이야기한다.
2-3년 넘게 프로그램을 짰다면 남들이 저질러놓은 쓰레기 코드로 고생한 경험이 있으리라. 코드가 하도 엉망이라 프로젝트 진도가 안 나가는 경험도 있으리라. 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 프로젝트 초반에는 번개처럼 나가다가 1-2년만에 굼벵이처럼 기어가는 팀도 많다.
(중략)
나쁜 코드가 쌓일 수록 팀 생산성을 떨어진다. 그러다가 마침내 0에 근접한다.
나는 이 내용에 대해서 너무나 공감됐다. 나의 과거 프로젝트에서, 학교에서, 회사에서 남들이 저질러놓은 쓰레기 코드로 고생한 경험이 있다. 이는 생산성을 떨어뜨린다. 잘 정리된 코드라면 금방 이해하고 유지보수나 기능 개발을 이어갈 수 있겠지만, 그렇지 않은 코드라면 하나의 기능을 분석하고 이해하는데도 수일이 걸리기도 한다. 내가 진행했던 규모가 작은 프로젝트라면 마음대로 수정하거나 프로젝트 자체를 새로 개발하는 것이 가능한데 그 외 조직에서 개발하는 경우에는 기능을 유지해야 하기에 수정하거나 프로젝트를 새로 시작하는 것이 굉장히 어렵다. 비용과 관련된 문제로 절대 불가능한 경우도 있고.
무튼 나쁜 코드로 고생한 경험도 있고 나쁜 코드가 초래할 수 있는 단점도 알고 있으니까.. 나쁜 코드를 작성하지 않기 위해서 노력해야 한다. 좋은 코드를 습관처럼 작성할 수 있어야 한다.
그럼 좋은 코드는 뭘까.. 항상 궁금했다.
이 책은 깨끗한 코드를 구현하는 행위는 그림을 그리는 것과 비슷하다고 이야기한다.
그림을 보면 대부분의 사람은 잘 그려졌는지 엉망으로 그려졌는지 안다. 그렇지만 잘 그린 그림을 구분하는 능력이 그림을 잘 그리는 능력은 아니다. 다시 말해, 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.
클린 코드를 배워야 하는 근거를 비유를 통해서 잘 말해준 것 같다.
여담으로..
깨끗한 코드를 작성하는 프로그래머는 빈 캔퍼스를 우아한 작품으로 바꿔가는 화가와 같다.
라는 비유가 너무 마음에 들었다. 프로그래밍을 대해 이런 감성적이고 멋진 말로 풀어낼 때 정신을 차릴 수가 없다. 너무 멋진걸.. 이 책이 더 마음에 들기 시작했다.
살짝 딴 이야기를 했는데,,,
저자는 깨끗한 코드란 무엇일까에 대해 여러 프로그래머들에게 질문을 한다. 답을 좀 정리해보면,
(두루뭉술하게 정리했는데 책 내용을 너무 상세하게 쓰면 안 될 것 같아서 그랬다. 내용이 참 좋으니 직접 보는걸 추천!)
프로그래머가 많은 만큼 깨끗한 코드
의 정의도 많을 것이다. 여러 표현 방법과 기준이 있지만 결국 비슷한 목표를 가지게 되는 것 같다.
캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
위는 보이스카우트 규칙이라는데 개발자에게도 적용되는 말인 것 같다.
코드는 처음 작성할 때 보다 더 깨끗하게 해놓고 커밋해라.
로 바꿔서 마음에 새겨야겠다. 끝!
+ 내용 정리도 아니고 그저 후기도 아닌 무엇인가 알 수 없는 글이 된 것 같은데.. 원래 대충 글 쓰기로 했으니까 괜찮을 것 같기도 하면서 클린 코드를 읽으며 적는 내용이 더티해도 되는건가 싶기도 하고.. 그래도 지금 개발이 급해서 글은 간단하게 쓰고.. 진짜 끝..!!