창의성과 경험에 대한 이야기를 해볼까 합니다.
“바둑 신동은 있어도 장기 신동은 없다!?”
어느 분야든 전문가가 되려면 자신만의 독창적인 스타일(창의성)과 다양하고 깊은 경험이 필요하기 마련입니다.
즉, 창의성과 경험이 모두 중요하다는데는 이의가 없습니다.
하지만 분야에 따라서는 둘 중 어느 하나가 더 중시되는 경우가 있습니다.
(둘 중에 뭐가 더 좋고 나쁘다가 아니라 둘의 성격은 이런 식으로 다르다는 뜻입니다.)
바둑과 장기
먼저 바둑을 보겠습니다.
바둑 게임이야 워낙 유명하니 따로 설명은 드리지 않겠습니다.
제가 바둑게임에서 주목하는 부분은 그 게임방법에 있습니다.
처음에 아무것도 없는 바둑판 위에 돌을 하나하나 두면서 플레이 해나가지요?
즉, 바둑게임은 빈 곳에다 뭔가를 만드는, 무에서 유를 창조하는 게임입니다.
단순한 게임 형태에서 오는 무한의 자유도가 있습니다.
어디에 어떻게 돌을 놓을지는 사람마다, 게임마다 매번 틀려집니다.
이창호, 이세돌 같은 사람들은 어려서부터(10대) 천재소리를 들으며 바둑계를 주름잡은 사람들입니다.
분명 바둑 전문가 중에는 이창호, 이세돌 보다 훨씬 오랜 기간(30년 이상) 바둑을 두어오신 분들이 계십니다.
즉, 그런 분들도 경험적으로는 이창호, 이세돌 보다 못하지 않다는 것이지요.
그렇지만 실제 바둑 대회에서 이창호, 이세돌 같은 신동들이 상을 휩쓸었던 이유는 분명 경험 외에 자신만의 독창적인 바둑세계를 가지고 있었기 때문입니다.
즉, 바둑 신동들은 남들과 다른 자신만의 창의적인 바둑을 두었기 때문에 승승장구 할 수 있었던 것입니다.
따라서 바둑은 경험보다는 창의성이 더 중요한 분야라고 말 할 수 있을 것입니다.
반면에 장기는 어떨까요?
장기라는 게임은 다양한 형태의 장기알과 장기판으로 구성되며, 게임 방법은 바둑과 비교하여 복잡합니다.
바둑과 달리 장기는 처음에 정해진 규칙대로 장기알을 배열한 후 시작하며, 도중에 장기알을 추가할 수 는 없습니다. 오로지 시작할 때 가지고 있던 장기알 만으로 게임을 진행하게 됩니다.
또한 장기게임의 첫 수는 게임마다 서로 비슷합니다. (끄트머리의 졸을 옆으로 이동하여 차의 길을 확보하고, 말을 올려 포를 궁앞에 배치하는 형태입니다.)
즉, 장기는 어떤 정해진 틀 안에서 제한된 장기알을 가지고 정해진 규칙대로 움직이는 것이지요.
따라서 게임의 자유도가 제한적입니다.
장기라는 게임은 많이 해본 사람이 무조건 이길 수 밖에 없습니다.
왜냐하면 제한된 자유도를 가졌기 때문에 플레이 패턴(정석)을 다 외워버리면 어떤 상황에서도 다음에 이어지는 패턴이 머리속에서 훤히 그려지기 때문이지요.
그래서 장기 고수들을 보면 대부분 연세가 지긋하신 분들이십니다.
따라서 장기라는 게임은 창의성 보다는 경험이 더 중요하다고 볼 수 있습니다.
* 몇 년 전에 IBM 의 DeepBlue 라는 컴퓨터가 세계 체스 챔피언을 이긴 사실을 두고 신문기사에서는 “드디어 컴퓨터가 사람을 넘어섰다.” 라고 호들갑을 떨었던 적이 있었습니다. 제한된 자유도를 가진 게임이라면 사람은 절대 컴퓨터를 이길 수 없습니다. 모든 경우의 수를 데이타베이스에 입력 후 최적화된 쿼리 알고리즘을 이용하면 사람과 비교할 수 없는 연산능력을 가진 컴퓨터가 이기는 것은 당연한 일이지요. 하지만 창의성이 요구되는 (만들어 가는 형식의) 바둑 게임은 경우의 수 자체가 없기 때문에 컴퓨터가 감히 사람에게 이길 수 없는 것입니다.
프로그래밍과 리버싱
프로그래밍은 무에서 유를 창조한다는 의미에서 바둑게임과 비슷하다고 할 수 있습니다.
바둑 게임과 같이 프로그래밍이라는 것은 뭔가(프로그램)를 만들어내는 과정입니다.
만든다는 행위 자체에 이미 창의성의 개념이 포함되어 있지요.
프로그래밍 방법에서도 창의성이 요구되며, 그 결과물도 창의성이 크게 요구됩니다. (이미 존재하는 프로그램과 똑같은 프로그램을 만들어 봐야 크게 팔리지 않을 것입니다. 뭔가 다른 독창적인 요소가 있어야 사람들이 좋아하겠지요.)
따라서 프로그래밍은 창의성이 좀 더 중시된다고 말할 수 있습니다.
그렇다면 리버싱은 어떨까요?
이미 만들어진 프로그램을, 이미 존재하는 도구와 방법을 사용해서 분석한다는 개념으로 본다면 리버싱은 분명 장기 게임과 비슷하다고 할 수 있습니다.
또한 리버싱은 많이 해본 사람이 더 잘한다는 점에서 장기 게임과 유사합니다.
즉, 프로그래밍 신동은 있어도 리버싱 신동은 없다고 할 수 있지요.
이 말을 바꿔 말하면 아래와 같이 말 할 수 있습니다.
“내가 비록 천재가 아니지만, 열심히 노력한다면 리버싱 고수가 될 수 있다.”
네, 프로그래밍 고수가 되기 위해서는 다분히 창의성이 크게 요구됩니다. (물론 어떤 분야건 간에 창의성이 높으면 우수한 성과를 낼 수 있지요.)
하지만 리버싱 고수는 누구나 마음만 먹으면 될 수 있답니다.
+--+
Reverse Code Engineering 분야에 몸 담으신 여러분!!!
비록 처음에는 배울 것도 많고 실력도 별로 늘지 않는 것 같다고 생각되겠지만 위에서 설명 드린 바와 같이 리버싱 분야는 노력한 만큼 정직하게 성과가 나타나는 분야입니다.
계속해서 지금처럼 열심히 노력하세요. 성과가 나타나기까지 단지 시간이 필요할 뿐입니다.
www.ReverseCore.com 은 대한민국에 훌륭한 리버서가 많아질 수 있도록 작은 힘을 보태도록 하겠습니다.
모두 힘내세요! 화이팅!!! ^^
'column' 카테고리의 다른 글
| 책소개 (82) | 2010/09/06 |
|---|---|
| 리버서의 연륜을 말해주는 Opcode Manual (23) | 2010/08/31 |
| 리버싱의 참 맛 (18) | 2009/12/04 |
| UPack 의 추억 (8) | 2009/09/21 |
| DDoS 사이버 테러의 3대 의혹 (누가? 왜? 어떻게?) (8) | 2009/07/10 |
| 창의성과 경험 (바둑과 장기, 프로그래밍과 리버싱) (22) | 2009/06/29 |
| Packer 와 Protector (9) | 2009/06/23 |
| 악의적인 목적으로 사용되는 키로거 (KeyLogger) (13) | 2009/05/21 |
| 좋은 분석 도구(tool)를 선택하는 5 가지 기준 (5) | 2009/03/18 |
| Reverse Code Engineering (2) (14) | 2009/02/28 |
| Reverse Code Engineering (1) (18) | 2009/02/25 |
