본문 바로가기
[Review]/Book

[도서 리뷰] 프로그래밍의 규칙: 더 나은 코드를 작성하는 21가지 개발 비법

by 해피빈이 2024. 6. 23.

> 진행에 앞서

개발자로 오랜시간 지내다보면 종종 하게되는 생각이 있다.

'지금 작성하는 코드는 최선일까?'

'어떻게 작성하면 더 좋은 코드를 작성할 수 있을까?'

 

그래서 이와 관련된 여러 책을 보기도 한다.

이러한 책을 볼 때마다 느끼는 것은 내가 실제로 체험한 경험에 비례해서 공감이 된다는 사실이다.

내가 쉽게 이 길을 가기 위해 경험이 별로 없는 내용이나, 혹은 고민의 흔적이 별로 없는 것에 대해서는 책을 읽어도 별로 들어오지 않는다.

또한 그 당시에는 익혔다 할지라도 실제 내 개발상황에서는 적용되기가 어렵다.

그것은 나의 고민이 빠졌기 때문이다.

 

그래서 이런 책은 나의 고민과 함께 읽어야만 진짜 내것이 될 '확률'이 높아진다.

또, 이런 고민은 나의 경험에 비례해서 올라간다.

 

이번에 책을 읽으면서는 나의 경험이 얼마나 누적되었는지를 생각해볼 수 있었던 시간이었다.

 

> 책에 대한 간단한 정보

책 표지

책의 표지는 단순하다. 프로그래밍을 작성하는 규칙을 정석으로 알려줄 것만 같다. 그래서 좋았다.

다만, 이 책의 표지는 안쪽으로 감싸있지 않고, 그냥 미국책과 같은 스타일로 겉면만 감싸도록 되어있다.

그래서 이 책을 보면서 모서리가 쉽게 해지는 것을 경험하였다.

 

> 인상깊은 부분들

이 책의 가이드를 설명한 서문

이 책의 가이드를 서문에서 수록하였다.

책을 읽으면서 이런 개발자와 같은 설명이 담긴 책은 흔치 않아서 좋았다.

어떤 부분을 어떻게 표현했다고 적혀있으니 이런 것만 잘 숙지하면 이 책을 읽는데 어려움을 느끼지 않을 것이다.

 

규칙의 예시들

목차를 보면 규칙이 어떤 식으로 적혀있는지 알 수 있다.

가령 다음과 같은 것들이다.

규칙01. 최대한 단순하게, 그러나 너무 단순하지 않게

규칙02. 버그는 전염된다

규칙03. 좋은 이름은 최고의 문서다

규칙04. 일반화에는 세 가지 사례가 필요하다

규칙05. 첫 번째 최적화 교훈: 최적화하지 말라

...

 

생각보다 흥미로운 제목이 많다.

따로 노트에 적어놓고 새길 정도의 규칙들이다.

 

인상적인 규칙의 내용

필요없는데도 미래에 할지도 몰라서 구현한 것이 많았던 나의 지난 과거를 회상하게 하였다.

언젠가 필요할지 모르니 파라미터를 좀 더 유연하게 해야한다거나, 이름을 좀 더 일반적인 이름으로 만들자는 것 등 많은 것들이 현재 필요한 것을 넘어서서 구현하고 있었다.

하지만 여기에서는 분명히 이야기 한다. '필요하지 않으면 구현하지 말라'

XP의 YAGNI(You Ain't Gonna Need It)가 생각났다.

사실 미래의 조건은 미래에만 알 수 있기 때문에 현재는 확정적으로 알 수가 없다.

그래서 불필요한 고민을 야기시킨다.

 

새로 개발할 것을 결정해야 할때

코드를 개발하다보면 이것을 점진적으로 변화시켜나갈 것인가. 아니면 새롭게 갈아엎고 개발을 할 것인가 하는 고민이 오는 순간이 있다.

그것에 대한 결정의 기준을 '두 배 좋은가'라고 간단히 물어보고 있다.

그렇게 확실하지 않다면 해당 이슈는 점진적으로 처리하는 것이 좋다.

일단 새롭게 재작업을 한다면 큰 비용을 치루는 것은 자명한 일이다.

하지만, 그만큼 새롭게 정의된 모든 스펙을 만족할만 한 개발이 시작될 것이기에 이에 대한 장점도 가져올 수 있다.

이런 갈림길에 있을 때 자신만의 원칙을 세워야 한다면 이렇게 세우는 것은 매우 합리적인 판단을 하는 데 도움을 줄 수 있을 것이다.

 

중요한 한마디

이 책에서 소개한 규칙은 '고스트 오브 쓰시마'를 개발한 서커펀치 프로덕션의 경험을 가져와서 한 것이 많다.

그런데 우리가 처한 상황은 각자 다를 수 있다.

그래서 서두에 언급한 내용이지만, 결국 나에게 해당하는 규칙은 각자마다 어느정도 차이가 있을 수 있다.

그래서 나만의 규칙을 만드는 것이 중요하다.

이 책이 교과서가 아닌 참고서 정도가 된다는 것을 명심하자.

 

그리고.. 부록

이 책의 예제는 어떤이에게는 매우 아쉽게도 C++을 기반으로 작성되어 있다.

물론 요즘시대에 개발 언어가 무엇이 그리 중요하겠냐마는 어느정도 중요하기는 하다.

보통 개발 10년차 이상이 된다면, 자신의 주력언어를 모국어처럼 다룬다고 생각한다.

반면에 그 주력언어를 제외한 다른 언어는 외국어와 같이 보일 수 있다.

숙련도에 따라 영어 혹은 일본어 등과 같이 보인다는 것이다.

모르지는 않겠지만, 그다지 와 닿지 않거나, 와 닿도록 해석하는데 노력이 든다는 것이다.

 

그래서 그것을 도와주기 위한 부록이 들어있는 것이 그나마 다행이라는 생각을 했다.

 

뒷표지

사실 서커펀치 프로덕션은 사람들에게 잘 알려져있는지는 잘 모르겠다.(게임에 관심이 있는 사람은 알 것이겠지만)

오히려 고스트오브쓰시마는 잘 알려져 있어서 나조차도 게임 이름을 통해서 이 프로덕션을 알게 되었다.

그래서 이곳에서 체득한 경험이라면 다른 일반 개발자들에게 도움이 될만하겠다는 생각을 하게 한다.

 

 

> 괜찮은 부분

1. 괜찮은 주제이다.

프로그래밍의 규칙이라니, 얼마나 설레는 제목인가 싶다. 내가 열심히 하려고 노력하고, 잘 하기 위해 애쓰는 그 분야에도 규칙이 있다니, 그것을 빨리 익힐 수 있기를 누구든 원할 것이다. 물론 누구나 본인도 모르게 이런 규칙을 다 갖고는 있겠지만, 이러한 참고서와 같은 책을 통해서 확인받고 싶어할 것이다. 그런 관점에서 이 책은 괜찮은 주제를 가지고 나왔다고 생각한다. 또한 깔끔히 정리해서 21가지를 내어놓았으니 숫자로 정해놓고 정리하고 싶은 개발자의 특성상 더 와 닿을 제목과 주제를 가지고 왔다고 생각한다.

 

2. 설득해 가는 과정이 인간적이다.

이 책에서는 시작부분부터 서로의 생각이 있음을 인정한다. 그래서 이 규칙을 곧이곧대로 받아들이지 않았으면 좋겠다고 말까지 한다. 독자를 생각하게 하고, 그것에 대해 반론을 제기할 필요가 있다고도 말한다. 그러면서도 무엇인가를 받아들여야만 한다면 그 과정에서 필요한 방법도 제시한다. 이런 내용이 꽤 인간적으로 보였다. 책은 사람을 잘 설득하는 데 목적이 있으며, 사람이 설득되는 데에는 수려한 문구와 잘 정돈된 형식들도 중요하지만, 무엇보다도 마음을 흔드는 부분이 중요하다. 마음을 흔드는 과정에서는 공감과 대안제시가 중요한데, 그런 것들을 처음부터 인정하고 시작한 책이라는 사실이다.

 

3. 유명 개발사 프로덕션의 사례로 온 내용이다.

콘솔 게임에 조금이라도 관심이 있다면, 실제 플레이 여부와는 관계없이 '고스트 오브 쓰시마'라는 게임을 알 것이다. 이 게임은 소니의 퍼스트파티 게임으로서 작품성과 게임성 자체가 검증된 게임이다. 이런 게임을 만드는 과정에서 작성한 코드가 어떤 규칙에 의해 개발되었는지 안다고 하면 꽤 도움이 된다. 보기 쉽지 않은 레퍼런스이기 때문이다. 사실 사람들이 어느 직장에 들어가는 것은 그 회사만의 문화와 규칙을 배우기 위함이라는 것도 무시할 수 없다. 그런 관점에서 이 책은 이런 니즈를 충족시켜준다.

 

> 아쉬운 부분

1. 책의 표지는 매우 아쉽다.

작은 부분이라고 생각할 수 있지만, 이 책을 약 한달이 안되는 기간동안 가지고 다니면서 읽었는데, 이 책의 상태가 그리 깔끔하지 않다는 것을 발견했다. 표지 부분이 말아올라가는 현상이 매우 쉽게 발생했다. 옛날에 나온 책이라면 그러려니 하겠지만 2024년에 나온 책. 그것도 잠시 잠깐 읽을만한 책도 아니고 오래두고 읽을만한 책이 이렇게 관리가 어려운 스타일로 되어있다면 이것은 매우 아쉬운 선택이라는 생각이 든다.

 

2. 채택된 언어가 C++인 것은 아쉽다.

사실 이것은 게임을 주제로 다루었기 때문에(언리얼 등 게임엔진에서는 C++을 사용) 어쩔 수 없는 부분이라는 생각도 들고, 이것을 파이썬 독자를 위해 코드 읽는 방법을 부록으로 수록했을 정도로 아쉬움을 달랬기 때문에 어느정도는 해소가 되었다고 생각이 든다. 하지만, 그래도 여전히 남아있는 사실은 C++이라는 사실이다. 사실 이것은 개인차가 있기 때문에 C++이라서 마음에 든 사람도 있었을 것이라고 생각이 든다. 하지만 자바나 C, 파이썬 등으로 나왔다면 좀 더 일반적으로 쉬운 관점에서 널리 읽히기 좋은 책이 되지 않았을까 하는 아쉬움도 든다. 이런 유사한 내용으로 다른 언어와 함께 수록된 책이 나왔으면 하는 생각이 들기는 했다.

 

> 추천 독자

코드를 잘 작성하고 싶은 일반 개발자

 

> 개인적인 평점

- 가격: 7 / 10

- 내용: 9 / 10

- 디자인: 7 / 10

- 구성: 8 / 10

 

> 정보

저자: 크리스 짐머만

옮긴이: 박상현

출판사: 한빛미디어(오라일리)

가격: 32,000원

전체 페이지: 460페이지

 

** 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

반응형

댓글