읽기 쉬운 코드 - 지속 가능하고 유지/보수하기 쉬운, 이해할 수 있고 복잡하지 않은, 좋은 코드를 짜는 방법과 아이디어 로버트 C. 마틴 시리즈
마크 시먼 지음, 김현규 옮김 / 길벗 / 2024년 3월
평점 :
장바구니담기



프로그램 개발을 하다 보면, 기존에 만들어 놓은 프로그램을 수정해 달라는 의뢰를 종종 받곤 한다. 재미난 것은 의뢰하는 사람들 하나 같이 기능 한 두개 추가하고, 조금만 고치면 되는 간단한 거라고 말한다. 물론 그들은 개발자가 아니다. 어쨌든 간단하게 코드를 한번 살펴보면, 욕이 저절로 나온다.


주석은 당연히 어디에도 안 보인다. 일부러 지웠을 가능성이 많다. 더 황당한 건, 변수명을 마치 암호처럼 달아 놓은 것도 다수다. 이런 경우 허허 그냥 웃고 못한다고 하는 게 속 편하다. 의뢰한 사람은 기능 몇 개 추가하는 비용만 생각하지, 분석에 대한 부분은 전혀 생각하지 않는다. 괜히 정으로라도 손 댓다가는 일이 늦다는 핀잔만 돌아 올 수 있다. 


나도 개발자지만, 코딩을 참 거지같이 하는 사람들이 많다. 워낙 그런 사람들을 여럿 겪다 보니, 나도 혹시 그런 거지가 아닌가 하는 반성과 함께, 누구나 알아 보기 쉽게 짜려고 노력한다. 주석은 당연히 곳곳에 붙이고 있고, 변수명 설명도 빼놓지 않는다. 수정한 부분이 있으면, 코드 맨 앞과 수정한 곳에 날짜와 설명을 붙인다. 복잡한 알고리즘에도 설명을 빼놓지 않는다. 귀찮더라도 가급적 자세히 달고 있다.


이렇게 해놓으면 나 역시도 좋다. 나이 드니 기억력이 점점 안 좋아지는데, 몇 달 아니 몇 년 뒤에 수정해달라는 얘기가 나오면, 짧은 시간에 다시 코드에 관한 기억을 되살릴 수 있기 때문이다. 당연히 버그도 줄일 수 있다.



록스타급 개발자 마크 시먼 저자의  '읽기 쉬운 코드'는 나와 같은 개발자의 고충을 잘 이해하여 보다 효율적이고 직관적인 코딩 방법을 알려준다. 이 책의 해외 서평자가 말했듯이 70년 동안 고안된 최고의 아이디어, 노하우들을 모아 정리한 개발자에게 매우 유용한 책이다. 


그런 만큼 개발자 입장에서 도움이 되는 내용들이 많다. 특히 여럿이서 소프트웨어를 개발한다면, 합창처럼 서로 음과 입을 맞춰야 할 다양한 상황이 발생하는데, 이때 이 책의 내용을 통해 많은 기준점을 잡을 수 있을 것이다. 


그렇다고 일회성 꼼수 같은 것을 담은 책은 절대 아니다. 아키텍처, 알고리즘, 클린 코드, 성능, 보안과 같은 주제를 포괄적으로 다루면서, 소프트웨어공학이란 큰 그림을 이해하게 돕고 있다. 따라서 보다 근본적인 것을 파보기는 내용도 있고, 왜 그렇게 하는 것이 좋은지, 어떤 게 더 올바른 방향인지와 같은 것들을 말하기도 한다.


소프트웨어공학이라고 하면, 뭔가 딱딱하고 재미없게 느껴질 것이다. 그러나 '읽기 쉬운 코드'에서는 다양한 비유와 저자의 경험담을 적적히 담고 있어, 부담 없이 읽을 수 있다. 책 처음부터 소프트웨어 개발에 대한 비유로 집 짓기와 정원 가꾸기가 나온다. 개발자라면 이 두 가지 비유를 읽으며 주마등처럼 스쳐가는 다양한 일들이 떠오르며, 공감이 될 것이다. 정원 가꾸기 비유는 참 멋진 비유였다. 



'읽기 쉬운 코드'에 나오는 많은 조언들은 일종에 개발을 위한 체크리스트 역할을 한다. 드론 실기 시험을 보기 위해서는 각종 비행 코스와 함께 시작과 끝에 구호 같은 것을 외치며 기체 점검하는 과정이 있다. 처음에는 군대도 아닌데, 이렇게까지 해야 하냐는 생각이 들었다. 그러나 하면 할수록 이게 얼마나 중요한 과정인지 알게 된다. 프로그래밍도 마찬가지다. 실수를 줄이고, 보다 성공적으로 프로젝트를 끝내기 위해서는 치밀한 체크가 필요하며, 필수적인 것들은 체크리스트로 매번 점검할 필요가 있는 것이다.


'읽기 쉬운 코드'의 다양한 조언과 관련된 코드는 C#으로 작성된 레스토랑 예약 프로그램에서 가져와 설명하고 있다. 내용들이 하나의 프로그램에 연결되어 있어, 활용법을 전체적으로 이해하는데 큰 도움이 된다. 머리에도 좀 더 잘 기억되는 거 같다. 읽기 쉬운 코드를 지향하는 책인 만큼 C# 사용자가 아닌 다른 프로그래밍 언어 사용자더라도 충분히 이해할 수 있는 코드일 것이다.

그리고 부록 편에 중요 내용을 짧게 요약된 파트도 있고, 참고문헌도 잘 정리 되어 있다.



효율적이고 바른 코딩, 코딩 팁에 대한 책은 이전에도 여럿 있었다. 그러나 '읽기 쉬운 코드'처럼 소프트웨어 공학 입장에서 전체를 조망하고 휴리스틱 방식을 설명하는 책은 못 봤다. 게다가 이 책은 좋은 코드, 코드 관리뿐만 아니라. 개발자 조직문화, 조직관리에 대한 이야기도 하고 있어 더 차별화 된다. 


"어떤 개발자가 괜찮던가요?" 하는 질문은 나도 많이 받았던 질문이다. 그런데 부끄럽게도 나는 저자처럼 생각하지 못했다. 나를 믿고 함께 일한 동료를 평가하라는 참 비윤리적인 질문이라는 것 자체를 깨닫지 못했다. 나 자신을 반성하게 만드는 내용이었다. 이처럼 책에는 코딩 외에 개발자 조직 문화, 조직 관리 같은 이야기도 중간중간 나온다. 개발팀을 이끄는 리더에게 참고도 되고, 보다 깊은 생각을 하게 만든다.


좋은 코드가 어떤 것인가 한 번이라도 고민해 본 개발자라면, '읽기 쉬운 코드'를 꼭 한번 읽어 보라고 추천하고 싶다. 컴퓨터 서적 답지 않게 재미도 있고, 기술적으로도 얻을 게 많은 참 유용한 책이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo