본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/개념 서적: (Conceptual Books): TDD, OOP, DDD

클린 소프트웨어 : 애자일 원칙과 패턴, 그리고 실천 방법 - 엉클밥 - [5/7]

 

너무도 유명한 책. 하지만 읽기엔 상당히 까다로운 책

 

책의 원저는 다음과 같다. < agile principles patterns and practices in c# >

 

저자는 개발자 생태계에서 매우 유명한 Robert C Martin으로 별칭으로 엉클 밥이라고도 불린다.

 

아마존에서 찾아보니 1판은 2006년도에 나온 것 같다.

 

책에서 언급한 실제 설계에 참여한 프로그램들은 대부분 1990년대의 이야기들로 구성된다.

 

책에 대한 평가

★★★

📅 : 2020년 8월 3일 ~ 9월 17일 

 

개인적으로 7점 만점에 5점을 주고 싶다.

책의 가치가 5점이라는 것이 절대 아니다. 해당 책은 추천도가 매우 높은 책이며 소프트웨어 공학에서 자주 언급되는 책이다. [ 특히 엉클밥의 SOLID 설명과 관련해서 말이다. ]

 

개인적으로 해당 책의 가치는 매우 높게 생각하지만, 패턴과 객체지향 용어가 설명에 범벅되어서 읽는 게 좀 까다로워 이렇게 점수를 주었다. [ 객체지향에 대한 기본적인 이해가 뒷받침되지 않으면 이해하기가 어려운 부분들이 많다. ]

 

디자인 패턴에 대해선 훌륭하고 높게 생각하는 편은 아니다.

그렇다고 싫어하는 개념도 아니다.

개인적으로 패턴은 유용한 곳에서는 정말 훌륭하게 쓰인다고 생각하는 편.

[ 모른다고 해가 되는 개념은 아니고, 또 안다고 큰 도움을 주는 개념이라.. 꼭 공부해야 하는지에 대하여 말하기가 애매하다. ]

 

패턴을 좋아하는 사람이 이 책을 읽으면 만족감이 들겠지만, 이 책에서 사용하는 용어들은 패턴 지향적이지 않은 사람들에게는 너무도 더부룩한 느낌을 줄 수 있다고 생각한다. 입문서로는 절대적으로 비추하고 싶다.

객체지향과 관련된 문화에 있는 경험있는 개발자가 보기엔 최적일 수 있다.

 

그렇다 보니 나에겐 은어로 범벅된 문장을 읽는 느낌을 준다.

그들만의 생각이고 그들만의 세상 같아 보이는 것.

 

해당 책이 나온 시점에서는 정말 좋은 평가를 받았을 것이라 생각되지만, 이 책의 가치는 시간이 갈수록 좋지 않을 것이라 조심스럽게 예측해본다.

 


 

왜 이 책을 읽게 되었나...

 

소프트웨어 업계에서 특히 프레임워크 개발이나, 거대한 프로젝트를 수주해서 개발해야 하는 사람들에게 "엉클 밥"이라는 호칭은 낯설지 않다.

 

밑바닥부터 쌓아온 지식과 경험으로 장인에 경지에 오른 사람.

그는 여러 명저를 남기기도 하였다. [ 인사이트의 프로그래머 시리즈에 3권이나 등재해 있다. ( 클린 애자일도 추가될 듯하다) ]

 

명성 때문인지

 

내가 속한 연구실에서는 연구실에 들어오면 곧바로 읽어햐 하는 책이 바로 이 책이었다. [ 날 정말 괴롭게 했다 ㅠ ]

 

연구실에서는 객체지향 공부 -> 원칙 공부 -> 패턴 공부 -> 설계 순서로 공부한다. 

이 책은 4가지의 단계를 모두 넣어버린 책이다.

 

워낙 유명한 책이고 읽어야 하는 책이라 의무감으로 읽게 된 책이다.

 

그 외에도 다른 책들에서 추천되는 책이기에 넘어가야 할 산처럼 느끼는 책이다.

 

[ 실용주의 프로그래머에서도 엉클 밥의 존재는 언급되며 여타 객체지향과 관련된 책이라면 이 책은 꼭 언급된다. ]

 

호기심 반 + 해야 했던 일에 대한 책임감으로 읽게 되었다.

 


책에 대한 개인적인 생각

 

읽으면서 속이 너무 답답했다. [ 패턴을 설명하는 장으로 넘어간 이후에 ] 

한 문장을 친절한 설명으로 늘어버린다면 한 페이지도 가득 찰 그런 문장들이 너무 많다.

특히 패턴을 설명할 때는 더더욱 그렇다.

 

속이 거북했다. 그냥 그게 개인적으로 너무 별로였다.

왜 디자인 패턴이 다른 한쪽에서 욕을 먹는지 알 것 같은 기분이다.

 

아쉬움

 

1. 패턴을 설명함에 있어서 그들만의 용어로 범벅하기에 은어를 듣는 거북한 느낌이 들 수 있다.

원저를 읽어도 이런 부분은 사라지지 않는다.

 

2. 패턴을 설명한다면 적어도 패턴을 모르는 사람도 이해할 수 있도록 설명했어야 했다.

 

3. 너무나도 많은 원칙을 일반적으로 대입하면서 설명했다. 

 

4. 책의 예제들은 너무도 구시대적이다. ( GUI에 대한 설명, ETS 프레임워크 등등)

UML을 이해하기엔 도메인 지식이 도와주질 않고, UML 자체의 합리성을 이해하기도 너무 까다로웠다. 

 

그런 점에서 이 책은 설계를 직접 경험해본 사람 혹은 프레임워크를 제작해본 사람에게 정말 큰 도움이 될 수 있을지도 모른다. [ 방대한 UML을 다뤄보았던 경험이 있다면... ]

 

수련생에게는 버거운 책이다.

 

수련생에게는 이 책의 초반부인 애자일과 SOLID 정도만 진행해도 될 것이다.

그리고 엉클 밥의 패턴에 대한 생각(장점, 비용, 어떤 상황에 필요한지)만 엿보아도 괜찮을 듯하다.

 

클린 코더 이후로의 클린 소프트웨어..

다음은 클린 코드이다.

그다음은 클린 아키텍처인데 클린 코더와 클린 소프트웨어는 개인적으로 그리 큰 도움이 되지 않아서 아쉬웠다.

[ 클린 코드와 클린 아키텍처는 어떨런지.. ]

 

한 달 반 동안 매일 1시간 정도를 투자한 책이지만 시간이 조금 아깝다는 생각이 들 정도로 아쉬웠다.

 

훗날 회사에서 일하게 되어 큰 프로젝트에 참여한다면 참고서로 쓰기로는 괜찮을 듯한 책.

 

이 책을 읽고 난 후 명심하게 된 사안이 생겼다.

 

패턴을 얘기하거든, 상대방의 패턴에 대한 지식이 나와 동급이라고 생각할 때만 패턴을 얘기할 것.

 

그게 아니라면 어떻게 해서든 풀어서 상대방을 이해할 수 있도록 단계별로 설명하도록 하자.

 


 

클린 소프트웨어:애자일 원칙과 패턴 그리고 실천 방법, 제이펍

 

반응형