개발자와 기획자, 상생의 길

  5년전의 이야기로, 20살을 막 넘었을 시절에 조그만 벤처기업에서 휴대폰 게임을 만드는 일을 주로 하면서 병역의 의무를 대신할 수 있었습니다. 비록 컴퓨터 공학과라는 조그만 명찰이야 달고 있었지만, 학교에서 배운 것이라야 이산수학, 선형대수등의 실제 개발 업무와는 별로 관계가 없는 기초 학문들이었고 (물론 실무 경험은 있을리 없었고) 프로그래밍 경험도 고등학교 시절의 C언어 프로그래밍과 대학 들어와서 혼자 공부한 C++ 정도였다고 할 수 있는, 말 그대로 초짜중의 초짜였지요.  

  다행스럽게도 회사 전체에 제가 담당하는 파트(C++/BREW)의 인원은 한명. 즉 저 혼자였고, 이는 2년 6개월 동안 일하고 퇴사할때까지 거의 계속되어 스스로 이것저것 마음대로 실험을 해볼 수 있는 좋은 환경을 만들어 주었지요. 무엇을 해도 아는 사람도 없었고, 또 확실하게 이해할 수 있는 사람도 없었으니까 말이죠. 혼자 개발할 수 있는 환경은 커다란 축복이었다고 생각합니다. 물론 그만큼 삽질을 많이 했지만요.

  집에서 혼자서 울트라에디트 따위로 끄적대는 상황이 아닌 실제로 일을 시작하자, 가장 커다란 문제는 바로 기획자와의 커뮤니케이션이었습니다. 어떤 순서로 일을 진행해야 하는지, 어떤 말을 해야 내가 책임이 없어지는지, 어떻게 해야 일거리가 줄어드는지에 대한 지식이 없는 상태에서의 첫번째 일은 커다란 시련이었지요. 앞으로의 이야기는 2년 반동안 이 기획자와의 문제를 어떻게 해결하려 했는지에 대한 기록입니다.

  처음의 개발 환경은 기획자가 떠오르는 아이디어를 저에게 설명하고 이를 제가 구현하는 방식이었습니다. 이를테면,

 “거대 보스가 나타나서 미사일을 쏘는 걸로 해요. 체력은 전 스테이지보다 좀 높게 하죠? 2배정도. 속도도 좀 빠르게 움직여서 난이도를 좀 올릴 필요가 있는 것 같아요”

  네, 말그대로 개발자에게는 제앙과 같은 개발 방법입니다. 게다가 이 회사의 커뮤니케이션은 묘하게도 모두 사내 메신져를 통하게 되어 있었습니다. 다들 한 방에서 일하는데 말이죠. (언젠가 상사분께 여쭈어 봤더니, 모든 커뮤니케이션을 기록으로 남겨 책임 소재를 분명하게 하기 위함이라고 설명해주셨습니다.) 따라서 저 말은 직접 귀로 듣는 것도 아닌 띠리링 하는 소리와 함께 화면 오른쪽 구석탱이에서 나타나는 거였죠.

  근본적인 문제는 모든 것이 너무 추상적이라는 것이지요. 체력은 2배 남짓 높여야되고, 속도는 어느 정도로 움직여야 난이도가 올라갈까요? 아니 애당초 도대체, 난이도를 얼마나 올려야 되는거죠? 난이도를 2배 올린다는게 무슨 말인지 이해가 안가네요? .. 라고 기획자에게 따지듯이 물었으면 좋았겠습니다만, 메신져로 상대방 기분좋게 묻기 어려운 상황인데다가, 연장자셨으므로, 나름대로 합리적인 수치를 대입해서 만든 것을 열심히 수정합니다.

  이런식으로 수정본을 다시 기획자에게 보여주면, 이전의 프로세스가 다시 반복됩니다. 무슨 문제가 있다라는 추상적인 답변이 오고 또 개발자는 수정을 하고 돌려보고, 결국 만족하지는 않지만, 더 일하기는 싫어지는 상황까지 도달하면 상사에게 개발이 완료 되었다고 보고를 합니다. 마치 도량형도 없는 시대에 양팔 저울 위에서 눈 짐작으로 평형을 만드는 것 같은 작업 방식이지요.

  몇 개월 후, 이런 식의 무한 반복 작업에 지친 개발자는 기획자에게 수치화 된 기획서를 요구하기 시작했습니다. 그리고 정확한 수치가 나올 때까지는 절대 코딩을 하지 않는다고 선언을 해버린 것이죠. 불만 가득한 개발자의 말도 안되는 투정같은 이야기 이지요. 일의 양은 변하지 않는 것이, 기획자가 문서 상으로 정확한 수치를 준 이후에도 그 문서가 계속 바뀐다는 것입니다. 기획자의 머리 속에서만 돌던것이 실제로 보면 다를테니까요. 당연한 이야기입니다. 그 누가 처음부터 ‘재미‘를 수치로 표현해 낼 수 있겠나요.

  시간은 지났지만 첫번째의 무한 반복 개발 방법에서 좀 빠르게, 좀 느리게라고 표현되던 말이 2배, 0.5배가 되었을 뿐 할 일의 양은 서로 더 늘어났습니다. 오히려 기획자가 한번 보고 폐기될 문서만 양산하는데 시간이 오래 걸릴 뿐이었죠. 심지어는 얼마나 요구사항이 자주 바뀌던지 코딩 중에도 수차례 메신져가 띠링띠링하는 바람에 방해되니까 하루동안 바뀐 양을 업무 마감시간이 몰아서 달라고 할 정도였죠.

  이런 삽질을 한 일년하고 나니까, 어떻게 하면 더 빠르게 기획자가 요구하는 사항을 프로그램에 반영할 수 있을까? 를 고민하게 되었습니다. 그나마 그 와중에 쌓인 스킬을 바탕으로 전반적인 프로그램의 아키텍쳐를 최대한 테스트를 빠르게 할 수 있고 변화가 쉽도록 구축 하도록 했습니다. 기획자가 원하는 숫자의 변경이라던지, 디자인 변경이라던지, 하는 것들을 점점 매크로화 시키고, 자동화 시켜가면서 기획자가 변화를 요구했을때 변화가 반영되어서 다시 피드백이 되기까지의 시간을 단축시켜 나가기 시작했습니다.

  이러한 구조라던지, 보조적인 요소들을 극대화 시키니, 확실히 개발에는 가속도가 붙었습니다. 하지만, 만족할수는 없었습니다. 결국 이 부분은 개인적인 스킬의 발달이지 프로그램 개발 방법 전체를 뜯어고치지는 못했거든요. 여전히 기획서는 하루에도 수도 없이 변경되었고, 단지 예전에는 5시간 걸려서 수정된 기획서를 반영하던 것을 이제 1시간 걸려서 만들어 낸다는 것만 차이가 있었을 뿐입니다. 하지만, 같은 개발 기간에 조금 더 높은 퀄리티의 프로그램을 만들 수는 있었습니다. 테스트를 더 많이 해볼 수 있었거든요.

  일년 반쯤의 시간이 지나고 이제 프로그래밍 스킬상의 문제가 거의 사라졌을 무렵, 다른 방법을 찾아보기로 마음 먹었습니다. 바로 기획자가 스스로 모든 것을 다 할 수 있는 환경을 최대한 만들어 주는 것이었죠. 일단 조그만 것 부터 시작했습니다. 게임 상의 모든 수치는 기획자가 스스로 변경해서 테스트 할 수 있도록 간단한 툴을 만들어 준 것입니다. 그러자 더 이상 주인공이 너무 빨리 죽는다거나, 데미지가 너무 약하다던가, 보너스를 더 주어야 한다던가 하는 기획자로부터의 요구사항이 사라졌습니다.

  이러한 편리함에 효과를 본 저는 점점 더 많은 부분을 기획자에게 떠 넘기기 시작했습니다. 맵과 아이템을 디자인 할 수 있는 툴과 어플리케이션을 주고 기획자가 스스로 디자인한 스테이지에서 플레이 할 수 있도록 했습니다. 물론, 프로그래머의 간섭 없이 말이죠. 결국에 가서는 메뉴 구성 조차도 기획자가 직접 뜯어 고쳐가면서 플레이 할 수 있도록 만들어 버렸죠. 그러자, 더 이상 자잘한 요구들이 기획자로부터 넘어오는 일이 없었습니다. 기획자가 프로그래머에게 요구하는 일은 정말로 프로그래머가 아니면 안되는 일 뿐이었습니다.

  이러한 본인 일거리 떠넘기기에 재미를 붙인 저는 심지어는 이미지를 교체하고 디스플레이 하는 위치를 정하는 것 조차 기획자에게 넘겨버리려고 했습니다만 생각해보니 그러면 “도대체 프로그래머는 하는일이 뭐야?”라는 비평을 들을 것과 몇몇 기술적인 문제 때문에 그 단계까지 가지는 않았습니다.

  프로젝트가 시작하면 어서 빨리 이러한 툴들와 어플리케이션의 뼈대를 만든 후 기획자에게 던져버리고 저는 기획자로 부터 받을 수 있는 인풋이 제가 만든 프로그램 위에서 에러없이 플레이 되는 것을 보장하는 일과 프로그램 자체의 버그를 잡는 일에 집중했습니다. 물론 기획자 분은 왠지 일이 더 많아지고 바빠진 것 같다고 불평하셨지만, 그 것은 다름아니라 프로그래머에게 개선을 요구하고 업데이트 버젼이 돌아올 때까지의 기다리던 시간이 사라진 것이었죠.

  이러한 일처리가 가능해지면서 프로그램은 훨씬 더 견고해졌고, 게임을 테스트하는 시간은 상대적으로 훨씬 더 증가했습니다. 2년이 되어가던 무렵에 시작했던 3개월짜리 프로젝트는 결국 그 마감시한을 지킬 수 있었고, 버그도 거의 없었지요. 이전까지 버그 투성이에 연장에 연장을 거듭하면 프로젝트들에 비하면 장족의 발전이었다고 할 수 있었습니다.

  마지막으로 진행하려 했던 노력은 위의 프로젝트에 사용했던 툴들을 추후의 프로젝트에서 재사용할 수 있도록 가공하고 디자이너도 이 협력 프로젝트에 끌어들이는 것이지요. BREW 자체가 그리 복잡하지 않은 플랫폼인데다가, 늘 만드는 프로그램의 구조가 비슷했으므로, 유저 인터페이스를 모두 기획자가 직접 구성하게 하고, 이미지의 교체와 레이아웃의 변경 역시 디자이너가 직접 할 수 있게 하부의 구조와 툴을 제공하는 것이었죠. 물론 기존에 사용했던 컴포넌트들을 조금만 수정해서 구축이 가능하게 말이지요. 뭐, 간단히 말하면 기획쪽의 변경사항은 다 기획자가 직접하도록, 이미지쪽의 변경사항은 다 디자이너가 직접할 수 있도록 하는 환경을 제공하기만 하는 것이었습니다.

  비록 퇴사로 인해서 초기 테스트 단계에서 멈췄지만 그때 생각했던 철학을 완성했으면 훨씬 더 잘 할 수 있었을 텐데라는 확신은 있습니다. 언젠가 다시 그런 쪽의 일을 하게 된다면 제로에서 시작하는 것보다는 잘 할 수 있겠지요. 물론 다른 선진화된 개발 과정을 가지고 있는 회사에서라면 더 나은 노하우로 놀랄만한 스피드로 개발을 하고들 있겠지요. 하지만 저는 누군가의 도움없이 이런 일들을 스스로 했다는 것에 대해서 나름대로 자부심을 가지고 있답니다.

  (실은, 소프트웨어 공학 과목의 시험 공부를 하다가 예전 회사에 적용할 수 있는 수많은 학문적인 백그라운드를 보고는 울분에 차서 나도 나름대로 잘 했다고! 마음속으로 외치면서 쓴 글입니다. 이런 과목을 미리 공부 했었더라면 얼마나 좋았을까요. 2년 반의 삽질, 없어도 좋았을텐데;)

FTA 협상 타결과 세계화

  한미 FTA 협상이 타결되었습니다. 물론 앞으로도 많은 부분이 더 조정될 뿐 아니라 실제 실행까지는 남은 길이 멉니다. 또한 그 과정에서 수많은 찬성과 반대가 있을 것이고, 생산적인 토론과 소모적인 싸움이 반복될 것이 분명해 보입니다. 오늘자의 수많은 신문들부터 협상의 득과 실을 따지는 분석 기사를 내보내고 있고, 정치권, 시민단체들은 저마다의 목소리를 내고 있습니다. 저는 자세한 협상 내용이나, 개방 시기등에 대해서는 이견이 있을 수 있지만, 앞으로 겪게 될 이러한 일들이 더 나은 미래를 위해 반드시 필요한 과정이며, 궁극적으로는 불가피한 선택이라고 생각합니다.

  정보통신 기술의 엄청난 발달로 지구촌이라는 말조차 이제 구식으로 느껴질 만큼의 세상에 살고 있습니다. 하지만, 이 단어 속에 포함된 그 무시무시한 영향력에 대해서 잘 이해하고 준비해야 할 필요성은 조금도 줄어들지 않았습니다. 많은 다중의 의미를 내포하고 있지만, 산업의 측면에서 살펴보면, 간단히 말해 지구상에서 가장 나은 제품을 가장 저렴한 가격에 판매하는 기업이 결국 그 산업의 대부분을 지배한다는 것입니다. (우리가 착각하지 말아야 할 것은 여기서 한 국가가 지배하는 것이아니라 시장 논리에 따른 기업이라는 점입니다.) 물리적인 운송수단과 통신수단이 발달할 뿐더러 더 이상 국가라는 틀이 시장을 좌지우지 할 능력을 상실해 갈수록 더욱 더 가속화 될 것이 분명합니다.

  오늘은 인터넷에서 이러한 비유를 보았습니다. “구멍가게 밖에 없는 우리나라에 미국의 대형 할인 마트가 들어온다고 합시다. 기업의 규모나, 더 저렴한 제품을 공급하는 능력에서 우라나라의 구멍가게들은 미국의 상대가 되지 못하고 결국 치열한 가격 경쟁 속에 다 망했습니다. 이제 독점이 되어 우리나라에 하나밖에 없는 이 할인마트는 마음대로 가격을 올리는 횡포를 부렸고, 이에 한국 국민들은 울며 겨자먹기로 비싼값을 주고 물건을 구입할 수 밖에 없게 되었습니다.” 언제까지 국가 단위로 생각하는 틀에서 벗어나지를 못하셨군요. FTA와 세계화는 이러한 현상을 일으키는 것이 아니라 오히려 이러한 현상을 막기위해 하는 것입니다. 거대 할인 마트가 가격을 독점으로 올렸다고 합시다. 그러면 전세계 어딘가의 나라에서는 더 싼 가격으로 물건을 팔 수 있으니 한국시장에서 성공할 수 있다고 보고 개방된 우리나라에 진출하는 기업이 분명히 생길 것입니다.

  많은 사람들이 미국산 쇠고기가 우리나라에 수입되어서, 우리나라의 축산 농가들을 모두 망하게 하고, 나중에는 그 독과점에 의한 횡포로 가격을 올릴 것이라고 말합니다. 그게 가능할까요? 우리나라에 쇠고기를 수출하는 모든 기업들이 연합해서 가격을 담합하는 일이 가능할까요? 미국이 그렇다면, 호주산을 소비하면 되고, 호주가 그렇다면 우루과이 산을 소비하면 됩니다. 더 이상 국가와 정치논리에 의한 시장 통제가 가능한 시대는 지났다고 생각합니다.

  물론 많은 국내의 농민이 피해를 보고 경쟁에서 밀려 결국 산업에서 도태될 것은 확실합니다. 이 부분은 세계화의 과정에서 필연적으로 겪어야 할 희생으로 보입니다. 결국 낮아진 장벽은 세계에서 가장 좋은 품질의 농산물을 적은 자원으로 대량 생산할 수 있는 지역에서 농산물이 생산되도록 할 것입니다. 그리고 그것이 지구적인 차원에서 보면 옳은 이야기 입니다. 대신 그 지역의 사람들은 휴대폰이나 자동차를 수입해서 쓸 것이고 바로 그곳에 기회가 있는 것입니다.

  한국의 젊은이들 뿐 아니라 전세계 모든 젊은이들이 이공계를 기피합니다. 왜 그럴까요? 일이 힘들어서? 예, 어느 정도는 옳은 말입니다. 정답은, 세계화가 가장 먼저 이루어지고 있는 분야가 바로 첨단 기술 분야이기 때문입니다. 전 세계의 이공계인들은 이미 하나의 시장에서 경쟁하기 때문에 가장 치열한 경쟁 시장이 되었기 때문입니다. 이러한 경쟁에서는 끊임없는 자기계발과 노력 없이는 금방 도태되고 맙니다. 이러한 모습에 두려움을 느끼는 젊은이들이 이공계를 기피하는 것입니다.

  한국에서도 많은 능력있는 이공계인들이 전공을 살리기보다는 공무원 시험 준비등의 더 안정적인 직장을 준비하는 모습을 볼 수 있습니다. 바로, 경쟁이 없는 분야이지요. 이러한 모습은 FTA와 매우 닮아있습니다. 개방으로 치열한 경쟁 사회로 나아가서 세계를 상대로 경쟁하느냐, 아니면 울타리 안에서 경쟁 없이 보장되어있는 안정된 삶은 누리느냐. 지금까지는 후자의 삶을 선택해도, 훌륭한 선택이라고 말 할 수 있었습니다. 하지만, 지금부터는 후자를 선택해도 예전의 안정적이고 경쟁이 없는 삶을 누릴 수는 없어보입니다. 그 근거가 되는 몇가지 현상은 굳이 예로 들지 않아도 괜찮을 것 같습니다.

  어떤 분야에서건 세계와 경쟁해야 하는 시기가 반드시 올 것입니다. 이공계가 먼저 그 포문을 열었지만, 앞으로는 서비스업, 농수산업이 줄줄히 뒤를 따를 것입니다. 이러한 흐름이 옳다 그르다 평가하기는 힘듭니다. 하지만 중요한 것은 이 거대한 흐름이 시작되었고, 앞으로는 점점 더 가속화 될 것이고, 그 누구의 힘으로도 막기는 힘들어 보인다는 것입니다. 이에 대처하는 현명한 자세는 우리 주위에 장벽을 더욱 더 높게 쌓는 것이 아니라 이 거대한 흐름속에서 자신을 더욱 돋보이게 만들 방법을 찾는 것이라고 할 수 있습니다. 살아남기 위해서는 치열하게 싸워야합니다.

  현재 우리나라의 산업도, 공무원 시험 준비를 위해 생소한 한자 공부를 하는 공대생이 아니라, 세계와 경쟁하기 위해서 영어를 공부하는 모습으로 바뀌어야 합니다.(물론 한자보다 영어가 낫다라는 이야기는 아닙니다) FTA는 그러한 모습으로 탈바꿈하기를 모두에게 강요하고 있습니다. 물론 쉽지 않습니다. 아마 대다수는 경쟁에서 뒤쳐지고 양극화라는 세계화의 부산물로 인해 나뉘어진 사회 계층에서 낮은 쪽으로 추락할 것입니다. 그렇다고 가만히 있을 수는 없습니다. 경쟁에서 살아남으려 하거나, 아니면 뒤쳐질 뿐입니다. 하지만 이러한 경쟁에서 승리한 소수에게는 예전에는 볼 수 없었던 엄청난 이득이 기다리고 있을 것입니다. 세계라는 시장이지요.

  위기를 보지말고 기회를 보고 이야기를 했으면 좋겠습니다. 많은 희생이 있겠지만, 더 많은 가능성이 있습니다. 이미 돌이킬 수 없는, 우리나라 정부가 한 일이 아니라, 세계의 흐름과 시장의 흐름이 일으킨 일입니다. 누구의 탓을 하거나 누구의 칭찬을 할 일이 아니라는 이야기입니다. 변화하는 세계 속에서 개인이 가질 수 있는 위치의 범위는 무한대로 확장되고 있고, 그 중 어디를 점하느냐는 전적으로 우리 자신에게 달려있는 것입니다. 먼저 변화하는 사람이 좋은 자리를 차지할 수 있습니다. 부디 국가의 틀을 벗어던지고 세계의 틀로 사고하시기 바랍니다.