|
사실 Beaufitul Code의 목차를 봤을 때만해도 흥미진진했던게 사실이다.
과연 베테랑 프로그래머들이 꼽는 Beautiful Code는 무엇일까?
내가 꼽을 Beatiful Code의 기준이 무엇이 될지도 흥미진진했던게 사실이다.
그런데 책을 읽으면 읽을수록 내가 기대하는 Beautiful보다는 Resolving에 가깝다는 느낌이 들었다.
어떤 문제를 해결 하기 위한(혹은 목표에 도달하기 위한) 과정을 코드로써 설명하고 있다는 느낌이 강하게 들었다.
아무래도 내가 잘 모르는 언어로 표현된 것들이 있었지만, 어느정도 이해가 되었기에 부담없이 읽어 나갈 수 있었다.
뭐랄까...정말 아름다운 코드가 무엇일까 라는 나와 같은 고민을 한 분들에게는 비추지만, 뛰어난 프로그래머들이 요구 사항을 만족시켜 나가는 과정, 프로그래밍 해 내가는 과정을 알고 싶은 분들에게는 추천할 만한 책이다.
나 역시 책 읽던 도중 Beautiful 이라는 단어를 지워내니 좀 더 재밌게 읽어 나갈 수 있었던 책이었다고 생각한다.
이 책을 읽으려 시도할 때 목표가, 나에게 있어서 지금까지의 Beautiful Code를 꼽는 것이었는데...아직 모르겠다.
내가 문제를 해결해 나가기 위해 세운 기준, 좀 더 좋은 코드를 만들어 나가기 위해 나름대로 세우게 된 기준들을 표현하는 것이라면 모를까...Beautiful 하다 말할만한 무언가를 느끼진 못한거 같다.
시간이 흘러 언젠간 내 손으로 Beautiful Code를 꼽을 그 날이 오길 바라며 하루 하루 최선을 다 하는 것이 정답이겠지?
|
|
소프트웨어 개발이라는 일은 정말 어렵고 힘든일입니다. 이책은 그 어렵고 힘든일에 어떻게 하면 혼을 불어 넣을 수 있을까를 고민했던 흔적들을 또다시 고수의 눈으로 해석해준 책입니다.
결코 쉽지만은 않은 책입니다. 그렇지만 누군가 책을 추천해 달라고 하면 꼭 추천해주고 싶은 책입니다. 어렵고 힘들지 꼭 한번은 거쳐야만 한 과정중의 하나가 아닐까 싶습니다.
이 책은 코딩방법이라던가 어떻게 해야만 정석이고 올바른 방법이다를 제시해 주지는 않습니다. 그렇지만 명장들이 생각하는 방식을 간접적으로 경험해 볼 수 있는 기회입니다.
절대 어디에서도 경험해 볼 수 없는 좋은 기회입니다. 이런 기회를 어렵다는 이유만으로 놓쳐버리기엔 너무나 아까웠습니다.
책은 너무나 어렵지만 어느 한줄 버릴게 없는 내용들 그리고 아직까지는 다 이해하지 못하지만 언젠가는 꼭 이해하리라는 목표도 심어주는 소중한 내용들입니다.
이런 구분을 하는게 웃기지만 초보자들은 단지 뭐라고 하는지만이라도 보라 권하고 싶고, 중급자들에게는 아직 옆에 멘토가 없다면 꼭 한번 읽어보라 권하고 싶습니다.
이제 일독을 마쳤지만 앞으로 2독, 3독 계속해서 반복해서 읽어야만 할 책 Beautiful Code 입니다. |
|
총평점 85
난이도 중상
이 책을 처음으로 받아보고 난색을 표하지 않을수 없었다.
일단 대학교 학부생이 읽기에는 조금 어려운 수준이 문제였다. 38인의 아름다운 설명이 들어있다고는 하나... 내가 주력으로 다루는 언어와 너무 다른 언어들이 즐비했고... 그걸 보자니 짜증이 물밀듯이 밀려올수 밖에 없었다. 하지만 언어에 구애받지 않고...
아름다운 코드들과 그에 대한 설명들을 보면서... 이게 정말 좋은 코드구나라는 생각을 하면서... 암기 위주의 책이 아닌... 이해식으로...나중에 활용할수 있는... 개념을 재해석 하는 방향으로 읽기에는 좋은 서적인거 같다 정리 : 조금 읽기는 어려운 난이도, 폭넓은 이해도를 돕는 서적
|
|
처음 이책에 대한 소개를 보았을 때 유명한 개발자들이 작업을 하면서 가장 아름답다고 생각한 코드를 소개하면서 여러 가지 개발에 관련된 팁 같은 것을 배울 수 있을 것이라 생각했다. 하지만 실제로 이 책을 받아 훑어보면서 이건 그 수준의 책이 아니구나 하고 바로 알게되었다.
이 책은 33장에 걸쳐서 코딩의 명장들이 자신이 작업했던 내용을 설명하고 있다. 특별히 일관된 주제를 가지고 작업한 내용이 아니라 각자가 경험한 부분에 대한 내용을 담고 있어서 정말 다양한 주제, 다양한 개발 환경, 다양한 방식으로 이야기를 풀었다.
처음에는 첫장부터 차근차근 읽어보려고 했는데 그렇게 읽는 책은 아닌 거 같다. 이 거장들이 이야기 하는 다양한 주제를 내가 다 이해하지도 못하고 또한 내용이 초보자를 대상으로 풀어서 설명한 것도 아니고 해서 일단 내가 관심을 가지고 있는 부분들을 찾아가며 읽어나갔다. 그 중 몇 몇 부분에 대한 리뷰를 적어보면,
3장 내가 결코 쓴 적이 없는 가장 아름다운 코드에서는 우리가 흔히 생각하는 아름다운 코드. 적은 코딩양으로 최적의 결과를 내는 방법에 대해 설명한다. "Programming Perls"라는 책의 저자로 유명한 존 벤틀리가 쓴 부분으로 Quick Sort 알고리즘을 분석하는 코드를 작성하면서 어떻게 아름다운 코드가 탄생했는지를 설명했다. 그리고 그 방법은 단순히 명석한 두되를 가지고 머리를 굴려서 짠하고 나오는 것이 아니라 한 단계, 한 단계를 거쳐가면서 아름다운 코드로 만들어 나가는 것이라고 얘기해 준다.
"단순함은 복잡함보다 앞서지 않는 것이다. 그 뒤에 오는 것이다" 7장 아름다운 검사는 JUnit을 사용해서 테스트하는 방법을 예제를 가지고 설명한다. 최근에 TDD 방법론이나 QA에 대해 관심이 생겨서 읽어보았는데 테스트에 대해 흥미를 갖을 수 있게 되었다. 저자는 테스트를 통해서 단순히 잘못된 부분을 찾아내는 것 뿐만 아니라 더 나아가 본래 코드 자체를 보다 아름답게 만들 수 있음을 이야기한다. 요새 블로그 등에서 종종 소개가 되는 이진 검색 알고리즘을 JUnit을 가지고 테스트하는 방법을 소개하고 있는데 굉장히 재미있게 읽었다. 실제로 테스트를 이 정도까지는 해야 하는구나 하는 생각도 들고, 테스트를 아름답게 하는 작업도 꽤 흥미있을 것 같다는 생각이 들었다. 책 내용 중에 독자에게 숙제로 내 준 부분에 대한 답도 나중에 확인할 수 있는 기회가 있었으면 한다.
16장의 Linux 커널 드라이버 모형: 협업의 장점 부분은 리눅스 커널 프로그래밍에 관심이 많은 사람들은 굉장히 재미있게 읽을 수 있는 부분이라 생각된다. 하지만 나에게 이 장에서 가장 인상적인 부분은 device의 형식을 체크하는 부분을 소스 상에서 일부러 명시하지 않는 이유를 설명한 부분이다. 보통 회사에서 코딩을 하면 읽기 쉬운 코드, 나중에 헷갈리지 않고 수정하기 쉽도록 특정 변수들의 형 체크를 하는 코드가 자연스럽게 들어가기 마련이다. 하지만 여기서는 그런 목적으로 추가한 변수가 오히려 다른 편법의 용도로 사용되어 코드를 지저분하게 만들 수 있다고 이야기한다. 같이 작업하는 사람들을 믿고 그런 부분을 생략하면 코드도 일관성을 띄고, 편법도 막고, 불필요한 버그 발생도 막을 수 있으며 다른 개발자들이 좀더 로직을 정확하게 짤 수 있도록 강제하는 효과를 얻을 수 있다는 것이다.
28장 아름다운 디버깅은 디버깅을 체계적으로 하는 방법에 대해 간단히 설명하고 저자가 함께 만들었던 ddd 프로그램과 델타 디버깅에 대해 소개하고 있다. 이 장은 개발자들을 힘들게 하는 디버깅에 대해 고민했던 저자의 경험담을 이야기하는데 그냥 글을 읽은 느낌상으로는 델타 디버깅이 실제로 적용하기에는 아직까지 힘들지 않을까 한다. 하지만 이런 참신한 시도를 한 결과를 읽어보면서 신선한 느낌을 받을 수 있었다.
여기 적은 내용 외에도 다양한 이야기를 접할 수 있지만 처음 개발을 하는 사람들 읽기에는 조금 불편한 책이긴 하지만, 충분한 시간을 가지고 생각하면서 읽으면 많은 영감 같은 것을 얻을 수 있는 책이다.
좀더 쉽게 써졌으면 더 많은 사람들이 읽지 않을까 하는 아쉬움이 약간 남는 책이다.
|
|
단순히 책을 읽고서 프로그래밍 분야에서 저명한 32명의 저자들의 skill이나 경험을 자신의 것으로 만들수 있다고 생각하면 실망할 것이다. 자신이 잘 알고 있는 분야이거나 주로 다루는 프로그래밍 언어에 대해서는 자신의 코드에 접목이 가능한 부분도 있겠지만 그렇지 않은 부분이 더 많다는 것을 독자들은 동감하게 될것 같다. 수 많은 저자들이 자신이 수행했던, 연구했던 코드들중에 아름다운 코드들로 분류한 공통적인 기준은 바로 단순함, 간결함이었다. 책 내용중에서 3장에 보면
- 코드를 삭제함으로써 기능을 추가하라
- 완벽한 것은 더 추가할 것이 없을때가 아니라 더 뺄것이 없을 때 이다. - 가장 빠르고, 신뢰할 수 있는 요소는 존재하지 않는 요소이다. - 단순함은 복잡함 보다 먼저오지 않고 항상 그 뒤에 따라온다. - 단순함을 통해 아름다움을 추구하라 - 더 적은 것으로 더 많은 것을 얻도록 노력하라. - 규칙을 깨뜨리려면 먼저 그 규칙을 알아야한다.
라는 내용이 있다. 이 격언들은 이 책이 씌여진 전반적인 의도를 대변하고 있다.
가장 적은 양의 코드가 최대한 빠른속도로 원하는 목적을 달성할수 있도록 최적화 시키는데는 저자들이 직면했던 가용자원의 한계가 한몫을 했을 것이다. 오늘 날에는 이러한 하드웨어 리소스가 부족한 환경을 경험할 수 있는 기회가 더 적어 졌고, 개발툴들의 최적화로 인해 이런 부분을 간과하고 넘어가는 부분도 적지 않은 것 같다. 따라서 저자들이 공통적으로 이야기하고 있는 단순하면서도 파워풀한 코드는 크게 어필하지 못할수도 있다.
하지만 수많은 사용자들이 사용하는 application 과 인프라 시스템설계부분에서는 여전히 간과할 수 없는 부분이며, 개발과정중에서 실제로 벽에 부딪히는 부분도 성능과 안정성 문제이다. 때문에 안정성부분에 있어서도 가혹한 사전 테스트를 강조하는 chapter(22장)도 눈에 띈다. 많은 개발자들이 주어진 개발환경안에서 customized 로직을 삽입하는 형태로 개발이 이루어진다. 시스템의 기본 성능은 이미 결정되어 건드릴 수 없기 때문에 차치하고서라도 자신의 로직에 대해 진지하게 최적화할 수 있는 방법을 모색하는 사람에게는 큰 도움이 될 내용이 많다.모든 사례를 이야기하고 있는 것이 아니므로 저자들이 문제를 해결해나가기 위해 사용했던 창조적 방법들과 사고방식등을 참조할수 있다는 이야기다. 코드의 원리들에 대해 깊이 고찰하고 싶은 열망이 있는 사람들이라면 소장할 만한 책이라고 생각된다.
|
|
문법을 익히기 위한 책이나 기존 코드 리펙토링 서적과 사뭇 다른 내용을 볼 수 있습니다.
이 책은 프로그래밍을 하며 느꼈던 점, 생각해보아야 할 점들을 직접 스스로 코딩중에 깨우치지 않아도 미리 볼 수 있습니다.
프로그램을 만들때 설계에 적당히 무게를 두어야 한다고 생각하는 사람이라면 이 책을 읽으면 분명 도움이 되리라 생각됩니다.
주된 내용은 여러 사람들이 자신의 업무나 일화를 겪으면서 이리 저리 깨달을수있게 한 문제들과 해결책, 개인적인 생각을 제시 합니다.
한가지 사소한 고민(생각)으로 부터 시작하여 점점 넓은 범위로 이해를 하게 되는데, 여러 사람들의 관념이라던지 다양한 해결법을 볼 수 있습니다.
저 같은 경우는 평범한 웹프로그래밍을 하던 사람이고, 이 책의 내용중에 심각하게 아키텍쳐 위주인 내용도 있고, 지루하고 따분한 알고리즘 문제들도 있습니다.
하지만 설계나 최적화 부분에서 매우 큰 흥미를 느꼈으며 나머지는 흥미롭지는 않았고 그냥 읽고 넘어가는 수준 이었습니다.
모든 부분이 도움이 될 수는 없습니다.
아마 자기가 평소 관심있던 부분은 좋게 느끼고, 전혀 관심이 없는 부분은 보기 싫거나 이해 조차 안될껍니다.
기존의 책들에서는 보기 힘든 내용들이며
이 책은 해당 분야의 전문가에게 직접 원고를 받아 책으로 엮은 것으로
챕터 하나하나 마다 그 부분에 대한 완전 다른! 내용이 들어가 있습니다.
(코드/설계/작동의 아름다움을 추구하는건 공통적으로 들어갑니다..)
단점으로 생각되는건
어느 정도 수준이 되는 분들이 집필하셨고
그 때문에 이해하기가 쉽지 않다고 생각됩니다.
"책을 잘 쓰는 사람" 이 쓴 책이 아니라서
여타 다른 책의 일관성이나 해설은 다소 미흡한점도 있고,
적어도 한 챕터를 재미있게 보려면
그 챕터에 쓰인 언어에 대해 능숙하고
해당 분야의 용어를 잘 알며, 어느 정도 높은 상식선을 유지 해야만
이 사람이 무슨 말을 하고 무엇이 문제 였으며 이 해결법이 왜 뛰어난지 알수있습니다.
그래야 해당 챕터를 다 읽고 나서 내 머리 속에 뭔가가 달라졌다는걸 느끼게될꺼에요..
만약 그렇지 않으면. 차라리 해당 챕터를 보지 않는게 좋습니다.
이 책은 프로그래밍 입문자나 초보자가 접하기엔 다소 무리가 있습니다.
최소 1가지 이상의 언어에 자신이 있고 (언어 하나만 제대로 해도 처음보는 언어들을 이해 할 수 있습니다.)
한번쯤은 땀이 베어든 이야기를 보고 싶다면 권하고 싶습니다.
책 목차의 절반 정도는 지루하다고 느끼고, 절반 정도는 흥미롭다고 느끼면
이 책을 한번 읽어 보시기 바랍니다.
(관심없는 내용을 봐서 득 될 것 없는 책 입니다. 하지만 관심있는 챕터를 본다면 충분히 얻는 게 있어요.)
분명 나름대로 도움이 되는 내용들이며, 서점이나 도서관에서 가장 맘에 드는 한 챕터정도를
읽어 보시면 충분히 소장하고 싶은 가치가 있다고 생각하실 껍니다. |
|
요즘은 취미처럼 컴퓨터 서적란을 뒤적거리는데
이 책은 38명의 저자가 하나의 주제에 관하여 쓴 책이라기 보다는 개발자들이 그 많은 언어를 다 알수는 없지 않은가! -
이 책의 단점은 바로 그런 점일 것이다. 설명한 것이 아니라 십상이다.
하지만 이런 수많은 단점에도 불구하고 이 책은 그 자신만의 매력이 분명히 존재한다. 가까울 정도였다.
책을 읽어나가는 과정이 만만치는 않기 때문에 이 책을 다른 이에게 선뜻 권하기는 쉽지 않을 듯 하다. 하지만 전부는 아니더라도 꾸준이 읽어나가는 사람에게는 분명한 보상이 있으리라 생각한다. |