Outsider's Dev Story

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

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

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



베타리딩!!
어쨌든 그렇게 베타리딩이 시작되었습니다. 베타리딩을 책 쓰는 중에 하지 않고 책을 다 쓴 후에 한 것은 제가 책의 방향을 저도 잘 몰랐기 때문입니다. 책을 쓰는 것과 베타리딩을 겸하면서 장별로 베타리딩을 받는 방법도 생각했었지만 처음 써보는 거라 여러사람이 이런 저런 얘기를 하게 되면 어느 쪽을 선택해야 할지 제가 결정할 수 없을 것 같았습니다. 나름대로 고민을 하고 쓴 후라면 다양한 의견을 받았을 때 제가 고민했던것과 비교해보면서 결정할 수 있을 꺼라 생각했습니다. 원래 한 2주정도 생각했는데 실제로는 3주정도를 진행했습니다. 저도 베타리더를 해본 적이 있고 주변에서도 많이 봤기 때문에 대충은 알고 있었습니다. 사실 이게 잘 진행이 안됩니다. 다들 바쁜 삶가운데 하는 것이기 때문에 모집합니다! 라고 하면 엄청 몰려들지만 피드백도 엄청나게 오는 것은 아닙니다. 그래서 지인위주로 베타리딩을 진행했는데 나름대로는 흡족한 베타리딩이었습니다.

베타리딩으로 피드백을 받으면서 많은 내용이 바뀌었습니다. 간단한 오류에서부터 부족한 부분까지 많이 바뀌었습니다. 베타리딩 이후로 글의 레이아웃까지 바뀐 것도 꽤 됩니다. 처음에 글을 쓸 때는 Node.js의 API에 대해서는 설명할 생각이 없었습니다. 가장 큰 이유는 제가 잘 몰랐기 때문입니다. 그냥 어플리케이션을 쓰면서 제가 필요한 거만 만져봤기 때문에 API를 다 설명하는 것은 무리라고 생각했고 제가 지향했던 것이 레퍼런스 북도 아니었습니다. 책을 쓰기 전에 FRENDS에서 Node.js의 레퍼런스 문서를 반정도 번역했던게 있었기 때문에 부록식으로 이걸 부록정도로 실을 생각이었지만 출판사에서는 번역만으론 안되고 설명을 더 넣어야 한다고 했고 "그럼 그건 무리에요."하고 레퍼런스는 빼버렸습니다. 그리고는 각 예제에서 사용한 API를 그때그때 설명했는데 그러다 보니 설명하기가 쉽지 않았습니다. 글의 흐름에서 설명하려던 내용외에 삼천포로 빠진 얘기가 너무 길어졌기 때문이었습니다. 그래서 API를 설명하는 기본모듈에 대한 챕터를 추가하고 책에 나온 API들에 설명이 필요한 것들을 모았습니다. 근데 베타리딩에서 기본모듈 설명이 너무 취약하다는 지적을 받았고 옳은 생각이 들어서 몇주간 API를 파서 빠진 모듈과 설명을 채워넣었습니다. Crypt같이 설명에 안넣은 부분도 있긴 했지만 3장을 추가한 건 괜찮은 선택이었다고 생각하고 있습니다. 아무튼 내용상으로 베타리딩을 하면서 많은 부분이 교정되었습니다.

베타리딩은 사실 꽤 힘든 시간이었습니다. 원래는 책 쓰고 2-3주 베타리딩받고 고치고 출판!이라는 생각이었지만 당연하게도 그렇게 되지 않았습니다. 베타리딩을 받고 출판할 수 없는 수준이라는 것을 절감했습니다. 그 전에는 육체만 피곤했다면 이제는 심적으로도 피폐해지기 시작했습니다. 이때부터는 매주 나가던 스터디도 못 나가기 시작했습니다. 피드백 받은거 적용하는 것으로도 시간이 부족했기 때문이죠.  전에 오프에서 펭귄너구리님의 책을 베타리딩하면서 펭귄너구리님이 머리는 받아들이는데 마음이 못받아들이고 있다고 약간만 시간을 달라고 했던게 무슨 말인지 이해할 것 같았습니다.

베타리딩은 제가 요청한거고 제가 맘껏 얘기하라고 한거임에도 반대의견을 받으면 자연적인 방어시스템이 동작해 버립니다. 간단한 건 그냥 받아들이기도 하지만 몇달동안 나름 열심히 한 애정때문인지 몰라도 어느 순간에는 무척 기분이 상합니다.(온라인으로 진행해서 다행...) 피드백을 처음 보고 기분이 확 상합니다. 문장을 여러번 뜯어보고 제 글도 다시 봅니다. 역시 기분이 안좋습니다. 좀 물러나서 머리를 식히고 다시 봐도 기분이 나쁩니다. "여기서 얼마나 더해!!"라든가 "그럼 니가 쓰든가"라는 생각이 머리속에 가득합니다.(감적적인 상태가 그렇다는 것이지 절대 베타리더분들에게 그렇게 얘기하는 것은 아닙니다. ㅎ) 우울해진 상태로 책을 내지 말까? 라는 생각을 하다가 다음날 다시 봅니다. 하루 쉬면서 괜찮아진 기분 상태가 다시 나빠집니다. ㅠㅠ 몇일 더 생각하다보면 꽤 옳은 지적이었다는 생각이 들면서 내용을 고치기 시작합니다. 이런 패턴이 계속 반복되면서 진행되었던 것 같습니다. 암흑의 시기였지만 덕분에 책은 많이 나아졌습니다.




Node.js의 빠른 버전 업데이트
처음부터 출간타이밍을 0.6버전에 맞출 생각이었습니다. 윈도우를 지원하는 큰 변화가 될 업그래이드였기 때문입니다. 이때 쯤 베타리딩이 시작되었지만 베타리딩을 넘기고 저는 0.6 호환성을 체크하고 2장 설치부분을 작성해서 완료하려는 생각이었습니다. 하지만 Node.js는 신기술이었고 그만큼 버전업도 공격적으로 빠르게 진행되었습니다. 몇달간 침묵을 지키던 버전 업그래이드는 0.6이 나온 이후에 일주일에 한번씩 마이너 업데이트를 하면서 버전이 올라갔습니다.

더불어 불과 한두달 전에 작성했던 확장모듈들도 그사이에 업그래이드 되면서 약간씩 달라진 부분들이 있었습니다. 이 호환성 맞추는 것도 좀처럼 쉬운 일이 아니었습니다. 코드를 모두 다 돌려봐야 했기 때문이죠. 다행히 0.6.6까지 호환성을 맞춘 상태에서 Node.js는 안정되어 업데이트 주기가 길어집니다.(출간된 지금 시점에선 0.6.11까지 올라왔고 개발버전이 0.7.5까지 올라왔으니 한두달내에 0.8이 나올 것입니다.) 암튼 요즘처럼 빠른 기술 발전에 서적으로 속도를 따라가는 것은 무리가 아닌가... 이북이었으면 나중에 업데이트 해주면 될텐데 하는 잡생각(?)을 하면서 별 수 없이 호환성을 맞춰나갔습니다.




형편없는 한글 실력
베타리딩을 하면서 절망한 것은 내용적인 부분도 있었지만 대부분은 저의 한글 실력때문이었습니다. 오래전에 번역은 한글실력이 중요하다는 얘기를 들었을 때 영어도 못 읽겠는데 뭔소리야 했다가 영어 문서를 많이 보다보니 번역할 때 한글실력이 얼마나 중요한 지를 깨닫고 있었습니다. 근데 책은 그 수준을 훨씬 뛰어넘었고 오랫동안 블로그에서 글을 썼다고 생각했음에도 (글을 다음으려는 노력은 없었기에 당연하게도) 출판도 할 수 없는 수준의 형편없는 문장력이 나왔습니다.

온라인에서 글을 쓸 때는 잘 몰랐는데 제가 글을 깔끔하게 쓸 수 있는 글도 장황하게 쓴다는 것을 알게 되었고 상당히 번역투의 문체를 쓴다는 것을 깨달았습니다. 어렸을 때부터 영어공부때문에 번역문체를 자주 사용한 탓에 번역문체도 그리 어색하게 느껴지지 않는다는게 가장 큰 문제였습니다.  번역을 하고 있는 것도 아닌데 번역문체로 쓰고 있었습니다. (그나마 번역의 탄생을 읽어서 다행) 그냥 "~한다"라고 해도 되는데 "해준다"라고 쓴다거나 어색한 수동태, 주술 불일치 등 다양한 형태의 한글 파괴가 일어났습니다. 문학 서적은 아니지만 블로그 처럼 짧은 글은 아니기 때문에 글을 담백해야 했고 핵심을 잘 설명할 수 있어야 했는데 제 한글 실력은 그렇지 못했습니다. 갑자기 한글실력이 늘어날리도 없기 때문에 이건 계속 보면서 수정할 수 밖에 없습니다. 처음에는 어느 부분이 어색한지도 몰랐기 때문에 힘들었지만 계속 볼수록 어떤 부분을 이상하게 쓰는지 패턴이 보였기 때문에 뒤로 갈수록 문장을 다듬는 것은 좀 나아졌습니다. 마무리 할때는 한국어 맞춤법/문법 검사기를 사용했는데 정말 최고입니다.




마지막 퇴고...
베타리딩이 끝나고 친분이 있는 네피림님으로부터 받은 많은 지적사항을 토대로 수정에 들어갔습니다. "글을 잘 쓰는 것은 다시 쓰는 것이다"라는 말이 있었는데 실제로 그러했습니다. 이미 제가 쓴 문장인데도 보고 다시 쓰는 것만으로도 문장력은 훨씬 나아졌습니다. 책을 처음부터 거의 다 새로 쓴 것같습니다. 베타리딩 중에 이러한 작업에 이미 착수했기 때문에 이게 끝나면 다시 한번 피드백하는 것으로 네피림님과 협의를 봤었습니다. 베타리딩을 한번 더 돌리기에는 좀 무리가 있을 것으로 판단해서 네피림님과만 마지막 마무리를 했습니다. 초반에 글을 쓰게 채찍질하신 분이 토비님이라면 후반부에 퀄리티를 올릴 수 있도록 채찍질하신 분은 네피림님이었습니다.(채찍이 둘이고 당근이 없어요 ㅠㅠ)

글을 쓰면서 가장 심혈을 기울인 것은 1장이었습니다. Node.js에 대한 전반적인 개념을 설명하는 장인 만큼 쉽게 정리가 잘 되진 않았습니다. 뒷 장은 각 기능에 대한 설명이기에 비교적 혼란이 생길 여지가 적었지만 1장은 중요하기도 했고 설명이 쉽지 않았습니다. 처음에는 Event-Loop와 Event-Driven이 혼재된 상태로 Non-Block, Async개념까지 한번에 섞여 들어있었습니다. 나름 열심히 정리한 거였지만 저도 제대로 이해못한 부분이라 어설프게 개념이 혼재되어 있었습니다. 어김없이 이부분을 지적받고 자료찾아보고 Arawn 저녁에 불러다가 몇시간씩 토론하고 하면서 어느정도 개념을 잡고 정리된 것이 지금의 1장입니다. 초반보다는 많이 깔끔해 진 것 같습니다.

12월 중반이 넘어서면서 저는 꽤나 지쳐있었습니다. 조금만 더하면 끝날 것 같은 작업이 한달이상 길어지고 있었고 그 외 다른 것은 아무것도 못하고 있었습니다. 나중에 출간된 다음에 퀄리티가 만족스럽지 않으면 이 때의 나태함이 후회스러울 것 같은 생각과 이 작업이 빨리 끝났으면 좋겠다는 두 생각이 교차하고 있었습니다. 거의 완벽함을 추구하는 네피림님은 앞으로 수정하고 검토하는 작업을 3번정도는 더 돌자라고(역시 Geek은 아무나 하는게 아니구나라는 생각을 하며...) 하고 있었고 펭귄너구리님은 이건 신기술이니 타이밍이 중요하다. 이제 출간을 하라고 압박을 하고 있었습니다. 선택은 제 몫이었지만 저는 어느정도 해야 만족스러운 것인지 판단하기가 어려웠고 지쳐있었기 때문에 "이정도면 되겠다"라는 생각이 실제로 정확한 판단인지 알 수 없었습니다.

어쨌든 12월 중순을 목표로 달렸었지만 결국 시간을 못 맞추고 12월 말까지 퇴고를 한 다음에 1월 1일에 원고를 넘겼습니다. 지금만큼이라도 문장력이나 설명이 깔끔해 진 것은 네피림님의 공이 대부분입니다.(감사감사) 그 원고를 넘겼을 때 후련함이란.... 암튼 그 뒤로는 출판사에서 원고를 정리하고 제가 마지막 퇴고를 한 뒤에 2월 초에 예판이 시작되고 출간을 하였습니다. 출간뒤에는 저도 전혀 예상못했던 Node.js에 대한 관심이 쏟아지면서 사람들이 Node.js에 대해서 이렇게 관심이 많았나 하는 생각을 하고 있습니다. 제 주변에는 다들 Node.js에 관심이 있어서 실제로는 어떤지 전혀 예상할 수 없었거든요.

마지막으로 Node.js가 일시적인 인기일 것이냐 아니냐하는 얘기도 있는데 사실 이건 아무도 모를일이라고 생각합니다. 수없이 많은 기술이 기대를 받다가 금새 사라져버리기도 하고 갑자기 떠올라서 주목받기도 합니다. 이젠 머 개발자들의 몫이라고 생각합니다. Node.js를 사용하면서 검증하고 괜찮은 레퍼런스를 만들어간다면 일시적인 인기로 끝나지 않을 수도 있고 그렇지 못하다면 인기는 줄어들 수도 있다고 생각합니다. 현시점에서 분명히 매력적인 요소들을 가지고 있는데다가 기술이 멈춰있는 것이 아니므로 지금 판단한다는 것 자체가 큰 의미는 없어보입니다. 아무튼!! 책에 많은 관심을 가져주셔서 감사합니다. ^^;;;
2012/03/01 23:56 2012/03/01 23:56