http://deadlink.pe.kr/tt/index.php?pl=34&ct1=3 로부터 트랙백되었습니다.
제가 정보처리기능사 2급을 획득한 것은 1990년, 즉 중학교 1학년 때였습니다. 그 때 기능사 공부를 하면서 느낀 것은, 적어도 필기의 경우에는 과연 이것이 시험을 볼 만한 가치가 있는 것인가 하는 점이었습니다. 특히나 수학 부분에서 단순 암기로 모든 것이 해결되는 부분에서는, 시험 치기 전까지는 그래도 다행이라고 생각했지만, 지금에 와서는 참 무의미한 문제들이었다는 생각이 듭니다. 중 1이 단순 암기로 맞출 수 있는 수학 문제를 시험문제로 제공한다면 그것이 자격증으로서 무슨 가치가 있을까요? 적어도 그 자격증을 따기 위해 필요한 수학 실력은 정상적으로라면 고등학교 수힉 과정을 거쳐야만 하는 것이었는데 말이죠.
고 2 때 전국 컴퓨터 경진대회에 나가 본 적이 있었습니다. 예선을 그럭저럭 통과하고 본선에 나갔는데, 시험이 참으로 압권이었습니다. 상당히 까다로운 수준의 5문제를 던져주고, 그것을 2시간 내에, 자신이 가져온 컴퓨터를 가지고 원하는 언어로 풀어보라는 것이었습니다. 지금 기억나는 두 문제만 간단히 말씀드리면, 32비트 이상의 범위를 지원하는 사칙 연산을 수행하게 만들라는 것이나 (당시 막 32 비트 CPU 가 등장했던 시절이었으므로, 대부분 int 는 16비트, long 은 32비트였습니다) 주어진 숫자를 크기로 하는 마방진을 만들고, 추가로 방향과 회전수를 입력하면, 회전하는 과정과 방향을 보여주라는 것이었습니다. 그걸 기억한 이유는, 그나마 제가 풀 수 있는 쉬웠던 두 문제였기 때문이죠. ^.^.. 다른 세 문제는 더욱 어려웠습니다. (간단한 장부 어플리케이션 만드는 것도 문제에 있더군요 -_-) 확신할 수 있는 것은, 지금 웬만한 대학 갓 졸업한 경험없는 프로그래머에게 맡기면 시간 내에 못 풀 문제들이 태반이었다는 것이죠.
기능사 이야기와 경진대회 이야기를 같이 꺼낸 이유는, 국가의 자격증을 획득하는 기능사 시험이 일개 컴퓨터 경진대회에 비해 '프로그래머의 자질' 을 판단하는 데에 있어 훨씬 미흡한 구성을 가졌기 때문이었습니다. 물론 정보처리 기능이라는 것은 단지 '프로그래밍으로 해결할 수 있는 해법을 찾는 능력' 만을 말하는 것은 아니기 때문에, 경진대회의 방법이 완전한 해결책이라고 볼 수는 없습니다. 하지만 적어도 제 생각에는 그 능력을 묻는 데에 있어서 좀 더 훌륭한 방법을 평하라고 한다면 단연 후자가 될 것입니다.
컴퓨터 프로그래머로서의 자질을 묻는다는 것은 결코 쉬운 일이 아닙니다. 이는 프로그래머가 자신의 자질을 표현할 수 있는 것이 단지 지식의 암기를 바탕으로 한 1차적인 해법이 아니라, 상황과 조건에 맞추어 주어진 지식을 복합적으로 찾아가야만 하는 다차원적인 해법을 요구하기 때문입니다. 게다가 컴퓨터 분야의 특성상, 밑바탕을 이루는 '암기하는 지식' 은 매우 빠른 속도로 변화되어 나갑니다. 따라서 컴퓨터 프로그래머의 자질을 판단하기 위해서 이를 판단하는 것은 별다른 의미가 없습니다. 그나마 밑바탕을 이루게 되는 '암기하는 지식' 의 대부분을 연구하고 사용용함을 증명할 수 있는 자격은 이미 대학의 각 분야 학문에 대한 '석사' 와 '박사' 로서 존재하고 있기 때문에 더욱 프로그래머로서의 자질을 판단하는 방법은 제한되게 됩니다.
결국 이런 자격증을 가치 있는 물건으로 만들기 위해서는 애당초 '자질을 묻기 위한 방법' 에 '해결하는 과정' 을 묻는 비중을 높이고 이를 위하여 굉장한 자원을 투자해야만 합니다. 전술했던 경진대회 스타일의 방식을 그대로 사용한다고 가정해도, 그 문제를 만들어내고, 그것을 감독, 평가하는 데에는 지금보다 몇십 배의 자원을 투자해야만 합니다. 단지 특정 학교에 가서 연필로 굴리는 시험문제를 만들기 위해 기껏해야 몇 년 기준으로 출제문제를 바꿔 주는 수준에서는 현재 프로그래머들이 평가하는 자격증 시스템을 벗어나지는 못할 것입니다. 사실 이는 단지 국가 자격증 문제뿐만이 아니라 컴퓨터 전반의 자격증에 걸친 문제이기도 합니다. Eternal Dream 개발 시 같이 일했던 형은 1-2년들 거쳐 MCSE 를 비롯, 각종 유명한 MS, SUN, ORACLE 의 자격증을 모두 땄지만, 정작 그 자격증을 따기 위해 공부한 것들이 실무에 와서는 아무런 도움도 되지 못한다고 성토한 적이 있습니다. 이는 현재 자격증 시스템이 가진 문제 (단지 자격 뿐만이 아니라 그 자격을 따기 위해 학습하는 과정 전체에 걸친) 를 여실히 드러내는 말이라고 볼 수 있겠습니다.
이제 게임 프로그래밍 전문가 자격증으로 돌아가볼까 합니다.
게임 프로그래머는 일반적인 컴퓨터 프로그래머, 혹은 그 이상으로 분야가 세분화되어 있습니다. 그래도 패키지와 콘솔 게임 시절에는 Graphic 과 UI 처리 및 알고리즘 구현 정도로 제한되었지만, 시장이 온라인으로 바뀌면서, 엔터프라이즈 시장과 겹치는 범위까지 개발분야가 넓어져버리고 말았습니다. 분산 처리 시스템, 네트워킹, 보안, 프록시 정책 등 거의 모든 컴퓨터의 전반적 분야가 게임 개발이라는 하나에 뭉쳐 있습니다. 문제는 그런 세분화된 분야들이 모두 한 덩이로 통채로 움직인다는 점과 더불어 게임 프로그래머가 같이 일해야 하는 이들은, 그래픽 아티스트, 사운드 디자이너, 시나리오 라이터, 기획자 등 컴퓨터와 직접적으로 관련이 없는 사람들과도 같이 일해야 한다는 점입니다.
이것이 문제가 되는 것은, 이렇게 컴퓨터 분야 외의 사람들이 같이 현업에 실시간으로 참여하고 있기 때문에 예측할 수 없는 굉장히 복잡한 사항들이 시시각각으로 프로그래머들에게 던져진다는 것이며, 더욱이 이런 사항에 따른 대안을 제시해 주어야 하기 떄문입니다. 따라서 게임 개발자는 말단 프로그래머부터 팀장까지 모두 자신이 가진 능력에 대해 정확히 파악하고, 처리할 수 없는 항목에 대한 다른 해법을 제시할 능력을 갖춰주어야만 합니다. 더불어 임기응변적 해법은 매우 중요한데, 이는 게임의 프로그래밍 스타일이 일반적인 소프트웨어 개발과는 반대로, 가독성을 떨어트리더라도 가능한 최대한 최적화하는 방향으로 맞추어지는 것이 다반사이기 때문에 지금 이 상황에 맞는 최적화가 무엇인지를 판단하고, 이것이 가독성과 대치할 만큼의 가치를 가지고 있는지를 파악하는 것까지 수행해 주어야만 합니다.
더불어 게임 프로그래머의 플랫폼은, 온라인 게임의 서버 개발자가 아닌 이상 굉장히 빨리 바뀌게 됩니다. 콘솔에서는 길어야 5년이고, 다음에 바뀌는 하드웨어는 이전과 대부분 전혀 판이한 형태를 가지게 됩니다. 게임 개발은 특히 최적화에 굉장히 많은 비중을 두기 때문에 개발사들은 이에 대한 노하우를 쌓기 위해 거의 새로 노하우를 쌓아야만 합니다. 오죽하면 MS 가 XNA 를 사용할 경우 어플리케이션 개발비율을 80% 에서 20% 로 줄일 수 있다고 했을 정도였을까요...
그런 이유로, 게임 프로그래머 자격증이라는 것이 특히 다른 자격증에 비해 더욱 경시되었던 것일지도 모르겠습니다. 특히 국내의 게임 프로그래머 부분은 언제나 고급 인력난에 시달리고 있는 만큼, 바쁜 일정에 굉장히 쪼달리고 있으며, 따라서 노하우를 쌓아야 할 인재보다는 당장 현업에서 DirectX API 를 한 줄이라도 더 잘 사용할 수 있는 사람이 필요한 상황입니다. 따라서 자격증에서 그 자격을 판별하기 위해 보는 지식이 현업에서는 거의 무의미하고, 그 때문에 개발자들이 자격증에 대해서 눈을 돌리지 않게 되는 것이죠. 심지어는 그 묻는 지식들이 게임 개발에 필요한 매우 핵심적인 요소들이라고 하더라도 말입니다.
만약 MS 의 XNA 같은 플랫폼이 도입되고, 개발자들이 더 이상 시간에 쪼달리지 않게 된다면, 게임 프로그래밍 자격증이 묻는 자격의 수준이 충분했을 때 비로소 그 자격증이 의미를 가지게 될 것입니다. 하지만 그러기 위해서는 현재 게임업계도, 그리고 게임 프로그래밍 자격증 시험도 넘어야 할 산이 너무 많은 것이 현실이네요.