아는 녀석 중에 고기 굽기 달인이 한 명 있다. 우리끼리 만나면 항상 고기 굽는 일은 녀석이 전담하는데, 굽는 솜씨가 정말 일품이다. 토욜에도 만나서 고기를 먹었다. 셋이서 먹는데 당연히 고기 굽는 일은 녀석이 했다. 대충 다 굽고는 이제 먹어라, 하는데 나랑 옆에 있던 형이랑 둘이서 그냥 감동의 눈물을 흘렸다. 평소에도 고기를 잘 굽는다는 것은 알고 있었지만 그 날 따라 유달리 더 잘 구운 것 같아 보였기 때문이었다. 그래서 옆에 형이랑 둘이서 호들갑을 떨면서 인증샷을 찍었다. 맛은? 당연히 일품이었다.
고기굽기 만렙의 위용. 어떤 분야든 우리는 장인의 작품을 대하면 감탄하게 된다.
사진을 찍어놓고는 집에와서 면면히 들여다보니 과연 녀석은 고기 굽기에 있어서는 장인이란 생각이 들었다. ㅋㅋ~ 그 크기의 균일성하며 절단면의 일관성. 섬세하게 발라낸 오도독뼈. 적당한 강도로 굽힌 고기 덩어리들. 그리고 완벽한 배치. 더 심각한건 녀석은 어느 정도는 자신의 고기 굽기에 대해서 철학을 가지고 있다는 점이다. 녀석이 제일 싫어하는 행위는 다 굽지 않았는데 먼저 먹는 것이다. 자신이 판단했을 때 익지 않았는데 손대면 심하게 혼난다 ㅋ~
사진을 보면서 감탄하다가 문득 장인에 관한 이야기를 좀 해보고 싶다는 생각이 들었다. 장인이란 어떤 사람일까? 또 장인이 되려면 어떻게 해야 할까? 난 프로그래밍도 하나의 예술 행위로 간주하기 때문에 장인정신이 무척 중요하다고 생각한다. 그래서 이런 질문들은 나에게는 다소 엄숙하기도 하고 근엄하기도 한 질문들이다. 이 질문들이 정답이 있는 것도 또 정답을 찾는 것이 쉬운 문제들도 아니지만 편하게 요즘 내가 생각하는 장인에 대한 이야기를 좀 해볼까 한다. 맞다. 모두 다 개똥 철학이다. ㅋ~
#0
XIGNCODE 로그 파일을 설계할 때였다. 로그 파일을 만드는 일이 뭐 대단한 일이냐고 생각할 수 있다. 사실 뭐 정말 아무것도 아닌 일이다. 숙련된 개발자라면 한두 시간 코딩하면 쓸만한 로그 파일 구조를 만들어 낼 수 있다. 더욱이 난 많은 업체에서 다양한 형태의 로그 파일을 수도없이 만들어 보았다. 그렇게 늘 반복적으로 했던 일임에도 XIGNCODE 로그 파일을 설계할 때는 정말 많은 생각을 했다. 그리고 그 생각들은 그 전까지는 내가 전혀 해보지 않은 것들이었다.
가장 고민을 많이 한 생각은 이거였다. 과연 로그 파일의 크기는 얼마여야 하는가? 어느 정도 크기면 사용자들이 부담없이 로그 파일을 전송할 수 있을까? 압축이란 과정을 통하지 않고도 보내기에 적당한 크기는 얼마일까? 또 어느 정도 크기여야 우리가 그 로그 파일로부터 의미있는 정보들을 충분히 얻을 수 있을까? 사용자의 심리적 바운더리와 우리가 체험하게 될 유용성의 바운더리 사이에서 최대 값을 찾고 싶었던 것이다. 난 로그 파일을 설계하는 것보다 이 아무것도 아닌 문제에 대해서 더 오랜 시간 고민했다.
그렇게 많이 고민했음에도 로그 파일에는 빈틈은 많다. 난 틈만나면 로그 파일을 새롭게 설계하고 싶은 욕망에 휩싸이곤 하지만 다른 바쁘고 중요한 일들에 치여 로그 파일은 늘 제자리다. 그런 실수들 중에서도 명백하게 내가 가장 제일 잘못했다고 생각하는 한 가지 실수가 있다. 명백히 잘못했지만 아마 영원히 바로 잡긴 힘들것 같은 실수다. 뭘까? 바로 확장자다. 난 로그 파일이라 별 생각없이(<= 장인이 되기엔 아직 한 십만년 더 멀었다는 사실에 대한 고백) log라는 확장자를 채택했다. 그런데 이게 왜 문제일까?
윈도우 정책과 결합하면 놀라운 문제가 된다. 확장자가 숨겨지기 때문이다. 윈도우 탐색기 기본 옵션은 알려진 확장자 숨김이기 때문이다. 따라서 그 옵션을 끄기 전까지 사용자들은 xigncode.log 파일을 보내 주세요, 라고 말해도 그 파일이 없어요, 라고 대답하게 되는 것이다. 치명적이다. 근데 그 확장자가 더 치명적인 두 번째 사실은 윈도우 기본 옵션이 log 파일을 노트패드에다 연결해 놨다는 점이다. 당연히 우리 파일은 암호화된 바이너리 파일이다. 흙~ 노트패드로 열었다. 실수로라도 고쳐서 저장하는 경우에는 말짱 황이다. 유저들이 그런 로그를 보내는 경우도 종종있다.
로그 파일 설계에 대한 이야기를 하고 싶었던 건 아니다. 내가 이야기하고 싶었던 것은 이전에 다른 제품을 만들 때에는 전혀 신경 쓰지도 않았던 것들에 대해서 많은 부분 신경을 쓰게 됐다는 점이다. 또 이전에 만든 제품들이라면 전혀 문제라고 생각지도 않았을 것들에 대해서도 문제라고 인식한다는 점이다. 누구도 말하지 않았고, 누구도 신경쓰지 않는데도 말이다.
#1
XIGNCODE의 기반 구조를 변경시킨 드라마, 브레인
언젠가 브레인이란 드라마에 심취해서 본방 사수하면서 보던 때가 있었다. 히로인으로 나온 최정원씨도 이뻤지만 신하균씨의 연기가 정말 일품인 드라마였다. 발연기 하는 장면을 연기하는 모습이 얼마가 간지던지 ㅋㅋ~ 여튼 그 드라마를 다 보고는 그런 생각이 들었다. 어쩌면 내가 만드려고 하는 시스템이 뇌랑 비슷한 건 아니었을까, 라는 생각. 소프트웨어로 구성된 독립적인 시스템은 모두 그렇지만 게임보안도 하나의 완성된 계를 이룬다. 각각의 기능들이 있고, 그 기능들은 서로 협력해서 하나의 큰 기능을 만들어 낸다. 그래서 그런 생각을 했다. 아, 뇌를 만들어야겠다. 마치 뇌의 뉴런들이 신경 전달 물질을 통해서 정보를 주고 받는 그것처럼 말이다.
브레인이 끝나던 밤에 난 우리 코드에 IBrain이란 객체를 추가했다. 또 INeuron을 추가했다. 그리곤 일부 핵심 기능들을 그 INeuron으로 대체했고 IBrain에 추가했다. 그랬더니 놀라운 일이 벌어졌다. 그 300줄로 안되는 코드로 이전에는 아주 복잡하고 지저분하게 구현했던 것들이 깔끔해지는 놀라운 현상을 목격한 것이다. 뉴런 간 크로스 체크를 더욱 은밀하게 할 수 있었고, 동일한 기능을 하는 뉴런이 여러 개 있다면 가장 우수한 뉴런을 선택해서 기능을 수행할 수도 있게 되었다.
300줄도 안되는 객체를 만든 것을 두고 호들갑을 떨려던 것은 아니다. 내게 이 사건이 놀라웠던 이유는 드라마를 보면서 내가 그런 생각을 했다는 점이다. 단지 그게 신기했다. 어쩌면 난 드라마를 보는 동안에도 우리 제품을 어떻게하면 더 좋게 만들지를 고민하고 있었는지도 모른다. 무의식이 의식을 지배하는 그것처럼 말이다.
#2
미켈란젤로에 관한 일화 중에 이런 이야기가 있다. 그가 천장 벽화 작업을 하고 있을 때 였다. 아래에서는 보이지도 않는 구석까지 그가 신경써서 다듬는 것을 보고는 조수가 그에게 잘 보이지도 않는 부분까지 왜 그렇게 신경을 쓰냐고 물었다. 미켈란젤로가 말한다. 내가 보잖아.
미켈란젤로의 서명이 있는 유일한 작품이자 그의 처녀작, 피에타
지금까지 이야기하려던 장인의 모습이 바로 미켈란젤로다. 난 어떤 기능의 숙련됨의 정도가 장인을 나타내는 지표는 아니라고 생각한다. 진정한 장인이냐 아니냐는 어떤 행위를 얼마냐 잘하느냐가 아닌 그 행위를 하는 그의 태도에 달려 있다고 생각한다. 어떤 창조물이 사람들을 감동시키는 것 또한 그것이 얼마나 잘 만들어졌냐 아니냐를 떠나서 그걸 만드는 동안에 그걸 만든 사람의 태도가 어땠느냐에 따른다고 생각한다. 모든 창조물에는 반드시 창작자의 애티튜드가 반영될 수 밖에 없다고 믿기 때문이다. 사람들이 말하는 혼이 담긴 작품이란 말도 그런 맥락일 것이다.
#3
프로그래머를 시작하던 그 시절 난 장인은 아니었다. 그 때 난 지금보다 훨씬 더 유명한 제품을 만들기도 했었고, 훨씬 더 돈을 많이 버는 제품을 만들기도 했었고, 훨씬 더 기술력이 뛰어난 제품을 만들기도 했었다. 하지만 난 장인은 아니었다. 그저 한 명의 회사원이었고, 프리랜서였다. 그랬던 내가 지금은 장인이라고 떳떳하게 말하고 다닌다. 어떻게 그럴 수 있는 것일까? 단지 경력이 좀 됐기 때문일까? 절대 아니다. 그렇게 말할 수 있는 이유는 바로 지금 만드는 제품이 제품이 아닌 작품이 돼 버렸기 때문이다.
세상이 좀 더 편평하고 공정해져야 한다고 생각한다. 하지만 오프라인 세계에서 그런 세상을 만들기 위해서 내가 할 수 있는 일은 솔직히 거의 없다. 거대한 권력을 가진 것고, 큰 힘을 가진 것도, 많은 부를 축적한 것도 아니기 때문이다. 하지만 온라인 게임 세상에서는 다르다. 난 온라인 게임 세계에서 공정성을 해치는 많은 장애물들을 제거할 수 있고, 또 온라인 게임 세계를 경험하는 많은 이들에게 오프라인 세상보다는 공정한 세상을 보여줄 수 있는 힘이 있다. 그래서 난 이 일이 재미있고, 또 더 잘하고 싶다. 좋은 게임보안 제품을 만들고 싶고, 당당하게 그 제품에 내 크레딧을 달고 싶다. 부끄럽지 않은 제품을 만들고 싶다. 그러니 당연히 남들이 신경쓰지 않는 부분도 내가 본다는 생각으로 만들 수 밖에는 없다. 이건 내 꿈이고, 내 작품이기 때문이다. 이게 바로 내가 스스로 장인이라 떳떳하게 말할 수 있는 이유다.
#4
좋아하는 학교 선배가 한 명 있다. 마계촌 온라인을 개발하면서 이제는 너무 유명해져 버린 형이다. 지난 마계촌 글에도 썼었지만 그 형은 내가 아는 사람들 중에 몇 안되는 진짜 장인이다. 왜냐하면 그 글에도 나타난 것처럼 형은 자신이 만드는 작품을 학교 수업시간에도 들고와서 진지하게 고민했기 때문이다. 장인이 아니라면 절대 그렇게 할 수 없다. 선우 형이 몇 해 전 쓴 글 중에 내가 참 좋아하는 글이 있다. 아래 글은 그 글에서 발췌한 것인데 다시 읽어도 정말 멋있는 문장이다.
다시 돌아와서 간단히 말하자면
회사에서의 자기 업무가 곧 자신의 작품이자 자신의 꿈이라면
업무시간이라는 것은 아무 의미가 없습니다.
저의 인생 모든 시간이 곧 제 작품을 만들기 위한 시간이니까요.저의 팀원 모두가 같은 생각이었으면 좋겠습니다.
게임 개발자도 creator 입니다.– 마계촌 온라인 개발자 황선우
우리는 태어날 때 모두 장인이었는지도 모른다. 단지 사는 동안 하루 살이에 치여 모두가 장인이었다는 사실을 잊어버린 것이다. 그러니 우리가 장인이 되는 법은 복잡하거나 어렵지 않다. 단지 그 잊어버렸던 꿈을 다시 찾기만 하면 된다. 자신의 꿈을 향해 가는 동안 우리 모두는 저절로 장인이 될 수 밖에는 없기 때문이다.