지난 며칠 동안 오픈AI에서 벌어진 일의 전모를 파악하는데는 시간이 필요하겠지만, 이사회가 CEO를 몰아내기로 한 배경에는 빠르게 성장하고 있는 AI의 안전 문제와 사업의 성공을 두고 서로 다른 견해를 가진 양측의 싸움이 있었다는 게 일반적인 분석이다. 샘 얼트먼을 해고했던 이사들은 인류 차원에서 AI의 위험성을 고민했다고 한다. 이건 분명 중요한 문제이지만 거시적인 관점에서 보는 시각이다. 미시적, 개인적 차원에서는 어떨까?

불과 1년 전만 해도 피부에 와 닿지 않았던 AI의 존재를 느끼게 해준 챗GPT는 그 성능이 사람들이 생각한 것보다 뛰어났고, 등장과 함께 세상을 빠르게 바꾸고 있다. AI로 인한 실직은 가능성의 영역이 아니라, 실제로 일어나고 있는 일이다. 그리고 그런 위협을 가장 크게 느끼고 있는 사람들이 바로 프로그래머다. 아래의 글에서도 이야기하지만, 일반인이 텍스트나 이미지 생성에 챗GPT를 써보고 느끼는 것과 코딩을 직업으로 하는 사람들이 느끼는 것은 다르다. 챗GPT는 상당한 경력을 가진 프로그래머가 하루 종일 씨름해도 해결 할까말까 하는 문제를 10초 만에 풀어낸다. 몇 년 후에도 프로그래머라는 직업이 남아있을까 걱정이 된다는 얘기는 그래서 나온다.

이 글은 테크 기업에서 프로그래머로 일하며 매체에 꾸준히 글을 기고해 온 제임스 소머스(James Somers)가 쓴 것으로, 직업으로서의 프로그래밍이 사양길로 접어드는 것을 보면서 자신의 경험을 바탕으로 솔직한 심정을 이야기한다. 기술적인 이야기이지만 일반인도 이해하기 쉽게 설명할 뿐 아니라, 프로그래머라는 사람들이 하는 일을 이해하는 데 도움을 주고, 무엇보다 직업인으로서의 프로그래머가 AI의 위협을 어떻게 생각하는지 잘 설명한다. 원문은 여기에서 읽을 수 있다.

나는 내게 아이가 태어나면 우리 부모님이 내게 글을 가르쳤던 것처럼 내 아이에게 프로그래밍을 가르치겠다고 항상 생각해왔다. 인류가 습득하게 된 새로운 기술이면서 동시에 가장 필수적인 기술이기도 하기 때문이다. 그리고 그 중요성은 나날이 커져서 영화 제작부터 물리학 연구까지, 프로그래밍이 사용되지 않는 곳이 없다. 아이가 글을 읽고 쓰는 능력에 프로그래밍 능력까지 갖추게 되면 직업을 얻는 데 문제가 없을 거라 생각했다. 나는 첫 아이의 출산이 3주 앞으로 다가온 시점에 이 글을 쓰고 있다. 나는 코딩이 직업이지만, 아이가 자라 타이핑을 하게 될 시점이면 코딩은 더 이상 가치있는 기술이 되지 않을지 모른다.

내가 그런 생각을 굳히게 된 건 지난여름 어느 금요일 아침이다. 그때 나는 취미로 프로젝트를 하나 하고 있었다. 그로부터 몇 달 전, 나는 친구인 벤과 함께 뉴욕타임즈 스타일의 십자말풀이(crossword puzzle)를 컴퓨터만을 사용해 푸는 방법을 만들어 냈다. 2018년에는 우리 둘이 공동작업으로 소프트웨어의 도움을 받아 십자말풀이를 만들면서 그게 얼마나 쉬운 일이었는지 알고 놀랐다. 그냥 우리의 취향을 여기저기에 적용만 하면 퍼즐이 만들어졌다.

이제 우리는 인간의 도움이 전혀 없이 컴퓨터 혼자 퍼즐을 만들어 낼 수 있는 프로그램을 제작 중이다.

(이미지 생성: Stable Diffusion XL)

과거에 벤과 내가 이런 프로젝트를 할 때는 하드웨어 측면과 소프트웨어 측면에서의 작업이 필요했다. 벤은 하드웨어에 강하다. 한번은 지하철이 우리가 사는 아파트 근처로 다가오면 불이 들어오는 네온사인을 만들기도 했다. 벤은 유리를 달궈서 굽히고, 트랜스포머의 회로판에 연결하는 작업을 했고, 나는 지하철에서 제공하는 데이터를 처리하는 코드를 썼다. 벤도 코딩으로 돈을 번 적이 있지만, 아주 잠깐, 간단한 작업만 했을 뿐이고, 이미 20년 전의 일이고 그의 코딩 기술은 업데이트되지 않았다. 따라서 제대로 된 코드가 필요하면 내가 맡았다. 그런데 십자말풀이 제작기를 만들면서 벤이 작업자를 하나 더 데려왔다.

챗GPT 플러스를 유료 구독하면서 코딩에 GPT-4의 도움을 받기 시작한 거다.

그러면서 이상한 일이 생기기 시작했다. 벤은 나와 프로젝트에 필요한 소프트웨어에 관해 이야기를 나눈 후 충격적일 정도로 짧은 시간 안에 그 소프트웨어를 만들어 오는 거다. 한 번은 사전 파일에서 무작위로 100줄을 가져와 프린터로 인쇄하게 하는 프로그램을 만들려고 했었다. 나는 그 문제를 몇 분 정도 생각해 보다가 답이 나오지 않아 구글로 검색해 봤다. 내가 그렇게 찾아낸 방법으로 시도를 해보고 실패하기를 반복—이게 나의 전형적인 프로그래밍 작업이다—하는 동안, 벤은 GPT-4에 우리가 원하는 걸 설명했고, 완벽하게 작동하는 코드를 얻어냈다.

그럴 수 있다. 그런 종류의 명령어는 원래 복잡하기로 유명해서 다들 직접 쓰기보다는 찾아서 해결한다. 그런 건 진정한 프로그래밍이 아니다. 그런데 며칠 후 벤이 내게 "사전에서 찾아낸 단어의 수준을 평가하는 아이폰 앱이 있으면 좋겠다"라는 말을 했다. 나는 그 말을 듣고 몇 번 시도해 봤지만, 절반 정도 성공하는 것 수준을 넘지 못했다. 애플의 프로그래밍 환경은 정말 어렵다. 새로운 프로그래밍 언어를 배워야 하는 것만이 아니라, 코드를 편집하고 작동하는 데 필요한 프로그램도 알아야 한다. 그렇게 한 후에 다양한 "UI 요소"들을 배우고, 그걸 짜 맞추는 복잡한 방법을 익히고 나면, 그 앱을 패키징하는 방법을 알아내야 한다. 그 앱 하나를 만들기 위해 새롭게 알아야 할 지식의 산이 그렇게 높고 많으니 그걸 하는 데 시간을 쓰고 싶지 않았다.

그런데 바로 다음 날 아침, 잠에서 깨어 폰을 보니 벤이 보낸 앱 하나가 도착해 있었다. 벤이 이야기한 그대로 완벽하게 작동하는 앱이었다. 게다가 디자인도 예뻤다. 벤은 몇 시간 만에 그걸 만들었다며, 대부분의 어려운 작업은 GPT-4에게 맡겼다고 했다.

(이미지 생성: Stable Diffusion XL)

지금쯤이면 대부분 AI를 사용해 본 경험이 있을 거다. 모두가 감탄한 건 아니다. 벤은 GPT-4에게 코딩을 맡기기 전까지 AI가 대단하다고 생각하지 않았다고 한다. 나는 프로그래머가 아니면서 회의적인 성격을 가진 사람이라면, 그리고 챗GPT가 진부한 문장이나 팩트가 아닌 말을 만들어 내는 걸 본 사람이라면 지금 일어나고 있는 일을 과소평가할 수 있다고 생각한다.

이제까지 우리는 많은 지식과 고도의 기술을 습득하는 데는 평생이 걸린다고 생각했지만, 그런 생각은 유효성을 빠르게 상실하고 있다. 내게 코딩은 항상 끝없이 깊고 풍부한 세상이었다. 하지만 나는 이제 그런 세상이 끝났다는 부고 기사를 쓰고 싶다는 생각을 하곤 한다.

이세돌이 알파고와 대결하던 모습이 내 머리를 떠나지 않는다. 그는 세계 최고의 바둑기사 중 하나였고, 한국의 국민적 영웅이었지만, 이제 그는 2016년에 알파고에 패한 사람으로 가장 잘 알려져 있다. 그는 AI를 쉽게 이길 것으로 생각하고 대결하기로 했지만, 며칠에 걸친 대국 끝에 간신히 1승을 얻어내는 데 만족해야 했다. 알파고에 패할 것이 분명해질 때쯤, 이세돌은 기자회견에서 "이렇게 무력한 모습을 보여서 죄송합니다"라는 말을 했다. 그리고 3년 후 바둑계에서 은퇴했다. '내가 평생을 바친 이 일이 앞으로 어떻게 변할까'라는 질문이 그를 짓눌렀던 것 같다. 그런데 같은 질문이 갑자기 내게도 중요하게 다가오기 시작했다.  

알파고와 대국 중인 이세돌 9단 (이미지 출처: YTN)

내가 컴퓨터에 처음 매료된 건 6살 때였던 1990대 초였다. 우리집은 캐나다 몬트리올에 있었고, 나는 형과 모탈 컴뱃(Mortal Combat)을 하고 놀았다. 형은 내게 상대에게 "치명타"를 입히는 방법이 있다고 얘기해 줬다. 웃기고 잔인한 방법으로 상대를 죽이는 방법이 있다는 거다. 하지만 형도 그걸 어떻게 사용하는지 모르기는 마찬가지였기 때문에, 전화 모뎀을 사용해 MS-DOS에서 게임의 파일이 저장된 FTP 서버에 연결했다. 그리고 잘 사용되지 않는 명령어를 넣었고, 오래 걸리지 않아 코드를 한 페이지 인쇄할 수 있었다. 게임이 가진 각종 치명타 사용법이었다. 우리는 그걸 들고 다시 지하실에 내려가서 상대방의 머리를 가격해 터뜨릴 수 있었다.

나는 우리 형이 해커라고 생각했다. 프로그래머들이 흔히 그랬듯, 나도 멀리 떨어진 시스템을 뚫고 들어가 조작해보고 싶다는 생각을 했다. 혼란을 일으킬 목적이 아니라, 감춰진 곳을 찾아내고, 숨겨진 뭔가를 알아내려고 싶었던 거다. 로이드 블랭큰쉽(Loyd Blankenship)이 1986년에 쓴 '해커 선언문(The Hacker's Manifesto, 전문과 번역을 여기에서 읽을 수 있다)'에 이런 말이 나온다.

"나의 죄목은 호기심이다(My crime is that of curiosity)"

1995년 영화 '해커스(Hackers)'에서 내가 좋아하는 장면들이 있다. 하나는 비밀 클럽에 새롭게 합류한 데이드 머피가 자신의 실력을 증명하는 장면이다. 멤버 중 하나가 가방에서 컴퓨터 서적들을 꺼내는데 머피는 각 책의 색깔을 보고 무슨 책인지 줄줄이 맞춘다. 다른 장면에서는 키보드를 두드리는 것만으로 학교의 스프링클러를 켜기도 하고, 유조선의 평형수(ballast)를 맞춰주기도 한다. 나는 이 영화를 보며 지식은 힘이라는 교훈을 얻었다.  

영화 '해커스' 포스터. 맨 위에 "그들의 유일한 죄목은 호기심이었다"라는 말이 보인다. (이미지 출처: Amazon)

하지만 해킹하는 법은 어떻게 배울까? 내가 5학년이 될 무렵 우리 가족은 미국 뉴저지주로 이주해 정착했다. 나는 고등학생 시절, 보더스 서점에 가서 아이버 호튼(Ivor Horton)이 쓴 '비주얼 C++ 입문'을 샀다. 무려 1,200페이지나 되는 이 책은 나의 첫 번째 '마법의 책(grimoire)'이었다. 컴퓨터 튜토리얼(tutorial)이 대개 그렇듯 이 책도 처음에는 쉽다가 갑자기 어려워졌다. 중세의 학생들은 이렇게 쉽게 생각하고 덤벼들었던 사람들이 실패하는 시점을 폰스 아시노룸(pons asinorum, 당나귀들의 다리)이라 불렀다. 폰스 아시노룸이라는 표현은 유클리드(유클리데우스) 원론 1에 등장하는 다섯 번째 정리 때문에 생겨났는데, 원론 1에서 만나게 되는 첫 번째 어려운 개념이었기 때문이다. 그 다리를 건널 수 있으면 기하학을 마스터할 수 있고, 건너지 못하는 사람은 그저 맛만 보는 수준에 머물러야 했기 때문이다. 아이버 호튼의 비주얼 C++ 입문서에서는 동적 메모리 할당(dynamic memory allocation)을 다루는 섹션 4.3이 내가 건너야 할 당나귀들의 다리였다.

나는 그 다리를 건너지 못했다.

(이미지 출처: Amazon.com)

하지만 그렇다고 포기한 것도 아니다. 나는 내가 그걸 이해하기 시작한 시점을 기억한다. 그때 나는 무슨 일로 장거리 비행기를 타면서 검은색의 두툼한 노트북 컴퓨터와 볼랜드 C++ 컴파일러가 든 CD롬을 가져갔다. 컴파일러(compiler)는 사람이 작성한 코드를 컴퓨터가 이해할 수 있는 기계 언어로 바꿔주는데, 내가 작업 중이던 코드가 작동하지 않아 씨름하고 있었다. 코딩을 하는 사람들이 프로그래밍 언어를 배울 때는 첫 번째 단계로 "Hello, world!"를 출력하는 게 암묵적인 룰인데, 내가 프로그램을 돌리면 에러 메시지만 잔뜩 떴고, 한 문제를 해결하면 다른 문제가 튀어나오기를 반복하고 있었다. '해리 포터'에 나오는 마법의 빗자루를 갖고 있지만 그게 하늘을 날게 하는 주문을 배우지 못하고 있는 셈이었다. 방법만 알아내면 뭘 할 수 있는지 알았기에 나는 반드시 풀어내겠다는 일념으로 계속 시도했다.

그 과정에서 내가 배운 것은 프로그래밍에서 가장 중요한 건 지식이나 기술이 아니라, 인내심, 혹은 집착(obsession)이라는 사실이다. 프로그래머들은 작고 귀찮은 문제들이 끊임없이 밀려오는 걸 참아낼 수 있는 사람들이다. 그다지 똑똑하지 않은 사람에게 전화로 가구를 조립하는 법을 설명한다고 상상해 보라. 그림을 보여줄 수도 없을 뿐 아니라, 그 사람이 알아듣는 언어는 당신이 이제 막 배우기 시작한 언어다. 그렇게 힘겹게 설명했는데 전화로 들을 수 있는 피드백은 "황당한 걸 시키는 바람에 작업이 완전히 어긋났다"라는 것 뿐이라고 상상 해보라. 작업 끝에 작은 가구라도 조립에 성공한다면 그토록 기쁜 이유가 그거다.

나는 비행기 복도에 배를 깔고 엎드려서 마지막으로 엔터키를 누르던 순간을 생생하게 기억한다. 그리고 일어나 앉았다. 내가 짠 프로그램이 처음으로 작동했고, 커서 위에 "Hello, world!"가 떴다. 컴퓨터가 자기 목소리로 말한 거다. 지능을 가진 존재가 잠이 깨서 내게 자신을 소개하는 것처럼 느껴졌다.

(이미지 출처: Microsoft)

대부분의 프로그래머는 영화에 나오는 것 같은 해커가 되지 못한다. 프로그래머들이 말하는 "해킹(hacking)"이라는 건 대충 손을 봐서 만들거나 수리하는 행위(tinker)를 의미한다. 코드를 통해 자신의 독창성을 드러내는 게 해킹이다. 나는 학교에서 정식으로 프로그래밍을 배우지 않았다. 그저 컴퓨터가 내게 도움이 되는, 혹은 내게 즐거움을 주는 뭔가를 수행하도록 이것저것 바꾸고 만지작거리는 일을 계속 했을 뿐이다. 내가 대학교 1학년 때인 2006년에는 골프 매스터스 토너먼트에서 타이거 우즈가 활약하고 있었다. 그 대회 3라운드가 내가 여행으로 이동 중일 때 열리게 된다는 걸 알고 경기 진행 상황을 실시간으로 받아볼 방법을 생각했다. 그래서 나는 타이거 우즈가 버디나 보기를 기록할 때마다 PGA Tour 웹사이트의 리더보드(leaderboard)에  올라오는 내용을 긁어서 내게 텍스트로 보내주는 프로그램을 만들었다.

나중에는 학교 영문학 수업에서 제임스 조이스의 '율리시스(Ulysses)'를 읽고 그 책에서 무작위로 문장을 가져다가 음절을 계산해서 하이쿠(俳句, 7-5-7 구조를 가진 일본의 정형시로 영어권에서도 인기가 있다—옮긴이)로 만들어 주는 프로그램도 만들었다. 요즘 사용되는 챗봇에 비하면 무척 원시적이지만 그래도 아래와 같은 하이쿠를 만들 수 있었다.

I’ll flay him alive
Uncertainly he waited
Heavy of the past

나는 코딩을 진지하게 생각하기 시작했고, 친구가 시작한 스타트업에서 프로그램을 짜주기도 했다. 나는 컴퓨터의 세계에는 다양한 층위(layers)의 언어들이 지질학에서 이야기하는 지층처럼 존재한다는 사실도 알게 되었다. 우리가 일상에서 사용하는 웹브라우저부터 컴퓨터를 구성하는 트랜지스터까지 내려가는 동안 다양한 층을 거치게 된다. 더 아래로 내려갈수록 오래된, 기계에 가까운 언어가 되기 때문에 카레이서인 재키 스튜어트(Jackie Stewart)가 말한 "기계와의 공감(mechanical sympathy)"이 생기게 된다.

기계가 가진 강점과 약점을 이해하게 되면서 그 기계에 어떤 작업을 시킬 수 있는지 알게 된다는 거다.  

비주얼 언어부터 하드웨어에 도달하는 다양한 층위의 프로그래밍 언어들 (이미지 출처: The Bit Theories)

내가 '기계와의 공감'을 처음 느끼게 된 건 친구 회사에서 일하면서다. 대학교 2학년 때 제퍼디!(Jeopardy! 미국의 인기 퀴즈 프로그램—옮긴이)를 보다가 그 친구가 저 퀴즈쇼를 컴퓨터에서 할 수 있는 프로그램을 만들면 어떻겠냐고 제안했다. 나는 과연 가능할지 몇 시간 동안 생각해 봤지만 실망스럽게도 나의 능력을 넘어서는 일이었다. 그런데 3학년이 된 후에 그 아이디어가 다시 떠올랐고, 그때는 방법이 보였다. 컴퓨터를 가지고 뭘 할 수 있는지에 대한 감이 좋아졌던 거다. 그렇게 작업에 들어간 나는 14시간 동안 씨름을 하며 프로그램을 만들어 냈다. 몇 주 후에는 그렇게 만든 '짐보 제퍼디!'를 하는 게 내 친구들 사이에 유행이 되었다.

그 경험은 내게 큰 영향을 주었다. 왜 사람들이 인생을 바쳐가며 프로그래밍에 몰두하는지 비로소 이해할 수 있었다. 내가 만든 걸 다른 사람들이 즐겁게 사용하는 것만큼 기쁜 일도 없기 때문이다.  

1968년의 재키 스튜어트 (이미지 출처: Many Cores)

그렇게 프로그래밍에 빠지면서 나는 '하버드 대학의 공부벌레들(Paper Chace, 1970년대 미국 드라마)'의 주인공들처럼 행동했고, 학교 수업을 무시하기 시작했다. 밤낮없이 노력했지만, 내가 노력을 쏟아부은 대상이 학교 공부가 아니었을 뿐이다. 어느 날 밤은 학교 지하에 있는 컴퓨터 랩에서 5, 6대의 컴퓨터를 병렬로 연결해 프로그램을 돌리기도 했고, 경로 탐색 알고리듬을 파악하느라 숫자가 가득한 문서를 잔뜩 프린트해서 바닥에 깔아 놓고 씨름하기도 했다. 그 대가로 공부를 하나도 하지 않고 기말시험을 치르는 악몽을 자주 꿨다. 많이들 그런 악몽을 꾸지만, 나는 그걸 실제로 경험했다. 수학의 실해석학(Real Analysis) 수업이었다. 그 결과, 나는 미국이 심각한 경제위기에 빠진 2009년에 2.9라는 초라한 학점으로 졸업하게 되었다.

하지만 취업은 쉽게 할 수 있었다. 프로그래머로 일한 경험이 있었기 때문에 아무도 내 학점을 묻지 않았다. 당시는 젊은 프로그래머들에게는 좋은 시절이었다. 기업마다 최고의 프로그래머들을 데려오기 위해 경쟁이 붙었고, 리쿠르터들은 경험이 많은 프로그래머를 찾기에 혈안이 되었다. 대학교마다 컴퓨터 공학과가 폭발적인 인기를 끌기 시작했고 (나는 경제학 전공이었다) 초심자들을 일 년 안에 고액 연봉을 받을 수 있는 프로그래머로 만들어 주는 코딩 "부트 캠프"들이 우후죽순처럼 등장했다.


'프로그래머는 살아남을까 ②'에서 이어집니다.