상세 컨텐츠

본문 제목

직관의 함정

etc

by ryujt 2010. 12. 7. 11:48

본문

사실 UML과 코드를 섞어서 강좌를 쓰려고 메모했던 것인데. (책을 쓰려고 그 동안 모아둔 메모)
두서없이 끄적여 봅니다 ^^;

직관, 이성, 사고, 뇌의 활동...
꽤 오랫 동안 좋아하던 주제이기도 해서 자주 이런 저런 생각을 하게 됩니다.

그중에서도 직관은,
진화의 산물이라고 스스로 결론을 내리고 있습니다 ㅡ.ㅡ;
자원(뇌의)을 최대한 활용하기 위해서,
비싼 비용이 드는 이성으로 가기 전에,
운동과 관련된 무조건반사, 본능과 감정에 관련된 1차적 반응,
오랜 훈련 또는 경험에 의해서 형성되는 직관 등이,
논리적인 프로세스 이전에 미리 결과를 계산해 주면서,
빠르고 효율적으로 살아갈 수 있도록 변화한 것이라고 생각합니다.
(이와 비슷한 주제에 대한 저의 생각은 http://dreamingidiot.textcube.com/17)

그런데,
근래 나오는 몇 가지 책에 보면 직관의 판단이 이성보다 정확한 경우가 많다는 주장을 합니다.
관심이 생기시면 한 번 읽어보시길 ^^;  
(지금 생각나는건 "직관에게 이성이 길을 묻다" 기억이 정확하지 않습니다)

너무 장고를 하다가 악수를 두는 경우는 오늘 주절거림의 주제는 아니고요.
너무나 당연하다고 판단했던 실수가 전체를 뒤흔드는 것에 대해서 간단하게 떠들어보고 싶습니다.

세 가지의 관점에서 메모를 해두었는데, 메모 내용을 모두 설명하면 좋겠지만,
그럴거면 아예 강좌를 쓰는게 ㅡ.ㅡ;;

1. 규모가 제법 큰 시스템 설계
2. 재귀적인 문제
3. 의존성 역전

더 있을 수 있겠지만, 제가 생각한 것은 이렇게 세 가지의 경우에는
의식적으로라도 직관을 차단해야 한다고 생각합니다.

사람은 무엇을 인식할 때, 두드러진 특징을 기준으로 해서 대상을 추상화합니다.
효율적이긴 하지만, 직관에 의해서 덜 중요하다고 판단된 기능이나 속성이
전체의 안전을 위협 할 수 있는 것이 당연합니다.
시스템의 규모가 클 수록 인지과정에서 생략되는 영역도 많아질 것이고,
그렇지 않아도 조심스러워야 할 규모인데, 오히려 더 대충 생각하려는 경향이 생기게 됩니다.

제가 항상 강조하는 개발자의 두 가지 덕목 중 감각이 오히려 방해가 되는 순간입니다.
감각이 뛰어난 대신, 문제를 너무 쉽게 생각하고 덤벼들게 되는 것이지요.
당연하다고 생각되도, 종이로 한 번 그려보고 생각을 깊게 해야 합니다.

재귀적인 문제는 항상 직관과 전혀 다른 결과를 내놓게 됩니다.
프렉탈 그래프를 예로 드는 것이 가장 적당할 듯 합니다.
피드백을 통해서 증폭되는 작은 생각이 만드는 놀라운 결과!
하지만, 역시 작은 에러가 전달되는 것 또한 무시무시합니다.

우리는 설계를 할 때, 문제를 작게 잘라서 효율적으로 풀이를 하려고 합니다.
하지만, 재귀적인 문제라면, 전체를 조망하는 능력이 우선되어야 합니다.
피드백의 영역 전체에 대한 동적 흐름을 장악하지 못하면,
재귀의 괴물이 날 뛰는 것을 막을 수가 없습니다.

의존성 역전의 문제는, 코딩과 현실의 괴리로 인해서 심각해 집니다.
개발자도 인간이다 보니, 현실에 대한 감각으로 컴퓨터를 대할 때가 많습니다.

UML 실전에서는 이렇게 쓴다(맞나?)에 보면 커피 자동 판매기를 설계하는 과정에서,
"물이 노즐을 통과하는 것이 아니고, 노즐이 물을 통제하는 것으로 표현하는 것이 효과적이다"라는 부분이 있습니다.

이렇듯 직관적으로 당연한 의존성 또는 순서가,
공학적인 측면에서는 전혀 다른 모습을 보이는 경우가 있습니다.

메모에는 게임의 물리 엔진 중 설계 과정에서 가속도와 중력을 다루는 문제를 설명했는데,
언젠가 시간이 된다면 다시 정리해보도록 하겠습니다 ^^;

일 주일에 적어도 하나씩은 메모를 정리하면서 강좌를 하려고 했는데,
작심 삼일이 되는 듯 하네요 ㅋㅋ

두서 없는 글 읽어주셔서 감사합니다!

'etc' 카테고리의 다른 글

아! 달콤한 유혹, Copy and Paste ㅜ.ㅜ  (0) 2010.12.16
추천서적  (0) 2010.12.15
남의 소스 가져다 쓰는 이중고  (0) 2010.11.29
프로젝트 개요 - 컴파일러 제작  (0) 2010.11.10
기술에 대한 가치 평가  (1) 2010.11.08

관련글 더보기