잠자리의 눈은 아주 작은 눈이 여러 개 모여 있는 구조로 되어 있다.
이것을 '겹눈' 이라고 한다.
이 겹눈 덕분에 잠자리는 하나의 사물을 아주 다양하게 바라볼 수 있다.
프로그래머도 이런 겹눈을 가지는 것이 좋다.
여기서 말하는 눈은 육체의 눈이 아니라, 마음의 눈을 말한다.
우리가 마음으로 사물을 바라볼 수 있게 해 주는 것은 상상력이다.
상상력이 곧 마음의 눈인 것이다.
이런 마음의 눈을 흩눈이 아니라, 겹눈의 형태로 가지는 것이 좋다.
우리의 상상력은 하나인데 어떻게 겹눈을 가질 수 있을까?
잠자리는 눈을 여러 개 가지고 있어서 한 번에 다양하게 볼 수 있지만, 우리의 마음의 눈이라는 상상력은 하나이기 때문에 한 번에 하나만 볼 수 있다.
그렇기 때문에 우리가 잠자리처럼 보려면 오랜 시간을 두고 여러 번 보는 수 밖에 없다.
잠자리의 눈이 병렬 처리1)가 가능한 구조라면, 우리 마음의 눈은 순차 처리2)만 가능한 구조다.
그렇기 때문에 우리는 문제나 프로그램에 대해서 여러 번 바라볼 필요가 있다.
동일한 프로그램에 대해서 나의 시각에서, 동료의 시각에서, 고객의 시각에서, 바라보는 훈련을 하면 된다.
또한 나의 시각에서 바라볼 때에도 프로그램의 외면 중심으로도 보고, 내부의 구조 중심으로도 보는 훈련도 필요하다.
이런 식으로 '겹눈 훈련'을 거듭 반복하다 보면 습관이 되고, 더 오래 훈련하게 되면 본능이 되어 버린다.
그 때부터는 의식적으로 애쓰지 않아도 자연스럽게 겹눈으로 바라볼 수 있게 된다.
이 때쯤이면 '통찰력'이라고 불리울 수 있는 능력이 생긴다.
어떤 프로그램을 보는 순간에 그것을 다 분석하지 않아도 프로그램에 대해서 깊이 있는 이해가 느낌(feel)으로 다가온다.
프로그래머는 바로 이런 '느낌에 의한 순간적인 분석력'이라고 불릴 수 있는 '본능적인 겹눈'을 갖추도록 노력할 필요가 있다.
1) 병렬 처리(parallel process):동시에 두 가지 이상의 일을 처리하는 것.
2) 순차 처리(serial process):한번에 한 가지 일만 처리하는 것.
그렇기 때문에 병렬 처리로 한 번에 처리할 수 있는 두 가지 일이 있다면, 순차 처리로는 두 번에 걸쳐서 처리하게 된다.
06월 29일 18시 47분 28초