Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Node.js 프로그래밍이 나오기까지 #2

Node.js 프로그래밍이 나오기까지 #1



왜 책을 쓰려고 하는가?
책을 쓴다는 작업에 대해서 본격적인 고민을 하면서 주변에 저자들도 꽤 있었기 때문에 이것저것 물으면서 조언을 구했습니다. 대부분 뜻하는 바가 있어서 책을 쓰셨기 때문에 책을 쓴다는 작업에 적극적으로 찬성해 주셨습니다.

그 중에서 주말 저녁에 펭귄너구리님과 한두시간정도 채팅을 했는데 "왜 책을 쓰려고 하는가?"를 잘 생각해 보라고 했는데 이 말이 인상적이어서 몇일간 계속 고민을 했습니다. "나는 왜 책을 쓰려고 하는가?" 토비님과 자바지기님이 권해주긴 했지만 그건 계기였을 뿐 시켜서 하는 건 아니므로 책을 쓰는 동기는 아니었습니다. 책을 써서 잘 된다면 부수입정도는 될 수 있겠지만 그 당시에는 정확한 규모는 몰랐음에도 국내 IT전문서적의 규모는 대충 알고 있었기 때문에 돈을 목표로 한다면 그다지 효율적인 작업은 아니었기에 돈때문이라고는 할 수 없었습니다. 책은 고정금액이 아닌 팔리는대로 수익이 되기는 하지만 노력대비로 본다면 그시간에 홈페이지 알바를 뛰면 더 많이 벌 수 있을꺼라고 생각합니다.

돈도 아니면 명예때문인가.... 흠... 이건 약간 동기부여가 될 수 있을 것 같았습니다. "나 저자다!!"라고 어깨에 힘주고 다니고 싶다거나 이력서에 "OOO 저자"라고 쓰고 싶다기 보다는 블로그에서 글을 쓰면서 느끼는 약간의 보람감과 비슷하게 책에서도 비슷할꺼라고 생각하고 다 썼을때 꽤 뿌듯함이 느껴질 꺼라고 생각했습니다. 이렇게 빨리 올지는 몰랐지만 언젠가는 한번 해보고 싶었던 작업이기도 했고요. 그리고 마지막으로 기술에 대한 호불호를 떠나서 해외에서 상당히 관심을 모으고 있는 Node.js가 국내에서는 그다지 주목받지 못하는 것 같아서 아쉬움이 있었습니다. 그리고 그나마 관심을 가지고 있는 사람들은 어디서부터 공부해야할 지 몰라 헤메는것 같아서 아쉬웠습니다. 책이 있다면 조금이나마 쉽게 공부하고 Node.js 보급에 영향을 줄 수 있지 않을까 하는 생각이 들었습니다. Node.js의 바이블!! 같은 건 쓰지 못한다고 하더라도 초심자들이 Node.js가 무엇인지 배우고 흥미를 갖게 만들어서 조금이나마 사용해보게 만드는 데 까지는 할만해 보였습니다. 두 동기부여중 굳이 비중을 고른다면 후자가 더 높았으리라고 생각합니다. 원래부터 그런지는 않았지만 오픈소스나 선배들이 닦아놓은 길을 걸어가면서 나도 뭔가 공헌할 수 있는 부분에 대해서 꽤 관심이 많아졌습니다.

초반에 왜 책을 쓰는가를 고민해 본 것은 책을 쓰는내내 많은 도움이 되었다고 생각합니다. 좀 힘들거나 뭔가 결정이 어려울 때 목표가 무엇이었는지를 다시 생각해 보면서 방향을 선택할 수 있었습니다. 물론 뒤에서 얘기하게 될것 같지만 이 두가지 동기부여가 깨지는 상황이 왔을때는 계속 책을 쓸 필요가 있는가 하는 고민에 빠지기도 했지만요...



독자 대상
아무튼 맘먹고 책을 쓰기로 맘을 먹으면서 가장 먼저 고민한 것은 타게팅이었습니다. 아무래도 책의 전체적인 내용과 방향을 결정짓는데 가장 중요한 부분이었으니까요. 누구를 대상으로 책을 써야하는가.... 물론 초심자!라는 기본 전제는 이미 결정나있었습니다. 제가 어드밴스드를 쓸 레벨도 아니었고 국내에서 node.js는 아직 보급이 필요한 기술이지 고난이도 테크닉부터 설명해야할 단계는 아니라고 생각했습니다.(작년 여름 기준입니다. 요즘은 약간 달라진듯 합니다.) 그러면 초심자는 초신자인데 초심자 누구를 대상으로 해야하는 가에 대한 고민만 남았습니다.

Node.js는 그 기술이름대로 JavaScript에 기반을 두고 있으므로 당연히 자바스크립트를 할 줄 알아야 합니다. Node.js 책에서 자바스크립트에 대한 지식이나 테크닉을 설명하는 것은 분량상 무리였으므로 Node.js의 역할에만 집중하는 것이 적절해 보였습니다. 하지만 고민의 시작은 그 뒤로 부터였습니다. Node.js에 관심을 가지는 것은 자바스크립트를 할 줄아는 서버개발자인가? 아니면 자바스크립트를 할 줄 아는 프론트앤드 개발자인가? 서버개발자는 통상 프론트앤드에는 관심이 적은 편인데 서버개발자의 자바스크립트의 지식수준은 어느정도로 해야하는가? 반면에 프론트앤드 개발자라면 자바스크립트를 어느정도 알고 있는가? 자바스크립트를 어느정도 안다고 하더라도 프론트앤드는 서버에 대해서 얼마나 지식을 가지고 있는가? 그리고 Node.js는 서버기술이기 때문에 서버쪽에 대한 지식이 필요합니다. 그럼 프론트엔드 개발자는 서버쪽에 대해서 얼마나 알고 있는가? 예를 들어 커맨드라인에서 쉘을 사용한다거나 Git을 사용한다거나 SQL을 읽을 수 있는지 등등 알수 없는 요소들이 너무 많았습니다.

이런 문제들은 제 주위에는 그냥 영문문서 몇개 보면 금새 코딩한다거나 프론트앤드 개발자이지만 리눅스 커널만지고 C레벨의 코드 막 읽어대는 사람들이 수두룩 하기 때문에 더 중심을 잡기가 어려웠습니다. 발표를 해볼 때도 느꼈지만 불특정 다수를 대상으로 고민을 하다보면 결국 다 모른다라는 것을 가정하고 갈 수 밖에 없는 것 같습니다. 서버개발자와 프론트엔드 개발자중 한쪽만을 선택할 수는 없었기 때문에 둘 다 대상으로 하지만 책의 분량상 모든 내용을 다룰 수는 없습니다. Node.js의 기술 특성상 Node.js 자체 외에도 필요한 부분들이 많이 있습니다. 쉘의 사용이나 Git, 데이터베이스, 네트워크등 프로그래밍에 대한 영역을 전반적으로 아우르고 있기 때문이죠. 그래서 자바스크립트를 설명하지는 않지만 새로운 함수들이 나오면 간단히는 설명한다. 그외 서버쪽 관련 지식들은 언급정도로만 하고 별도로 깊게 설명하지 않는다 정도 선에서 타협했습니다.



글쓰기 작업
이제 독자 대상도 정해졌으니 본격적인 글쓰기에 들어가야 했습니다.

사용자 삽입 이미지

위는 제 커밋로그입니다. 비공개 저장소가 필요해서 Mercurial을 사용했습니다. 혼자 쓴다고 브랜치 없이 막 썼더니 커밋그래프가 안이쁘군요 ㅠㅠ 저 당시에는 flow까지는 관심을 못가지던 때라... Bitbucket이 지금은 Git도 지원하지만 저때만 해도 Mercurial만 지원해서 Mercurial을 선택했습니다. 어쨌든 7월 초부터 작업에 들어갔지만 작업은 한달내내 지지부지했습니다.

머 저 당시만해도 제가 할건 다 하면서 책에 대한 고민을 했습니다. 블로그나 스터디, 개인 프로젝트 까지 원래 하던거 다 하면서 남는 시간에만 책에 대해서 고민하기 시작했는데 아무래도 시간이 모질라서 조금씩 개인시같을 확보하기 시작했고 이내 개인 프로젝트까지는 여력이 안되서 작업을 멈췄습니다. 위 커밋로그처럼 7월 한달이 다가고 8월 중순이 다가올때까지 전 1장을 제대로 시작도 못하고 있었습니다. 이런저런 고민을 계속 하고 있기는 했지만 쓰다가 지우고 쓰다가 지우고 하기가 일쑤였고 어떤 내용을 써야할지 몰랐습니다. 무엇보다 앞에서 얘기한 것처럼 우선순위가 꽤 낮았기 때문에 작업시간을 그리 많이 들이지 않았습니다.

실제 책 작업이 들어간 뒤로는 거의 매주 토비님이 메신저로 작업일정 압박을 하셨습니다. 저 당시만 해도 상당히 많은걸 하고 있었는데 딴거 하고 있으면 어김없이 말을 거셔서 "집필은 잘 되시죠?"라고 하셨습니다. 차라리 "왜 책 안쓰고 있어요!!!"라고 하면 맘이라도 편하겠는데 저렇게 말씀하시니 뜨끔하면서... 고민중이라고만 대답하면서 어느새 한달이상이 지나가버렸습니다. ㅠㅠ 결국 이대로는 아무리 시간이 지나도 동일하겠구나 싶어서 에이콘에 연락해서 8월까지만 작업하고 진도가 잘 안나간다 싶으면 계약을 하겠다 라고 얘기했지만 역시나 진도가 잘 나가지 않았고 9월초에 김희정 부사장님을 만나서 계약을 맺었습니다.
2012/02/14 02:48 2012/02/14 02:48