GoF의 디자인 패턴 (Design Pattern, 에릭 감마, 리처드 헬름, 랄프 존슨, 존 블리시디스) 독서...



저자 네 명을 일컬어 Gang of Four(GoF)의 디자인 패턴이라고 일컬어지는 소프트웨어계의 명저.

근 두 달에 걸친 열독 끝에 결국 마지막 장을 덮는데 성공했다.

이 책의 기원은 저자가 설명하기를 '크리스토퍼 알렉산더' 라는 건축학 패턴의 아버지에게서 영감을 얻었다고 한다.

책 마지막 쪽에 써 있는 이 알렉산더의 글귀는 다음과 같다.


좀 느슨한 방법으로 패턴을 쭉 늘어놓음으로써 빌딩을 만들 수 있습니다. 이렇게 빌딩을 만드는 것은 패턴을 조합하는 것입니다. 이것은 어렵지도 심오하지도 않습니다. 물리적으로 동일한 공간에서 많은 패턴을 겹치는 방식으로 패턴을 붙일 수도 있습니다. 빌딩에는 매우 많은 것들이 들어차 있습니다. 빌딩은 작은 공간 속에 많은 의미를 갖고 있습니다. 그리고 이러한 '들어참' 을 통해서 빌딩은 점점 심오해집니다.
- A Pattern Language, 77쪽



말 그대로 '들어참' 을 추구하는 건축물, 그리고 소프트웨어.

서사적이고 다소 추상적인 내용들은 제외해두더라도, 소프트웨어와 건축을 동일시하는 저자의 시각은 꽤 놀랍다.

저자는 알렉산더와 같이 '오로지 패턴만으로' 소프트웨어가 구성될 것이라고 보지는 않았다.

하지만 패턴으로 인하여 소프트웨어 엔지니어들이 서로 소통할 수 있게 되고, 객체지향적 설계에 조금 더 가까워지고 초보 엔지니어 역시 빠르게 익숙해질 것이라고 예상했다.

꽤나 일리있는 말인데, 생성, 구조, 행동 패턴에 걸쳐 총 23개의 카테고리(저자는 실제로 '카탈로그' 라는 말을 쓴다)로 이루어진 디자인 패턴들은 나 같은 초보 엔지니어에게도 쉽게 와닿기 때문이다.

내가 어떠한 목적을 위해서는 어떻게 클래스들을 배치해야 하는지.

이러이러한 문제를 돌파하기 위해서는 각 부품들을 어떻게 구성해야 하는지.

추후 리펙토링에서의 어떤 문제를 방지하기 위해서는 어떤 구성을 취해야하는지.

그야말로 매번 객체지향적 프로그래밍을 들어갈 때마다 고민하던 내용에 대한 해답이 모두 모여있었다.

물론, 그렇다고 내가 이 패턴들을 단번에 이해하고 바로 적용할 수 있다는 의미는 아니다.

이제서야 단 한 번 완독했을 뿐이고 실제로 몇 개나 이해할 수 있었는지는 좀 의문스럽다.

실제로 저자도 여러 번 읽기를 권하고 있고, 직접 의식하면서 코드에 몇 번이고 적용해봐야 진정한 의미를 알 수 있을테니.

하지만 적어도 내가 클래스를 설계하기 시작할 때부터 코드의 마지막 라인을 적을 때까지 고민하던 일을 다른 이들도 고민했다는 사실은, 뭐랄까, 꽤나 뭉클하다.

적은 수의 코드를 가진 토이 프로젝트를 찍어내거나, 거대한 시스템의 흐름 속에서 부분을 수정하는 일은 쉽다.

하지만 그것에 소프트웨어 아키텍쳐와, 그 청사진을 실제로 코드로 구현해야하는 입장에 선다면 그것은 어려운 일이다.

그런 면에서 이 책은 좋은 나침반이라고 할 수 있다.

비록 일부 유명한 엔지니어들은 '패턴에 빠져서 어떻게든 써먹어보려고 한다' 라고 탐탁찮아 하지만 본질적 가치는 다들 인정한다.

패턴의 일부는 이미 각종 언어의 라이브러리에 흡수되어 문법으로 쓰일만큼 널리 퍼졌고, 예제인 C++ 과 스몰토크라는 오래된 객체지향을 벗어난 최근 언어에 역시 적용되고 있다.

각종 라이브러리를 읽으면서 이해가 되지 않던 공통적 클래스에 대한 활용 역시 하나씩 비밀이 풀리는 느낌이었으니.

다소 전공책 같은 느낌의 책(실제로 대학 교재로 쓰인다)이 좀 읽기 버겁긴 했지만 언제고 다시 읽고 싶은 책.

예전 대학생 시절 - 머리가 팽팽 돌아가는 - 때 읽었으면 더 좋았을 것 같지만, 한 편으로는 당시에는 이해를 못했을 수도 있다는 생각이 든다.

실제로 엔지니어로 실무를 뛰어보고 불편함을 직접 경험해보았기 때문에 더 공감가는 면이 많았기 때문이다.

무려 90년대에 나온 책이지만 자신의 객체지향 설계와 그 향상에 대해 고민하는 오늘 날의 SW 엔지니어라면 필독서라고 본다.

언젠가 이런 패턴들을 취사 선택하여 자유롭게 쓸 수 있는 엔지니어가 될 수 있기를...

코딩 호러의 이펙티브 프로그래밍 (Effective Programming, 제프 앳우드) 독서...



오랜만에 재미있게 읽은 책을 읽었다.

다소 독특한 제목의 이 책은 폴리그랏 프로그래밍 등으로 유명한 저자이신 임백준 님이 번역했다.

프로그래머를 위한 Q&A 사이트인 스택오버플로우의 창시자인 제프 앳우드가 남겼던 칼럼들을 모은 책으로, 코드도 없고 그냥 가볍게 볼 수 있는 책이다.

독백 형식의 칼럼 또는 구독자와의 대화, 메일 교환 등으로 이루어진 구성인데 프로그래머로서의 자신의 관점을 제시하고 있다.

특히, 스택 오버플로우를 직접 만들면서 겪었던 어려움이나 원격 프로젝트를 진행하면서 얻은 경험 등등 유익한 내용들이 가득하다.

아무래도 본업이 웹개발 쪽이다보니 내용이 그쪽으로 좀 편향되기는 했지만, 전반적인 흐름은 프로그래머라면 한 번쯤 기억할만한 내용들이었다,

왜 프로그래머가 정작 프로그래밍을 못하는지.

원격 근무에 대한 어려움은 무엇인지.

어떻게 하면 좋은 사이트를 만들고 훌륭한 운영을 할 수 있는지.

(그리고 가장 중요한) 프로그래머에게 더블 모니터와 편안한 의자가 어떤 의미를 갖는지 등등.

마치 읽기 편하게 써놓은 블로그의 게시물을 처음부터 끝까지 쭉 읽어나간 느낌이다.

게다가 저자가 글에서 추천해주는 일종의 '프로그래머 필독선' 같은 것들도 읽어볼까 하는 생각이 든다.

전공서적이나 어려운 코딩을 하는 코더들에게 강추할만한 책으로, 무려 굳어가는 머리와 뻣뻣해진 손가락을 다시 이완시켜주는 효능이 있다.

또한, 내용과는 별개로 책의 표지와 내용의 디자인이 굉장히 마음에 들었다.

이 출판사의 다른 책도 괜찮아 보여서 구매해볼까 하는 생각도 드는 정도.

(더불어 번역도 상당히 편리하게 되어 있다. 역시 이 분이 번역한 책은 다 읽을 가치가 있다는 생각.)

다만 아직도 왜 번역판 제목에는 원문 제목에 없는 '코딩 호러' 가 들어가 있는지는 모르겠다.

주사위는 던져졌다 일상 및 잡념...

오늘을 마지막으로 내가 지원한 전 회사의 모든 면접이 종료되었다.

사실 정말 믿을만한 카드는 딱 하나 밖에 없는 현재, 가슴이 답답하다.

뭐가 문제였을까.

퇴사했던 이유를 제대로 변명하지 못했던 것?

나이만 많고 전문성은 뒤떨어져 보이는 것?

그러나 돌이켜보니 모두 수긍할 수 있는 쟁점들이다.

사실 아직 스스로도 그 판단에 대한 확신을 할 수 없으니 말이다.

내가 정말로 그런 사람일까?

반면, 이렇게 불안한 가운데에서도 근거 없는 자신감 또한 곁에서 머무른다.

내가 걷고 있는 길은 분명 올바른 길이라는 자신감.

설사 그것이 남의 눈에 차지 않는다고 해도 어떻게든 바득바득 위로 올라갈 것이다.

그게 죽지 못하고 살아가는 모든 사람들의 원죄이기 때문에.

1 2 3 4 5 6 7 8 9 10 다음


통계 위젯 (화이트)

1223
127
7064