6월, 2013의 게시물 표시

기억의 위조와 아하(A-ha) 현상

기억이란 게 얼마나 엉터리일수 있는지 가끔 놀랄 때가 있다. "무의식의 기억 위조" 현상인데 우리가 기억을 저장할 때 어떤 느낌으로 저장하기 때문일 것이다. 오래되었지만 강렬한 기억은 강력한 위조인 경우가 많은데 낡아진 기억을 복원하기 위해 우리의 무의식은 주변의 비슷한 느낌을 키로 저장된 기억들을 사용하여 완벽(?)하게 재구성하기 때문이다. 수십년만에 페북으로 만난 후배를 마치 잘 알고 있었던 것처럼 느낄 때, 사실은 그 후배와 관련된 기억들은 유사한 이미지를 가진 다른 이의 것이었음을 점차 알게 되고 나중엔 그 이미지조차 원래 그 후배의 이미지가 아니었는데 기억 속에서 바꿔치기되어버렸음을 발견한다. 강렬한 위조였음을... SW 기술의 기억도 다르지 않다. 흔히 지식이라고 부르는 것들이라고 뭐 특별히 다른 방식의 기억소에 저장하는 것이 아니니까.. 중요한 지식, 선입견들 중 첫 인상이 강렬했던 것들은 강력한 방식으로 위조되는 경우가 많다. (난 절대 이런 기억의 정확성을 두고 내기를 하면 안된다 ㅠ) 그런데 어떻게 뇌는 이 수많은 기억들을 미묘한 느낌의 코드로 분류하여 저장하는 것일까? 그 메커니즘은 알수 없지만 기억력과 관련해서는 보통 매우 차분하게 몰입되는 경우가 가장 오래 남고 극도의 긴장 상태에서는 매우 짧은 기간 유지되는 기억 효율이 매우 높은 것으로 알려져있다. 이 사실은 차분할 때 작은 느낌의 차이까지 기억할 수 있고 장기 기억화될 여지가 많다는 뜻이 아닐까? 기억 능력과 아하 현상(a-ha effect, eureka effect)은 직접적인 연관이 없어보이지만 기억에서 차지하는 무의식(인지하지 못하는 뇌의 활동)과 느낌으로 표현할 수 있는 기억의 끄집어냄(검색?) 방식을 보면 유사한 메커니즘일 수 있을 것 같다. 다만 기억은 위조하여(!) 끄집어내는 것이고 아하 현상은 비슷한 것들을 무의식이 총합하여 추천한 것들 중에서 솟구쳐올리듯이 처리한다고나 할까! P.S A-ha 현상이 실재하는

코딩 잘하는 법에 대한 단상

글쓰는 법에 대한 가이드는 있어도 코딩하는 법에 대한 가이드는 보지 못한 것 같다. 글을 쓸 때에도 탑다운으로 (워드의 개요 모드outline mode 활용할 때처럼) 쓸 때와 글 가는 데로 붓 가는 데로 쓸 때가 다르듯이 코딩도 유사함을 가지고 있다. 논리적 설계와 아키텍처의 중요성을 강조하다가 막상 아키텍처 설계가 일단락되어 실제 코딩 단계로 넘어가면 어쩔줄 몰라하는 친구들이 있다. 물론 코딩 못하는데 설계만 아주 잘하는 건 일반적으로 가능한 이야기는 아니고 이런 이들의 설계는 구멍들이 있거나 현실성이 부족한 경향이 있다. 코딩을 설계를 기반으로 topdown 방향으로 진행하려면 인터페이스나 메소드 시그너처 혹은 커멘트 등을 통해 계속 논리 진행을 코드화해나가야 한다. 아주 디테일한 구현을 하나씩 해나가면서 그야말로 코드 가는 데로 하는 방식은 코드 몰입이 좋을 때 별다른 문제없이 잘 된다. 하지만 디테일 코딩을 하기에 논리적 분량이 많고 여러 가지 고려할 경우의 수가 많은 경우는 메소드 시그너처를 먼저 작성하고 (여의치 않은 경우 소스코드에 커멘트로 디테일 계획을 적어둔다) 디테일은 하나씩 채워나가는 형태가 더 효율적이다. 한마디로 코딩할 땐 구현해야할 모든 걸 코드에 반영하는데 한꺼번에 다 상세 구현으로 반영할 수없는 부분은 윤곽만 코딩하는 것이다. 이것은 그림을 그리는 과정과도 유사하다. 기본 스케치를 먼저 하는 것은 설계 후 주요 인터페이스 시그너처를 정의하는 것이라 볼 수 있고 실제 상세 터치는 어떤 부분은 아주 세밀하게 한번에 그리고 어떤 부분은 윤곽부터 조금씩 구체화하는 방식을 사용한다. 대부분 두 가지 방식이 모두 사용되어야 효율적인데 한번에 상세로 그리는 집중력이 필요한 부분은 그렇게 하고 생각이 끊어지는 여러 부분들은 그 포인트만 먼저 윤곽을 잡는 식인 것이다. 스스로 코딩도 하지만 멤버들의 교육과 성장을 함께 고민하면서 스스로에게 여러 가지 실험을 하게 된다. 논리적 사고의 방법, 창의 도출의 방법, 설계의