246. 혁신의 시작
어느 새부턴가 PTW직원들이 ‘던전’이라고 부르기 시작한 PTW 지하의 연구실은, 그 이름에 걸맞게 온갖 장비들이 가득한 사이로 수만 줄기의 선들이 복잡하게 엉켜있는, 그런 공간이 되어 있었다.
아마 이 공간에 있는 잡동사니 어딘가에 멀쩡하게 동작하는 인공지능 로봇이 있다고 해도 믿길 정도로.
그리고 그 복잡한 공간 한가운데, 참으로 오랜만에 많은 사람이 모였다.
실제로 내부에서 작업하고 있는 연구원들은 많이 있었지만, 그들은 딱히 ‘모여서’일 하는 것은 아니었기 때문에 그것은 연구실의 모습치고는 일상적이지 않은 모습이라 할 수 있었다.
그 인파의 한 가운데 앉아있던 남자, 민준은 조용히 고개를 들어 자신의 앞에 모인 무리를 바라보았다.
그러자 조금 전까지 웅성웅성 떠들던 소란이 순식간에 잦아들었다.
마치 그 이후에 이어질 ‘무언가’를 기대하는 것처럼.
그럴 만도 했다.
여기 모여있는 인원의 어느 한 명 업계에서 이름을 날리지 않은 인원이 없었고, 그중의 몇 명은 아예 업계 전체를 통틀어서 손꼽을 정도의 월드 클래스 개발자들이었으니까.
팀 스컹크 웍스(Team Skunk Works).
무려 4천억의 영입 예산을 잡아 민준이 모은 인원의 숫자는 총 56명이었다.
그것은 어찌 보면 많아 보일 수도 있지만, 실제로는 그리 많은 숫자는 아니었다.
팀 스컹크 웍스는 어느 한 분야의 전문가들만 모아서 만든 팀이 아니라, 여러 분야의 전문가들을 모아서 만든 팀이었기 때문에.
그중에는 민준 같은 풀스택 개발자들도 있었고, AI나 SE쪽 개발자도 있었으며, 프로그래머긴 하지만 일반적으로 프로그램을 제작하는 데 쓰이는 언어가 아니라 반도체를 설계하는데 쓰는 Verilog HDL(Hadware Description Language : 회로를 설계하고 검증하고 구현하는데 사용하는 언어)의 전문가들이나 MS에서 민준과 X-BOX LIVE의 서비스를 처음부터 구축했던 네트워크 전문가 들도 있었다.
그렇기에 분야별로 민준이 모집한 인원들은 10명 남짓의 작은 그룹으로 뭉쳐 민준의 이야기를 기다리고 있었다.
도대체 그 많은 돈을 제시하면서, 굳이 민준이 자신들을 한 자리로 모은 이유가 무엇인지 듣기 위해서.
이윽고 자신에게 집중된 이목을 느끼던 민준은 조용히 입을 열어 목소리를 냈다.
“솔직히···.”
언제나처럼 평온 그 자체인 목소리로, 민준은 자신이 직접 모은 팀원들을 보며 말했다.
“솔직히 말해서, 여기 모인 인원 중 제가 제시한 금전적 보상 때문에 스컹크 웍스에 합류한 인원은 없을 거로 생각합니다. 여러분들은 어느 한 명 빠짐없이 제가 제시한 금액 이상의 가치와 대우를 받을 자격이 있는 분들이고, 지금 당장 어느 대기업에 가더라도 임원급 대우를 보장받을 수 있는 실력자들이시니까요.”
민준의 말을 들은 멤버들은 고개를 돌려 서로를 바라보았다.
그 중엔 포럼 등에서 얼굴을 보았던 사람들도 있었고, 잡지나 신문에서 이름을 보았던 사람들도 있었다.
고개를 끄덕이며 도로 자신을 바라보는 사람들에게, 민준이 설명을 이어나갔다.
“스컹크 웍스란 팀의 구상에 대해 말씀드릴 때, 저는 이렇게 말했었죠. 특정한 목적을 위해 필요한 인원을 모으려는 게 아니라, 하려는 것이 무엇이든 그것을 가능하게 할 힘을 가진 팀을 만들고 싶다고요. 지금 그 팀이 제 눈앞에 있습니다. 일반적인 회사에서는, 있을 수 없는 일이죠. 저는 여러분들도 그것에 흥미를 느끼고 스컹크 웍스에 합류한 것이라고 믿고 있습니다.”
옆에서 듣고 있던 존 스캇은 고개를 끄덕이며 민준의 의견에 동의했다.
그 역시, 민준이 만든 팀이 비효율의 극치라는 것을 잘 알고 있었기 때문에.
‘확실히 일반적인 회사에서는 있을 수 없는 일이지.’
그것은 돈의 문제가 아니었다.
효율성의 문제였지.
‘최고의 실력자들만 모은 팀’이라는 것은 어찌 보면 꿈같은 말처럼 들릴지 몰라도 그 속을 자세히 보면 비효율 덩어리가 되는 법이다.
수십명의 월드 클래스 개발자를 한군데 모으는 것보다, 각 개발자를 중심으로 여러 개의 팀을 구성하는 것이 훨씬 생산적이기 때문에.
그래서 일반적인 프로젝트에선 이런 식으로 무작정 월드 클래스의 실력자를 모아 팀을 구성하기보다는, 소수의 실력자가 다수의 적당한 능력을 지닌 개발자를 컨트롤 하는 방식으로 멤버를 구성한다.
민준은 정확하게, 그 반대의 방식을 취하고 있었다.
“헤이, 캡(CAP). 뭐, 팀에 대한 소개보다 지금은 바로 우리가 할 것을 알려주지 않겠어요? 다들 궁금해서 미칠 것 같은 표정이잖아요?”
그때, 존 스캇이 멤버들을 대표하여 민준을 재촉하자, 민준이 웃으며 말했다.
“안 그래도 그럴 참이었습니다. 다들 궁금하셨겠죠? 제가 왜 이런 멤버들을 모았는지. 그럼 지금부터 저희가 하려는 첫 번째 프로젝트에 관해 설명하겠습니다.”
민준은 마커를 들어 화이트 보드에 3줄의 문장을 적었다.
그것은 이전에 민준이 존 스캇에게 넘긴 냅킨에 적혀 있던, 바로 그 문장이었다.
<성능의 벽(Wall of performance)>
<데이터의 벽(Wall of data)>
<개발의 벽(Wall of development)>
“그건 전에 나에게 넘겨준 메모에 적혀 있던 내용이네요?”
“맞습니다. 기본적으로 저는 이 3가지 벽을 넘을 수 있는 물건을 만들려고 합니다. 그래야 저희가 그 너머에 있는 무언가를 만들 수 있을 테니까요.”
“그 무언가가 뭐죠?”
“모르죠. 애당초 지금 멤버로도 이 벽을 뚫을 수 있을지도 모르는데.”
민준이 설명을 이어나갔다.
“여기 적힌 3개의 벽은, 인류의 상상이 현실이 되는 것을 가로막는 가장 커다란 장애물이라 생각합니다. 우리가 무언가 멋진 물건을 만들어 내려고 하면, 컴퓨팅 성능이 발목을 붙잡고, 그것을 극복해 낸다 하더라도 방대한 데이터 처리량이 발목을 붙잡고, 그 모든 것을 극복해 내도 개발의 복잡성이 모든 것을 가로막죠. 그것을 뚫을 수 있는 열쇠를, 저는 인공지능 기술에서 찾으려고 하고 있습니다.”
“구체적으로 어떤 방식이죠?”
“무식하고 단순한 방식이죠.”
민준이 나머지 2개의 문장을 지우고 첫 번째 문장만을 남겼다.
<성능의 벽(Wall of performance)>
“다들 엔지니어시니 잘 아시겠지만, 기본적으로 개발 과정에서 자주 충돌하는 것이 성능의 벽이죠. 저희가 쓸 수 있는 컴퓨팅 자원은 한정되어 있고, 그것을 넘어서는 기술의 개발은 불가능하니까요. 그래서 지금까지 엔지니어들은 두 가지 방식으로 이 문제를 해결했습니다. 그냥 더 좋은 성능의 기기가 보급될 때까지 기다리거나, 아니면 코드를 뜯어고쳐 최적화를 하는거죠. 팀 스컹크 웍스의 첫 번째 프로젝트는, 그 최적화를 돕는 툴을 만드는 겁니다.”
“어떤 식으로 동작하나요?”
멤버 중 몇 안 되는 여성 엔지니어 한명이 손을 들어 묻자 민준은 잠시 망설였다.
자기가 지금 만들려는 것은 자신이 생각해도, 황당 그 자체인 개념이었기 때문에.
하지만 애당초 그런 황당한 물건을 만들겠다고 만든 게 스컹크 웍스라는 팀이었기 때문에, 민준은 자신이 모은 팀원들의 실력을 믿기기로 했다.
“저희가 만들 프로그램은, 일종의 컴파일러 프로그램입니다.”
“컴파일러라면 코드를 작성하면 기계어로 바꿔주는 그거 말인가요?”
“예.”
“그건 이미 존재하는 거잖아요?”
“저희가 만들려는 건 좀 다르죠.”
민준이 말했다.
“단순히 한 언어를 다른 언어로 변환시켜주는 기존의 컴파일러와는 다르게, 저희가 만들 컴파일러는 작성자가 만든 비효율적인 코드들을 자동으로 최적화해서 결과물로 변환시켜줍니다. 저희가 미리 입력해 놓은 다양한 최적화 알고리즘 중에, 해당 코드에 가장 적합한 알고리즘을 AI가 선택하여 코드를 자동으로 수정해주는 거죠. 돌리려는 목표 사양과 소스코드를 넣고 컴파일을 돌리면, 전문가들이 최적화 작업을 해 놓은 것처럼 자동으로 수정된 코드가 나오는 겁니다.”
“코드마다, 플랫폼마다, 언어마다 최적화 방식이 다 다른데 그걸 AI가 처리하게 한다고요?”
“그게 가능해?”
“버그 덩어리가 될 것 같은데?”
“저기, 민준씨? 프로그램은 그런 식으로 동작하지 않아요.”
웅성대는 멤버들을 보며, 민준은 조용히 한쪽 손을 들어 올렸다.
그러자 다들 잠시 말을 멈춘 가운데, 민준이 입을 열어 설명했다.
“저도 바로 완벽한 버전을 만들자는 게 아닙니다. 우선 간단한 프로그램을 AI가 직접 여러 구현 방식을 적용하여 테스트하게 만드는 프로그램을 짜고, 방식별로 속도 및 효율을 측정한 후에, 가장 빠르고 안정적으로 돌아가는 코드를 선택하여 출력하는 프로그램을 짤 겁니다. 원래는 사람이 코드를 붙잡고 여러 가지 패턴을 시도하며 최적화하던 걸, 단순히 AI가 하도록 자동화 하는 것뿐입니다. 그 과정에서 특정 코드에 대한 최적의 수정 패턴을 AI가 기억했다가, 다음번에 또 써먹게 만드는 거죠. 그런 식으로 한 걸음 한 걸음 완성해 나가다 보면, 어느 순간 저희가 직접 최적화 패턴을 넣지 않아도 AI가 알아서 최적화된 코드를 생성해 내겠죠.”
“그럼 코드 하나 수정하는데도 케이스 별로 엄청난 수의 테스트를 컴파일러를 돌리는 시스템이 수행해야 할 텐데요? ‘헬로 월드’ 하나 컴파일하려고 2주씩 기다려야 하게 되면 어쩌죠?”
그 질문을 던진 것은 방금 민준에게 질문했던 여성 프로그래머였다.
그러자 민준이 그녀를 바라보며 말했다.
“그건 걱정 안 하셔도 됩니다.”
“어째서요?”
“애당초 이 컴파일러는 개인용 컴퓨터에서 돌리려고 만드는 물건이 아니니까요.
그리고···.”
그리고는 그녀에게서 시선을 돌려, 반도체 설계 엔지니어들의 그룹을 보며 말했다.
“우린 혼자가 아니잖아요?”
그러자 민준의 목소리를 들은 엔지니어들의 등이 식은땀으로 젖어오기 시작했다.
민준의 계획은 생각보다 단순했다.
기존에 PTW가 보유하고 있던 것보다 상위의 컴퓨팅 능력을 갖춘 데이터 처리 센터를 세우고, 그 컴퓨팅 능력을 활용하여 AI에게 코드 최적화를 학습시키는 것.
AI가 스스로 수많은 코드의 패턴을 바꿔가며 테스트를 수행하고, 원본 소스 코드의 최적화 된 버전을 개발자에게 되돌려 줄 수 있게 하는 것.
최종적으로는 전문가가 붙어서 최적화 작업을 한 것보다 더 나은 결과물을 제공할 수 있게 하는 게 민준의 목표라 할 수 있었다.
그리고 그런 민준의 설명을 들은 팀원들은, 조용히 입을 다문 채 민준이 만들려는 물건이 어떠한 효용을 가질 것인지에 대해 생각했다.
초보자가 만든 어설픈 코드라도 넣고 돌리는 순간 전문가가 몇 달 동안 붙잡은 것 같은 멋진 코드로 바꿔주는 마법의 항아리.
심지어 웬만한 전문가조차도 놓치는 부분을 전부 AI가 추적하여 자동으로 수정해주는 마법 같은 AI.
그것은 허무맹랑한 이야기 같았지만, 반대로 로망이 담겨있는 이야기이기도 했다.
만일 그런 물건이 존재한다면, 그것은 프로그래밍의 역사를 바꾸는 그런 물건이 될 테니까.
“젠장, 벽을 넘는다는 게 그런 의미였나?”
존이 투덜거리며 말했지만, 그의 입가엔 미소가 걸려 있었다.
“헤이, 캡. 무슨 생각을 하는지는 알겠어요. 그러니까 초짜가 만든 메모리가 줄줄 새는 등신 같은 코드라도 넣고 돌리기만 하면 낮은 사양에서도 쌩쌩 돌아가는 멋진 코드로 바꿔주는 마법의 항아리를 만들자는 거죠?”
“맞습니다.”
“하지만 그게 가능하게 하려면 AI가 스스로 코드를 수정할 수 있어야 해요. 그게 무슨 의미인지는 아시죠?”
“압니다.”
“그럼 됐습니다. 전 합니다.(I will be with you.).”
“시작부터 화끈한 과제네요. 하다 실패해도 저는 책임 안 져요?”
“개발은 인디언 기우제 같은 겁니다. 비가 내릴 때까지 하다 보면 언젠간 되겠죠.”
“개발 기간이 얼마가 걸릴지 몰라도?”
“상관없습니다.”
“젠장. 초보 프로그래머들은 엄청 좋아하겠네. 저도 하겠습니다.”
“첫 번째 프로젝트이니 능력을 보여 드리려면 저도 해야겠죠. 저도 하겠습니다.”
그렇게 56명의 월드 클래스 개발자들이 한 명씩 함께하겠다는 의사를 밝히는 모습을 보면서, 민준은 눈시울이 시큰해지는 감정을 느꼈다.
바로 이 프로젝트가, 자신이 계획하는 거대한 계획의 시작이 될 것이었기 때문에.
그리고 그런 민준을 보며, 존이 조용히 손을 들며 질문했다.
“좋아요. 모두가 동의했으니 이제 바로 시작해야겠죠? 그 전에 하나 묻고 싶은 게 있습니다. 이 물건의 개발에 성공한다면, 아마 대부분의 프로그래머는 이 프로그램을 사용하게 될 겁니다. 물론 저희가 비용을 얼마를 청구하느냐에 따라 다르겠지만, 컴파일러의 성능이 민준씨가 원하는 만큼 나온다면 아마 그 비용이 얼마라도 내려는 기업은 줄을 서겠죠. 그리고 아마도 프로그래밍 역사상 처음으로, 특정 코드를 구현하는 수많은 방식 중 가장 최적화된 표준을 제시하는 프로그램이 될 겁니다.”
“그렇겠죠.”
“그래서, 이 프로젝트의 이름은 뭡니까?”
“이름이라.”
민준은 잠시 고민하다 고개를 들어 팀원들을 보며 말했다.
“Standard Template Compiler(STC)”
“지금부터 이 프로젝트의 이름은 프로젝트 STC입니다.”
***
“왜 불길하게 그 이름이야?”
미팅을 마치고 온 민준에게 상혁이 묻자, 민준이 물었다.
“왜?”
“워함마 40000에서 인류가 가지고 있던 기술 암흑기 시절의 로스트 테크놀러지도 같은 이름 아니었나? 설계도를 만드는 프로그램. 만들고자 하는 물건을 설정하면 조건에 맞춰서 그것을 생산하는 최적의 설계도를 뱉어내는 인공지능.”
“그건 Standard Template Construct(STC)고, 내가 만들려는 건 Standard Template Compiler(STC)야. 약어는 같아도 뜻이 달라.”
민준이 설명했지만, 상혁의 표정은 풀리지 않았다.
오히려 더 의심이 깊어진 표정으로, 상혁은 민준을 보며 물었다.
“너 민준이 맞지?”
“뭔 개소리야?”
“혹시 미래에서 지령을 받고 인공지능 기술로 AI가 지구를 정복하게 하러 온 존 코너의 화신 같은 건 아니지?”
“그게 말이 되냐?”
“아까 설명해줬잖아. AI가 코드를 짠다며. 그럼 AI가 자기 코드를 수정해서 막 스카이넷이 탄생하고 그러는 거 아니야?”
그제야 상혁이 농담을 하고 있다는 것을 깨달은 민준이 웃으며 말했다.
“아니지. 이건 목적이 단 하나잖아. 최적화된 코드를 찾아내는 거. 그나마 그런 단순하고 명확한 목적이 있으니까 만들 수 있는 프로그램이지. 방법이 무한대에 가까워서 연산조차 불가능한 인류 말살 같은 목적은 부여할 수 없다고.”
“농담이었어.”
“나도 알아.”
농담은 끝났지만, 상혁의 질문은 끝나지 않았다.
상혁은 진지한 표정을 지으며 민준에게 다시 질문했다.
“그 STC라는 건 결국은 비효율적인 코드들을 자동으로 수정하는 프로그램이라고 했지?”
“어.”
“근데 우리한테 그게 필요한가? 지금 PTW에 있는 프로그래머들도 다들 실력자잖아.
굳이 AI의 힘을 빌리지 않아도, 지금까지 콘솔 기기의 성능 한계를 넘어선 프로그램들을 계속 만들어왔었고. 아마도 민준이 네가 생각하는 설비를 마련하려면 돈이 거의 조 단위로 더 필요할 것 같은데, 지금도 만족할 만한 결과를 뽑고 있는데 거기서 더 최적화가 필요한가 하는 의문이 드는데?”
“그거야 지금의 최적화는 인간 프로그래머의 기준에서 최적화된 거니까.”
민준이 말했다.
“알파고가 나왔을 때, 사람들은 이미 인간이 바둑이란 게임을 지배하고 있다고 생각했지. 수천 년의 역사를 넘어오면서, 수천만 번의 대국을 통해서 수많은 천재가 다듬은 기보가 있었으니까. 그리고 알파고가 내놓은 수들은, 전부 그런 인간의 상식을 가볍게 부수는 기보들이었어.”
“그렇지.”
“그러니까 지금 작업해놓은 코드가 최선이라고 생각하는 건 ‘인간’의 기준이고, 그걸 AI가 돌렸을 때 얼마나 효율이 올라갈지는 해 봐야 안 다는 거야. 어쩌면 커뮤니케이션 엔진 때문에 희생해야 했던 OGC의 그래픽 수준도, STC를 사용하면 적정 수준까지 더 올릴 수 있을지도 모른다는거지.”
“그게 그렇게 될까?”
“나도 몰라.”
“몰라!?”
“몰라. 지금도 그렇고 앞으로도 그렇겠지만, 애당초 스컹크 웍스는 ‘이게 되나?’를 확인하려고 만든 팀이니까. 실패하면 실패하는 대로 어디가 문제인지 알 수 있을 것이고, 끝없이 고치다 보면 언젠간 인간을 달에 보낼 수 있겠지.”
“나 늙어 죽기 전에는 결과가 나오는거지?”
상혁의 말에 민준이 씩 웃으며 말했다.
“그것도 모르지. 어쩌면 수십조를 쓰고도 인간의 무력함만 깨달을지도 모르고.”
“그럼 난 수십조를 벌어야겠군. 민준이 너를 위해서.”
“알았으면 열심히 일하라고. 이 돈 벌어오는 기계 자식아.”
“걱정하지 마라. 지금도 PTW에는 공개만 하면 유저들이 제발 자기 돈을 가져가 달라고 비명을 지를 물건들이 넘치니까.”
“삼정하고 협력이 잘 되어가나 봐?”
“그렇지. 민준이 네가 합류하기 전에 미리 합류한 스컹크 웍스 엔지니어들이 삼정 엔지니어들을 도우면서, 프로젝트 진행이 엄청 빨라졌어. 게다가 삼정에서 엑시노트 개발팀을 PTW에 넘기면서, 아예 메인 AP 개발에 PTW가 직접 관여할 수 있게 되었고. 지금 만들어지고 있는 갤럭틱 폰의 다음 버전은, 아마도 역대 급 물건이 되겠지.”
“와플도 바를 만큼?”
“와플?”
민준의 질문에 상혁이 웃어 보였다.
“한가지는 약속할 수 있어. 걔들이 제공하는 ‘혁신’은 우리가 만들어 낼 ‘혁신’의 발끝도 따라오지 못할 거라는 거.”
상혁이 그렇게 말할 정도로, 삼정에서 PTW로 넘어온 엑시노트의 개발팀은 말 그대로 ‘역대급’ 물건을 만들어 내는 중이었다.
기존의 휴대폰이 가지고 있던 ‘경험’의 범주를 아득하게 초월하는, 완전히 새로운 형태의 모바일 플랫폼을.
그리고 그것의 예상 발매일은, 상혁이 잡고 있던 OGC의 전 세계 동시 발매와 함께 이루어질 예정이었다.
2015년 9월 9일.
그날은 세상에 삼정의 ‘차세대’모바일 기기가 발표됨과 동시에, 전세계의 콘솔 유저들이 오매불망 기다리던 OGC의 공식 발매일이기도 했다.
그리고 그날은, 와플의 와이폰 6S의 발표일과 같은 날이기도 했다.
하지만 딱히 공교롭게 우연히 잡힌 날짜는 아니다.
그 날은 상혁과 주용이 미리 협의하여 악의적으로 잡아놓은, 와플을 잡으려고 일부러 선정한 날짜였으니까.
무려 삼정의 부회장인 이주용과 PTW의 간판인 이상혁이 함께 진행하는 공동 발표회.
상혁은 두근대는 마음으로 그 날을 기다리고 있었다.
세상에 없던 무언가를 발표하는 것은, 언제나 그에게 짜릿함을 선사하는 일이었기 때문에.