토요일, 6월 29, 2013

[독서광] The Java Native Interface: Programmer's Guide and Specification

어쩌다보니 JNI를 사용해 자바와 C 세상을 연결하게 되었는데, 출발부터 삐걱거리다 몇 번 혼이 난 다음에야 가까스로 정신을 차렸다. 자바 대가인 dynaxis 군에 따르면 JNI 표준을 정확하게 이해하지 못하고 감으로 프로그램을 만들면 나중에(나중에 - 이 얼마나 무서운 단어인가!) 심각한 문제를 초래한다고 하는데, 그게 무슨 말인지 이해하려면 바로 이 책을 읽어보면 된다. 아주 어려운 로켓 과학은 아니지만 무척 꼼꼼하게 '이러면 안 되고 저러면 큰일나고 요러면 망가진다'는 설명 앞에서 무심코 저지른 실수가 생각나며 몇 번을 화들짝 놀라게 될 책으로 보면 틀림 없겠다. 온라인 시대에 책 말고 인터넷에 올라온 아티클만으로 어떻게 안 될까? 유감스럽지만, 선 마이크로시스템오라클에서 제공하는 공식 문서인 Java™ Native Interface(JNI 6.0 기준)만으로는 미묘한 뉘앙스를 파악하기에 부족한 점이 많다는 사실도 짚고 넘어가겠다. 하지만 너무 겁먹지 마시라. 이 책은 분량이 300페이지 정도지만 후반부는 참조 매뉴얼 형태라 정신 바짝차려 읽으면 며칠 내 독파가 가능하니까.

이 책을 처음부터 끝까지 읽으면 가장 바람직하지만, 시간/여건 상 완독이 힘드신 분들이라면 11장 "Overview of the JNI Design"(11장을 읽다보면 왜 JNI가 이렇게 요상(응?)하게 만들어졌는지 이해가 갈 것이다)과 10장 'Traps and Pitfalls' 만이라도 꼭 읽어보기 바란다. 그래도 시간이 없는 분들을 위해 10장에서 나오는 몇 가지 함정에 대해 요약 정리해드리겠다.

  1. 오류 점검: native 메소드(C로 만든)를 작성할 때 가장 잊어버리기 쉬운 실수는 오류 조건이 발생했는지 점검하는 루틴 누락이다. 자바 프로그래밍 언어와는 달리 C에서는 표준 예외 처리를 제공하지 않는다. JNI는 C++ 예외와 같은 전형적인 예외 처리 매커니즘에 의존하지 않는다. 따라서, 예외를 일으킬 가능성이 있는 모든(!) JNI 함수 호출 직후 명시적으로 예외를 점검해야 한다(이 부분 밑줄 좌악). 예외 점검은 따분하지만 튼튼한 애플리케이션 제작을 위해 필수다.
  2. JNI 함수로 유효하지 않은 인수 전달: JNI 함수는 유효하지 않은 인수를 감지하거나 회복하려 들지 않는다. 참조값을 기대하는 JNI 함수에 NULL이나 (jobject) 0xFFFFFFFF를 넘기면, 이후 결과는 미정의(!)다. 현실에서 이런 미정의는 잘못된 결과나 가상 기계 충돌을 의미한다. -Xcheck:jni 명령행 옵션을 붙이면, 가상 기계에서 JNI 함수에 유효하지 않은 인수를 넘길 경우 (비록 전부는 아니지만) 상당수 잘못된 용례를 잡아낸다. 이 옵션은 부하를 유발하므로 기본적으로 꺼놓아야 한다.
  3. jboolean 인수 주의: jboolean은 8비트 부호없는 C 타입으로 0부터 255까지 저장 가능하다. 0은 JNI_FALSE이며, 나머지 1부터 255는 JNI_TRUE에 대응한다. 하지만 255보다 큰 16비트나 32비트인 경우 문제가 발생한다. 이런 점에 유의해서 프로그램을 작성해야 한다.
  4. 자바 애플리케이션과 native 코드 사이의 경계: JNI를 사용하는 자바 애플리케이션을 설계할 때, "무엇을, 얼마나 많이 native 코드에서 처리해야 하나?"라는 질문이 나온다. native 코드와 나머지 자바 애플리케이션 사이의 경계는 애플리케이션에 밀접하지만 몇 가지 원칙이 존재한다.
    • 경계를 단순하게 유지하자: JVM과 native 코드 사이에서 복잡한 제어 흐름이 왔다갔다 하면 디버그와 유지보수가 어렵고 고성능 자바 가상 기계가 수행하는 최적화에도 방해가 된다.
    • native 코드를 최소로 유지하자: natvie 코드는 이식성도 낮고 타입 안전성도 떨어진다. 되도록 최소로 줄이는 편이 좋다.
    • native 코드를 격리하자: 모든 native 메소드는 동일 패키지나 동일 클래스에 둬서 나머지 애플리케이션 코드로부터 격리시킨다. 이런 패키지나 클래스는 애플리케이션을 위한 "이식 계층"이 되어야 한다.
  5. ID와 참조를 혼동: JNI는 객체를 참조로 외부에 노출한다. 클래스, 문자열, 배열은 참조의 특수한 타입이다. JNI는 메소드와 필드를 ID로 노출한다. ID는 참조가 아니다!
  6. 필드와 메소드 ID 캐시하기: native 코드는 필드나 메소드의 이름과 타입 기술자를 문자열로 지정해 가상 기계로부터 필드나 메소드 ID를 얻는다. 이름을 사용한 필드와 메소드 탐색은 느리다. 종종 ID를 캐시하는 편이 비용을 줄인다. 캐시 필드나 메소드 ID에 대한 캐시를 사용하지 않을 경우 native 코드에서 성능 문제가 생길지도 모른다. 하지만 상속 관계에 주의해서 필드와 메소드 ID를 캐시해야 한다. 잘못하면 엉뚱한 내용을 캐시할지도 모르니까.
  7. 유니코드 문자열: GetSTringChars나 GetStringCritical에서 얻은 유니코드 문자열은 NULL로 끝나지 않는다. GetStringLength 함수를 호출해 16비트 유니코드 글자 수를 세야 한다.
  8. 가상 기계 자원 획득하기: native 메소드에서 흔히 저지르는 실수는 가상 기계 자원을 해제하는 루틴 누락이다. 프로그래머는 오류가 발생할 때 수행할 코드 경로에 대해 특히 주의해야 한다. 오류 발생 시점에서 자원을 해제하지 않고 return하는 경우가 많은데, 이럴 경우 해당 자원은 JVM에서 pinned 상태로 영원히 남게 되어 메모리 단편화를 일으키거나 메모리 누수 현상을 일으킨다. GetStringChars의 isCopy 매개변수를 JNI_FALSE로 지정했을 때조차 ReleaseStringChars를 호출해야 한다. 그렇지 않으면 jstring이 pinned 상태로 남게 된다.
  9. 과도한 지역 참조 생성: 과도한 지역 참조 생성은 불필요하게 메모리를 많이 소비한다. 불필요한 지역 참조는 참조된 객체 뿐만 아니라 참조 자체에도 메모리를 소비한다. native 메소드 실행 시간이 길어지거나 루프 내에서 지역 참조를 만들거나 유틸리티 함수에서 지역 참조를 만들 경우 특히 주의해야 한다. Push/PopLocalFrame 함수를 잘 활용한다.
  10. 유효하지 않은 지역 참조: 지역 참조는 지역 메소드의 단일 호출 내에서만 유효하다. native 메소드에서 생성한 지역 참조는 해당 메소드를 구현한 native 함수가 return될 때 자동으로 해제된다. native 코드는 전역 변수에 지역 참조를 저장해 나중에 native 메소드에서 사용해서는 안 된다. 지역 참조는 생성한 스레드 내에서만 유효하다. 지역 참조를 특정 스레드에서 다른 스레드로 전달해서는 안 된다. 스레드 사에에 참조를 전달하려면 전역 참조를 생성하자.
  11. 스레드 사이에서 JNIEnv 사용하기: JNIEnv 포인터는 연관된 스레드 내부에서만 사용해야 한다. 특정 스레드에서 얻은 JNIEnv 인터페이스 포인터를 캐시해 해당 포인터를 다른 스레드에서 사용하면 안 된다.

지금까지 설명한 내용은 공통적으로 가장 흔히 저지르는 실수이며, 개발자에 따라 다른 유형의 실수를 저지를 가능성도 있으므로 깨알같이 꼼꼼하게 프로그램을 작성해야 한다. 딱 세 가지로 요약하자면, JNI 함수 호출 다음에는 오류 점검이 따라 와야 하고, 코드 경로를 주의 깊게 살펴 자원 해제를 빠뜨리는 경우가 없는지 점검해야 하며, 지역 참조 관련해 한계를 확실하게 이해하고 있어야 한다.

결론: JNI로 뭔가를 하려면 반드시 이 책을 정독하기 바란다.

EOB

화요일, 6월 25, 2013

[독서광] 위대한 게임의 탄생 3

작년 여름 소개드린 위대한 게임의 탄생위대한 게임의 탄생 2에 이어 오늘은 위대한 게임의 탄생 3편을 소개해드리겠다. 박 일님께서 지난 주 보내주셨는데, 생각보다 내용 압박이 강해 읽는 과정에서 제법 시간이 오래 걸렸다.

영화도 그렇지만 책이 시리즈로 출간될 경우 사람들은 전편과 유사하면서도 다른 뭔가를 바라기 마련이다. 전편과 너무 동떨어져도 문제고 전편과 너무 흡사해도 문제다. 사람들의 눈높이가 이미 높아질 대로 높아져 새로운 것을 갈구하면서도 기존 좋았던 틀에서 벗어날 경우 연속성이 없다고 비판한다. '위대한 게임의 탄생'의 1편은 해외 사례, 2편은 국내 사례로 나뉘어져 있으므로 이런 어려움이 없었는데, 3편은 예상했던 바와 같이 국내 사례를 중심으로 전개되면서 2편과 차별성을 가져가야 하는 어려운 상황에 부딪혔을 것이다. 그렇다면 2편과 어떤 차이점이 있을까? 일단 게임 분야만으로 범위를 좁혔다는 점이 가장 먼저 눈에 들어왔다. 2편은 게임 이외에 3부에서 여러 분야를 다루다보니 주제가 산만해지는 문제점이 있었는데, 3편은 처음부터 끝까지 게임만 다루고 있으므로 통일성이 높아졌다. 다음으로 직군별 인터뷰가 빠져버린 대신 본문을 강화하는 방법을 사용한 점이 눈에 들어왔다. 1편과 2편은 직군별 인터뷰가 있어 중간 중간 한숨 돌릴 수도 있고, 다양한 각도에서 현장감을 느낄 수 있는 장점이 있었는데, 직군별 인터뷰가 빠져버리니 책을 읽는 과정에서 피로도가 높아지는 느낌이다. 2편에 비해 개별 사례에 대한 깊이가 깊어져서 호흡이 길어졌을지도 모르겠는데, 만일 인기를 끌어 4편이 나오면 직군별 인터뷰 형식이 아니더라도 다양한 스튜디오 소속 또는 독립 개발자와 자유로운 인터뷰 형식으로 중간 중간 변화를 주면 어떨까 하는 생각이 들었다. 본문 사례 전개 방식은 1편과 2편과 유사하게 전개되고 있으므로 기존 책의 서술 방식에 만족하는 독자들이라면 부담없이 읽을 수 있다. 개인적인 평가는 (형만한 아우 없다고) 1편 > 3편 > 2편 순이지만, 국내 게임 상황을 파악하기 위해서라면 3편이 가장 좋다는 생각이다.

각 게임별 포스트모르템 수준과 재미는 천차만별이다. 독자들에 따라 호불호가 갈리겠지만, 의외로 작은 게임을 소개하는 내용이 알차고 재미있었다. 큰 게임은 (어쩔 수 없는 환경상) 기술적인 측면이나 조직적인 측면을 많이 강조하다보니 실제 게임의 아기자기한 개발 재미와 고통을 제대로 전달하기 어려웠기 때문이 아닐까 싶다. 1편에서 소개하는 해외 게임의 경우에는 게임 규모와 무관하게 좋은 점과 나쁜 점을 독창적으로 모스트모르템 형식으로 기술하는 반면 국내 게임의 경우에는 회사/프로젝트 규모에 따라 (심지어) 어느 정도 규격화된 포스트모르템이 존재한다는 느낌도 들었는데, 만일 4편이 나오면 예상 가능한 시나리오를 전달하는 수준을 벗어나서 차별화 포인트를 정확히 공략해 들어갈 필요가 있어 보인다(그렇지 않으면 동일한 이야기가 중언부언될 가능성이 매우 높다!). 또한 기술적인 내용이 많은 포스트모르템의 경우 "우리는 이런 훌륭한 기술을 써서 게임을 만들었습니다"라고 서술하는 대신, 특정 기술을 사용하자고 결정한 역사적인 이유나 예상하거나 예상치 못한 파급 효과를 게임의 재미와 기획 의도와 관련지어 전지적인 작가 시점에서 서술해야 독자들이 납득할 것이다. 솔직히 말해 초당 프레임이 어떻고 컬러가 어떻고 폴리곤이 어떻고 모두 게임이 재미있고 난 다음에야 중요한 내용이고, 책 읽는 독자들은 그다지 관심없을 가능성이 높다(열심히 만든 프로그래머 입장에서는 무척 괴씸한 태글인지도 모르겠는데, 비유를 들어 설명하자면 영화가 재미없을 경우 IMAX, 3D, HFR, Dolby Atmos 이런 기술이 아무 소용없다는 사실을 기억해야 한다!)

결론: 전작과 마찬가지로 다양한 플랫폼, 다양한 장르의 게임(22개?)을 다루고 있기에 여러 각도에서 게임 개발에 관련된 희노애락을 느낄 수 있다. 게임 업계에 종사하거나 향후 종사하고 싶은 분들이 제일 궁금하게 생각하는 '과연 남들은 어떻게 개발하고 있을까?'라는 질문에 100%는 아니더라도 나름 도움이 되는 대답이 나오므로 책을 읽으며 스스로를 한번 돌아보는 기회를 만들면 좋겠다.

EOB

토요일, 6월 22, 2013

[독서광] 카산드라 따라잡기

1년 반 전에 [독서광] 카산드라 완벽 가이드라는 제목으로 카산드라 관련 서적 하나를 독자 여러분들께 소개드렸었다. 오늘은 에이콘 출판사에서 보내온 행운의 상자에서 꺼내 읽은 카산드라 책을 하나 소개하려 한다. 정말 간만에 전문서를 리뷰하니 낯설기까지 하구나. T_T

'150가지 예제로 배우는 NoSQL 카산드라 설계와 성능 최적화'라는 부제가 붙은 팩트 '카산드라 따라잡기'는 오라일리 카산드라 완벽 가이드와는 완전히 반대 방향에서 출발한다. 오라일리 버전이 카산드라의 이론, 아키텍처, 개념, 구조를 집중적으로 공략했다면, 팩트 버전(오늘 소개하는 책)은 일단 예제부터 보고 동작 원리를 파악하는 방식을 따른다. 따라서 책 내용 자체에 접근은 수월하지만 어느 정도 카산드라의 개념과 용어에 익숙해야 이해가 가능하므로 미리 선행 학습이 필요하다. 그리고 조각난 예제가 아니라 완전한 예제를 제공하며, 처음 카산드라를 만져보는 개발자를 위해 실습 환경 구축까지도 스크립트와 구체적인 예를 제공한다는 측면에서 직접 해보고 배우는 유형의 개발자에게 적합하다는 생각이다. 카산드라와 함께 동작하는 다양한 유틸리티, 프레임워크, 결합 가능한 오픈 소스 소프트웨어까지 소개하므로 카산드라를 중심으로 동작하는 에코 시스템을 이해할 수 있다.

목차를 보면, 우선 카산드라 인스턴스 실행 방법(단독, 다중)을 설명하고, CLI 인터페이스를 소개한다. 그리고 쓰리프트 API를 사용해 CLI로 수행한 작업을 다시 한번 프로그램으로 반복해보고 하드웨어, 운영체제, JVM과 관련된 성능 튜닝으로 들어간다. 여기까지 해보면 카산드라 맛보기가 끝날 것이다. 그리고 나서 일관성/가용성/파티션 허용, 스키마 디자인, 관리, 데이터 센터 사용과 같은 고급 주제로 넘어간다. 마지막으로 하둡을 사용한 맵리듀스를 설명하며, 성능 통계 수집/분석, 서버 모니터링으로 마무리한다. 거의 모든 부분을 실제 예를 들어 설명하고 있으므로 전반적인 카산드라 따라잡기에 많은 도움을 준다. 팩트 출판사 홈페이지에서 코드와 정오표를 제공하므로 관심있는 분들께서는 코드를 내려받아 살펴보기 바란다.

동전에 양면이 있듯이 이 책에도 빛(넓은 범위, 알기 쉬운 설명, 예제)과 그림자(얕은 깊이, 이론 부제, 예를 위한 예)가 공존한다. 현재 카산드라 버전이 1.2.5까지 나왔지만, 이 책은 여전히 0.7과 0.8대에 머물기 때문에 이후 새롭게 추가된 부분에 대해서는 직접 찾아봐야 한다. 또한 설명의 편의를 위해 책에서 다루는 내용이 'hello, world' 수준을 크게 넘어서지 못하므로 이 책에 나온 예를 그대로 상용 코드에 적용하기에는 무리가 있어 보인다. 일단 책에서 제공하는 샘플 코드를 사용해 개념을 잡은 다음에 추가로 다른 책과 웹 사이트를 살펴보자. 이 책과 함께 볼만한 자료로 카산드라 홈 페이지에서 제공하는 공식 위키는 다소 오래되었고 구성이 체계적이지 않으므로 DataStax Document에서 필요한 자료를 찾아보는 편이 정신 건강에 이롭다.

결론: 카산드라를 처음 시작하는 분이라면 감을 잡기 위해 이 책을 읽어보면 좋겠다.

EOB

화요일, 6월 18, 2013

[일상다반사] 사람들이 일반적으로 말해주지 않는 충고

What are important things and advice to know that people generally aren't told about?라는 글을 Quora에서 읽었는데, 의외로 좋은 내용이 많아 스스로 정리할 겸 독자 여러분에게도 소개하기 위해 편집기를 열었다.

  • 가장 친한 친구와 결혼하라: 가장 편안하게 지낼 수 있는 사람이 배우자가 아니라면, 만들어라! (이 사람은 가족이 아니라고 가정한다)
  • 어른인채 하지 마라: 항상 즐겁게 살자. 나이에 무관하게 진흙탕에서 뒹굴고, 노래부르고, 배개 싸움하자.
  • 학습을 중단하지 마라: 인생을 타성으로 살기 시작하면, 패배자가 된다. 항상 지식을 넓혀라.
  • 실패하고 있지 않다면 뭔가 잘못하고 있는 거다. (실수를 해도 문제 없다)
  • 생각없고 비이성적인 사람들과 이성적으로 논쟁하려 들지 마라.
  • 새로운 소식과 정보를 받아들이느라 너무 스트레스 받지 마라.
  • 돈이 안 되는 뭔가를 해보자.
  • 행복은 뭔가를 만들어내는 데 있지 뭔가를 얻는 데 있지 않다.
  • 시간은 생각보다 빨리 지나간다. 나이가 들수록 이런 효과는 더 가속화된다.
  • 부는 상대적으로 덜 중요하다.
  • 어떤 일은 배울 수 없다. 단지 경험할 뿐이다.
  • 당신이 누구인지 알고, 그 사람을 받아들이고, 그 사람이 되어라.
  • 허가를 얻으려 기다리지 마라. 스스로에게 오케이 사인을 보내라.
  • 자신에게 거짓말하지 마라.
  • 최대한 용서하라. 원한을 품어봐야 얻는 게 없다.
  • 겸손하라(특히 "약자"에게)
  • 자신에게 허용하는 만큼 행복이 따라온다.
  • 멘토를 찾고 멘토가 되자.
  • 좋아하는 뭔가를 찾아 끝까지 하자.
  • 접시에 담긴 모든 음식을 먹을 필요는 없다.
  • 전화 벨이 울린다고 꼭 받아야 할 필요는 없다.
  • 항상 행동하자. 사람들은 행동한 것보다 행동하지 않은 것을 후회한다.
  • 과거는 교훈을 얻을 곳이지 살 곳은 아니다.
  • 희망이 없다고 결정하는 곳은 마음이지 주변 환경은 아니다.

개인적으로 '자신의 실수를 인정하라'라는 충고 아닌 충고를 덧붙이고 싶다. 누구나 살면서 실수를 하기 마련인데 알량한 자존심(응?) 때문에 이걸 인정하지 않으려 든다. 하지만 내 잘못 네 잘못 내 실수 네 실수를 가리다 본질을 놓친다면 모두가 손해다.

EOB

토요일, 6월 15, 2013

[독서광] 습관의 힘

오늘은 2013년 상반기를 정리하는 김에 가장 좋았던 책을 하나 소개하겠다. 오늘의 주인공은 '반복되는 행동이 만드는 극적인 변화'라는 부제가 붙은 '습관의 힘'이다. 직전에 소개한 'REPETABILITY: 최고의 전략은 무엇인가'에서도 계속 강조한 이야기지만 단순한 원칙을 지속적으로 반복하는 방법은 큰 변화를 추구하는 가장 기본적인 방식이며, 이 책 역시 바로 이런 기본을 어떻게 실천할지 구체적인 방법을 제시한다.

이 책은 지난번 소개한 [독서광] 디멘드처럼 풍부한 자료, 흥미로운 소재, 다양한 각도에서 사건 조망하기라는 동일한 특징을 보이지만 한 가지 중요한 차이점이 있다. 디멘드를 읽다보면 (잘 아는 회사에 대한 내용임에도 불구하고) 딴 나라 이야기처럼 느껴지는 반면, 이 책은 마치 자기 자신의 이야기처럼 느껴진다. 이런 사소한 차이가 책에 대한 몰입도를 완전 다른 수준으로 바꿔놓는다. 물론 이렇게 말하고 나니까 개인에 국한된 내용(즉 자기 계발서)에 가깝다는 생각이 들지 모르겠는데, 놀랍게도 이 책 중반 이후부터는 습관이 기업, 조직, 사회에 미치는 영향으로 확장되면서 경영쪽에도 응용할 수 있는 여러 가지 좋은 이야기가 등장한다.

이 책은 "습관은 우리(개인, 기업, 조직)의 삶을 지배하므로 습관을 바꾸는 방법으로 나와 세상을 바꿀 수 있다"라는 한 문장으로 요약 가능한데, 아주 복잡한 방식이 아니라 상당히 단순한 방식(물론 단순하다는 말이 쉽다는 말과 동격은 아니며, 이 책 곳곳에서 여기에 대해 여러 차례 주의를 주고 있다)으로 습관을 공략해나가기 때문에 더욱 현실성이 높지 않나 싶다. 다음 그림에 소개하는 신호(que), 반복 행동(routine), 보상(reward)이라는 세 가지 단계를 놓고 각각에 대한 연결고리를 파악해 습관을 바꾸는 방법을 따라가다보면 어느 순간 습관이라는 녀석이 반드시 물리쳐야 할 최강의 악당이 아니라 더불어 살아가는 동료라는 사실을 깨닫게 될 것이다.

습관을 바꾸는 일이 정말 가능하다고? 성질 급하신 분을 위해 한 페이지짜리 요약 설명서(아쉽게도 영문 버전)를 붙여봤다. 물론 이 책을 읽어봐야 가슴에 와닿겠지만, 전체 개괄로는 충분해 보인다. 책상에 붙여놓고 바라보기만 해도 나쁜 습관이 도망갈 것 같지 않은가?

여러분들이 기대하고 계신... 본문 중 나오는 좋은 문구를 정리해보겠다.

과학자들의 연구에 따르면 습관이 형성되는 이유는 우리 뇌가 활동을 절약할 방법을 끊임없이 찾기 때문이다.
습관은 우리 뇌를 상식적인 판단을 비롯해 모든 것을 무시하고 오직 그 습관에만 매달리게 만든다는 점에서 무척 강력하다.
한 그룹에서는 92퍼센트가 운동을 하고 나면 '기분이 좋아지기' 때문에 습관적으로 운동한다고 대답했다.
사람들은 (양치질 후) 시원하고 얼얼한 느낌을 열망하게 되었고 그런 느낌을 청결과 동일시하면서 양치질이 습관으로 자리잡았던 것이었다.
습관 변화를 위한 황금률: 나쁜 습관은 완전히 사라지지 않는다. 다만 다른 행동으로 바뀔 뿐이다.
습관을 바꾸는 방법: 같은 신호를 사용하라. 같은 보상을 제공하라. 반복 행동을 바꿔라.
알코올은 현실 도피, 긴장 완화와 동료애, 번민의 망각 등 감정적 억압을 떨쳐 낼 기회를 주기 때문에 중독자들은 알코올을 열망한다. 걱정을 떨쳐내기 위해 칵테일을 열망한다. 그러나 술에 취한 기분을 열망하는 경우는 극히 드물다. 다시 말하면, 알코올이 우리 신체에 미치는 영향은 중독자들이 술에서 거의 기대하지 않는 보상 중 하나다.
"개인에게 습관이 있다면 조직에는 반복 행동이 있다" "반복 행동은 조직의 습관과 유사한 것이다."
운동은 삶의 다른 부분에 영향을 준다. 운동이 다른 긍정적인 습관을 쉽게 받아들이게 해주기 때문이다.
"의지력이 필요한 일, 이를테면 퇴근 후에 달리기를 하고 싶다면 낮에 의지력 근육을 아껴 둬야 합니다. 이메일을 쓴다거나 복잡하고 따분한 지출 결의서를 작성하면서 일치감치 의지력을 소진해버리면 퇴근할 즈믐에는 의지력이 완전히 사라지고 말 겁니다."
"자제력이 필요한 일을 하라는 요구를 받을 때 그 일을 개인적인 이유로 한다고 생각하면, 다시 말해서 그 일을 즐긴다고 생각하거나 그 일로 누군가를 돕기 때문에 선택받은 사람이란 기분이 들면 그 일이 훨씬 덜 힘듭니다.
직원들에게 조직의 대리인이란 의식, 즉 뭔가를 통제하고 진정한 결정권을 갖고 있다는 의식을 심어주는 것만으로도 업무에의 열의와 집중력을 크게 높일 수 있다.
"대다수의 기업 행태는 의사 결정 나무의 외진 잔가지들을 조사한 결과로는 제대로 이해할 수 없으며 각 기업의 과거에 뿌리를 둔 일반적인 습관과 전략적인 경향의 반영으로 보아야 한다"
기업은 구성원 모두가 오순도순 화합하며 지내는 행복한 대가족이 아니다.
조직을 성공의 길로 끌어가기 위해서는 권한의 균형만으로는 부족하다. 조직이 원활하게 굴러가기 위해서는 리더들이 균형 잡힌 진정한 평화를 구축할 수 있는 습관, 역설적이지만 누가 책임자인지 명확하게 인식하는 습관을 심어줘야 한다.
혼란이 닥쳤을 때야말로 책임을 부여하고 한층 공평한 세력 균형을 조성하는 방향으로 조직의 습관을 바꿀 수 있는 적기이다. 위기에 직면하면 조직의 습관이 유연해지기 때문이다.
(고객들이) 쇼핑 목록을 미리 준비했음에도 불구하고 구매 결정의 50퍼센트 이상이 선반에서 상품을 본 순간에 이뤄졌다.
"때때로 소비자는 습관의 동물처럼 행동하며, 현재의 목적에 관계없이 과거의 행동을 기계적으로 되풀이한다."
지난 수십 년 동안 슬롯머신은 '거의 성공'의 확률을 꾸준히 높이는 방식으로 재프로그래밍되었다. '거의 성공'을 맛본 후에 계속 배팅하는 사람들이 카지노와 경마장 및 복권 회사의 배를 불려준다.
습관을 바꾸기 위해서는 습관을 바꾸겠다는 결심이 먼저 있어야 한다.
"내 자유 의지에 따른 첫 행동은 자유 의지를 믿는 것이어야 한다."
우리에게 어떤 습관을 자극하는 신호를 찾아내기 힘든 이유는, 우리가 습관과 관련된 행동을 시작할 때 우리에게 쏟아지는 정보가 너무 많기 때문이다.

결론: 2013년 상반기 #1 도서로 이 책을 선정한다.

EOB

화요일, 6월 11, 2013

[일상다반사] OODA 루프와 F-16 전투기 설계 사상

오늘은 지난 번에 독후감을 올려드렸던 REPETABILITY: 최고의 전략은 무엇인가에 나오는 내용 중에서 흥미로운 이야기를 별도로 분리해서 소개하겠다. 오늘 소개할 내용은 경영학을 공부하신 분이라면 들어봤을지도 모르는 OODA 루프다. OODA는 observe(관찰), orient(방위 확인), decide(결정), act(행동)의 첫글자를 따서 만든 용어로 전장에서 전술적인 결정을 내려야할 때 사용하는 프레임워크다. OODA의 탄생은 한국전쟁으로 거슬러 올라가 밀덕 사이에서 유명한 떡밥으로 남은 F-86과 Mig-15의 공중전에서 비롯된다. 분명히 스펙(응?) 상으로는 열세인 F-86이 Mig-15와 맞서 우월한 성적표를 받은 이유를 설명하는 과정에서 등장한 이론이다.

(F-86의 캐노피를 보면 시야 확보를 위해 상부로 돌출되어 있다)

한국전에서 잠시 F-86을 몰고 전투에 참가했던 경험이 있던 존 보이드는 개인이든 조직이든 어떤 사건에 부딪혀 반응하는 과정을 이론으로 정립했다. 이론 자체는 간단하다. 공중전(또는 경쟁)에서 승리하기 위한 핵심은 상대편보다 더 빠르게 적절한 결정을 내릴 수 있는 상황을 유지하는 능력에 있으며, 이를 수행하는 과정을 관찰, 방위 확인, 결정, 행동으로 나눈다. 각 과정은 관찰로 피드백을 주는 연결고리를 생성하며, 이를 반복하는 방식으로 일종의 리듬을 타게 된다. 이 때, 더 빠른 템포를 이용해 상대편이 사용하는 OODA 연결 고리를 단절하거나 부셔버리면 승리를 거두게 된다. 구체적으로 말해, 시야각이 넓은 버블 캐노피와 중간 고도에서 기동성이 뛰어난 장점을 활용해 관찰/방위 확인에서 우위를 차지하고(시야가 넓으므로 먼저 적기를 발견할 수 있으므로), 행동을 빨리 가져가는(주로 전투가 벌어지는 중간 고도에서 기동성이 뛰어나므로) 방법으로 Mig-15에 비교해 속력과 화력 부족이라는 열세를 F-86이 극복했다는 설명이다.

OODA 루프는 미 국방성이 추진했던 (F-4에서 F-15로 이어지는) 대형 전투기 사업과 반대로 가는 경량급 전투기 개발의 이론적인 초석이 된다. 베트남 전을 거치며 천하무적인 듯이 보였던 F-4의 한계가 드러나면서 기동성이 높고 가벼운 전투기의 필요성이 대두되었고 가벼운 기체, 넓은 시야각, 놀라운 기동성을 특징으로 내세운 F-16이 탄생하게 된다.

(F-16의 캐노피 역시 시야 확보를 위해 상부로 돌출되어 있다)

OODA 루프를 이해하기 전까지는 F-16 전투기의 설계 사상에 대해 전혀 눈치를 채지 못하고 있었는데(비용을 줄이기 위한 목적으로 만든 전투기인가?), 위키피디아에서 설명하는 다음과 같은 내용이 바로 이해가 되어버렸다.

  • 넓은 가시성을 위한 프레임이 없는 버블 캐노피(관찰, 방위 확인)
  • 조종 과정에서 손쉬운 제어를 위한 옆에 달린 조종간(행동)
  • 30도로 기울어져 조종사에게 가해지는 관성력을 줄이는 좌석(행동)
  • 민첩한 동작을 위한 전기 신호식 비행 조종 제어 장치(Fly-By-Wire)와 미션 컴퓨터(행동)

F-16은 1976년 이후 4천 5백대가 넘게 만들어졌으며 대한민국 공군을 비롯해 전세계에서 사랑받는 베스트셀러 모델로 자리잡았고, 아직도 생산 중에 있다.

뱀다리: 역사/경영학적으로 OODA 루프에 접근하고 싶다면, 패스트컴퍼니에 실린 The Strategy of The Fighter Pilot를 읽어보시기 바란다.

EOB

토요일, 6월 08, 2013

[독서광] REPETABILITY: 최고의 전략은 무엇인가

경제/경영 블로그로 아름다운 명성(응? 정말?)을 떨치다보니, 청림출판사에서 책을 한 권 보내주셨다. 잽싸게 다 읽은 기념으로 오늘은 '반복 가능한 성공 공식을 찾아라'는 부제가 붙은 '최고의 전략은 무엇인가'를 소개해드리겠다.

우리가 익히 잘 아는 톰 피터스의 '초우량 기업의 조건'부터 짐 콜린스의 '좋은 기업을 넘어 위대한 기업으로'와 김찬위의 '블루오션 전략'에 이어 '히든 챔피언'이 나오면서 좋은 기업이 가져야 하는 특성이 무엇인지에 대해 엄청난 연구가 이뤄졌지만 아무리 좋은 특성을 갖춰 날고 기는 기업이라도 한 방에 침몰할 수 있다는 엄연한 사실 앞에서는 좋은 기업과 최고의 전략을 뽑아봐야 개별 사례 연구와 사후해석 수준에 머물 수 밖게 없는 빚바랜 노력임이 밝혀졌다. 물론 짐 콜린스는 그 와중에서도 '위대한 기업은 다 어디로 갔을까'라는 책을 내어 다시 한번 노익장을 과시하기는 했지만 이 책에서 주장하는 내용 역시 실패한 기업에 대한 변명거리 수준을 넘어서지 못했다. 이런 혼란스런 상황에서 유명한 컨설팅 회사인 베인&컴퍼니에 근무하는 두 저자는 성공한(성공에 대한 명확한 기준은 책 본문에 잘 나온다) 회사 목록을 뽑아보고서 공통점이라고는 찾기 어려운 여러 회사가 성공한 이유가 무엇인지에 대해 무척 궁금했음이 틀림없다.

이 책은 회사가 '지속적'으로 성장하기 위해 필요한 자질이 무엇인지에 대해 설명한다. 답은 이미 표제에 나와있다. 바로 'Repeatability'(반복성)이다. 독자 여러분을 위해 요약하자면, 업종, 지역, 경쟁사, 고객 구성에 무관하게 '과거의 성공을 반복적으로 실행하고 적용하기 위한 구체적이며 단순한 공식을 보유하고 있으며, 중요한 전략적 선택에 있어 이런 공식을 지속적이고 반복적으로 적용한다'라는 모델이 바로 이 책에서 설명하는 성공의 열쇠다. 이런 공식이 과연 유효할까? 어떻게 보면 이 책은 '건강하게 살려면 어떻게 해야 합니까?'라는 고전적인 질문과 '좋은 습관을 들여 규칙적이고 지속적으로 운동하고 건강한 식단을 유지하면 됩니다'라는 고전적인 대답을 경영에 적용한 듯이 보인다. 하지만 이런 다소 따분한 내용은 '만병통치약을 먹으면 무병장수할 수 있다'는 성공한 기업의 비밀을 폭로해버리는 눈이 핑핑 돌아가는 화끈한 내용에 비해 시대를 역행한다는 생각이 들지 모르겠지만 겉멋만 추구하다 정말 중요한 뭔가를 놓치고 있지 않은지 곰곰히 생각하게 만드는 장점이 분명히 존재한다.

호기심이 생기기 시작하는가? 그렇다면 동명의 웹 사이트인 repeatability(영어)를 방문해 여러 가지 소개 자료, 기본 원리/전략을 찾아보거나 repeatable model diagnostic을 방문해 여러분 회사의 반복 가능성 수준에 대해 평가해보기 바란다. 그리고 나서 이 책을 읽어보면 통찰력이 생길 것이다.

백문이 불여일견이라고 여러분께서 기다리고 계신 본문에 나오는 좋은 문구를 함께 살펴보자.

우리가 수집한 데이터에 따르면 단순성, 집중, 지속적으로 변화의 기술을 숙달한 기업이 급격한 변화나 끊임없는 혁신 전략을 구사하는 기업보다 대부분 더 좋은 성과를 낸 것으로 나타났다.
우리는 연구를 통해 지속적인 성공은 어떤 시장을 선택하느냐의 문제가 아니라 훨씬 통제 가능한 변수인 기업을 어떻게 설계하느냐에 따라 좌우된다는 것을 알게 되었다.
우리는 유망 시장을 선택하는 것보다 전략적 방법론과 목표, 그리고 이를 실행하기 위한 비즈니스 모델이 수익성 있는 성장의 핵심이라는 사실을 발견했다.
세 가지 실마리: 1) 시장이 아니라 기업이 핵심이다. 2) 새로운 성장 프로젝트는 대부분 실패한다. 3) 핵심 사업을 재정의 하는 경우, 그 성공 확률은 매우 낮다.
반복 가능한 위대한 모델의 설계 원칙: 1) 성공적인 핵심 사업의 차별화 2) 타협할 수 없는 가치 3) 선순환 학습 시스템
한 때 천하무적의 비즈니스 모델로 여겨졌던 기업들이 모멘텀을 잃어버리게 되는 이유는 핵심 사업에 대한 집중력 상실과 발 빠른 적응에 실패하기 때문이다. 비즈니스 모델 자체의 유효성이나 근본적인 고객 니즈가 사라져서 침체가 온 경우는 전무했다.
성공적이던 반복 가능한 모델이 벽에 부딪치는 두 번째 이유는 기업이 환경 변화에 대한 발 빠른 적응에 실패하면서 시장과 기술 변화가 기업의 경쟁우위의 원천을 약화시켰기 때문이다.
반복 가능한 위대한 모델의 기업들이 앞선 경쟁력을 유지할 수 있는 이유: 1) 경영진과 일선 조직 간의 좁혀진 거리 2) 더 빠르고 현명한 의사 결정 3) 지속적인 개선 기술 숙달
차별화는 모든 사람들이 사용하기는 하나 어느 누구도 제대로 이해하지 못하는 그런 단어가 되어버렸다.
반복 가능한 비즈니스 모델이 지속적인 성장을 하려면 1단계 개별 시장, 2단계 인접 시장, 3단계 복수의 핵심 시장이라는 3단계 복제 방식이 핵심적인 역할을 수행한다.
차별화된 핵심에서 너무 멀리 이동했거나 적절하지 않은 방식으로 성장을 추진했다가 곤경에 처한 기업에게 본래의 공식으로 돌아가는 것이 해법인 경우가 많다.
많은 기업들이 자사의 핵심 사업과 차별성이 가진 잠재력을 온전히 인식하지 못한다. 이런 현상은 다음과 같은 부정적인 효과를 낳는다. 1) 핵심 사업과 인접한 기회를 포착할 수 있는 능력을 크게 저하시킨다. 2) 핵심 사업의 차별화를 위한 투자를 결정함에 있어 판단력을 흐린다. 3) 잘못된 자신감을 심어주어 그 기업과 맞지 않는 사업 분야로 진출하는 오류를 범하게 한다.
경험을 돌이켜볼 때, 자사가 가진 측정 가능한 진정한 차별화 원천을 잘 관리하는 기업은 매우 드물다.
일선 직원의 행동에 있어 잘 정의된 공통의 핵심 원칙과 신념이 기업 성과와 가장 큰 상관 관계가 있음을 발견한 것이다.
자기 조직화 행동이 지속적으로 이뤄지면 업무 속도가 가속화된다. 일 처리 속도가 빨라지면 경쟁업체보다 더 많은 새로운 성장 기회를 포착하게 되고, 단위 시간당 더 많은 새로운 성장 기회를 포착하게 되고, 단위 시간당 더 많은 성과를 올리게 되어 궁극적으로 성장을 가속화한다. 식물의 세포 복제 속도가 빨라지면 성장 속도가 빨라지듯이 비즈니스에 있어서도 동일한 원칙이 적용된다.
카메라와 같은 제품에 딸려오는 사용자 매뉴얼을 본 적이 있을 것이다. 하지만 매뉴얼에는 이 기계가 어떻게 작동하는지, 어떻게 사용하는 것이 가장 좋은 전략인지, 기계가 가진 최대 잠재력은 무엇인지에 대한 개요는 찾아볼 수가 없다.
기업 침체의 근본 원인에 관한 증거를 파악한 바, 실패의 원인은 대개 내부에 있었으며, 대부분 핵심 사업의 잠재력을 최대치로 달성하지 못한 데 기인한다고 결론내렸다.
기업은 전략을 조직원들이 공유할 수 있는 일련의 원칙으로 쳬계화함으로써 직원들의 자기 조직화 행동과 일선에서의 의사결정을 촉진할 수 있다. 이를 '일정한 틀안에서의 자유'라 명명한다.
관행은 조직의 습관에 비유할 수 있다. 하지만 사람의 경우와 마찬가지로 한 번 들인 습관을 바꾸기란 여간 어렵지 않다.
기업이 조직의 체질 개선을 위해 추진한 이니셔티브의 70퍼센트 이상이 실패하는 것은 전혀 놀라운 일이 아니다.
성공이 지속되는 상황이라면 장기적으로 가장 위험하지 않은 길이 단기적으로 가장 위험해보일 수 있다.
근본적으로 적응에 탁월한 기업은 없다.
기업의 실패는 환경이 아닌 잘못된 판단의 결과이다. 그리고 대부분의 잘못된 결정들은 피할 수 있는 조직 내부의 인지적/심리적 역학에 원인을 두고 있다.
다양한 분야에서 최고의 성과를 거둔 사람들의 경우 보통 사람들보다 훨씬 체계적이고 통합적인 지식체계를 가지고 있다. ... 일반적으로 최고의 실력자들이 가진 지식은 상위 원칙으로 통합되고 연결되어 있었다.
인간이 만든 시스템은 자연계보다 훨씬 빠른 속도로 무질서로 치닫는다. 학생들이 빼곡히 앉아있는 교실에서 선생님이 나간지 10분 뒤에 펼쳐질 장면을 생각해보라.
복잡한 조직에서 이뤄지는 일상 업무에서 엔트로피는 대개 집중력 낭비와 손실로 이어진다.
엔트로피는 반복 가능한 모델의 적으로서, 강력한 관리체계가 없다면 질서에서 무질서로 쉽게 떨어질 수 있다.
연구에 따르면, 자연계 시스템과는 달리 비즈니스에서의 엔트로피는 기회의 부재나 노후화로 인해 발생하는 경우는 드물다.
CEO는 타협할 수 없는 가치들이 일선 직원의 역량을 강화하는 방향이 되어야지 제한하도록 만들어서는 안 된다.
제대로 된 리더십이 없다면 언제나 엔트로피가 승리하기 마련이다.
테니스 공을 정확하게 치는 법을 학습하기 위해, 비록 목표가 테니스의 황제로 불리는 로저 페더러의 수준에 도달하는 것은 아닐지라도 그의 발 동작, 훈련 방식, 준비 동작, 테크닉을 연구하는 것은 큰 도움이 된다.

결론: 기업 전략에 대한 이해도를 높이는 목적 뿐만 아니라 본문 곳곳에 나오는 적절한 비유, 은유, 유머를 즐기기 위해서라도 이 책을 꼭 읽어보기 바란다. 강력 추천!

뱀다리: 본문에 나오는 사례 중에 기억해야 하는 사항을 짚고 넘어가겠다. 타이거 우즈의 2009년과 2010년 통계 자료가 나오는데 시사하는 바가 컸다.

20092010
그린적중률68.5%64.1%
10피트 내 피팅 수90.4%87.3%
페어웨이 드라이빙64.3%57.2%
쓰리퍼트 적중률2.0%2.6%
평균 타수68.170.3

통계 자료를 보면 뭐 이 정도야 충분히 용납 가능한 수치가 아닌지 생각들지도 모르겠는데, 우즈는 2009년에 20경기 중 8개를 우승한 반면, 2010년에 17개 경기 중 하나도 우승하지 못했다. '대충하면 어때? 아무도 모를테니.'하지만 현실에서 작은 차이가 큰 결과 차이로 나타난다는 사실을 알고 있다면, 매순간 최선을 다해 역량을 집중하지 않을 수 없을 것이다.

EOB

화요일, 6월 04, 2013

[일상다반사] 모바일의 위력

최근 회사에서 업무용(응?)으로 아이패드를 지급받는 바람에 졸지에 2G폰(삼성), 3G스마트폰(아이폰 4s), LTE태블릿(레티나 아이패드)를 들고다니고 있다. 물론 덕분에 3G 통신이 가능한 킨들은 찬밥 신세가 되었지만 말이다. 2G폰은 제쳐두고서라도 이동 중 네트워크에 접속 가능한 장비가 무려 세 개나 되니 사실상 어디를 가더라도 연결(connected)되어있다고 봐야 한다. 그렇다면 일부 덕스러운 사용자에게만 이런 명제가 성립할까? 아니다. 이번에 "Mobile is eating the world"라는 발표 자료를 보고 나니 전 세계에 공통으로 성립하는 명제라는 사실을 깨닫게 되었다.

발표 자료 중에서 생각해볼만한 몇 가지 내용을 정리해보겠다.

  • 2009년 가정용 PC 대수가 업무용 PC 대수를 앞질렀다고 생각하자 마자 다시 업무용 PC에게 추월당할 상황. 이유는 바로 급격하게 치고 올라오는 태블릿!
  • 2011년부터 스마트폰의 성장률은 넘사벽이 되었고, 조만간 태블릿이 업무용 PC/가정용 PC를 추월할 기세.
  • 인구 성장률과 비교해 스마트폰의 성장률이 가장 높고 다음으로 태블릿이 높음. 순수 성장률 자체만 놓고 보면 태블릿이 가장 높고 다음으로 스마트폰
  • PC는 교체 주기가 4~5년. 스마트폰은 2년. (가정에서) PC는 공유하지만, 스마트폰은 개인마다 보유하는 특성.
  • 모바일 부문에서 마이크로소프트의 매출이 지속적으로 하강하는 추세.
  • 수익은 애플, 매출은 삼성, 숫자는 구글/안드로이드
  • 2012년 전세계 매출을 보면 책, 온라인 광고보다 애플이 앞서는 추세.
  • (넷북을 멸종시켰듯이) 태블릿이 랩탑 시장을 급격하게 대채하는 추세. 태블릿 출하 대수가 이미 데스크탑 대수를 추월.
  • 2012년 여전히 아이패드가 태블릿 중 절반을 차지.
  • 전자책은 상대적으로 관심이 줄어들고 있는 상황. 2011년도 말에 정점을 찍고 줄어드는 추세.
  • 태블릿 웹 트래픽은 아이패드가 전세계적으로 75% 이상 차지.
  • 활동 사용자 수는 페북 모바일 > 구글 안드로이드 > 애플 iOS > 아마존 차례

앞으로는 어떤 사업을 하더라도 돈이 되고 안 되고를 떠나서 반드시 모바일을 생각해야 하는 상황이 왔다는 생각이다. 전통적인 PC/웹 기반이 아직은 버티고 있지만 10년 안에 정말로 불타는 플랫폼(응?)이 될지도 모르기 때문이다. 이제 주변을 돌아보자. 여러분 책상에는 스마트폰과 태블릿이 몇 개 놓여 있는가?

토요일, 6월 01, 2013

[독서광] 보이지 않는 고릴라

본론에 들어가기 전에 잠시 15년도 훨씬 지난 이야기를 하나 꺼내봐야겠다. 택시를 타고 가다 우연히 다른 택시와 충돌하는 바람에 경찰서에 증인으로 조서를 작성할 기회가 있었는데, 사람의 기억력에 대해 놀랄만한 사실을 깨닫게 되었다. 조서를 꾸며보신 분이라면 다들 아실텐데, 사고 순간에 대한 진술만 받지 않는다. 사고 전후 1시간 동안 어디서 뭘 했는지에 대해 최대한 자세히 진술해야 한다. 그 날 나를 맡은 담당자가 마음이 좋았는지, 증인 조서를 다 작성한 다음에 자기가 직접 차를 몰고 나를 데리고 다니면서 내가 진술한 내용이 얼마나 엉터리인지 하나둘씩 짚어주기 시작했다. 그 중에서 가장 기억나는 부분이 강북에 사는 분들이라면 누구나 알고 있는 종로구 소재 사직 터널이다. "사직 터널의 상행선과 하행선 차선이 각각 몇 개일까요?" 이게 바로 담당자의 질문이었고, 나는 완전 엉터리로 대답하고 만 것이다(차선이 문제가 아니라 아예 터널 개수부터 틀렸다). 그 날 이후부터 의식적으로 (나를 포함한) 사람의 기억력에 대해 신뢰하지 않게 되었다.

여기까지 읽고 나면 블로그 주인장의 망가진 기억력에 대해 다들 즐거워하고 있을텐데, 오늘 소개하는 책은 바로 우리 모두의 인지능력에 심각한 문제(아니 제약)가 있다는 사실을 적나라하게 밝히는 '보이지 않는 고릴라'다. 동명의 심리학 실험으로 더욱 유명해진 이 책은 우리의 기억력은 물론이고 신념과 직관에 결함이 있다는 사실 자체를 인정하지 않는(아니 못하는) 분위기에 찬물을 확 끼얹어 정신이 번쩍 들게 해준다. 우선 고릴라 실험부터 한번 보자. 주의 깊게 흰팀이 패스하는 숫자를 세보기 바란다.

자, 실험 과정에서 뭔가 특이한 사항을 눈치채었는가? 눈치 채지 못하더라도 너무 실망하지 말자. 사람들은 원래 두 가지 이상 작업을 할 경우 주의력이 분산되니까 말이다. 이 책은 보이지 않는 고릴라 실험을 필두로 주의력 착각, 기억력 착각, 자신감 착각, 지식 착각, 원인 착각, 잠재력 착각이라는 여섯 가지 착각에 대해 설명하고 있다. 직전에 소개한 [독서광] 우리는 왜 실수를 하는가가 사람의 한계로 인해 벌어지는 다양한 실수를 소개한다면, 이 책은 이런 실수와 행동 이면에 숨겨진 '착각'에 대해 소개하므로 같이 읽어보면 사람에 대한 이해의 폭이 더 넓어지리라 생각한다.

일상에서 착각이 위험한 이유는 매일 우리의 행동에 영향을 미치지만 사실상 본인이 착각하고 있다는 사실을 자각하지 못하기 때문이다. 하지만 착각을 막거나 줄이기 위해 고안한 여러 가지 도구와 기술이 주의를 분산시켜 오히려 더 큰 위험을 초래할지도 모르며, 착각을 막기 위한 인간 능력 계발은 특정 분야를 벗어나 일반적인 분야까지 효과를 보이기는 지극히 힘들기에 늘 열린 마음으로 자신의 한계를 깨닫고 착각을 줄이기 위해 심사숙고하는 방법 밖에 없는 듯이 보인다. 이 책은 여러 사례와 실험 결과를 토대로 자신과 다른 사람들의 정신이 동작하는 원리를 설명하므로 인간으로서 우리 자신이 겸손해지도록 유도하는 긍정적인 효과를 제공한다.

이 책은 일상뿐만 아니라 전문 지식이 필요한 분야에서도 좋은 힌트를 제공한다. 도움이 될만한 부분을 정리해보겠다.

우리 대부분은 지식의 깊이가 얕기 때문에 첫 번째 질문에 대답하면서 알고 있던 내용을 전부 소진한다. 우리는 질문마다 답이 있으며 그 답도 잘 알거라 생각하지만, 이를 설명해보라는 질문을 받기 전까지는 자신의 지식에 결함이 있었다는 사실을 잘 깨닫지 못한다.
2008년 '탑코드 오픈(TopCoder Open)'이라는 컴퓨터 프로그래밍 토너먼트 대회에서 우승해 25,000달러의 상금을 탄 팀 로버츠는 지식 착각에서 벗어나는 일이 얼마나 중요한지 잘 알았다. 요구조건을 충족하는 프로그램 개발에 주어진 시간은 단 6시간이었다. 그는 다른 경쟁자들과 달리 처음 한 시간은 요구되는 사양을 연구하고 담당자에게 질문(적어도 30개)하느라 소모했다. 도전 과제를 완전히 이해한 후에 코딩을 시작한 로버츠는, 더도 말고 덜도 말고 요구된 사항만 정확하게 구현된 프로그램을 완성했다. 프로그램은 제대로 작동했고 작업도 제 시간에 끝났다.
"나는 부주의하고, 기억력이 나쁘고, 지능이 낮고, 멍청하다'와 같은 착각은 일어나지 않는다. 반대로 일상의 착각은 우리가 실제보다 더 많은 것을 알고 기억하고 있다고 믿게 만들며, 자신이 평균보다 우위에 있고, 세상과 미래에 대해 더 많은 것을 안다고 생각하게끔 속인다.
지식 착각에서 벗어나려면, 낯선 프로젝트에 대해 당신이 추정한 소요 기간과 비용 예상이 틀릴 수도 있다는 사실부터 인정해야 한다.
우리는 흔히 지식의 한계를 무시한 채 주장을 펼치는 사람을 선호한다. 자기계발서 저자들 중에서도 무엇을 해야할지 정확하게 말해주는("저거 말고 이거 먹어")식의 작가들이, 합리적인 메뉴 선택권을 주면서 독자 스스로 가장 효과적인 방법을 찾게 하는 작가들보다 인기가 많다.

결론: 이 책을 읽고 나면 최소한 SATA 케이블 음질 테스트 결과, "헉! 말도 안 돼"에 나오는 소위 전문가들의 자신감에 넘치는 설명(“SATA 케이블을 통해 전송·저장한 음원 데이터라면 차이를 못 느낄 수 있지만 SATA 케이블을 통해 실시간 재생을 할 경우엔 데이터 보정이 안 되어 노이즈에 따른 음질 차이가 보다 크게 느껴질 수 있다” 으으으으으으으응?) 정도는 가볍게 무시하고 지나갈 수 있을 것이다.

뱀다리: 이 책 중간 중간에 은근슬쩍 말콤 그래드웰을 디스하는 내용이 나오는데 의외로 꼼꼼하다. 그리고 구글 안경 쓰면 거리에 고릴라 지나가도 못 봐?라는 관련 기사도 떴네?