Book

Refactoring: Improving the Design of Existing Code

Refactoring: Improving the Design of Existing CodeRefactoring: Improving the Design of Existing Code, by Martin Fowler

리팩토링이 없다면, 소프트웨어의 생명 주기가 진행될 수록 소프트웨어의 질은 점점 떨어질 수 밖에 없다. 현대적인 관점에서 소프트웨어 개발은 더이상 Rocket Science처럼 고정된 결과물을 산출하는 활동이 아니다. 뛰어난 소프트웨어 아키텍트라 하더라도 소프트웨어 개발 프로젝트의 초기에 그 소프트웨어를 바라보는 방식 (또는 디자인)이 후반에까지 변함없이 지속될 확률은 매우 낮다. 하물며 여러 사람이 함께 일하는 팀 소프트웨어 개발에서야 더이상 말할 것도 없다. 특히, 사용자의 요구사항이 다 떨어져서 더이상 변경할 것이 없어지지 않는 한, 소프트웨어 질의 하락은 점점 빨라질 뿐이다.

이 책은 리팩토링에 관한 바이블이다. Martin Fowler는 더이상 언급할 필요도 없는 유명한 저자다. 이 책은 리팩토링과정 예시를 통한 리팩토링에 관한 소개, 리팩토링의 정의와 중요성, 리팩토링을 언제, 어떻게 적용할 것인가에 관한 가이드, 리팩토링 패턴 카탈로그로 이루어져 있고, 리팩토링의 간략한 역사와 리팩토링의 도입 방법, 리팩토링도구에 관한 의미있는 에세이들으로 끝맺고 있다.

Martin Fowler는 리팩토링을 다음과 같이 정의하고 있다.

Refactoring: a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.

리팩토링의 목적은 소프트웨어를 좀 더 이해하게 쉽게 만들거나 그 과정에서 소프트웨어를 좀 더 이해함으로써 소프트웨어를 수정하는 비용을 줄이는 것이다. 반대로 말하면, 소프트웨어를 수정할 필요가 없다면, 리팩토링을 할 필요는 없다는 얘기가 된다. 또한 여기에는 한가지 가정이 있는데, 소프트웨어를 좀 더 이해하기 쉽다면, 수정하기도 쉽다는 것이다. 당연한 얘기같지만, 많은 개발자들은 어떤 이유에서건 이를 중요하게 생각하지 않는다.

리팩토링의 정의는 리팩토링의 가장 중요한 측면 또한 언급하고 있는데, 바로 겉으로 드러나는 소프트웨어의 동작 방식을 변경하지 않는다는 것이다. 리팩토링 패턴 카탈로그는 바로, 소프트웨어의 동작 방식을 변경하지 않는다는 제약을 위해서 어떤 방식으로 Refactoring을 수행해야하는가에 관한 패턴들을 모아둔 것이라고 볼 수 있다. 그리고, 이러한 제약을 보장하기 위해서 Unit Testing을 제안하고 있는 것이다.

패턴 카탈로그를 읽는 것은 (항상 그렇듯이) 매우 지루한 일이었다. 패턴 카탈로그는 패턴이 갖는 이점들을 제공하지만, 카탈로그를 처음부터 끝까지 읽어볼 정도로 가치가 있지는 않다. 특히, Mechanics 부분은 읽지 않아도 무방하다. 어느 정도 숙련된 개발자라면 리팩토링의 개념만 잘 알고 있다면, Mechanics를 직접 읽어볼 필요 없이 같은 것을 수행할 수 있을 것이다. 특히, 많은 수의 리팩토링 패턴들이 도구를 통해 자동화가 되어있는 현재 시점에서는 더더욱 그러하다. 내가 추천하는 방법은, 패턴의 이름(Name), 맥락(Context) 부분과 동기(Motivation) 부분만 읽고, 이해가 가지 않는 경우에만 예시(Example) 부분을 읽어보는 것이다. 내게는 패턴들을 통해 어휘를 확장시킬 수 있었던 것이 가장 큰 도움이 되었다. 예를 들어, 실제로 리팩토링을 수행할 때, 커밋 로그(Commit Log)에 리팩토링 패턴을 적어넣을 수 있어서 편리했다. 사실, 만약 이 책을 가장 효과적으로 읽고 싶다면, 패턴 카탈로그만 빼고 다 읽고 나서, 패턴 카탈로그들은 이름만 익숙해질 정도로만 훑어보라고 조언해주고 싶다.

패턴 카탈로그 읽는 것을 마치고 수십 페이지 남겨놓은 상태에서는, 마치 이미 이 책을 다 읽었다는 듯 생각을 하고 있었는데, 이 책의 마지막 장들에 들어있는 에세이들은 상당히 중요한 문제 제기와 인식을 제공해주었다.

사실상 리팩토링이라는 단어를 처음으로 만들고 초기부터 연구를 수행한 William Opdyke의 에세이는, 왜 실제 세계에서 프로그래머들은 리팩토링을 하지 않으려하는가를 따져보고, 어떻게 하면 그런 문제를 넘어 리팩토링을 적용할 수 있을 것인가에 관해서 얘기하고 있다. 자세히 설명하기 보다는 다음 문단을 인용하도록 하자.

Within Lucent/Bell Labs I found that encouraging application of reuse and platforms required reaching a variety of stakeholders. It required formulating strategy with executives, organizing leadership team meetings among middle managers, consulting with development projects, and publicizing the benefits of these technologies to broad research and development audiences through seminars and publications. Throughout it was important to train staff in the principles, address near-term benefits, provide ways to reduce overhead, and address how these techniques could be introduced safely. I had gained these insights from my refactoring research.

이 내용은 비단 리팩토링에만 해당되는 것은 아니다. 주로 단기적인 성과를 중요시하는 기업 환경에서, 장기적인 투자를 필요로 하는 무언가를 추구하기 위해서는 위에서 언급한 모든 일들을 할 수 있을 정도로 부단히 노력해야한다는 생각이 든다.

두번째 에세이는 리팩토링 도구에 관한 얘기를 하고 있는데, 이 책이 쓰여진 1999년에는 어느 정도 널리 퍼진 리팩토링 도구가 없었겠지만, 2007년 현재에는 주요 언어인 Java의 주요 IDE들이 리팩토링을 직접 지원하고 있기 때문에, 기술의 변화를 지면을 통해 느낄 수 있게 해준다.

이 책의 마무리에 해당하는 Kent Beck의 에세이는 리팩토링을 할 때 가져야할 마음가짐에 관해서 얘기하고 있는데, 중요한 항목들은 여기에 인용할 가치가 있을 것이다.

  • Get used to picking a goal
  • Stop when you are unsure
  • Backtrack
  • Duets

이 책을 읽기 시작하면서 바로 떠오른 생각은 패턴들로 리팩토링하는 리팩토링 패턴이 이 책에는 별로 없다는 것이다. 저자는 이 책에서 리팩토링 패턴의 가장 작은 단위들을 우선적으로 다루고 싶어했고, 그 목적은 의미가 있었던 것 같다. 그리고 이 책에서도 같은 아이디어를 여러번 언급하고 있다. 실제로 이 아이디어는 2004년에 출판된 Refactoring to Patterns라는 책으로 실현되었다. 시간이 되는대로 Refactoring to Patterns를 읽어볼 예정이다.

Refactoring: Improving the Design of Existing Code 더 읽기"

Effective Java Programming Language Guide

Effective Java Programming Language GuideEffective Java Programming Language Guide, by Joshua Bloch

Effective Java Programming Language Guide (이하 Effective Java)는 Java 프로그래밍 언어를 잘 쓰기 위한 책에 속한다. 이 책은 Effective C++ 시리즈나 Exceptional C++ 시리즈처럼 하나의 조언과 그것에 대한 설명을 담은 57개의 항목들로 구성되어있다. 형식 뿐 만 아니라 내용을 보더라도 Java의 Effective C++과 같다고 봐도 무방할 것 같다.

Effective Java의 각 항목들은 반드시 Java 언어에만 국한되는 것이 아닌 일반적인 프로그래밍 원칙들 또는 객체 지향 프로그래밍에서 일반적으로 통용되는 프로그래밍 원칙들도 포함하고 있다. 그래서, Effective/Exceptional C++ 시리즈와 중복되는 항목들도 있다. (예를 들어, ‘Item 14: Favor composition over inheritance’ 와 같은 경우)

이런 종류의 책들은 한번만 읽는다고 해서 그 책들의 조언들을 완전하게 응용하기는 어렵다. 그래서, 단지 각 항목들의 리스트만이라도 주기적으로 보면서 조언들을 상기시켜주는 것이 좋다. (Effective Java의 항목 리스트) 특히, 거의 기계적으로 적용할 수 있는 항목들은 항상 기계의 도움을 받을 수 있도록 자동화해두는 것도 좋은 방법일 것이다. (지난 글에서 언급했던 FindBugs와 같은 이클립스 플러그인들이 도움을 줄 수 있을 것이다.) 한편, 각 항목들로부터 도출되는 보다 일반적인 프로그래밍 원칙들은 마음에 잘 새겨두는 수 밖에는 없을 것이다.

이 책이 출판된지 (2001년) 꽤 오래되었기 때문에, 현재 Java (특히 Java 5.0)의 상황을 반영하지 못하는 항목들이나 언급들이 약간씩 보인다. (예를 들어, type-safe enum 항목이나 doug lea의 concurrency 라이브러리에 대한 언급)  하지만, 반영하지 못하는 점들은 대체로 Java가 개선되었기 때문에 발생하는 것이어서 여전히 그 충고들 자체는 유효하다고도 볼 수 있다.

C++ 프로그래밍 언어에 관한 유명한 책들의 저자들이 해당 언어의 커뮤너티에서 상당히 유명하고 중요한 역할을 수행하고 있는 것을 보면, 분명히 이 책의 저자에 대해서도 알아두는 것이 도움이 될 것이다. Effective Java의 저자인 Joshua Bloch는 Sun Microsystems의 Distinguished Engineer 였고, Java 5.0 명세의 개발과정에도 중요한 역할을 했으며, 현재는 Google의 Chief Java Architect이다. 그는 이 책 이외에 Java Puzzlers도 썼는데, 국내에는 번역되지 않았기 때문에, 아마존에서 주문해서 읽어볼 예정이다.

Effective Java의 내용은 상당히 기본적인 내용에 해당하기 때문에, 실제로 Java 프로그래밍 언어를 사용하면서 깨닫게 되는 문제들을 고려하면 부족한 것이 사실이다. 최근에, 이 책과 같은 스타일의 또다른 책을 찾아보고 있는데, 아직은 없는 것 같다. Effective C++ 시리즈의 Scott Meyers나 Exceptional C++ 시리즈의 Herb Sutter와 같은 훌륭한 저자들이 Java 쪽에는 없는 것일까. Java 쪽의 유명인들이 부족한 것도 아닌데 말이다.

Effective Java Programming Language Guide 더 읽기"

A Quote from "La Plaisanterie"

젊은이들이 연기를 하는 것은 그들의 잘못이 아니다. 삶은, 아직 미완인 그들을, 그들이 다 만들어진 사람으로 행동하길 요구하는 완성된 세상 속에 턱 세워놓는다. 그러니 그들은 허겁지겁 이런저런 형식과 모델들, 당시 유행하는 것, 자신들에게 맞는 것, 마음에 드는 것, 등을 자기 것으로 삼는다. ― 그리고 연기를 한다.

La Plaisanterie by Milan Kundera

A Quote from "La Plaisanterie" 더 읽기"

김승옥 소설전집 中 무진기행

무진기행무진기행, 김승옥 소설전집 1, 김승옥, 문학동네, 2004

읽은 지가 오래되었으니, 작품 개개에 대한 얘기는 다음번으로 미루자. 대신, 책을 읽을 당시에 끄적거린 노트를 들여다보자.

무진은 어디에 있는 도시인가? 안개가 많은 도시라는 것을 볼 때, 바닷가 근처거나 호수가 있는 내륙지방(강원도)의 느낌이 난다. 읽다보면, 호남지방인가 하는 생각도 잠시 든다. 어디에 있는 도시인가는 별로 중요하지 않고, 오히려 별로 알려지지 않은 점이 중요한 것인가? 도시로부터의 도피처? 실락원?

영화 "생활의 발견"와의 관련성. 지방 도시에서 만난 여선생과의 정사라는 스토리라인. "우리 서로 솔직해지기로 해요"라는 대사.

서울과 무진의 공간적 대비. 서울은 이성이 지배하는 공간. 무진은 욕망이 지배하는 공간. 자의식과 무의식. 욕망(비이성)에의 옹호? 주인공의 이중성 자체도 비이성?

부조리극. Camus. 타인의 속물적 행동에 대한 비판과 주인공 자신의 속물적 행동.

사실 이 노트의 마지막 줄에 있는 ‘부조리극’이라는 단어가, 이 소설집 전체에 대한 내 느낌을 대면해준다고 볼 수 있을 것 같다. 작품마다 부조리의 현실, 주인공과 부조리와의 관계는 제각기 다르고, 주인공이 그러한 부조리에 대처하는 방법도 다르지만, 공통된 것은 바로 부조리를 다루고 있다는 것이다. 그리고, 그러한 점은 상당히 마음에 들었다. 나는 까뮈를 좋아한다.

그래도 전집이니까 붙어있는 작가 연표를 보고서 알아낸 것은 이 소설집에 있는 작품들은 김승옥 씨가 스무살 남짓하던 시절에 쓴 것들이란 것이다. 일상으로부터 부조리를 발견해내는 것은 이십대의 정신인 것 같다는 생각이 들었다. 십대가 아직 세상을 잘 몰라서 또는 정신적인 능력이 부족해서 그렇다고 치자면, 왜, 삼십대, 사십대는 아닌가. 이십대만이 가질 수 있는 그러한 정신이란 무엇일까.

어쩌면, 김승옥 씨의 삶 자체가 이러한 물음의 대답이 될 수 있을지도 모르겠다. 이렇게 치열한 작품들을 썼던 작가는 서른이 끝나갈 무렵 ‘광주사태’로 의욕을 잃고 절필을 하게 된다. 그리고, 이제 그는 "하나님에 의해서 내 영안이 열"렸다며 이제 "하나님의 진실을 드러내기 위"한 소설을 쓰겠다고 한다. 그의 치열한 정신을 읽은 나로서는 잘 상상이 가지 않는다. 어쩌면 이런 것이 삶일런지도 모른다.

김승옥 소설전집 中 무진기행 더 읽기"

김대중 죽이기

김대중 죽이기, 강준만, 개마고원, 1995

김대중을 다루고 있고, 또 그를 상당히 옹호하고 있기 때문에, 대선 때면 흔히 나오는 대통령 후보자 선전 책자처럼 여길 사람이 있을지도 모르겠다. 하지만, 이 책은 옹호를 위한 책이라기 보다는 비판을 위한 책이다. 그 대상은 바로 언론과 지식인이다.

전반부에서는 김대중에 대한 내용을 다루고 있다. 책이 쓰여질 당시(1995년)의 김대중에 대한 이미지란 어떤 것인가를 보여주는 것만으로도 상당히 흥미로운데, 그것이 왜 잘못되었고 또 어떻게 조작되었는가를 조목조목 밝혀주고 있다.

김대중에 대한 얘기가 나오면 당연히 지역감정 문제가 나온다. 그 문제의 핵심을 강준만 씨는 언론과 정치평론을 하는 지식인, 그리고 국민의 문제로 보고 있다.

후반부에서는 그러한 문제를 집중해서 다루고 있다. 추리소설을 쓰는 기자, 연예기사를 방불케하는 정치보도, 언론의 이미지 조작 등 우리가 현재 언론에 대해 내리는 평가 – 언론의 문제점들을 잘 정리하고 있다. ‘좆선’이라는 단어가 없던 시절이었던 것을 감안하면 상당히 도전적인 책이 아니었을까 상상해본다. 지식인들의 양비론적이고 정치혐오주의적인 정치평론들도 쓰레기라고 얘기한다.

그의 ‘김대중 옹호’ 중 몇가지는 어떤 사람들의 (자신도 그 근거를 모르는) 김대중 이미지에 대한 신뢰에 금이 가게하지는 못할테고, 아마도 그들은 불편함을 느낄 것이다. 그런 것들을 비판하는 것은 좋지만 부차적인 일이다. 강준만 씨가 주장하고 있는 언론과 지식인의 문제가 우리 모두가 해결해야할 중요한 문제임은 대부분이 동감하리라고 믿는다.

전체적으로 언론이나 정치인, 지식인을 비판하기 위한 상당히 많은 양의 자료를 인용하고 있어서, 약간 놀랐다. 분명히 그런 자료들을 인용하지 않아도 논지 전개에는 문제가 되지 않았을지는 모르겠지만, 그러한 자료들이 이 책의 객관성에 상당한 도움을 주고 있는 것은 사실이다.

대학교를 다닐 때까지도 정치에 대한 혐오를 가지고 있었고, 어린 마음에 무정부주의자를 자처했었다. 그것이 깨어진 것은 강준만 씨의 ‘노무현과 국민사기극’과 김규항 씨의 ‘B급 좌파’를 읽고난 후 였는데, 강준만 씨의 이 책을 좀 더 일찍 읽었더라면, 좀 더 빨리 정치에 대한 올바른 시각을 가질 수 있지 않았을까 싶다.

김대중 죽이기 더 읽기"

사람의 아들

사람의 아들사람의 아들 by 이문열

민요섭이라는 인물의 살인사건을 추적하는 형사의 얘기안에 민요섭과 그가 창조한 인물, 아하스페르츠의 얘기가 담겨있는 액자형태의 소설이다. 액자 내 소설이 풍부한 신학적 내용을 담고 있어서 지적으로는 즐겁지만 자칫하면 흐트러지기 쉬운 집중력을 액자의 틀이라고 할 수 있는 추리소설의 형식이 지탱해주고 있다고 할 수 있다.

‘사람의 아들’, 아하스페르츠는 민요섭이 쓴 소설의 주인공이지만, 민요섭 자신의 생각과 행동을 그대로 반영한다. 민요섭과 아하스페르츠는 동일한 자아다. 현실에서의 민요섭의 행동은 아하스페르츠의 생각에 그대로 반영된다. 혹은 vice versa. 육욕에 눈을 뜨고 기존의 신에 반기를 드는 민요섭과 아하스페르츠는 말그대로 동격이다.

아하스페르츠는 자신의 신에 대해 더이상 믿지 못하나, 신이 존재함을 믿으며, 다른 종교들의 신들을 알기 위한 여행을 떠난다. 소설의 많은 부분은 여러 종교들에 대한 탐색으로 채워져있으며, 지적인 즐거움을 제공한다.

아하스페르츠가 예수와 대면하는 부분은 소설의 절정이다. 바이블에 등장하는 광야에서의 시험을 재구성한 것은 상당히 재미있는 아이디어고, 서양의 고전, 특히 바이블에 미치는 비평가들이 좋아할 만한 내용이다.

아하스페르츠는 무신론 혹은 불가지론의 결정판을 보여준다. 하지만, 형사가 얘기하는대로 민요섭과 아하스페르츠는 새로운 신을 만들지는 못한다. 이것은 민요섭과 아하스페르츠의 한계인 동시에, 이문열의 한계, 그리고 이 소설의 한계일 것이다. 다시 원래의 신으로 회귀해버리는 민요섭이 그의 극단적인 제자에게 살해당한다는 결말은 그 한계가 이 작가와 소설에 한정된 결함이 아니라 인간 전체의 한계가 아니냐는 질문을 던지게 만드는데, 그것은 착각이 아닐까.

이건 반쯤 농담스레 하는 말이지만, FSM과 같은 ‘신’을 보면 인간은 새로운 신을 만들 수 있는 천부적인 능력을 타고났다고 생각할 수 밖에 없다.

Touched by his noodly appendage

사람의 아들 더 읽기"

스키너의 심리상자 열기

스키너의 심리상자 열기

스키너의 심리상자 열기 by Lauren Slater

때는 바야흐르, 무더운 2005년 8월, 서울의 한 고시원에 기거하며 현장실습을 하던 때였다. 하루 일과를 마치고 고시원으로 돌아가면, TV를 보는 것 외에 낙이 없었고, 그래서 내겐 아주 가벼운 책이 필요하다는 것을 느꼈다. 서점의 인문서적 코너에서 빈둥대는 것은 내가 좋아하는 놀이고, 주기적으로 해주는 놀이다. 그날 따라 눈에 띈 것이 이 책이었고, 아마도, ‘엽기 살인 사건에 대해서 신고 조차도 하지 않았던 38명의 증인들’에 얘기하는 끔찍한 장면이 재미있게 느껴졌던 탓에 이 책을 사기로 마음먹었던 것 같다.

이렇게 가벼운 내용의 교양 과학서는 사기적인 내용이 짙을 가능성이 높기 때문에 조심스러울 수 밖에 없는데, 저자가 그래도 심리학자라는 것은 내용에 대한 나의 신뢰를 높혀주었고, 정말로 믿을만 하든 아니든, 읽는 행위 자체를 좀 더 즐겁게 만들어주었다.

저자는 책에 실린 심리실험들은 어느 정도 독자의 관심을 끌만한 (다시 말해 선정적인?) 것들을 의도적으로 선정한 것이라는 점을 솔직하게 털어놓았다. 그리고, 실제로 상당히 1) 유명하거나, 2) 직관적이지 않은 인간의 본성을 다루는 실험들을 다루고 있어서, 상당히 재미있었다.

위에서 언급한 38명의 방관자에 대한 얘기 외에도 상당히 충격적인 것은 원숭이 새끼에게 철사 인형 엄마를 던져준 것이 아예 엄마가 없는 것보다는 원숭이 새끼가 정상적인 생활을 할 수 있도록 만들어주었다는 것이었다. 사실인지는 모르겠지만, 당시 육아법에 대한 보편적인 인식은 가능한 한 엄마가 응석을 받아주는 것이 좋지 않다는 것이었다고 하고, 이러한 실험이 당시의 인식을 바꿔놓았다는 – 즉, 어머니가 안아주고 포옹해주는 것이 중요하다는 인식으로 – 얘기를 하고 있다.

또, 인상적인 것 하나는 실험 자체가 상당히 비윤리적인 것이었음에도 불구하고 강행함으로써, 동시대인들에게 많은 비판을 받지만, 나중에 그 실험 결과 자체는 긍정적으로 평가받게 되었다는 사실이었다. 윤리적인 면에서 많은 논란이 되어 진행하지 못하던 여러가지 과학적 연구들도 그런 식으로 진행되어온 여러 사례가 있을 것 같고, 앞으로도 그렇지 않을까 하는 생각이 든다. 이런 사례들을 바탕으로 과학윤리와 과학발전의 대결에 관한 연구가 과학사 분야에서 관심을 가질만한 주제일 것 같다.

저자는 이러한 심리실험들에 대한 소개 뿐만 아니라 저자 자신의 학문적인 의견 또는 사회/문화적 의미에 대한 의견도 얘기하고 있고, 과학자의 개인적인 삶에도 초점을 맞추고 있다. 그런 것들이 책을 좀 더 부드럽게 만들어주는 요소이긴 하지만, 저자 자신의 개인적 경험을 학문적인 평가로 연장하는 무리를 범하기도 하는 것 같다.

스키너의 심리상자 열기 더 읽기"

조엘 온 소프트웨어 서평 업데이트

조엘 온 소프트웨어의 서평에 역자의 블로그 내용과 번역 경험담에 대한 의견을 추가했습니다. 당시에는 편견이 아닌가 싶어 이런 의견을 밝히는 것에 좀 조심스러웠는데, 다른 사람과 의견을 나눈 후에 약간 용기를 얻었습니다.

좀 마음에 안드는 점은 역자의 블로그 내용이나 번역 경험담을 중간중간에 넣어놓은 것이었다. 블로그 내용 같은 경우에는 원작의 내용과 관련된 내용이었는데, 조엘이 기술한 것 이상의 내용은 없었기 때문에 무의미한 것이었고, 번역 경험담은 역자 후기 정도에나 들어갈 내용이지, 중간중간에 들어가서 주의를 산만하게 만들만 한 가치를 가진 것은 아니라고 생각한다. 분명히, 훌륭한 역자는 원작의 난해한 부분을 설명해주거나 새로운 방식으로 해석해줌으로써 원작과 다른 새로운 가치를 만들어낸다. 하지만, 조엘온소프트웨어 번역판에 삽입된 역자의 글들은 그럴만한 가치는 없었다고 생각한다.

조엘 온 소프트웨어 서평 업데이트 더 읽기"

조엘 온 소프트웨어

조엘 온 소프트웨어조엘 온 소프트웨어 by Joel Spolsky

지인에게 생일 선물을 주느라 ‘조엘 온 소프트웨어’를 사면서 내 것도 함께 두권을 샀다. 원래 생일 선물 같은 걸 챙기는 타입은 아니지만, 내 생일 때 받아먹은 터라.

‘조엘 온 소프트웨어’는 이미 구독하고 있었을 뿐만 아니라, 몇몇 글들은 이미 읽어본 터여서 대충 넘어가면서 토요일 하루만에 읽을 수 있었다. 전체적인 내용은 기본적인 소프트웨어 엔지니어링의 주장에 충실하면서 Mythical Man-MonthPeopleware에 준하는 내용이었다. 물론, 그런 것과는 별로 관련없는 업계의 동향에 관한 내용과 전략에 관한 내용도 있긴 했다. 다른 점이라면 좀 더 재미있고 친근하게 설명한달까. 마치 누군가의 블로그를 보는 것처럼. (당연하다!) 칭찬할만 점은 어느 하나의 기술이나 의견에 치우치지 않고 균형잡힌 시각을 보여준다는 것이다. 어느 정도 권위가 있는 엔지니어들의 글을 보면 항상 느낄 수 있는 것이기도 하다.

번역은 – 그동안의 IT 관련 서적들의 번역 품질에 비해 – 매우 훌륭했다. 하지만, 역시 조엘의 유머를 우리말로 옮겨놓으니 재미가 떨어지는 것이 사실이었다. 역자주에서도 꼼꼼히 원작의 오류를 정정하거나 독자들이 모를만한 사실들을 언급해두고 있었던 점은 칭찬하고 싶다.

좀 마음에 안드는 점은 역자의 블로그 내용이나 번역 경험담을 중간중간에 넣어놓은 것이었다. 블로그 내용 같은 경우에는 원작의 내용과 관련된 내용이었는데, 조엘이 기술한 것 이상의 내용은 없었기 때문에 무의미한 것이었고, 번역 경험담은 역자 후기 정도에나 들어갈 내용이지, 중간중간에 들어가서 주의를 산만하게 만들만한 가치를 가진 것은 아니라고 생각한다. 분명히, 훌륭한 역자는 원작의 난해한 부분을 설명해주거나 새로운 방식으로 해석해줌으로써 원작과 다른 새로운 가치를 만들어낸다. 하지만, 조엘온소프트웨어 번역판에 삽입된 역자의 글들은 그럴만한 가치는 없었다고 생각한다.

Update 2005/09/09: 역자의 블로그 내용과 번역 경험담에 대한 의견 추가.

조엘 온 소프트웨어 더 읽기"