고급 개발자라면 이 책을 읽지 마시오

『Java 세상을 덮친 Eclipse 3/e』이 제작에 들어갔습니다. 이제 다음 주면 만나실 수 있겠네요. 개정에 맞춰 저자이신 윤성준 님께서 서문을 새로 써주셨는데요. 1판을 집필하면서 고민하셨던 이야기가 녹아있어서 잠시 소개해볼까 합니다.

이 책 초판의 공동 저자인 조상민, 송정일과 처음 작업을 할 때만 해도 그저 욕이나 먹지 않으면 다행이라 생각했다. Eclipse에 대한 책을 써 달라는 출판사의 청탁을 받고 인터넷 서점에서 개발 도구에 대한 책을 검색해 서평을 확인해보니, 이런 종류의 책을 써서 좋은 소리를 듣기는 어렵겠구나 하는 생각이 들었기 때문이다. 이 책의 초판, 2판에 대한 서평을 보면 호의적인 평뿐 아니라 예상했던 대로 부정적인 평도 있다.

1판의 저자들이 예상했듯이 이 책의 인터넷 서평은 극명하게 갈리는 편입니다. 윤성준 님께서도 이런 서평들을 읽어보신듯 계속해서 다음과 같이 쓰셨지요.

인터넷 서점의 서평을 보면 이 책의 독자 수준이 매우 다양하다는 것을 알 수 있다. 책의 내용이 별 것 없다, 차라리 도움말을 보는 게 낫겠다고 말하는 독자도 있었고, 책의 설명이 불친절해 따라 하기 어렵다고 불평하는 독자도 있었다. 심지어 이 책에서 Eclipse 외의 다른 것(그게 대체 무엇일까 궁금하다)을 기대하는 독자도 있었다.

그러고나서 이 책의 대상 독자를 다시금 명시해주셨습니다.

이 책을 처음 쓸 때 우리(공동 저자)는 다양한 계층의 독자를 모두 만족시킬 수는 없을 것이라 생각해 목표 독자(또는 대상 독자)를 다음과 같이 정의했다.

1. Java 개발은 어느 정도 하지만 Eclipse를 처음 접하는 개발자
2. Eclipse를 쓰고 있지만 아주 간단한 기능만 알 뿐 충분히 활용하지 못하는 개발자

사실, 초보 개발자에게는 친절하면서도, 중,고급 개발자에게는 깊이 있는 내용으로 다가가려다 보면, 이도저도 아니고 두껍기만 한 책이 나올 우려가 큽니다. Java, C, Python 등 모든 프로그래밍 언어를 가르쳐주는 책이 어떨지를 생각해보시면 빠르겠네요. ^^ 그래서 출판사에서는 모든 책마다 ‘이 책의 대상 독자는 누구일까?’를 고민하여 특정 독자층을 선정하고 독자층에 딱 맞는 책을 만들기 위해 노력합니다만, 그러면서도 가능한 많이 팔리기를 바라는 이율 배반적인 행동이 바로 ‘대상 독자 선정’입니다. ㅎㅎ

그런데 대상 독자를 정했더라도 책을 서점에 진열해두면서 ‘고급 개발자라면 이 책을 보지 마시오!’ 식의 경고 문구를 붙이지는 않으니, 실제로는 책이 필요하다고 느낀 독자들께서 수준 고하를 막론하고 구입하시게 됩니다.

(사실 책 앞면이나 뒷면 혹은 안쪽 면에 경고 문구와 비슷한 기능의 문구를 넣어두긴 합니다. 예를 들어 『프로 자바스크립트 테크닉』은 제목에서도 대상 독자를 감지할 수 있겠지만, 뒷표지에도 이런 문구를 넣어 두거든요. ‘자바스크립트를 한동안 다뤘던 개발자라면 이미 알고 있을 기본적인 사항들을 배제하고…’ 하지만 앞표지에 크게 ‘누구누구는 보지 말라’라고 하기는 어렵겠죠?)

이렇게 구입하신 독자들께서는 책이 좋았다거나 나빴다라는 의견들을 온라인에 올려주시는데요. 대상 독자가 아닌 분들께는 아무래도 부족한 부분이 많이 드러나게 마련이라 나쁜 평가를 받기도 하고, 때론 오해를 사기도 합니다. 심지어는 대상 독자를 고려하려는 의도가 담긴 부분들에 대해서도 혹평을 얻게 됩니다.

『Java 세상을 덮친 Eclipse』의 이전 판 역시 대상 독자들이 Java 개발은 잘 알고 Eclipse 활용에는 조금 미숙하리라는 점을 고려해두었습니다. 될 수 있으면 예제 코드를 간단히 하고 대신 기능 설명에 주력하자. 모든 기능을 다루려고 하기보다는 중요한 기능만을 설명하자. 책 내용을 늘리기보다는 책을 읽은 후에 더 필요하다고 여기는 부분들을 스스로 해결할 수 있게 도와주자.

하지만 이런 점들 때문에 예제 코드가 부실하다느니, 인터넷에서 모두 찾을 수 있는 내용이라느니, Eclipse 설명 외에 다른 건 얻을게 없다라는 같은 평가를 받기도 했지요.

하지만 책의 가치를 좋게 평가해주시는 분들도 계셨기에 2003년 발간 이래 이클립스 입문서로 확고히 자리잡았고(또, 가장 많이 팔리기도 했죠 ^^), 책이 필요하다는 분들도 많이 계시기에(결국 제로섬(zero sum)인가요?) 또한번 개정판을 준비할 수 있었습니다. ^^

사용자 삽입 이미지
본문 디자인과 표지가 바뀌기도 했지만 무엇보다도 부정적인 서평에서 지적하신 점들을 반영해보려고 애를 썼습니다. 예제 코드가 실행되지 않는다는 분이 계셔서 코드가 실행되는지 작성해보았고, 인터넷에서 찾을 수 있는 정보 외에 뭔가 드릴 것이 있을까 하여 예쁜 단축키 일람표(CheatSheet)를 넣기도 했구요. (Eclipse 설명 외에는 얻을 게 없다는 평은 어떻게 대처해야할지 아직도 어렵기만 합니다. ^^aa)

이렇게 여러모로 노력을 해보았으나 평가는 역시나 독자들께 맡겨 드립니다. 단, Eclipse를 능숙하게 잘 사용하고 있다는 개발자께서는 이 책을 절대 읽지 마세요. (대신 주변에 추천해주세요. ^^)

마지막으로 3판에서 변경된 표지(위)와 이전 판 표지(아래)를 올려봅니다. 이전 판과 비교할 때… 어떠세요? ^^

사용자 삽입 이미지
사용자 삽입 이미지

책 표지는 어떻게 만들어지는가? – 프로토타입과 스크립타큘러스(Protptype and script.aculo.us)

프로그래머가 ‘작동하는 소프트웨어(Working Software)’를 만들기 위해 머리를 짜내고, 이해관계자와 협의하며 섬세하게 코드를 다듬듯, 편집자도 책을 만드는 과정에서 독자에게 책이 어떻게 전달될까를 고민하며 한 단계 한 단계 정성을 다합니다.

그 각 단계 중 어느 하나 중요하지 않은 게 없지만, 개중 큰 비중을 차지하는 것 중 하나가 표지라 할 수 있겠습니다. 독자가 책을 볼 때의 첫 느낌을 좌우하니까요.

어느 날 불쑥 디자이너에게 제목만 얘기해 주면 표지가 ‘생산’되어 나오는 게 아닐 테니, 편집자는 원고를 받아드는 순간부터 표지를 어떻게 할까 머리를 싸매게 됩니다.

예컨대 『프로토타입과 스크립타큘러스(Protptype and script.aculo.us)』라는 책을 발간키로 했는데 이걸 디자이너에게 어떻게 설명하면 좋을까요?

사용자 삽입 이미지

자바스크립트(JavaScript)는 웹 개발에 쓰이는 동적 언어로 최근 리치 클라이언트 환경이 점점 중요하게 되면서 새로이 조명 받고 있는 프로그래밍 언어라 할 수 있습니다. 프로토타입(Prototype)이나 스크립타큘러스(script.aculo.us)는 이 자바스크립트 프레임워크인데. 자바스크립트 개발을 편리하게 해주고, 특히 스크립타큘러스는 비주얼한 이미지를 표현하는 데 탁월…… 어쩌구 저쩌구 ……..

아마 이렇게 설명하면 알아들을 수 있는 (책)디자이너가 거의 없을 겁니다.

물론 이렇게 설명하진 않고

자바스크립트란 건 말이죠. 예전에 카페 게시판 같은 데 보면 글씨가 동동 떠다니며 움직이는 게 있잖아요. 그런 걸 만들었거든요. 근데 최근에 서점 같은 데 들어가면 책 이름의 첫 글자를 치면 그 첫 글자로 시작하는 책들이 스르릉~ 하고 열리잖아요. 그런 걸 만들어요. 예전에 비해 화면이 훨씬 멋있어 보이잖아요. 요즘엔 그런 걸 자바스크립트로 만들어요. 웹을 풍성하게 보이게 해주죠. 에이젝스(Ajax) 같은 게…. 뭐 몰라도 괜찮아요. 하여간 그런 게 있다구요.

프로토타입이나 스크립타큘러스는 그 자바스크립트로 프로그램을 만들 때 편리하게 해주는 거예요. 프레임워크라고 하죠. 거… 있잖아요. 자동차 차체(framework). 같은 프레임워크에서 소나타도 나오고 산타페도 나오고 하잖아요. 같은 프레임을 쓰니 비용도 절약되고……

이렇게 마구마구 풀어서 쉽게 얘기하면 대략 설명하고자 하는 게 뭐다 하는 정도를 알아듣게 되죠.

그 정도면 디자이너가 알아서 할까요? 당연히 그 설명을 들은 디자이너는 자기가 이해한 걸 갖고 어떻게 구현할까 머리를 짜죠. 그래도 책이 어떤 내용을 담는지 이해(?)했다는 것과 그걸 시각적으로 구현하는 건 완전히 다른 문제입니다. 표지에 자동완성 기능을 보여주는 화면을 덩그마니 올릴 수는 없잖아요.

어떻게 해야 더 잘 설명할까 고심하다, 이 책을 옮기신 박영록 님께 프로토타입이나 스크립타큘러스를 더 잘 이해할 수 있게 해주는 방법이 있을까 하고 요청했습니다.

박영록 님은

프로토타입(Prototype)은 원형이 되서 공장에서 차체를 빨리빨리 찍어내는 역할을 하고 스크립타큘러스(script.aculo.us)는 찍어낸 차체를 가지고 차를 데코레이션하고 완성하는 역할을 하는 그런 느낌이죠. 이런 느낌을 살릴 수 있으면 꽤 괜찮을 듯.

라는 설명과 함께 아예 이미지를 직접 그려 보내주셨습니다.

사용자 삽입 이미지

이제 저희가 만들려는 책의 내용이 뭔지 ‘그림’으로 그려지나요?  그림까진 그려지지 않더라도 뭘 설명하려는지는 한층 명쾌해졌죠?

편집자로선 책을 설명하기 위해 최선을 다했고, 이제 이걸 구현하는 건 온전히 디자이너의 몫인 겁니다. 같은 설명을 했더라도 어떻게 구현되어 나오는지는 디자이너에 따라 천차만별이 될 겁니다.

아래는 완성된 시안입니다.

사용자 삽입 이미지

어떠세요? 글을 따라 오시면서 책 표지가 어떻게 나올지 조금씩 예상하셨을 텐데, 생각하시던 표지와 완성 시안이 비슷한가요? 완성 시안은 책 내용을 제대로 설명하고 있나요?

ps. 듀트 님께서 얼마 전 발간된 『자바스크립트 완벽 가이드』의 표지가 꽤나 어색하다는 의견을 주셨습니다. 댓글로 설명 드렸듯이 ‘오라일리(O’Reilly)’의 동물 시리즈는 디자인 제약이 있어, 코뿔소를 그대로 갖다 쓸 수밖에 없었답니다. 아무래도 디자인이 섞이게 되니 뭔가 잘 맞지 않는 느낌을 갖게 되는 거죠. 그래도 저희가 발간하는 자바스크립트 책들은 통일된 느낌을 갖고 싶어, 그렇게 디자인을 요청했답니다.

동적(dynamic)인 언어인 자바스크립트의 느낌을 살리고 싶어 표지 하단의 동글동글한 디자인을 선택했는데……

사용자 삽입 이미지