독서 계기
회사 동료분이 너무 재밋다고 거의 반 강제로 빌려 주셨다.-_-; 그러지 않았으면 아마 남은 평생 펼쳐 볼 기회가 없었지 않을까? 책이 좋지 않았다는 얘기는 아니다. 단지… 표지의… 부담감과… 그렇게 좋지만은 않은 사회적 시선과… 나의 개인적인 성향과는 달라서… 그랬을껄? 받고 나서 굉장히 난감했었는데, 일단 집까지 셔틀한 이상 펼쳐 보았다. 편견을 가지고 책을 대하는 나 자신이 부끄럽기도 했다.(서평을 쓰게 된 계기이기도 하다. 책에 대한 편견을 갖지 말자!-_-)

흥미로운 배경과 발단
스토리의 세계관과 배경은 참 독창적인 것 같다. 시대가 흐르고 흘러 가상 현실 세계가 현실화 되었고, 유명한 천재 개발자가 탄생시킨 가상 세계 온라인 게임 소드 아트 온라인과, 그 속에 뭣도 모르고 접속해 갖혀 버린 수 천명의 플레이어들. 들어가는 건 맘대로였는데 나갈려고 보니깐 로그아웃 기능이 없다. 사람들이 우왕자왕 하는 사이 개발자 아바타가 나타나 하는 말이 나가고 싶으면 끝까지 게임을 클리어 하란다. 게임을 꺼버리고 싶어도 뇌와 직접 연결된 뇌파 송수신 및 제어 장치를 제거하는 순간 그 사람은 죽게 되니 허튼 짓 하지 말란 충고까지. 다행히도 뇌의 신호전달을 가로채는 그 장치 덕분에 내 스스로 몸을 움직여 끌 수는 없다. 근데 더 충격적인 것은 게임에서의 죽음이 곧 현실에서의 죽음으로 직결된다는 것이다. 게임이 현실이 되어버린 것. 결국 이 이슈는 국가적인 문제로 불거지고, 딱히 해결책이 없는 국가는 이들을 모두 병원으로 후송해 링겔을 맞추며 어느 플레이어가 게임을 어서 클리어하기만을 기다린다. 주인공은 이 플레이어들 중 하나. 참 독창적이고 흥미로운 발단 아닌가?

하지만… 결론은?
개인적으로 스토리 전개와 발단은 좋다고 생각하지만 전체적으로 나하고 잘 맞는지는 모르겠다. 좀 로리타스러운 문체를 좋아하는 독자라면 추천하고 싶다. 중간중간에 야한 사진도 몇 개 나옴.-_-; 그래도 재밋긴 재밋다.^^ 오글오글 헌게… 하지만 2권은 PASS!


소드 아트 온라인 1
국내도서
저자 : 카와하라 레키 / 김완역
출판 : 서울문화사 2009.12.10
상세보기


집앞에 있는 서점에 갔다가 베스트셀러 코너에서 보고 구매. 딱히 끌리거나 사야만 한다는 느낌이 들었다기 보단 요즘 "말하는 것"에 관심이 있었는데 운좋게 보였다. 완독한 지금 후회는 별로 되지 않는다. 책의 내용은 괜찮았고 누구나 다 알지만 잊어먹거나 무의식중에 실천하지 않는 부분들을 다시 한 번 짚어주었기 때문이다.

많은 사람들이 말 잘하는 것이 타고나는 재능이라고 하지만, 저자는 동의 하지 않는다. 물론 선천적으로 타인과의 공감능력이 뛰어나거나 센스가 좋거나 목소리가 좋은 사람들이 있지만 그들도 노력하지 않으면 임기응변에 어느정도 재주가 있는 말 좀 하는 사람에 그치게 된다. 오히려 진짜 말 잘하는 사람들은 그런 부분들이 결여되어 스스로 열심히 노력하는 사람들 중에서 많이 나온다고 한다. 이 책의 저자도 그랬고 그의 지인들 중에도 그런 사람들이 많다. 그리고 그런 "감각적인" 사람들은 자신의 감각을 믿고 준비가 덜 된 채 강단에 올라 평생 아마추어 강사에 머무르는 경우가 많다.

이영권 박사가 강조하는 뛰어난 강사가 갖추어야 할 몇가지 요소들이 있는데, 바로 철저한 준비, 목소리와 제스쳐, 그리고 자신감이다. 철저한 준비는 청중에 대해 사전 조사를 하고 주제에 대해 똑부러지게 준비하고 대본을 만들어 달달 연습하는 것을 말하며, 목소리는 듣기 좋고 발음은 분명하고 알아듣기 쉽게, 그리고 제스쳐 또한 간결하고 명쾌하게 취하는 것이다. 그리고 적어도 준비한 주제에 대해서 말할 때는 자신있게 하는 것을 강조한다. 매 스피치(강의,일상대화 등 )를 이런 식으로 준비한다면 스피치 실력이 분명 일취월장 할 것이다.

이 중에서 독특했던 것은 스피치시 에피소드를 많이 활용하는 것이다. 그의 글들은 논리보다는 에피소드를 활용하하는데, 그의 말이 나의 이성에 명령하기 보다는 감성에 호소하는 느낌이다. 그러다 보니 거부감은 줄고 감동은 늘어난다. 하지만 에피소드를 잘 활용하려면 평소에 꾸준히 수집해 놓고 적절한 것을 꺼낼 수 있어야 한다고 저자는 말한다.

일은 점점 분업화 되고 해야할 의사소통은 늘어간다. 분야가 다른 사람들이 함께 모여서 일하다 보니 이들을 하나로 묶는 것도 엄청난 일이다. 말이 왜 중요한지 모르겠는 사람, 말을 잘하려면 어떻게 해야 하는지 궁금한 사람이라면 꼭 한번 읽어 보시라. 뻔하지만 간과하고 있었던 것들이 다시 한번 당신의 주먹을 뿔끈 쥐게 할 것이다.


남자 스피치
국내도서
저자 : 이영권,김태광(tae kwang-Kim)
출판 : 라이온북스 2012.05.30
상세보기


   아인슈타인이 한창 자신의 업적을 인정받으며 막 유명인사가 됐을 무렵, 한 지방 단체의 점심회식에 초대 된 적이 있었습니다. 그곳에서 그는 단체 사람들과 식사도 하고 이야기도 나누며 즐거운 시간을 보내고 있었습니다. 그러던 중 모임의 대표의 정중한 요청이 들어왔습니다. 사람들 앞에서 요즘 진행되고 있는 연구에 대한 발표를 부탁하는 요청이었습니다.

   하지만 그 모임의 사람들은 주로 40~50대의 여성들로 구성되어 있었습니다. 대부분이 과학에 관심이 없는 분들이었죠. 그 분들은 아인슈타인이라는 당대의 유명인사를 만나는 것과 그 사람의 시대적 연구에 대해 들을 수 있다는 것 자체가 기쁨이었고 기대하는 바였지, 진짜로 어렵고 복잡한 연구중인 이론이 듣고 싶은 사람들은 아니었죠. 아인슈타인은 그들의 입장에서 깊게 생각한 후 이렇게 답했습니다. “제가 바이올린을 연주하는건 어떨까요?”

   대화 끝에 모임의 대표도 연구 발표보다는 바이올린 연주가 더 나을 것 같다고 판단하였고, 아인슈타인은 자신이 가장 잘 치는 바이올린 곡중 하나의 곡을 그들 앞에서 연주하기로 합니다. 아인슈타인은 청중이 기다리는 무대에 올라섰고, 연주곡을 진중히 연주하기 시작합니다. 아인슈타인의 딱딱한 강의를 예상했던 여인들은 쥐죽은 듯이 잔잔한 그의 연주에 귀를 기울입니다. 어느덧 연주는 끝이 났고, 우래와 같은 박수소리가 쏟아집니다. 아인슈타인은 가볍지만 젠틀하게 감사를 표하고 무대에서 내려옵니다.

   어째서 아인슈타인은 바이올린을 연주했을까요? 그가 아무리 바이올린 연주를 잘했다고 해도 바이올린 연주자보다 잘했을까요? 하지만 분명한 것은 그의 연주가 그의 발표보다 청중들에게 더 큰 감동과 위로가 되었을 것이라는 겁니다. 아인슈타인은 그들이 진정 원하는 것이 무엇인지를 간파하고 있었습니다. 그들은 그의 연구가 얼마나 어렵고 복잡하고 신기한 것인지를 듣고 싶었던게 아닙니다. 그들은 그저 아인슈타인을 보고 싶었고 그와 있었다는 기억을 남기고 싶었습니다. 그리고 아인슈타인은 그것을 간파하고 그들이 좋아할 만한 것을 들려준 것입니다.

   아인슈타인이 들려준 바이올린 연주는 아주 오랫동안 여인들의 마음에 머물 수 있었습니다. 그가 연구에 대해서 구구 절절 발표했다면 여인들은 그날 밤 들은 것을 모두 잊어먹었을 테지만요.

말을 못하는 이유 ? 충분히 생각하고 말하지 않기 때문!
사람들이 하는 것 중 말 만큼 자주 하면서도 실력의 편차가 큰 것은 드물다. 갑작스러운 질문에도 청산유수처럼 대답을 쏟아내는 사람이 있는가 하면, 일상적인 질문에도 당황하는 사람이 있다. 물론 성격의 차도 있겠지만 말에 있어 진정으로 중요한 것이 무엇인지를 명확히 인지하지 않고 있기 때문인지도 모른다.

말은 속도보다는 효율성이다
언어를 구사하는 데 있어 중요한 것이 두 가지가 있다. 첫째는 속도이고, 두 번째는 효용성이다. 하지만 여기에도 우선순위가 있다. 첫째가 효용성이고 둘째가 속도이다. 말을 잘 하지 못하는 대부분의 사람들은 속도를 더 중요하게 여긴다. 효용성보다는 질문을 받는 즉시 대답하려고 한다. 하지만 효용성이 없으면 속도는 무의미하다.

상대의 진의를 파악하라
말을 하기 전 속도보단 효용성을 생각하라. 얼마나 효율적으로 말 할 것인가. 말에 있어 효율적이란 것은 가장 적합한 말을 적합한 타이밍에 하는 것을 의미한다. 그러기 위해서는 문맥을 알아야 한다. 그 중에서 가장 중요한 것이 상대방의 의도이다. 상대방의 의도는 상대의 말 위에 써 있지 않다. 그 속을 꿰뚫어 보아야 한다. 그래서 속도를 좀 늦추고 상대를 관찰하며 그 말 속에 숨겨진 진의를 파악해야 한다. 만약 그렇지 않고 당황하며 반사적으로 말을 뱉고 나면 후회할 순간이 올 것이다. 너무 많은 정보를 주거나, 너무 적은 정보를 주거나, 전혀 다른 얘기를 해 상대를 당황하게 하거나, 너무 진지해지거나 가벼워져서 상대가 무안해 지거나. 모두 대화의 질을 떨어뜨릴 뿐이다.

강력한 말- 진지하자!
말의 힘은 강력하다. 약한 말은 잠깐 허공을 맴돌다 사라지지만, 강한 말은 나폴레옹처럼 전쟁을 좌우하고 히틀러처럼 대학살을 부른다. 말을 할 때에는 좀 진지해져야 한다. 상대의 의도를 파악하고 나의 입장을 정리하여 가장 적합한 방식으로 대답하는 것. 어렵지만 강력하기에 필요한 수련이다.

책임감의 어원
단어의 어원을 배우는 것은 언제나 새롭고 신선한 충격을 준다. 원칙 중심의 리더십이란 책을 읽다가 본 Responsibility(책임감)란 단어도 그 중 하나이다. 우리 나라 말로 책임감이라고 번역된 이 단어의 어원은 Response(응답)과 -ability(능력)의 합성어이다. 응답 능력. 책임감에 대한 참으로 명쾌한 단어 해설이 아닐 수 없다.

응답 능력이란
당신은 자기 자신에 대해서 Responsibility(책임감)를 가지고 있는가? 즉 자신에 대한 책임을 스스로 지고 있느냐는 말이다. 이 질문에 대답하려면 자신에 대해 책임을 진다는 것이 무슨 의미인지를 이해해야 한다. 다행히도 Response-ability가 대답해주었다. 당신은 당신의 삶에 닥친 상황을 해결하는 주체로써 그 상황에 응답할 수 있는 능력이 있는가. 그리고 그것은 그 단어가 시사하듯, ability(능력)의 차이이다. 그리고 여느 능력이 그렇듯 Response-ability도 향상시킬 수 있다.

응답 능력이 왜 중요할까
하지만 왜 응답 능력이 중요할까. 그 이유는 응답하기가 좀 어려운 상황이 닥치는 순간에 있다. 응답 능력이 낮은 사람은 그런 상황을 만들어 준 주변 환경을 탓한다. 관리자가 스케줄링을 제대로 하지 못했기 때문에… 여자친구가 자꾸 만나자고 해서 시험을 망쳤다… 알람시계가 고장나서 못 일어났다… 엄마가 밥먹고 가라고 해서 지각했다… 문제는 바로 여기에 있다. 응답 능력이 약한 사람은 “이미 만들어진 지금의 상황”을 해결하려하기 보다는 그 상황을 만든 과정, 즉 과거를 탓하게 되는데, 이것이 매우 소모적인 행위라는 것이다.

응답 능력이 강하면
물론 그렇게 된 상황에 외부 환경이 개입이 된 것은 사실이지만, 응답 능력이 강한 사람의 경우 다음과 같이 생각할 수도 있을 것이다. 프로젝트에 더 애정을 가지고 관리자를 좀만 더 도와주자. 나도 책임이 있다!… 다음 시험 때에는 여자친구에게 시험의 중요성을 설명하고 같이 공부하던가 만남을 줄이던가 해야겠다!… 다음엔 건전지를 제때제때 교체해야겠다. 일을 바로바로 처리하는 습관을 기르자!… 다음엔 반드시 일찍 일어나자! 그래서 어머니와 맛있는 식사도 하고 지각도 하지 말아야겠다!… 과연 다음에 똑같은 상황을 마주칠 확률은 어느 쪽이 더 낮을까.

응답 능력을 키우자
외부 요인을 탓해 버리면, 난 잘못한 것이 없는 것이 되기 때문에 더 이상 발전 시킬 것도 고칠 것도 없어 마음이 편안해진다. 하지만 편안함을 댓가로 우리는 외부 요인에게 날 컨트롤 할 수 있는 파워를 내어주고 있음을 알아야 한다. 자신의 삶을 진정으로 책임진다는 것은 바로 여기서 부터 시작하는 것이 아닐까. 주어진 상황에 대한 나의 응답(반응)은 전적으로 나의 책임이며 능력이라는 것 말이다. 오늘부터 외부 요인에게 빼앗겼던 나의 힘들을 하나 하나 되찾아 오는 훈련을 해보는 것은 어떨까? 외부 요인을 탓해버리고 싶은 자기 방어 기제를 억누르고 자신의 영향력의 원을 넓혀나가자.

관련 글
감정과 이성, 자극과 반응

   공공의 승리와 개인의 승리. 둘은 어떤 상관관계가 있을까? 스티븐 코비의 “원칙 중심의 리더십”이라는 책에 이런 말이 있다. 공공의 승리는 개인의 승리를 전제한다. 이 문장을 처음 접했을 때 난 무조건 공감했다. 수신제가 치국 평천하라고 했던가. 하지만 방황의 시기에 있는 지금, 난 이렇게 되물을 수 밖에 없었다. 승리? 좋다. 하지만 무엇을 위한 승리를 말하는 것인가? 성공하는 것? 능력자가 되는 것? 하지만 내가 그걸 원하는지 모르겠는데? 왜 내가 승리를 해야하지?

   승리라. 승리. 참 긍정적이고 성취감을 주는 단어이다. 어느 누가 승리하고 싶지 않겠는가. 또 어느 누가 패배하고 싶겠는가. 하지만 수 많은 젊은이들이 무한 경쟁을 외치며 서로를 이기고 승리하고 패배자가 되지 않으려 하는 이 시대 속에서 과연 그 승리는 무엇을 위한 승리이며 얼마나 값진 것인지에 대한 의구심이 든다.

   지금의 난 심각하게 방황하고 있다. 적당히 하자, 이 정도 하면 되겠지 싶은 매너리즘과 자기 기만식 긍정에 빠져 어느 길이 나의 길인지 조차 잊어버려 가고 있다. 내 인생의 길 조차 흐릿흐릿한 이 상황 속에서 무엇을 승리하자는 것인지 의문이 드는 것은 당연한 것이다. 추구하는게 있어야 승리라는 것도 존재하는 것이기 때문이다. 끝내 이 승리의 의미를 난 알 수 없었다. 내 인생의 길과 사명감이 생겨야 승리라는 것이 가능하지 않을까?

   하지만 개인의 승리에 대해서 어느 정도 목표가 섰다. 개인의 승리란 자신을 잘 통제하는 것이다. 내가 나를 이기는 것이다. 이 것은 인생에 있어 가장 첫 번째 승리가 된다. 인생의 길이 눈에 보일 듯이 선명해도 자신을 잘 통제하지 못하면 그 길을 똑바로 갈 수 없다. 이 유혹, 저 유혹, 혹은 각종 시련과 감정적 도발, 순간적 이익에 눈이 멀어 갈 길, 지금 해야 할 일을 알면서도 샛길로 빠지고 일을 그르치게 된다.

   따라서 개인의 승리-즉 자기 통제력-은 공공의 승리를 원하던 지금 당장에는 원하지 않던 이루어서 나쁠 것이 없으며, 행여나 나중에 공공의 승리를 이루고 싶을 때에도 강력한 밑바탕이 될 것이다.

   결론적으로, 공공의 승리를 목표하기 전, 개인의 승리를 추구하는 것은 인생에 있어 중요한 밑거름이 될 것이다. 후에 이 밑거름은 내가 그 위에서 은행나무를 키우던 쌀농사를 짓던 커다란 도움이 될 것이다. 따라서, 지금 당장의 목표조차 불확실하다면, 모든 것의 기본이 될, 셀프 컨트롤력을 키우자.

   그리고 매일 나의 삶과 세상의 진실을 발견하기 위해 묵묵히 노력하자. 사명은 때가 되면 하늘이 준다고 하지 않았던가.^^

독서 계기
   언제부터인가 세월을 오래 머금은 책들이 끌리기 시작합니다. 오랜 세월동안 살아남은 모습을 보면 왠지 모를 믿음이 간달까요. 그래서 또 아버지 서재에서 책 한 권을 집어왔습니다. 제목은 “내 아들아 너는 인생을 이렇게 살아라” 입니다.

아버지의 사랑이 느껴진다
   이것은 필립 체스터필드라는 영국의 훌륭한 정치가가 아들에게 보낸 실제 편지를 엮어서 만든 책입니다. 권오갑씨에 의한 번역본은 220여 페이지에 달하는데 그 방대한 양에 저는 놀랍니다. 아버지가 이렇게 애정 깊고 지극한 편지를 아들에게 보내는 경우는 처음입니다. 물론 사랑의 표현 방법은 다르기에 다른 아버지들에 비해 이 분의 자식 사랑이 더 지극하다고 단정할 순 없겠지만 대단한 사랑임에는 양으로 보나 질로 보나 틀림 없습니다.

풍요로운 저자의 삶과 자세
   이 정치가는 인생을 참 풍요롭게 살아온 것 같습니다. 그리고 그 배경에는 인생을 보람있고 의미있게 살기 위해 적극적으로 노력한 흔적이 짙습니다. 그랬기에 다른 사람들은 그냥 지나쳤던 삶의 지혜들을 발견하면 마음속에 차곡차곡 쌓고 쌓아 이렇게 아들에게 전해줄 수 있는 것 같습니다. 이 책에서 가장 중요한 것은 이런 저자의 자세가 아닐까요.

소중한 젊음에 대한 교훈
   먼저 체스터필드는 아들에게 젊을 때에는 인생의 기반을 잘 닦아 놓기 위해서 자기 향상을 위한 총체적인 노력을 하라고 말합니다. 그 말이 맞습니다. 인생은 길기 때문에 우리는 젊을 때 노력하여 인생의 기반을 잘 닦아 놓아야 합니다. 순간의 소모적인 쾌락을 위하여 인생 전체를 기울게 하는 것은 지혜로운 행위 같지는 않습니다. 물론 그렇다고 해서 모든 사회적 활동을 뒤로 미루고 홀로 골방에 박혀 책만 파라는 이야기는 아닙니다. 좀 더 가치있는 쾌락을 추구하라는 것이죠. 술을 마시고 이성과 소모적인 시간을 보내기 보다는 춤이나 기타를 배우고 독서 토론에 참여하는 것 처럼 말입니다. 그럴 때 그것이 젊음과 맞물려서 더 지속적이고 상호보완적인 쾌락을 제공해 주는 것이 아닐까 하고 글쓴이에 살짝 동의를 해 봅니다.

가볍지 않은 유쾌함을 갖추어라
   저자는 또한 자신만의 위엄을 갖추라고 말합니다. 유쾌하되 가볍지는 말고, 시시덕 거리기 보다는 언행을 무겁게 하라고 합니다. 우리는 가끔 친구를 만들거나 특정 잘나가는 무리에 들어가기 위하여 비본질적인, 어색한 노력을 하곤 합니다. 상대가 말할 때마다 배시시 웃는다거나 유쾌함을 조작하기 위해 웃음소리를 과장한다던가 말입니다. 그 것이 피상적으로는 나를 그 사람들과 어울리게 만들어도, 그것은 “내”가 아닌 그런 비 본질적인 요소만이 인정받을 뿐이죠. 그 보다 본질적인 내가 인정을 받기 위해서는 신뢰와 사랑을 바탕으로 자신만의 품격과 위엄을 갖추어야 한다고 말합니다.

결론
   그 외에도 정말 귀중한 내용의 많은 지혜들을 담고 있는 책입니다. 10대 후반의 아들에게 쓴 편지이기에 직관적이고 이해하기 쉽지만 그 말하는 본질은 깊으며, 동시에 아버지의 위엄과 품격과 사랑을 느낄수 있는 책입니다. 이 책을 읽은 것에 대해서 아주 만족합니다.

   앞으로도 옛 책에 대한 믿음과 신뢰는 커져만 갈 것 같습니다. 그리고, 인간은 예나 지금이나 변함이 아주 미묘하다는 사실에 대한 믿음도 커져만 갑니다. 그러기에 세월이 지날수록 이런 옛 책들이 빛이 나는 것이겠지요.

   한 번 읽고 놓을 책은 아닌 것 같습니다. 곁에 두고 마음이 또 동한다면 몇 번이고 꺼내보고 싶은 책이네요.


소중한 내 아들아 너는 인생을 이렇게 살아라
국내도서
저자 : 필립 체스터필드(Philip Dormer Stanhope Chesterfield) / 서범석역
출판 : 플러스마인드 2010.01.10
상세보기


  1. 달방울 2012.07.10 00:33

    제 방에는 동일 책 1980년대 판이 있어요 ^^ 어렸을 때부터 많이 읽었는데, 자꾸 읽어도 참 좋은 책인 것 같아요.

    • hanstar17 2012.07.10 09:24 신고

      안녕하세요! 저도 읽은 것은 80년대 판이었어요. 아버지 서재에 있는걸 우연히 발견했었죠. 어렸을 적부터 이런 좋은 책을 접하셨다니 부럽군요. 전 어렸을 적 뛰어 놀기만 좋아해서..ㅎㅎ

    • 달방울 2012.07.10 10:35

      ^^ 집에 서재 같은게 없었던 저로써는 부러운 환경이셨네요 ㅋ

    • hanstar17 2012.07.12 00:49 신고

      말이 서재지 책꽂이죠 ㅎㅎ

  2. 꽃망울 2012.12.14 17:10

    저는 군대에서 처음읽엇는데 정말 감명 깊게 봐 평생 두고 볼 책으로 간직하고있습니다.^^

    • hanstar17 2012.12.15 10:15 신고

      꽃망울님도 공감해주신다니 기분이 좋군요.^^* 이제 주말이 시작되네요. 행복한 주말 되시길 바랍니다. ㅎㅎ

한국에 들어온 이후로 적지 않은 사람들로부터 추천을 받아서 항상 마음 속 한 구석에 꼭 읽어봐야지 하는 책으로 남아 있던 책이었다. 도서관에서 찾은 이 책은 그 추천수에 걸맞는 낡고 헤진 모습을 하고 있어 나를 더 설레게 했다.

생각보다 분량이 많아서 읽는데 적지 않은 시간이 들었지만 전체적으로 후회없는 선택이었다. 책에서 하는 말은 대개 여느 경력자 프로그래머들이라면 다 겪어보고 당연시 하는 것들이다. 하지만 사람은 대개 잊어먹기 마련. 이 책은 내가 그동안 세월이 흐르며 잊고 있던 부분들을 하나 하나 지적하며 뜨끔거리게 했다. 내가 얼마나 비효율적으로 일하고 있었는지를 부끄러워 하며, 허나 한 편으로는 깨닫는 과정을 즐기며 한 장 한 장 넘겼다. 몇가지 기억에 남기고 싶은 작가의 충고가 있어 나만의 언어로 남기어 본다.

1. 자신의 코드에 대한 책임을 지어라.
어설프게 번명하지 말고 자신이 한 것은 했다고 시인하고 대안을 제시하라. 그 만큼 프라이드도 가져라.

2. 깨진 창문을 내버려 두지 마라.
깨진 창문을 중심으로 모든 것들이 조금씩 무질서해 진다. 그 것들을 그냥 지나치지 마라. 발견하는 즉시 고쳐라(리펙토링 하라.) 다른 사람의 코드도 마찬가지이다. 정 시간이 없다면 마크업 이라도 해 두어라.

3. 무엇을 해야 하는지, 어떻게 해야 하는지 알면 해라.
만약 지금 무엇을 해야 하는지 명백함에도 누구도 선뜻 나서지 않는다면 먼저 손을 들고 하라. 그리하여 다른 사람들도 조금씩 기여할 수 있게. 변화의 촉매가 되어라.

4. 요구사항과 요청사항을 구분하라.
이 것을 구분해야 하는 이유는 자명하다. 바로 시간과 자원이 제한되어 있기 때문이다. 실용주의 프로그래머는 “요청사항”을 구현하느라 반드시 요구되는 요구사항의 구현을 미루어서는 안될 것이다.

5. 지식의 포트폴리오를 점검-발전 시켜라.
다변하는 기술 위에서 사는 프로그래머에게 이러한 변화의 흐름을 지각하고 그에 적응하는 것은 당연한 것이다. 기본을 잊지 말되 기술과 IT의 흐름을 읽고 새로운 기술들을 익히고 적응하며 진화하는 프로그래머가 되어라. 그리고 새로운 기술을 읽힐 때는 겉할기 식으로 말고 깊이 있는 접근으로 새로운 기술을 익힐 때의 자양분이 되게 하라. 하나의 기술을 익히는 것은 여러 개의 또 다른 Aspect를 얻는 것이니깐.

6. 생각하라.
항상 생각하라. 지금 내가 무엇을 하고 있는지 분명히 알아라. 내가 비효율적이게 일하는 부분은 없는지. 불필요한 반복을 하고 있지는 않은지. 자동화 할 수 있는 것은 아닌지. 생각하고 생각하라. 비판적인 시야를 항상 열어 놓아라.

7. 소통하라.
소통을 하지 않으면 어떠한 아이디어도 소용이 없다. 진행되고 있는 당장 멈추어야 할 어떤 것을 멈출 수도 없다. 상대방과의 소통을 위해선 먼저 청중을 이해 해야 하는데, 다음이 청중을 이해하고 소통하는 데에 도움을 줄 것이다 :
What : 무엇을 배우길 원하는가?
Interest : 말하려는 것에서 그들이 관심있어 하는 것은 무엇인가?
Sophisticated : 얼마나 소양이 있는가?
Detail : 어느 정도 구체적인 내용을 원하는가?
Owe : 누가 정보를 소유하길 원하는가?
Motive : 그들이 경청하도록 동기를 주려면 어떻게 해야 할까?

8. 반복하지 말라. (DRY : Don’t Repeat Yourself )
코드를 반복하지 말아라. 중복은 언제나 해악이 된다. 특히 개발자 간의 코드 중복은 시간을 허비하게 만들고 혼란을 가중시킨다. 재사용하기 쉽게 만들어라.

9. 추정하라.
사실상 추정은 불가피한 악처럼 느껴진다. 하지만 그것을 기억하라. 추정은 추정일 뿐이며 데드라인이 아니다. 따라서 추정하는 데 겁을 내지 말자. 일단 무슨 일을 할 때 얼마나 걸릴지 추정하는 습관을 길러라. 만약 실제 걸린 시간이 많이 차이가 났다면 괜찮다. 추정일 뿐이었으니까. 하지만 왜 추정이 빗나갔는지는 생각해 보아라. 이것이 추정하는 능력을 길러준다.
그리고 다음과 같은 단계를 반복하는 점증적 개발을 연습하라 :
요구사항 체크 -> 위험 분석 -> 설계, 구현, 통합 -> 사용자와 함께 검증
1차 반복이 끝나면 구현과 함께 2, 3, 4차 반복을 하며 일정을 조절해 나가라. 점차 정확도가 올라갈 것이다.

10. 쉘을 사용하라.
쉘은 처음 접하는 사람에겐 좀 낯설지만 조금만 익숙해지면 생산성이 급증하는 것을 느끼게 된다. 윈도우 환경에서는 Cygwin이라는 유닉스의 인기 유틸들을 포함한 툴박스를 활용할 수 있다.

11. 디버깅의 원칙
마인드
비난 대신 문제를 해결하라. 아무리 급박해도 당황하지 마라. 절대 그럴리가 없다거나 불가능 하다면 특정 가능성을 배재하는 가정을 하지 말고 직접 증명하라. 가장 속이기 쉬운 자는 자기 자신이라는 격언을 기억하고 자신의 방어 시설을 모조리 해제하라. 버그를 고치고 나면 왜 그 문제가 일어났으며 어덯게 하면 좀 더 쉽게 이 버그를 잡을 수 있었을지 고민하라.
디버깅
- 트레이싱( 특정 값이나 실행 순서를 출력하여 확인 하는 것 )하라.
- 다른 사람에게 문제를 설명하라. 그러면 혼자 코드를 살펴 볼 때에는 당연히 여기고 지나갈 것을 명시적으로 이야기 하며 알게 된다.( 고무오리 )
- 서드 파티 라이브러리나 OS는 가장 나중에 의심하라.

12. 계약에 따른 설계를 하라.
예를 들어 특정 함수가 무엇을 요구하며 요구 사항을 만족 했을 때 최소한 무엇을 보장하는지를 “계약” 한 후 설계를 하라.
/*
* @require f != NULL
* @ensure getFont() == f
*/
public : void setFont( Font* f ) { … }
함수에 잘못된 파라미터를 넘겨 주는 것을 걸르는 것은 호출자의 책임인가 피호출자의 책임인가? 필자는 호출자의 책임이라 한다. 난 아직 여기에 대해서는 잘 모르겠다.
트랜잭션을 처리하는 중에 에러가 있다면 그 트랙잭션은 롤백되어 실행되기 이전 상태로 돌아가야 한다. 중복 처리 가능성이 있기 때문이다.

13. 에러가 있다면 일찍 작동을 멈추게 하라.
에러는 무조건 빨리 잡을 수록 좋다. 안그러면 묻혀가다가 사용자에게까지 간다.

14. 어썰션(Assertion)은 불가능한 것들을 확인 하는데에 사용하라.

15. 메타 프로그래밍 하라.
”시스템”과 “세부사항”을 잘 구분하여 세부사항은 언제든 설정 가능하도록 하라. 세부 내용은 Configurable하도록 프로그래밍하라.

16. 시간적 결합(Temporal coupling)을 막아라.
동시에 할 수 있는 일은 동시에 하라. 언제나 동시성을 고려한 설계를 하라. 전역 변수나 정적 변수들이 왜 필요한지 묻고 필요하다면 동시 접근으로부터 보호하라.

17. 프로그래밍을 우연에 맡기지 말아라.
병사는 땅에 총검을 푹 찌르고 폭발을 예상하며 몸을 움찔한다. 폭발은 없다. 그래서 계속 찌르고 쑤시는 작업을 반복하면서 고통스러울 정도로 천천히 조금씩 앞으로 전진한다. 마침내, 지뢰가 없다는 것을 확신한 병사는 몸을 펴서 큰 걸음으로 성큼 걷기 시작한다. 그 순간 지뢰를 밟아 몸이 산산조각 난다. 우연에 맡기는 프로그래밍을 하다가는 이 병사 꼴이 날 수도 있다. 대신 의도적인 프로그래밍을 해야 한다. 내가 무엇을 하는지 그 결과가 어떠한지 분명히 그림을 그리며 하라.
요구사항을 만들어 내는 것부터 테스트에 이르기까지 어느 차원에서건 암묵적인 가정을 해서는 안된다. 가정하지 말라. 증명하라. 자신이 한 가정은 문서화를 하여 왜 그렇게 했는지를 기록하도록 한다.
노력을 기울일 대상의 우선순위를 정하고 계획적으로 하라.
기존의 코드가 앞으로 짤 코드를 지배하도록 놓아두지 말라. 언제나 리펙토링할 자세가 되어 있어야 한다.

18. 성급한 최적화를 조심하라.
어떤 알고리즘을 개선한다고 소중한 시간을 쏟기 전에, 그 알고리즘이 정말 병목현상인지를 먼저 확실히 해 두는 것이 좋다.

19. 리펙토링을 할 최적기는 바로 지금이다.
일찍 리펙토링 하고 자주 리펙토링하라. 리펙토링과 새로운 기능 추가를 동시에 하지 말자. 단계를 작게 나누어서 신중하게 작업하자.
고통을 관리하라. 지금 고통스럽더라도, 앞으로 더욱 고통스러워 질 것 같으면 지금 고치는 편이 낫다.

20. 테스트하라.
계약을 잘 지키는지 테스트하라. 모든 테스트가 통과하기 전엔 코딩이 다 된 게 아니다. 현존하는 테스트의 그물을 빠져 나가는 버그가 있으면 다시 그 버그가 생기는 일이 없도록 그물을 단단히 조여라. 그 케이스를 테스트에 추가하라. 버그는 한 번만 잡는다.

21. 사용자의 기대를 부드럽게 넘어서라.
그러기 위해서 기대를 상호 소통하라. 무엇을 기대하는 것이 합리적인지를 지속적으로 소통함으로써 산타클로스의 상상속 선물을 바라는 아이처럼 고객이 허황된 기대에 빠지는 일이 없도록 한다. 하지만 그들이 기대하는 것보다 조금만 더 해주자.

22. 자신의 작품에 서명하라.
다시 한번 나오지만 자신의 책임을 회피하지 말고, 도전을 수용하며 스스로 품질을 보증하라.
이것이 뼈있는 실용주의 프로그래머의 자긍심이다.


실용주의 프로그래머
국내도서
저자 : 데이비드 토머스, 앤드류 헌트 / 정지호,김창준역
출판 : 인사이트 2005.08.15
상세보기


아버지로부터 고전을 읽어야 한다는 소리를 귀딱지 지게 들어 왔었다. 고전은 검증된 문학으로 시대가 지나도 사람들의 심금을 울리고 어쩌구 저쩌구… 난 그게 틀에 박힌 생각이라며 마음 한편에 거부감을 갖고 있었지만 고전 한 편을 읽어본 이후로 고전은 내 독서목록의 최 우선순위로 올라갔다. 항상 미루고 미루다 민음사의 문학전집의 넘버 원 변신 이야기 1권을 빌려 왔다.

만화책이나 만화영화로, 선생님의 이야기를 통해 일 부분들만 알고 있던 그리스 로마 신화의 원조가 이 책이었던가. 읽는 내내 작가의 단순하고 직설적이면서도 빨아들이는 마력적인 필력에 숨을 죽일 수 밖에 없었다. 신화속 천지 창조에서부터 신과 인간의, 인간과 신의 얼키고 설킨 이야기들을 정신없이 읽다 보면 나도 모르게 미소 짓다가도 슬픔에 눈시울을 붉히거나 안타까움에 무릎을 치고 있다.

또한 이곳 저곳에 퍼져 있던 지식의 파편들이 한 곳에 모아지면서 아 이렇게 해서 헤르메스가 태어났구나, 메두사는 이렇게 뱀의 머리를 갖게 됬구나를 알게 되는 것은 큰 즐거움이었다. 이 기억이 언제까지 갈지는 모르겠지만 말이다.

인간의 필멸성과 신의 불멸성 사이에서 나타나는 비극과, 신들 스스로 자신들이 세운 규칙에 의해 화를 당하는 어리석음 속에 나타나는 인간성, 그리고 인간과 같은 모정 부정 애정 질투심 격노를 가지는 신들의 모습 또한 즐거움이었다. 한편으로는 인간을 자신들의 기분에 따라서 학살하고 조종하고 우롱하는 모습은 화를 일으키게 했지만 마음 한구석에서 우리 인간이 다른 동물들에게 행하고 있는 것도 피차일반이지 않은가 하는 생각에 바로 부끄러워 지기도 했다.

태양의 신 아폴로의 태양수레를 끌려다 파멸에 다다른 파에톤은 혹시 나도 후에 같은 실수를 저지르지는 않을까 노심초사하게끔 만들었고 그리스 로마 신화가 제시하는 여러 동식물들의 존재설은 독창적이고도 흥미롭고 재미 있었다.

이렇게 재밋는 책이기도 했지만 시도때도 없이 등장하는 복잡한 이름의 새로운 인물들 때문에 읽는 내내 머리가 아플 지경이었다. 특히 신들 사이의 복잡한 친척관계와 신과 인간 사이의 복잡한 신인관계는 그냥 그것에 대해 명쾌하게 아는 것에 대해서 포기하게끔 만들었다. 또한 한 인물의 여러 다른 이름들은 스토리의 복잡도를 2^n 승으로 가중 시키는 듯한 환상을 보였다.

낯설고도 낯익은 오비디우스의 변신이야기를 들으면서 그리스 로마 신화세계 속을 실감나게 체험하다 온 기분이다. 아직 2번째 권이 남았는데 솔직히 손 대기가 겁난다. 1권을 읽는데 꼬박 7시간이 넘게 걸렸고 다시 또 그 복잡한 엉킨 관계 속으로 들어가면 다시 머리가 아파질까봐서 이다. 그래도 이제는 좀 더 적응 했겠지 생각하고 들어 볼련다. 신과 인간, 그리고 그 사이에서 펼쳐질 희노애락의 레일을 달리는 기차위로 몸을 실어 보련다.


변신 이야기 1
국내도서
저자 : 오비디우스(Publius Ovidius Naso) / 이윤기(Lee EyunKee)역
출판 : 민음사 1998.08.05
상세보기


언어의 지역화란?
프로그래머가 반드시 알아야 하는 것이 언어의 지역화입니다. 한국어를 사용하는 게임을 미국에 출시하려면 NPC의 대사나 퀘스트, 케릭터 이름, 심지어 게임 무비의 대사까지도 영어가 되어야 합니다. 반대로 미국에서 출시한 게임을 한국에 출시하기 위해선 모든 영어를 한국어로 바꾸어야 하죠.

컴퓨터에서 영어(알파벳)를 표현하는 방법
컴퓨터는 숫자 밖에 알지 못합니다. 0~9까지 알기도 함들어서 0과 1밖에 알지 못합니다. 하지만 어떻게 우리 모니터 화면에는 0~9가, ‘ABC..’ ‘abc..’ 등등의 알파벳들이 떡하니 있는 걸까요? 다음과 같이 0,1로 된 숫자 세트를 문자와 연결시키면 되겠죠.
0000 = 0
0001 = 1
0010 = 2
0011 = 3

그 뿐만 아니라 다음과 같이 연결할 수도 있습니다.
0000 = a
0001 = b
0010 = c
0011 = d


그래서 0000을 보여주라고 하면 1번 방식의 컴퓨터에서는 0를 보여주고 2번 방식에서는 a를 보여줍니다. 여기서 문제가 발생하겠네요. 1번 방식의 컴퓨터에서 텍스트 파일에 “123”을 저장해 2번 방식의 컴퓨터에게 준다면, 텍스트 파일을 여는 순간 “123”이 아닌 “bcd”가 보이겠죠? 이건 아주 중요한 문제입니다. 전 “안녕?” 이라고 보냈는데 상대방은 “꺼져!”로 받을 수 있으니까요. 그래서 Standard라는 것이 생겨나 “모두 이런 방식으로 숫자와 문자를 연결해 주세요!” 라고 독려를 하는 것입니다. 이것에 관한 최초의 Standard가 ASCII였습니다.

최초의 인코딩 표준 : ASCII Code
아스키 코드는 큰 장점이 있습니다. 바로 그것이 128개의 문자만을 표현하고 있다는 것인데 그것은 1byte의 메모리의 절반만을 (0000 0000 ~ 0111 1111) 사용해서 다 표현할 수 있는 숫자입니다. 하지만 그것은 동시에 아스키의 단점이기도 하였습니다. 아스키가 표현할 수 있는 문자는 알파벳 소문자, 알파벳 대문자, 그리고 !?#@%^& 등의 특수문자를 포함합니다. 그럼 한글은 어떻게 보여주죠? 네, 아스키로는 방법이 없군요. 메모리의 나머지 절반을 사용해서 표현하려고 해도 한글을 조합 하면 10,000자가 넘어갑니다. 128개로는 택도 없죠. 근데 한글만 있습니까. 한자, 일본어, 불어, 헝가리어 등등 세상엔 수십가지 종류의 문자가 존재합니다. 그래서 먼저 나온 것이 UNICODE-16입니다.

UNICODE-16
UNICODE-16의 컨셉은 아주 간단합니다. 한 문자를 1byte가 아닌 2byte로 표현하는 것이죠. 그래서 와이드 Char라고도 불립니다. 그러면 0000 0000 0000 0000 ~ 1111 1111 1111 1111 까지의 숫자를 문자와 연결 시켜 훨씬 더 많은 문자를 표현할 수 있습니다. 하지만 그만큼 한 문자를 표현하는 데에 필요한 메모리를 더 잡아먹게 되고, 거기다 기존의 ASCII 코드를 사용하던 문자를 읽을 수가 없게 되는 단점이 생깁니다. ASCII 의 두 글자를 하나로 인식해 전혀 다른 글자를 보여줄 테니까요. 또한 기존엔 1byte면 충분한 알파벳과 자주 사용하는 특수문자들도 모두 2byte를 사용해야 한다는 사실은 그다지 매력적이지 않았습니다. 컴퓨터의 메모리는 소중하니까요. 이 방식은 또 메모리의 한계를 드러냅니다. 2byte를 사용해도 표현할 수 있는 문자는 65,536 개 뿐인데, 5만 글자가 넘어가는 한자는 또 어떻게 표현해야 할까요.

UNICODE-8
그래서 나온 것이 이 인코딩 방식입니다. 아스키 코드를 1byte로 표현할 때 가장 왼쪽의 숫자가 쓰이지 않는 점을 이용한 것인데, 만약 이게 1이 되면 한 문자를 읽는데 2byte를 사용합니다.
1000 0000 0000 0000 = 가
1000 0000 0000 0001 = 나
1000 0000 0000 0010 = 다

1000 1000 0000 0000 = 쀍

그리고 가장 왼쪽의 숫자 2개가 1이면 한 문자를 표현하는데 3byte를 사용합니다.
1100 0000 0000 0000 0000 0000 = ¢
1100 0000 0000 0000 0000 0001 = ¤

이렇게라면 정말 표현할 수 있는 문자의 범위가 끝이 없지 않을까요? 또한 기존의 아스키코드도 인코딩 변환 없이 바로 읽을 수 있겠고요. 게다가 아스키 코드를 표현하는 데에는 아스키 코드를 쓰던 시절 처럼 1byte면 충분하겠네요. 참 놀라운 인코딩 방식인 것 같습니다.

참조
조엘 온 소프트웨어
Game Engine Architecture( 책 )