본문 바로가기

바람보기

오른쪽 두뇌로 코딩하기

전문가가 된다는 것...


 

 

얼어 죽은 이누이트들

영국 탐험가인 윌리엄 에드워드 패리는 이러한 능력에 대해 1822년 자신의 일기에서 '놀라울 정도로 정확한' 이누이트 족 안내원의 지리적 지식이라고 썼고, 장거리 여행자들과 과학자들은 그들의 능력에 놀라워했다. 
 …
그는 위성 내비게이션의 이점이 매력적이지만, 이누이트 족들이 그 기기를 사용하면서 길 찾기 능력이 퇴보했고, 일반적으로 봤을 때는 땅에 대한 감각이 약화됐다고 주장했다. 

니콜라스 카 - 유리 감옥 -

영국 탐험가 "패리"는 1892년 이누이트족 안내원의 능력에 대해서 이야기했습니다. 놀랄 정도로 정확한 지리적 지식이라고 표현하고 있는데요. GPS가 없었던 시대에 얼음과 눈으로 가득 찬 세상에서, 정확하게 길을 찾아낸다는 것은 영국인 탐험가 입장에서는 엄청난 일이 었을 겁니다. 

선조들에게서 전승되어 경험적으로 배웠을 이누이트들의 지식은

어느 날 책을 봐서 얻는 것이 아니라, 오랜 시간 경험에 의해서 선조로부터 전달되었겠죠. 

 

그러나 이제 세상이 발전하고, GPS가 발달한 시대가 되었습니다.

더 이상 힘겹게 선조들의 "지리적 지식"을 습득하지 않아도 되었습니다. 

문제는 여기서부터 입니다. 

가끔 너무 추운 나머지 GPS가 오작동했고, 사냥 원정길에 오른 이누이트들이 길을 찾지 못해 얼어 죽는 사고가 발생했습니다. 

 

 

 

트루크족의 항해

트루크 족도 항해술을 이런 식으로 배웠습니다. 인류학자 그래드윈이 이를 언급했는데요. 

인류학자 그래드윈은 유럽인과 트루크 족 선원이 망망한 태평양 한가운데에 있는 작은 섬들 사이를 작은 배로 항해하는 방법을 대조적으로 비교해서 설명했다. 
유럽인은 항해를 시작하기 전에 먼저 항해할 방향과 위도와 경도의 각도, 목적지에 도착하게 될 시간 등에 대해 조사를 하고 계획을 세운다. 일단 계획이 완성되고 적합하다는 것이 확인되면 선원은 항해를 시작하게 되고, 하나하나 예정대로 항해를 계속한다. 그는 이 항해를 위해서 컴퍼스, 지도, 별의 위치 등 가능한 모든 수단을 사용한다. 만약 그에게 어떻게 여기까지 오게 되었으며, 어디로 가고 있는지의 모든 경로를 묻게 된다면 그는 쉽게 그 모든 것을 설명해줄 것이다. 
여기서 유럽의 항해사는 왼쪽 두뇌 방식을 사용했다. 

이와 반대로 트루크 족의 선원은 다른 섬의 위치를 염두에 두고 목적지와의 거리를 추측하면서 항해를 시작한다. 
항해를 하는 동안 위치가 달라짐을 인식하게 되면 계속해서 방향을 재조정하며, 끊임없이 인간이 어떤 표적이나 태양의 위치, 바람의 방향 등을 측정해 가면서 궤도를 바로 잡아 나간다. 이렇게 그는 어디에서 출발했으며 어느 방향으로 가고 있는지, 또 현재의 위치와 목적지까지의 거리는 어느 정도인지를 감지하면서 방향을 조정해 나가는 것이다. 

그에게 아무런 도구나 계획표도 없이 어떻게 그토록 항해를 잘해 나갈 수 있었느냐고 묻게 되면 그는 말로써는 도저히 다 설명을 할 수가 없을 것이다. 왜냐 하면 그들이 말로써 설명하는 데에 익숙해 있지 못해서가 아니라 오히려 그 과정을 말로써 설명하기에는 너무나 복잡하며 너무나 많은 변화의 과정을 거쳐 왔기 때문이다. 
이 트루크 족 항해사는 그의 항해를 위해 오른쪽 두뇌 방식을 사용한 셈이다. 

베티 에드워즈 - 오른쪽 두뇌로 그림 그리기 -

여기에 "베티 에드워즈"는 한 가지 더 단서를 달았습니다.

"오른쪽 두뇌 방식"이라는 겁니다. 

 

 

 

오른쪽 두뇌로 그림 그리기

 

 

1970년대, 미술교사로 일하던 배티 에드워즈는 "좌절감"에 빠졌습니다. 열심히 가르쳤지만 그림 그리기 실력이 전혀 늘지 않은 아이들을 만났기 때문인데요. 

 

그 아이들을 어떻게 가르쳐야 할 지 고민하던 중  "말하는 동시에 그림을 그릴 수 없다는 사실"이 떠오릅니다. 

 

1968년 로저 스페리라는 사람이 좌뇌와 우뇌의 다른 작동 방식에 대한 논문을 발표했는데요. 이를 그림 그리기 교육에 접목시켜보기로 했습니다. 

그런데, 놀라운 일이 벌어졌습니다. 

단 5일 만에 사람들의 실력이 월등히 성장했거든요. (위에 그림은 교육생들이 5일 교육 전후로 그린 그림입니다.)

 

이런 경의로운 결과 때문에,  베티 에드워즈의 "오른쪽 두뇌로 그림 그리기"는 전 세계 13개 언어로 번역되었고, 250만 부 이상이 팔려나갔습니다. 그뿐 아니라 사회 다양한 분야에서 베티 에드워즈의 초청 강연을 들었는데요. 

이렇게 놀라운 "오른쪽 두뇌" 사용법을 자기 분야에서도 적용하고 싶었던 겁니다. 

 

1981년 노벨상을 받은 로저 W.스퍼리에 의해, 좌뇌, 우뇌 대신 L-mode, R-mode로 용어가 바뀌었습니다. 아마도 모든 사람에게서 좌뇌, 우뇌가 정확히 같은 일을 하지는 않았던 모양이죠. 

 

베티 에드워즈는 "오른쪽 두뇌로 그림 그리기"에서 이를 표로 정리해 놓고 있습니다. 이를 간추리면 다음과 같습니다. 

L-mode (Linear)
언어적: 낱말을 사용, 명명하고 기술하고 정의 내림
분석적: 단계적이고 조직적인 사물 파악
상징적: 어떤 것을 표현할 때 부호나 기호 등의 상징을 사용,
추상적: 하나의 실마리로 전체를 제시 시간적 시간을 재고 일의 순서를 정함
시간적 : 시간을 재고 일의 순서를 정함
합리적: 사실에 근거를 둔 추론으로 결론을 이끌어냄
계수적: 숫자를 사용하여 셈을 함
논리적: 수학의 정리나 훌륭한 논쟁처럼 논리적인 순서에 따라 결론을 얻음
순차적: 생각을 서로 연계적으로 전개해 나가는데, 하나의 생각이 다음 생각을 낳게 하여 집중적으로 결론을 맺음

R-mode (Rich)
비언어적: 사물을 인식하되 단어와의 연관 능력이 미미함
종합적: 여러 사물을 전체의 테두리 안에서 파악
구체적: 현재의 있는 그대로를 표현
유사적: 사물들 사이의 유사성을 보고 비유적인 관계로 이해
비시간적: 시간 감각이 없음 비합리적 사실이나 추론을 거치지 않고 판단함
공간적: 사물이 어떤 위치에서 다른 것들과 관계를 맺고 있는 가를 알아내고, 부분들이 어떻게 전체를 이루는 가를 알아냄
직관적: 완전하지 않은 모양이나 육감, 느낌, 시각적 영상 등을 근거로 순간적으로 통찰함
총체적: 단번에 사물의 전체를 파악함. 전반적인 모양이나 구조를 한꺼번에 감지함으로써 엉뚱한 결론을 얻기도 함

베티 에드워즈 - 오른쪽 두뇌로 그림 그리기 -

 

 

R모드  사용 전략

일반적으로 언어가 우선하기 때문에 인간의 두뇌는 L-모드를 선호하게 되는데, 우리는 두뇌의 이러한 자연적인 경향에 대해 반대로 배워야 한다. 특정 업무에 대하여 일어나는 자연적인 성향을 조절하는 기술을 배움으로써 우리는 자주 강력한 언어의 기능으로 인해 모호해진 인간 두뇌의 기능에 접근하게 된다. 

베티 에드워즈 - 오른쪽 두뇌로 그림 그리기 -

일반적으로 우리 뇌는 언어를 우선으로 동작합니다. 따라서 L모드로 동작하게 되는데요. 평소 우리가 느끼는 뇌의 동작이 시간적이고 논리적이고 순차적인 이유가 여기에 있습니다. 

하지만 우리가 하는 일은 공간적, 직관적, 총체적 이어야 할 경우가 있습니다.  따라서 공간적, 직관적, 총체적 작업을 하는 R모드 사용방법을 익힐 필요가 있습니다. 

 

 

 

그림과 같이 L모드와 R모드는 경쟁관계입니다. L모드를 끄면 R모드가 켜지게 되죠. 

 

L모드는 선형적 모델이라고 했는데요. 앤디 헌트는 “하나씩 처리하고 처리할 것이 없으면 내부루프를 돈다”고 표현하고 있습니다 . 다시 말해 콘솔창에 명령 내리는 것 같습니다. 명령이 입력되면 반응하고 없으면 대기하는 거죠. 동기적인 반응입니다. 

 

하지만

R 모드는 비동기적입니다. 

명령을 내리면, 동원할 수 있는 모든 자료, 심지어 우리가 기억하고 있지 않다고 생각하는 것까지 검색해서 결과를 알려줍니다. 

즉각 반응을 기대하기 어렵습니다.

게다가 “언어적인 처리를 하지 않기 때문에 검색 결과도 언어적이지 않다”고 앤디헌트는 설명하고 있습니다. 

 

수학자의 R모드 사용법

수학자 앙리 푸앵카레는 문제를 풀때 종이에 서술하고, 해답을 아는 부분을 기술한 후 산책을 나가서, 생각날 때마다 다시 와서 적는 것을 반복하는 것으로 문제를 풀었다고 한다.
엔디 헌트 - 실용주의 사고와 학습 -

푸앵카레의 사례는 기록에 남아 있은 '걸으면서' 과학적 창조성을 발휘한 가장 유명한 예다. 그가 책상 앞에 앉을 때마다 혁신은 멈추었다

스티븐 존스 - 탁월한 아이디어는 어디서 오는가 -

수학자 앙리 푸앵카레는 "증명은 논리에 의해, 발견은 직관에 의해 이루어진다"고 말했다. 

데이비드 G 마이어스 - 직관의 두 얼굴 -

특수상대성이론에도 기여하고, 혼돈이론에 업적을 남겼으며, 양자역학에서 양자화를 정의한, 프랑스의 수학자 앙리 푸앵카레가 문제를 푸는 방식은 문제를 적어 놓고, 나가서 산책하는 것이었습니다.   R모드를 사용했던 겁니다. 

 

아인슈타인이 "왜 나는 샤워 도중에 최고의 아이디어가 떠오를까?"라고 말한것, 아르키메데스가 "유레카"라고 소리 지르면서 맨몸으로 뛰어 나갔던것, 이런 예들이 모두 R모드의 작품 이었던 겁니다.

 

L모드와 R모드의 근본적 차이

연속적으로 간주된 시간(뇌의 좌반구)은 피겨고 
동시적으로 간주된 시간(뇌의 우반구)은 그라운드다. 

마샬 맥루한 - 지구촌 -

마샬 맥루한의 정의에서 우리는 그 이유를 좀 더 확실하게 이해할 수 있습니다. 

L모드는 피겨, R모드는 그라운드라고 정의하고 있는데요. 

그라운드는 본질 자체, 피겨는 본질을 한 순간을 표현하는 말입니다. 

폴라로이드 사진을 연상하시면 되는데요. L모드는 폴라로이드 사진 한장을 처리하는 반면, R모드는 폴라로이드가 찍은 대상 자체를 처리 합니다.  

 

따라서 L모드는 빈틈이 많겠죠. 

이야기 짓기 오류

대표적인 것이 "이야기 짓기 오류"인데요.

작가 "브레드 스톤"이 아마존의 "베조스"와 인터뷰 했을 때, "베조스"가 마지막 한 말이 "이야기 짓기 오류는 어떻게 하실 겁니까?"였다고 합니다.  인터뷰만으로는 아마존 본질을 단순화하고 곡해할 수 있기 때문이죠. 

베조스는 '이야기 짓기의 오류'란 나심 니콜라스 탈레브가 2007년도에 그의 저서 "블랙 스완"에서 만들어낸 용어라고 설명해주었다. 작가는 이 책에서 복잡한 현실을 지나치게 단순화시켜 받아들이기 편한 이야기로 바꾸어버리는 인간의 생물학적 성향을 설명한다. 그리고 인간은 두뇌의 한계 때문에 전혀 관계없는 사실과 사건들을 결과와 이유의 공식에 끼워 맞춰 쉽게 이해할 수 있는 이야기로 바꾸는 경향이 있다고 쓰고 있다. 이렇게 만들어진 이야기들은 참된 무작위의 세계와 인간이 겪는 혼란스러운 경험을 비롯해 모든 성공과 실패에 한몫을 담당하는 운이라는 불안 요소로부터 인류를 지켜준다는 것이다. 

브래드 스톤 - 아마존 세상의 모든 것을 팝니다 -

"복잡한 현실"은 그라운드입니다. 하지만 우리가 말을 할 때는 L모드가 동작하므로, "복잡한 현실" 자체를 다루기보다는 "단순화시켜 받아들이기 편한 이야기"로 바꾸어버립니다.  그래서 인터뷰가 오도되고 변질됩니다. 

이는 L모드 약점 중에 하나입니다. 

 

즉, L모드는 단순한 작업을 할 경우에는 효과적일지 모르지만, 좀 창의적이고, 전문적인 결과를 만들어 내고 싶을 때는 R모드를 많이 활용하는 편이 유리하다고 할 수 있습니다. 

 

다시 말해, 전문가가 되려면 R모드를 쓰는 방법을 익혀야 합니다. 


 

 

R모드에 귀 기울이기

R 모드는 예측이 불가능하기 때문에 
해답이나 통찰력은 의식적인 활동과는 무관하게 
갑자기 솟아오르므로 이를 잡을 준비를 해야 한다.

앤디 헌트 - 실용주의 사고와 학습 -

비동기적인 R모드의 결과는 언제 튀어나올 줄 모르기 때문에, 이걸 메모해 둘 방법이 필요합니다. 

손에 익은 툴을 사용하는 것이 가장 중요할 텐데요. 항상 지니고 다닐 수 있다면 어떤 도구라도 가능할 것 같습니다. 

예를 들어, 펜과 노트가 될 수도 있고, 인덱스카드가 될 수도 있습니다. 스마트폰 시대이니 스마트폰 앱이 될 수도 있습니다. 

마인드맵은 방사 사고를 표현한 것이다. 그러므로 인간 마음의 자연적 기능이다. 또한 그것은 잠겨 있는 두뇌의 잠재력으로 들어갈 수 있는 만능열쇠를 제공하는 강력한 그래픽 기술이다. 마인드맵은 실생활의 모든 면에 적용할 수 있고, 학습을 향상하고 사고를 명료하게 하여 인간 활동의 질을 높여줄 것이다.

토니부잔 - 토니 부잔의 마인드맵 북 -

마인드 맵을 활용해 보는 것도 괜찮을 것 같습니다. 마인드 맵 자체가 선형적 구조가 아니기 때문에 R모드의 결과를 받아내기 편리할 수 있겠죠.  게다가 이거 잘 사용하는 사람들은 뛰어난 학습 효과를 보기도 한다는군요. 

사실 비주얼 씽킹의 정의는 매우 간단합니다. 
글과 그림을 함께 이용해서
빠르고 간단하게 생각을 정리하고 
정보를 요약해 공유하는 것

정진호 - 비주얼 씽킹 -

비주얼 씽킹도 이에 해당하는 도구라고 봅니다. 언어적 측면을 되도록 배제한 채, 그림 사용해서 R모드의 결과 보고를 남겨 두는 것이죠. 


 

 

R모드 깨우기

R모드를 깨우려면, L모드를 멈추면 됩니다.

참 쉽죠.. ^^

우리 인간은 언어 중심적으로 생활하기 때문에 L모드가 우선적으로 깨어 있게 되어 있는데요.

L모드와 R모드는 경쟁관계라서, R모드는 L모드가 멈춰야 깨어나게 됩니다. 

토마스 에디슨은 볼 베어링으로 가득 찬 컵을 손에 쥐고 낮잠을 잡니다. 서서히 잠이 들 때쯤 무의식이 그의 문제에 도전하고 해답을 제시한다는 사실을 알고 있었습니다. 그러다 깊이 잠들게 되면 볼 베어링을 떨어뜨리게 되고 그러면 그게 달그닥거려서 그를 깨웁니다. 그러면 마음속에 떠오른 것을 적죠

앤디 헌트 - 실용주의 사고와 학습 -

에디슨의 방식이 상당히 인상적이었는데요. 그는 낮잠을 잤다고 합니다.  강제로 L모드를 멈춘 셈이죠. 

스티브 잡스는 중요한 결정을 내리거나, 중요한 손님을 만날 때는 즐겨 산책을 했다고 합니다. 

'팽생토록 설탕물만 팔면서 살고 싶으십니까? 아니면 세상을 바꾸고 싶으십니까? '라며 존 스컬리를 설득했던 것도, 역시 산책하면서 였습니다. 

앞에 앙리 푸앵카레의 예에서도 그는 "산책"을 통해서 문제를 풀어나갔죠. 

이 외에 샤워를 하거나 음악 감상, 그림 그리기, 명상, 조깅, 뜨개질, 암벽 등반 같은 것들을 통해서 L모드를 꺼둘 수 있는 겁니다. 


 

 

R모드 강화하기

1. 모닝 페이지

간단히 말해서 매일 아침 의식의 흐름을 3쪽 정도 적어가는 것이다.

모닝 페이지는 누구에게도 보여주지 말고, 당신도 첫 8주 동안은 읽지 않도록 하라

 

줄리아 카메론 - 아티스트 웨이 -

"창조성 회복" 강연으로 유명한 "줄리아 카메론"이라는 분이 제시하는 방법입니다.

아침에 일어나자마자 3쪽 정도 머릿속에 떠오르는 걸 적는 겁니다.

다시 읽어보기 위해서 쓰지 않습니다. 그냥 머릿속에 있는 걸 베껴보는 겁니다. 

이렇게 할 때, 창조성 회복에 도움이 많이 된다고, "줄리아 카메론"은 주장하고 있습니다. 

아마도, 수면 중에 데이터 정리를 마친 R모드의 콘텐츠를 끌어내는 연습을 해보는 것이 아닌가 싶습니다.

물론 효과가 꽤 있는 것 같습니다. 

 

 

2. 적자생존

이번엔 무작정 적어보는 겁니다.  메모의 중요성을 이야기하는 사람들이 주로 사용하는 용어가 "적자생존"인데요.

물론 다윈의 진화론 이야기가 아닙니다. 

"적는 자가 살아남는다"라는 뜻으로 메모의 중요성을 깨우치기 위해서 만든 용어죠. 

 

세바시라는 강연에서 "정선희"씨가 하루 3줄씩 일기를 쓰면서 회복하는 과정을 겪었다고 이야기하기도 했고, 

애플리케이션 중에는 세줄 일기라는 것도 있습니다. 

 

블로그를 하는 것도 어떻게 보면 비슷한 의미가 담겨 있는데요. 

쓰기를 할 때 생각이 정리되고 아이디어가 명확해지는 걸 확인할 수 있습니다. 

 

최근 몇 년, 스택오버플로는 개발자들의 가장 강력한 협력자로서 자리매김을 했는데요. 그 창업자 두 사람이 코딩 호러와 조엘이라는 유명 블로거라는 사실은 이를 뒷받침해주는 것, 아닐까 싶습니다. 

때로는 쓰기 싫어도 계속 써야 한다.


스티븐 킹 -유혹하는 글쓰기-

쇼생크 탈출, 미저리,... 등 소설을 쓴 스티븐 킹은 글쓰기에 대한 책도 썼는데요. 그 책에서 그는 매일매일 정해 놓고 "계속" 써야 한다고 강조하고 있습니다. 

스탕달... 그는 연필을 쥐어야 비로소 생각을 시작하는 사람 같았다고 한다. 

노트에 글을 쓰는 것은 생각을 만들어내는 것이다. 

이재영 - 탁월함에 이르는 노트의 비밀 -

 

 

이재영 교수님의 말씀이 아마도 "적자생존"이라는 말을 가장 함축적으로 나타내는 표현 같습니다. 

결국 "쓰는 것"은 R모드의 결과를 좀 더 많이 더 많이 L모드와 우리의 결과물로 남겨 두는 역할을 하는 강력한 도구인 셈입니다. 

 

3. 독서

한 가지 간과하지 말아야 할 것이 있습니다. '빈 독은 아무리 긁어도 나올 게 없다'는 겁니다. 

즉, R모드가 영향력을 발휘할 만큼 콘텐츠를 확보할 필요가 있습니다. 

물론, 그 방법은 독서밖에 없죠. 

 

독서법에 대해서도 많은 분들이 책을 쓰셨습니다. 

그중에서 공병호 님이 제시하는 방식이 가장 명확해 보여서 옮겨 봅니다. 

공병호가 <실용독서의 기술>에서 제시한 독서 8 계명
* 세상이 아무리 바뀌어도 지식의 원천은 역시 책이다. 
* '본전' 생각으로부터 자유로워야 한다. 
* 20퍼센트 내외의 핵심은 저자 서문, 목차, 결어 및 초기의 핵심 장에 숨어 있다. 
* 구입한 즉시, 혹은 24시간 내에 책의 핵심 부분을 읽는다. 
* 책을 무자비하게 대한다. 
* 중요한 문장이나 내용은 펜으로 마음껏 표기한다. 
* 중요한 내용이 담긴 페이지의 모서리를 다양한 방식으로 접는다. 
* 인상 깊게 읽었던 책은 가까운 곳에 두고 이따금 펴본다. 


신상석 - 읽어야 이긴다.-

물론, 저는 본전 생각으로부터 자유롭지 못하더군요. 개발자들이 읽는 책에 경우 대부분 비싸고 분량이 어마어마한 경우도 있어서, 몇 권 사면 금방 책장이 가득 차는데, 비슷한 책을 계속 사야 하는 상황이 발생하기 때문에, 책을 계속 사기엔 부담이 많이 됩니다. 

그러다 보니, 빌려서 보게 되는데요. 당연히 책을 무자비하게 대할 수 없습니다.

 

그래서 제 경우에는 다른 방법을 사용합니다. 

 

e-book을 선호하지 않는 분도 계신데요. 우리 뇌가 책 내용을 기억할 때 내용과 더불어 책의 지리적 위치까지 기억하기 때문이라고 합니다. 그래서 종이로 된 책을 읽으면 좀 더 오래 기억할 수 있다는 거죠. 

 

책을 읽는 동안은 L모드를 쓰기 때문에, 책을 읽으면서는 가끔 쉬어 주는 것이 필요합니다. 

 

4. 자료 정리/활용의 R모드 방식

최근엔 미쳐 읽지 못한 데이터 조차도 사용할 수 있는 방법들이 생기고 있는데요. 대표적인 것이 에버노트입니다. 

에버노트에 경우 우리가 정리한 데이터를 넣을 수도 있지만, 사진 찍기나 pdf로 문서를 그대로 올릴 수도 있고, 인터넷 서핑 중에 발견한 내용을 긁어서 올릴 수도 있습니다. 

그러면 추후에 이를 사용해야 할 때 에버노트에 태그를 사용하거나 검색기능을 사용해서 통찰력을 얻을 수 있습니다. 

R모드가 작동해서 우리 뇌에서 데이터를 가져오는 방법은 아니지만, 앱을 사용하는 이런 방법도 꽤 유용합니다. 

 

개인적으로 저는 블로그를 활용하기도 하는데요. 한때는 트위터나 웹서핑 중 본 내용들을 블로그에 비공개 글로 올려놓기도 했습니다. 

이렇게 하면 추후 그 내용들이 필요할 때, 검색해서 쓸 수도 있는 거죠. 

 

 

 


개발자와 R모드

지금까지 L모드, R모드에 대해서 말씀드렸습니다. R모드를 잘 사용하는 만큼 전문가로서 역량을 발휘 할 수 있는 데요. 

R모드를 어떻게 사용할 수 있는지 말씀드렸습니다. 

마지막으로 할 이야기는 개발자로서 R모드를 어떻게 써야 할 지 입니다.  

 

1. 아스퍼거 증후군 성향인 개발자들

MBTI 성격 유형 검사를 하면 개발자들은 꽤 비슷한 유형으로 나온다는 이야기를 들은 적이 있습니다. 

눈 맞추는 것을 피하고 바디 랭귀지를 잘 이해하지 못하고 기술적 난해함에 집착하는 등 프로그래머의 행동 프로파일은 아스퍼거 증후군 Asperger's syndrome의 증상과 거의 일치한다. 아스퍼거 증후군은 자폐증의 가벼운 형태로 정의되는데 아스퍼거 증후군 환자는 심한 자폐증에 시달리는 이들과는 달리 대부분 IQ가 높고 혼자서도 살아갈 수 있다. 아스퍼거 증후군과 자폐증은 계속 증가해왔는데 1990년대 초 실리콘 밸리에서 갑자기 현격한 증가율을 보였다. 2001년 와이어드 지는 '긱 증후군 The Geek Syndrome'이란 특집 기사를 실었다. 
스콧 로젠버그 - 드리밍 인 코드 -

아스퍼거 증후군은 지능에는 장애가 없지만 사회성과 의사소통 기술이 떨어지는 특징을 가진 자폐증의 한 형태...
다나 보이드 - 소프트웨어 블로그 베스트 29선 -

남자아이들은 여자아이들보다 자폐증에 걸릴 확률이 4배이며 아스퍼거 증후군을 앓을 확률이 10배나 높다. 
대니얼 골먼 - SQ 사회지능 -

"드리밍 인 코드"라는 책에서 스콧 로젠버그는 "아스퍼거 증후군"이라는 자폐증과 개발자 성향이 비슷하다는 이야기를 하고 있는데요. 

사회성이 떨어지고 남성 비율이 여성보다 좀 더 많은 것, 그리고 기술적 난해함에 집착하는 부분은 솔직히 부인하지 못할 특징입니다. 

목사, 변호사, 엔지니어가 사형을 당하게 되었다. 먼저, 목사가 교수대로 걸어 올라갔다. 집행관이 교수대 발판을 여는 레버를 잡아당겼지만 아무 일도 일어나지 않았다. 목사는 신께서 자신을 살려주신 것이라고 주장하며 석방을 요구해 자유의 몸이 되었다. 그다음, 변호사가 교수대에 섰다. 집행관이 레버를 당겼으나 또 아무런 일도 일어나지 않았다. 변호사는 재시도는 이중 처벌이라고 주장하며 석방을 요구해 자유의 몸이 되었다.
마지막으로 엔지니어가 교수대 위에 올라가서 교수대를 주의 깊게 살펴보기 시작했다. 집행관이 레버를 당기기 전에 그는 위를 올려다보며 소리쳤다. "아하, 여기 이게 잘못됐군요"

엘런 쿠퍼 - 정신병원에서 뛰쳐나온 디자인 -

UX라는 개념을 만들어 낸 "엘런 쿠퍼"입니다.

엘런 쿠퍼는 개발자를 "호모로지쿠스"라는 신조어 표현하는 데요.  위에 우화 처럼 앞뒤 안가리고 "논리적"인 것만 따지기 때문입니다.  

 

여기까지 나온 이야기들을 보면, 상당히 L모드 적인 성향들이라는 것을 알 수 있습니다. 

베티 에드워즈가 정리했던 L모드의 특성에 "논리적"이라고 했습니다. 

 

 

 

하지만, 브룩스는 좀 다른 이야기를 합니다. 

설계자들은 대부분 우뇌형이고 시공감각을 지향하는 사람들이다.
...
설계자들이 공간적인 사고를 하기 때문에 설계 프로세스에 대한 시각적, 기하학적인 표현이 중요하다

브룩스 -  디자인 오브 디자인 -

혹시, 브룩스를 모르시는 분이 계실 까 봐, 그에 대해서 잠깐 설명드리고 넘어가도록 하겠습니다. 

그는 전설적인 인물입니다.

IBM이 중형 컴퓨터의 강자로 발돋움할 수 있게 해 주었던 IBM 360 프로젝트의 책임자였거든요. 

모든 신규 프로젝트를 멈추고 브룩스의 프로젝트에 집중한 IBM에 대해,

언론(톰 A 와이즈의 <포천 매거진> 1966)은 "IBM의 50억 달러짜리 도박"이라고 논평했습니다. 

그러나 프로젝트는 성공적이었고, 브룩스는 "맨먼스 미신"이라는 책으로 그 경험에 대한 에세이를 썼습니다. 

그 책은 지금까지 읽히는 책이죠. 

 

다시 말해, 그의 말은 허투루 듣지 말아야 한다는 겁니다. 

그가 소프트웨어 아키텍트를 "우뇌형"이라고 이야기하고 있습니다. ( 설계자라는 말을 쓴 이유는 '디자인 오브 디자인'이라는 책이 소프트웨어 개발에 국한하고 있지 않기 때문입니다. )

 

소프트웨어 아키텍트라고 말씀드리니, 일반 개발자와는 상관없다고 생각하실지 모르지만, 

그렇지 않습니다. TDD를 공부하다보면, "설계"는 점진적이어야 한다는 걸 이해하게 됩니다. 

모든 개발자가 함께 꾸준히 계속 해 나가는 겁니다. 

되도록 모든 정보가 확보될 때까지 아키텍트의 결론을 유보하는 것이 가장 합리적이라고 이야기 합니다. 

 

정리하면, 

일반적으로 사람들이 생각하는 개발자의 성향은 L모드 이지만, 브룩스는 R모드 성향이 중요하다고 이야기 하는 겁니다. 

그럼 이걸 어떻게 정리해서 받아들여야 할까요? 

 

"앤디 헌트"의 책에서 이 문제에 대한 실마리를 찾을 수 있습니다. 

짝 프로그래밍의 예

코딩하는 드라이버와 전체적인 그림을 보는 내비게이터로 이루어진 짝 프로그래밍을 할 경우 R모드로 보게 되는 내비게이터는 드라이버가 보지 못하는 것을 보게 된다...

결과적으로 혼자 프로그래밍을 할 때는 내비게이터가 하듯 키보드를 놓고 전체 그림을 보는 작업을 해야 한다.

앤디 헌트 - 실용주의 사고와 학습 -

짝 프로그래밍은 여러 면에서 유용합니다.

먼저 "코드 공유"가 자연스럽게 일어나게 되고요. 

버그 유입률이 현저하게 줄어들며,

작업에 몰입이 잘 되는 특성이 있기 때문입니다. ( 어떤 책에서 봤는지 기억이 나지 않는데요.  이 때문에 체력적으로 가장 힘든 개발 방식이라고 하더군요. )

 

한 사람은 드라이버로 다른 사람은 내비게이터로 역할을 분담하게 되는데요. 이때 드라이버는 코딩을, 내비게이터는 "전체 그림"을 보게 됩니다. 드라이버는 L모드로, 네비게이터는 R모드로 작업하고 있는 겁니다. 

만약 혼자 일하는 경우라면, R,L 모드를 전환하며 작업해야 겠죠. 다시 말해, 개발자는 L모드에서만 일하면 안되고 R모드에서도 일을 해야 한다는 걸 알 수 있습니다 .여기서 R모드가 전문가적 특성을 가진다는 것을 상기하면, 

 

개발자는 ‘아스퍼스 증후군’이나 ‘호모로지쿠스’라고 불리는 L모드에서 일하는 시간을 최대한 줄이고, R모드에서 일 하는 시간을 늘려야,  작업 결과가 더 훌륭하게 될 거라고 추정할 수 있게 되죠. 

 

그래서, R모드로 일하는 시간을 늘리는 방법을 찾아봐야 합니다 .

 

 

 

 

R모드로 코딩하기

각 패러다임은 프로그래머에게서 권한을 박탈한다. 어느 패러다임도 새로운 권한을 부여하지 않는다. 각 패러다임은 부정적인 의도를 가지는 일종의 추가적인 규칙을 부과한다. 즉 패러다임은 무엇을 해야 할지를 말하기보다는 무엇을 해서는 안 되는지를 말해준다.

로버트 C 마틴 - 클린 아키텍처 -

로버트 마틴은 구조적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍 패러다임을 설명하면서, " 각 패러다임은 프로그래머에게서 권한을 박탈한다"라고 했습니다.  로버트 마틴의 말을 그대로 인용하면, 

구조적 프로그래밍 -> 제어 흐름의 직접적인 전환에 대해 규칙을 부과

객체지향 프로그래밍 -> 제어흐름의 간접적인 전환에 대해 규칙을 부과

함수형 프로그래밍 -> 할당 문에 대해 규칙을 부과

 

다시 말해, L모드의 논리 전개를 더 많이 방해하는 쪽으로 패러다임이 변경되어 온 겁니다.

"함수형 프로그래밍" 패러다임이 가장 마지막에 주목받았던 이유도 근본적으로 여기서 찾을 수 있습니다.

 

L모드에서 논리를 전개가 "이야기 짓기 오류" 같은 것에 빠져서 버그를 만들어 내는 것을 R모드로 강제 전환해서 막아주는 겁니다.

이렇게 하면 버그유입률이 낮아지게 되고, 코딩 결과는 좋아지겠죠.

따라서 이런 패러다임 변화를 따라가는 건, 필수적이라고 볼 수 있습니다.  

 

 

1. 단일 책임 원칙

모듈이 하나의 책임만 가져야 한다는 것이다. 모듈이 한 가지 일을 하고, 모듈을 수정할 이유가 한 가지여야 한다. SRP를 적용하면 응집도가 높은 모듈을 얻게 된다. 간단하게 말하자면 하나의 작업만 훌륭하게 수행하는 모듈을 얻을 수 있다.  
제임스, W.그레닝 임베디드 C를 위한 TDD

모든 객체는 반드시 단 한 가지 명확히 규정된 책임을 지녀야 한다. 이를 '단일 책임 원칙이라 한다. 
스티브 프리먼 - 테스트 주도 개발로 배우는 객체 지향 설계와 실천 -

동일한 이유로 변경되는 것들은 함께 모으고, 다른 이유로 변경되는 것들은 분리한다. 
Kevlin Henney - 프로그래머가 알아야 할 97가지 -

클래스를 변경할 경우 2가지 이상의 이유가 있다는 것은 곧 책임도 2가지 이상이라는 뜻입니다. 간단하게 말하자면 '하나의 클래스는 하나의 책임만 가져야 한다'라는 원칙입니다.
오즈모리하루 -코딩의 기술 - 

시스템 내에 모든 객체는 하나의 임무를 가지며 모든 객체 서비스는 하나의 임무만을 수행하는데 초점을 맞추어야 합니다.
댄 필로네 - HEAD FIRST SOFTWARE DEVELOPMENT -

클래스를 바꾸는 이유는 한 가지 뿐이어야 한다.
에릭 프리먼 -  Head First Design Patterns -

마이크로서비스 아키텍처에서 각 서비스는 일반적으로 단일 책임 원칙을 준수한다.
보리스 숄 - Azure와 도커를 활용한 마이크로서비스 구현 -

서비스와 공유될 수 없는 것처럼, 하나의 마이크로서비스는 여러 가지 책임을 담당해서는 안된다
라제시 - 스프링 5.0 마이크로서비스 2/e -

정말 많은 책에서 단일 책임 원칙을 말합니다.

클래스, 모듈, 그리고 심지어 마이크로서비스까지 단일 책임 원칙이 필요하다고 합니다.

 

L모드가 "논리적"이라고 하는데요. 이는 결론이 나올 때까지 논리를 전개한다는 의미입니다. 하나의 논리로 결론을 찾지 못하면 다음 논리로 그 다음 논리로 결론이 나올 때까지 진행해 갑니다. 

각 논리가 하나 씩의 책임으로 규결된다고 보면 L모드가 작성하는 코드는 다중 책임 코드가 될 겁니다. 

게다가 순차적 논리 전개에는 변수가 필요할 수 밖에 없습니다. 여러개의 변수와, 전역변수, 그리고 싱글톤까지 마구 붙여서 결론을 만들어내게 됩니다. 

 

단일 책임 원칙은 L모드가 제시하는 "순차적", "논리적" 사고 전개를 막고 "공간적"사고 전개를 하도록 해줍니다. 

 

이렇게 이해하다보면, SOLID 법칙(즉 단일책임원칙, 개방폐쇄원칙, 리스코프치환원칙, 인터페이스 분리원칙, 의존역전 원칙)이 왜 효과가 있는지 이해할 수 있게 됩니다.

R모드에서 코드를 접근하게 해주는 겁니다. 

 

이는 코딩에 필요한 여타 구조를 만들어 낼 때도 동일하게 적용해 볼 수 있습니다.

파일 구조나 디렉터리 구조, 화면에 보이는 코드의 양, ... 모든 것을 판단할 때 SOLID를 염두에 두는 거죠.

2. 절차적 논리 제거

~~~~~~~~~~~~~~~~~~~~~~~~~~
숫자열에 대한 평균을 구하는 절차는
    전체 합계를 유지하는 수를 0으로 초기화
    요소 수를 유지하는 수를 0으로 초기화
    숫자열의 선두부터 하나씩 숫자를 꺼내어 아래의 처리를 한다.
         전체 합계를 유지하는 수에 값을 더한다.
         요소 수를 유지하는 수에 1을 더한다.
    전체 합계를 유지하는 수/요소 수를 유지하는 수의 결과를 나타낸다.
~~~~~~~~~~~~~~~~~~~~~~~~~~
라는 절차적인 기술을 하는 것보다

~~~~~~~~~~~~~~~~~~~~~~~~~~
"숫자열에 대한 평균"을 만족해야 하는 성질은 "숫자열의 전체 합계/숫자열의 요소 수"
~~~~~~~~~~~~~~~~~~~~~~~~~~

라는 선언적으로 작성하는 편이 파악하기 쉽다. 

오카와 노리유키 - 하스켈로 배우는 함수형 프로그래밍 -

 

 

L모드는 “순차적”입니다.

순차적으로 명령을 내리는 방식으로 솔루션을 구축하는 언어를 "절차적 프로그래밍 언어"라고 하죠.

오카와 노리유키라는 분이 쓴 “하스켈”책에는 이에 대한 차이점을 보여주고 있습니다. 순차적 명령을 내려야 하니, 많은 변수가 필요하고 루프가 필요합니다. 

그러나 함수형 프로그래밍은 공간적 개념이 필요할 뿐입니다. 

 

절차적 프로그래밍 언어는 L모드에서 작업을 하도록 유도합니다. 앞서 말씀드린 것처럼, L모드의 논리적 특징은 논리와 논리의 연결로 결과를 만들어 낼 때까지 순차적으로 진행하는 걸 말합니다

다중책임을 갖는 코드, 엄청난 변수가 필요하고, 전역변수도 당연히 써야 하며, goto를 쓰고 싶게 만들고, 그게 안되더라도 루프와 제어문을 많이 남발해야 됩니다. 그리고 코드도 엄청나게 길어지죠. 

 

아스퍼거 증후군적, 호모로지쿠스적 개발자들은 좋아할지 모르지만, 코드 결과를 놓고 볼 때, “절차적 논리”를 전개하는 건, 버그의 유입률을 높일 수 밖에 없습니다. 

전체 그림이 명확하지 않기 때문이죠. 가능하다면, “함수형 프로그래밍”언어를 사용하거나 언어의 그런 특징들을 써야 합니다. 

3. "뽀모도로" 기법 적용

뽀모도로 기법은 25분 집중하고 5분씩 쉬는 것을 한 사이클로 진행하는 시간관리 기법입니다. 이때 4번째 사이클에서는 15분에서 30분 동안 쉬는 건데요.

이렇게 하면 일에 대한 집중력이 높아지고 결과적으로 더 많이 일을 할 수 있게 됩니다.

<시간을 요리하는 뽀모도로 테크닉> 책에서는 1일에 12 뽀모도로가 가능하다고 생각했지만 실제로 8 뽀모도로가 현실적인 한계였다고 기록하고 있다. 나도 마찬가지다 하루에 할 수 있는 것은 4~8 뽀모도로 정도다.
니시오 히로카즈 - IT에 몸담은 이들을 위한 지적 생산기술 -

하루 2번의 좀 더 긴 정신적인 휴식에 대한 시릴로의 의견은 이것이 사람의 리듬 주기와 맞다는 것이다. 사람의 몸이 고 에너지 상태에서 저 에너지 상태로 바뀌는 데는 90분에서 120분간의 사이클이 있다. 심리학자 어니스트 로시는 말한다. "근본적으로 사람은 매 1시간 30분마다 잠깐의 휴식을 취할 필요가 있습니다. 만약 그렇게 하지 않으면 피곤해지며, 정신 집중이 되지 않고, 실수를 하기 쉬우며, 짜증이 나거나, 사고를 당하게 되기도 합니다
마이크 콘 - 경험과 사례로 풀어낸 성공하는 애자일 -에서 "시간을 요리하는 뽀모도로 테크닉"을 인용

코딩 작업은 "논리전개"에 빠질 가망성이 높은데요. 이렇게 강제적으로 일을 멈추면 L모드가 멈추고 R모드가 활성화되겠죠. 

뽀모도로 기법으로 일을 하게 되면 주기적으로 R모드로 들어갈 수 있는 기회가 생기게 되는 겁니다.

 

위에서 언급했던 수학자 "앙리 푸앵카레"의 수학 문제 푸는 방법을 상기해보시기 바랍니다.

뽀모도로 기법으로 일을 하게 되면 뽀모도로 타이머가 멈추는 시간마다 일어나서 R모드가 하는 말에 귀 기울일 수 있고, 좀 더 전문가적인 판단을 가미한 결과를 만들어 갈 수 있게 됩니다. 

 

쉬는 시간 동안은 R모드가 활성화되도록, 일어서서 걷거나, 창밖을 바라보거나 잠시 좋아하는 음악을 듣거나 뭐 이런 일을 하시면 좋을 것 같습니다. 


 

 

개발자로서 R모드 강화하기

앞에서 말씀드린 것처럼 '빈 독을 긁는 일'을 하지 않기 위해서, R모드에서 활용할 지식을 많이 구비해 두어야 합니다. 

 

1. 먼저 책을 읽어야 합니다. 

일반적으로 인간은 "확증편향"에서 자유롭지 못합니다.  즉, 원래 맞다고 생각하는 쪽으로만 정보를 선택하게 되는데요. 이렇게 되면, R모드를 통해서 좀 더 창의적인 결과를 만들어내기 힘들어집니다. 

따라서 책을 읽되 정독하는 것이 중요합니다. 책이 읽기 힘들다면, 인터넷 강의나 기사라도 나와 다른 관점을 가진 사람들의 생각을 듣는 창구가 필요합니다. 

 

2. 내 전문분야에 대한 정보도 좀 더 포괄적으로 많이 수집할 필요가 있습니다. 

R모드가 제대로 동작하려면, R모드가 접근할 데이터가 “그라운드”에 가까워야 합니다.

‘피겨’ 즉 ‘폴라로이드 사진 한장’만 가지고는 R모드를 동작할 이유가 없는 거죠. 

”장님 코끼리 다리 만지기"라는 말이 있는데요. 만약, 그 장님이 코끼리 전체를 만져볼 수 있다면, 코끼리에 대한 엉뚱한 결론을 내리지는 않을 겁니다.

 

따라서, 전문 분야에 대한 정보를 지속적으로 꾸준히 수집할 필요가 있습니다. 

그러면, "이야기 짓기 오류"에 빠지지 않고, "그라운드"에 최대한 접근할 수 있을 겁니다.

"그라운드"를 최대한 정확하게 알 수록 R모드가 제공해주는 리포트는 더 정확해질 겁니다. 

 

3. 전문 분야 외의 분야에 대해서도 공부가 필요합니다. 

바람 앞에 촛불은 꺼지지만, 모닥불은 활활 타오릅니다. 이런 성향을 "안티 프래질"이라고 하는데요. 

바람은 촛불 하나는 꺼뜨리지만 모닥불은 살린다.

나심 탈레브 - 안티프래질 -

나심 탈레브가 제시한 가장 일반적인 안티프래질 방법은 "바벨 전략"입니다. 

운동기구 "바벨"의 모양새를 보면 두 개의 바퀴를 가지고 있는데요. 이처럼, 두 가지 생존전략을 가져야 한다는 주장입니다. 하나는 현재 상황을 유지하기 위한 방법이고 다른 하나는 "블랙스완" 즉 예기치 못한 위험, 현상유지를 위한 전략이 무용할 경우 생존을 유지할 수 있는 전략입니다.  

우리의 전문 분야 이외의 전문 분야를 가져야 하는 건데요.  로버트 C 마틴의 조언을 들어보면, 주력 언어가 아닌 다른 언어로 개인 프로젝트를 진행하거나 특정 플랫폼과 결혼하지 않는 겁니다. 

프레임워크와 결혼하지 말라!

로버트 C 마틴 - 클린 아키텍처 -

즉, 특정 프레임워크에 국한되지 않은 공부가 필요합니다. 


결론

오른쪽 두뇌로 코딩하는 방법에 대해서 알아봤습니다. 

 

인간의 두뇌의 동작에 대해서는 여러 가지 견해가 있는데요

그중에 L모드, R모드로 분리 하는 견해를 사용해본 겁니다. 

 

R모드는 전문가 모드입니다. 

코딩에 사용할 경우 코드의 품질을 높일 수 있는 방식입니다만, 

우리가 평소 사용하는 방식은 L모드입니다. 

L모드는 코드 유입률이 높은 절차적인 논리전개 방식을 고수합니다. 

 

따라서, 

전문적인 개발자가 되기 위해서는 R모드로 코딩하는 방식을 익힐 필요가 있습니다. 

 

 

'바람보기' 카테고리의 다른 글

로버트 C 마틴 보기  (0) 2021.09.14
블로그를 활용한 책 읽기  (3) 2020.09.22
지식 노동자와 정신 에너지  (1) 2020.09.18
죽을 때까지 코딩하기  (3) 2020.09.01
천재적인 일을 하는 조직 만들기  (3) 2020.08.27