프로그램 작성시 구동 로직을 인식하고 못하고의 차이


 위 그림은 '죠죠의 기묘한 모험'에 나오는 악역인 디오 브란도 입니다. 이 디오는 죠죠라는 만화에서 특이한 위치를 차지하는 악역입니다. 심지어 죠죠가문 3대째에 이르는 악역이기도 합니다. (혈통으로는 4대째이지만) 잔혹하고 무자비하지만 부하들에게는 공포로 또는 위엄으로 군림하고 상당한 힘을 가지고 있는데도 불구하고 힘으로만 밀어 붙이는 타입도 아니고 상당히 간교합니다. 뭐 자세한 건 직접 보시면 되고 '죠죠 3부'에 나오는 디오는 특이한 능력을 가지고 있습니다. 시간을 멈추는 능력을 가지고 있는 스탠드 (더 월드 라고 합니다)를 활용해서 기술을 쓰는데, 주인공 파티가 그 능력을 파악하지 못하고 속수무책으로 당합니다. 그러다 한 파티원이 혹시 시간을 멈추는 것이 아닐까 라는 내용을 주인공한테 전달하고 주인공(쿠죠 죠타로)은 시간을 멈춘다는 능력을 '인식'하는 순간 '더 월드'의 능력은 더 이상 속수 무책의 능력이 아니게 됩니다. (사실 그 연유는 길고도 긴 사연이지만..) 

  길게 사설을 늘어 놓은 이유는 바로 '인식'에 관한 이야기를 하고 싶어서 입니다. 길고 긴 세월동안 프로젝트를 진행하며 수 많은 프로그램을 만들어오면서 만들어야 하는 것이 어떤 것인지 인식하지도 못하고 만들었던 적도 많습니다. 재밌는 것은 그러한 인식없이 만들기 시작하다 보면 만들면서도 뭐를 어떻게 해야 하는지 전혀 감이 안온다는 것입니다. 그렇지만 그런 상태에서 조금 더 이해하기 위해서 노력을 기울이다 보면 어느덧 만들어야 하는 것이 어떠한 원리로 돌아가는 것이고 왜 그런 방식으로 만들어야 하는지 명확하고 '단순'하게 인식될 때가 있습니다. 그런 그 순간이 복잡했던 프로젝트가 단순해지며 오픈소스를 쓰고 있더라도 어떤식으로 응용해야 할지 명확하게 드러나는 순간입니다. 안타깝게도 이러한 '인식'의 순간을 빨리 맞이하는 것은 연차가 짧을 때는 잘 되지 않았습니다. 이런 저런 전산적인 경험을 쌓고 나서야 (그럼에도 불구하고 순식간에 인식을 맛보는 것은 아직까지 가능하지가 않더군요..) 가능해 지더군요. 이러한 인식의 순간이 경험과 상관없이 빠르게 맞이하는 존재들을 세상에서는 천재라고 부르는 것이겠지요. 

  어렵고도 잘 이해가 안되는 프로젝트를 진행하고 있거나, 역시 비슷한 정도로 어려운 오픈소스를 파고 있다면, 아직 인식의 순간이 오지 않았기 때문에 어렵다고 생각하시면 될 것입니다. 그래도 조금씩 힘내서 이거 저거 '단순화' 시키려고 노력하시다 보면 갑자기 전체적인 형태가 파악되고 결국 간단한 구동 원리를 구현하기 위해서 여러가지 살을 붙이다 보니 지금 처럼 복잡하게 됐다는 것을 깨달으시게 될 것입니다. 


-- 오늘도 밤늦게 까지 개발하시는 개발자 여러분 파이팅 --