..

끝을 시작하기, James Somers

한 프로그래머가 생각한 기술의 종말

나에게 코딩은 언제나 끝없이 깊고 풍부한 영역으로 느껴졌다. 이제는 그것에게 조의를 표하고 싶어진다.


※들어가기 전에 이 게시글은 2023년 11월 13일 더 뉴요커 홈페이지에 등록된 제임스 소머스의 에세이1를 개인적으로 번역한 것이다. 영어 실력이 부진한 이유로 ChatGPT-4와 파파고, 구글 번역 등의 도움을 받아 최대한 자연스럽게 읽히도록 문장을 정리했다. 오류가 상당히 많을 것이므로, 흥미가 생긴다면 이 링크를 통해 원문을 읽어볼 것을 권한다.

부모님께서 나에게 읽고 쓰는 법을 가르치신 것처럼, 나는 내 아이들에게 컴퓨터 프로그래밍을 당연히 가르쳐야 한다고 생각했다. 프로그래밍은 새로 등장한 예술이기도 하고, 그 중요성은 나날이 대두되어가며, 영화 제작에서 물리학에 이르기까지 모든 것에 영향을 끼치고 있다. 코드를 능숙하게 쓸 수 있는 능력은 내 아이들의 문해력을 높이고, 고용시장에서 경쟁력을 키워줄 것이다. 이 글을 쓰는 시점에서 나의 아내는 첫 아이를 임신 중이며, 약 3주 후에 출산 예정이다. 나는 전문적으로 코딩을 하지만, 그 아이가 타자를 칠 수 있을 때 쯤이면, 코딩이라는 소중한 기술은 세상에 없을지도 모른다.

내가 이런 믿음을 갖기 시작한 것은 지난여름 금요일 아침이었다. 나와 친구 벤은 컴퓨터를 이용해 타임스 스타일의 십자말풀이 퍼즐을 만들려고 했다. 이미 우리는 2018년에 소프트웨어를 활용하여 ‘토요일 퍼즐’을 만든 적이 있었는데, 그 과정에서 우리가 손을 댄 부분이 얼마나 적은지에(그저 여기저기 우리의 취향을 적용했을 뿐이다) 놀랐던 것이다. 이제 우리는 인간의 손길이 필요 없는, 십자말풀이 생성 프로그램을 만들고자 하고 있었다.

과거 우리가 그런 프로젝트들을 수행했을 때, 프로그램은 하드웨어적 구성 요소와 소프트웨어적 구성 요소를 모두 가지고 있었고 벤의 강점은 전자(前者) 쪽이었다. 언젠가 우리는 지하철이 아파트 근처 정류장에 접근하면 번쩍거리는 네온사인을 만든 적이 있다. 그때 벤은 유리를 구부리고 변압기의 회로 기판을 배선했다. 나는 대중교통 데이터를 처리하는 코드 작성을 담당했다. 벤도 전문적으로 코딩해 본 경험이 있긴 했지만 맛보기 수준의 작업이었고, 그 조차도 약 20년 정도 전에 있었던 일이었기 때문에 전문적인 코딩은 내가 맡았다. 그런데 벤은 우리의 새로운 십자말풀이 프로젝트에 뉴페이스 일꾼을 소개했다. 바로 벤이 ChatGPT 플러스 구독을 통해 코딩 조수 GPT-4를 사용하고 있었던 것이었다.

뭔가 수상한 일이 일어나기 시작했다. 프로젝트를 진행하며 벤과 나는 소프트웨어 요구사항에 대한 이야기를 나누었다. 그리고 놀랍도록 짧은 시간 후에, 벤은 스스로 그것을 조달하기 시작했다. 한번은, 우리가 사전 파일에서 무작위로 100줄을 인쇄하는 명령어를 필요로 하게 되었다. 나는 몇 분 동안 그 문제에 대해 고민했고, 난관에 봉착하여 구글링을 시도했다. 그렇게 내가 얻은 지식으로 몇 번 정도 코드를 쓰고 지우기를 반복하고 있을 때, 벤은 GPT-4에게 원하는 코드를 설명하더니 급기야 완벽하게 작동하는 코드를 얻어냈다.

그건 괜찮았다. 코드를 쓰는 것은 까다롭고, 모두가 구글링하니까. 그건 진짜 프로그래밍도 아니다. 며칠 후, 벤은 사전에 있는 단어에 평점을 매기는 아이폰 어플을 만들고 싶다고 이야기했다. 하지만 그는 아이폰 앱을 만드는 게 얼마나 귀찮은 일인지 전혀 몰랐다. 나도 몇 번 시도해 보았으나 반쯤 작동하는 것 그 이상은 만들지 못했다. 애플의 프로그래밍 환경은 억압적이었다. 새로운 프로그래밍 언어뿐만 아니라 코드를 편집하고 실행하기 위한 새로운 프로그램을 배워야 하고, 다수의 U.I. 구성요소들과 그것들을 엮어내는 복잡한 방법도 배워야 했으며, 마지막으로 앱을 패키징 하는 방법도 알아내야 했다. 새로운 것들을 산더미처럼 배우는 것에 비해 그만한 가치가 느껴지지 않았던 것이다. 아무튼 벤이 아이폰 어플에 대해 이야기한 다음 날 아침, 나는 그가 말했던 바로 그 앱을 내 메일함에서 발견했다. 완벽하게 작동하며 귀여운 디자인까지 갖춘 앱이었다. 벤은 그것을 몇 시간 만에 만들었다고 말했다. GPT-4가 대부분의 어려운 작업을 대신해 준 것이다.

이제 대부분의 사람들이 AI를 경험했다. 모두가 뜨거운 인상을 받은 건 아니다. 벤은 최근에 말했다. “나는 그게 나에게 코드를 써주기 전까지는 그다지 신뢰하지 않았어.” 회의적인 성격을 가지고 있거나, ChatGPT가 엉뚱한 글이나 거짓된 사실을 말하는 것을 목격한 비-프로그래머들은 아직도 무슨 일이 일어나고 있는지에 대해 과소평가하는 경향이 있다.

통달하기 위해 평생을 바쳐야 했던 지식과 기술들이 지금은 순식간에 흡수되고 있다. 나에게 코딩은 언제나 끝없이 깊고 풍부한 영역으로 느껴졌다. 이제는 그것에게 조의를 표하고 싶어진다. 나는 이세돌에 대해 자주 생각한다. 세계 최고의 바둑 기사였고 한국의 국민 영웅이었지만, 가장 잘 알려진 사실은 그가 2016년 알파고라는 컴퓨터 프로그램에 패했다는 사실이다. 이세돌은 AI를 쉽게 이길 수 있으리라 생각하고 대국을 시작했다. 하지만 며칠에 걸친 대국이 끝나갈 무렵에는 단 한 판이라도 이겼다는 것에 자부심을 느끼게 되었다. 승패가 확실해지자, 그는 기자 회견에서 다음과 같이 말했다. “기대에 부응하지 못해 죄송하다.” 그는 3년 후에 은퇴했다. 우리에게 익숙해지고 절박해지고 있는 질문, “내가 평생을 바친 이 일이 앞으로 어떻게 될 것인가”라는 물음이 그를 짓누른 것 같았다.

내가 컴퓨터에게 처음으로 매료된 것은 여섯 살 무렵으로 90년대 초 몬트리올에서 형과 함께 모탈 컴뱃을 플레이하던 순간이었다. 형은 나에게 피니시 무브, 상대방을 잔인하고 기발하게 죽이는 법에 대해 이야기했다. 우리 둘 다 그것들을 어떻게 실행할 수 있는지는 몰랐다. 형은 MS-DOS 터미널에서 파일이 저장되어 있는 곳인 FTP 서버에 접속하더니 알 수 없는 명령어를 입력하기 시작했다. 이윽고 그는 모탈 컴뱃의 모든 피니시 무브에 대한 코드가 적혀 있는 종이를 출력했다. 우리는 지하실로 돌아와 서로의 머리를 터뜨렸다.

나는 형이 해커라고 생각했다. 그리고 많은 프로그래머들이 그러하듯이 원격 시스템에 침투하여 제어하는 것을 꿈꾸게 되었다. 혼란을 일으키려는 것이 아니라 숨겨진 곳을 찾아내고 숨겨진 것들을 배우고 싶은 것이었다. Loyd Blankenship의 <해커 선언문="">에는 "내 죄는 호기심에 있다"라고 하는 구절이 있다. 나는 1995년 영화 <해커스>에서 데이드 머피가 지하 클럽에서 자신의 실력을 증명해 보이는 장면을 좋아한다. 누군가 배낭에서 컴퓨터 서적들을 꺼내고, 데이드는 표지만 보고도 그게 어떤 책인지 알아본다. 초록색 책은 국제 Unix 환경에 대한 것, 빨간 책은 N.S.A. 인증 네트워크에 대한 것, 분홍 셔츠를 입은 남자가 그려진 IBM PC에 대한 책. 데이드는 키보드를 두드리는 것만으로도 학교의 스프링클러를 작동시키고, 유조선의 밸러스트를 바로잡는 등의 일을 해낸다. 아는 것이 힘이라는 교훈을 주는 영화였다.

하지만 실제로 해킹은 어떻게 배울 수 있을까? 나는 5학년 때 가족과 함께 뉴저지에 정착했고, 고등학교 때 Short Hills 몰에 있는 Borders 서점에서 Ivor Horton의 ‘Beginning Visual C++’를 샀다. 무려 1200페이지에 달하는 나의 첫 마법서였다. 많은 튜토리얼이 그러하듯 내용은 처음에는 쉬웠다가 갑자기 어려워졌다. 중세 학자들은 일반적인 학습자들이 좌절에 빠지는 순간을 pons asinorum, 즉 ‘당나귀의 다리’라고 불렀다. 이 말은 유클리드의 <원론> 제1권 제5안에서 온 것으로, 실제로 그 책에 처음 등장하는 고난도 개념의 이름이다. 그 다리를 건넌 사람은 기하학을 마스터하게 될 것이고, 건너지 못한 사람은 취미로만 남게 될 것이다. 내 '당나귀의 다리'는 'Beginning Visual C++'의 4.3절, '동적 메모리 할당'에 관한 내용이었다. 나는 건너지 못했다.

하지만 나는 그 주제를 포기하지 않았다. 어느새 상황이 역전되기 시작했던 순간을 기억한다. 나는 장거리 비행을 하고 있었고, 검은색의 무거운 노트북과 Borland C++ 컴파일러가 들어 있는 CD-rom을 가져갔다. 컴파일러는 내가 쓴 코드를 기계가 해석하고 실행할 수 있는 코드로 변환하는 것인데, 나는 이 작업을 위해 며칠간 고군분투 중이었다. 관례적으로, 모든 코더의 첫 번째 프로그램은 오직 “Hello, world”라는 문장을 생성하는 것이다. 내 버전만 실행하려고 하면 짜증 나는 오류 메시지가 나왔다. 문제들은 산 넘어 산이었다. <해리 포터="">를 읽고 비행을 위한 주문은 모르는 채로 빗자루를 붙들고 있는 기분이었다. 나는 안다면 할 수 있게 될 것이라는 일념을 갖고 문제에 집중했다. 내가 배운 것은 프로그래밍이 사실은 지식이나 기술에 대한 것이 아니라 단순한 인내심, 어쩌면 집착에 관한 것이라는 점이었다. 프로그래머들은 끝없는 장애물의 행렬을 견뎌낼 수 있는 사람들이다. 사진 없이 서툰 외국어로 전화를 통해 바보 한 명에게 가구 조립 방법을 설명하고 있다고 생각해 보라. 당신이 얻을 수 있는 유일한 반응이라고는 당신의 제안이 터무니없고, 모든 것이 잘못되었다는 것뿐이라면. 그러던 도중 마침내 무언가를 조립하는 것에 성공한다면 얼마나 기쁠 것인가. 비행기 통로에 엎드려 누워 마지막 엔터를 누른 순간을 생생하게 기억한다. 일어나 보니 드디어 컴퓨터가 내가 시킨 일을 해낸 것이다. "Hello, world"라는 문장이 내 커서 위에서 컴퓨터의 목소리로 나타났다. 지식이라는 것이 일어나 자신을 소개하며 인사하는 것만 같았다.

우리 중 대부분은 <해커스>에 묘사된 해커가 되지 못했다. 프로그래머가 말하는 "해킹"은 코드를 이용해 창의력을 표현하는 일종의 땜질이다. 나는 정식으로 프로그래밍을 공부한 적은 없지만, 쓸모 있거나 재밌는 소규모 작업물들을 만들어가며 계속 컴퓨터를 만지작거렸다. 내가 대학 신입생이던 2006년에는 마스터스 토너먼트 세 번째 라운드 동안 타이거 우즈가 필드를 올라가는 상황을 실시간으로 알고 싶었다. 그래서 나는 pgatour.com의 리더보드를 스크랩하여 타이거 우즈가 버디나 보기를 할 때마다 문자 메시지를 보내는 프로그램을 만들었다. 영어 수업에서 <율리시스>를 읽고 나서는 책 속의 문장을 무작위로 가져와 음절을 계산하고 하이쿠를 조합해 내는 프로그램을 작성하기도 했다. 그건 오늘날의 챗봇이 생성하는 것보다 원시적이었지만, 나는 그 프로그램으로 진정한 시를 쓸 수 있다고 생각했다.

살을 벗겨 살아남게 하리
그는 불확실한 마음으로 기다렸네
과거의 무거운 짐을 지고

나는 코딩을 진지하게 생각하기 시작했다. 친구의 스타트업을 위해 프로그래밍을 제안했다. 컴퓨팅의 세계는 방대하면서도 지질학적으로 조직된 것처럼 층층이 쌓여 있었다. 웹 브라우저에서 트랜지스터에 이르기까지, 각 하위 영역 또는 시스템은 다른 오래된 하위 영역 또는 시스템 위에 구축되며, 그 계층들은 빽빽하지만 읽어내기 쉽다. 더 파고들수록 카 레이서 재키 스튜어트가 “기계 공감”이라 불렀던 것, 즉 기계의 강점과 한계를 알고 그것을 어떻게 활용할 수 있는지에 대한 감각을 개발하기 시작했다.

친구의 회사에서 나는 기계 공감이 성장하는 것을 경험했다. 대학 2학년 때 <제퍼디!>를 본 친구가 그 쇼의 플레이 가능한 게임 버전을 만들어보라고 제안했다. 몇 시간 동안 생각한 후, 나는 실망스럽게도 그것이 내 능력 밖이라고 결론지었다. 그러나 3학년 때 다시 아이디어가 떠오른 순간, 문제를 해결할 방법이 보이기 시작했다. 기계로 무엇을 할 수 있는지에 대한 더 나은 감각이 생긴 것이다. 그 이후로 14시간 동안 게임을 만들었다. 그 <짐보 제퍼디!> 게임은 몇 주 내로 친구들 사이에서 유행했다. 그때 나는 사람들이 기술에 인생을 바치는 이유를 알 것 같았다. 내가 만든 것을 누군가가 즐기는 것만큼 특별한 경험도 없었다.

그런 도중 나는 페이퍼 체이스를 하듯 학점을 무시하기 시작했다. 게걸스럽게 일했지만 과제를 하진 않았다. 어느 밤은 지하 컴퓨터실의 여러 기계를 병렬로 연결하여 프로그램을 실행하기도 했다. 바닥에는 숫자가 가득 찍힌 출력물을 펼쳐 놓고 길 찾기 알고리즘을 고민했다. 그 모든 것의 대가는 아무것도 모르는 채로 반복해서 시험을 보는 악몽을 꾸는 것이었는데, 특히 실해석학 과목이 그랬다. 수십 년 만에 가장 심각한 금융 위기가 있던 2009년, 나는 2.9의 학점으로 졸업했다.

그럼에도 불구하고 첫 정규직 일자리는 쉽게 얻을 수 있었다. 프로그래머로 일한 경험이 있었고, 누구도 내 성적 얘기를 하지 않았다. 젊은 코더들에게는 호황기였던 시절이다. 회사들은 최고의 프로그래머를 구하기 위해 입찰 전쟁을 벌였다. 경력 있는 프로그래머들에 대한 수요는 “리쿠르터 스팸”이라 불릴 정도로 폭발적이었다. 대학의 컴퓨터 과학 과정의 인기가 폭발하기 시작했다. (내 전공은 경제학이었다) 코딩 부트 캠프가 생겨나더니, 1년도 채 되지 않아 초보자를 고액 연봉 프로그래머로 만들 수 있다며 주장했다. 20대 초반 처음 면접을 볼 때, CEO는 내가 받을 자격이 있다고 생각하는 금액이 얼마인지 물었다. 나는 약간 부끄러울 정도의 금액을 말했다. 그러자 그는 즉석에서 계약서를 작성했고, 내가 말한 금액보다 10퍼센트 더 많은 금액을 제안했다. “소프트웨어 엔지니어”의 기술이 높이 평가되었다. 내가 근무했던 한 회사에서는 누군가 슬랙의 전신인 HipChat을 사용하여 내 동료에게 질문하는 것이 문제가 되었다. 그에게는 “엔지니어에게 직접 HipChat을 사용하지 마라”라고 경고했다. 우리는 그런 것이 너무 중요했다.

이 시대는 거의 제로에 가까운 금리와 특별한 기술 분야의 성장이 일어나던 때였다. 몇 가지 규범들이 생겨났다. 구글과 같은 회사들은 코더들에게 무상 에스프레소와 주문 제작된 따뜻한 음식, 수준급의 건강 관리와 육아 휴직, 체육관과 자전거 보관소, 캐주얼한 복장 규정, “20% 시간”을 제공해야 한다고 업계에 알렸다. 즉 일주일에 하루는 원하는 일에 할애할 수 있어야 한다는 것이다. 그들의 기술은 너무 중요하고 섬세하게 여겨진 나머지 일종의 미신이 생겨났다. 예를 들어, 언제든지 프로그래머가 돌 밑에서 버그(벌레) 무더기를 발견할 수 있기 때문에 코딩 작업이 얼마나 걸릴지 추정하는 것은 어리석은 것으로 간주되었다. 마감기한은 금기시되었다. 압박이 너무 강해지면, 코더는 “번아웃”이라고 말하는 것만으로도 몇 달은 확보해낼 수 있었다.

처음부터 이 모든 것이 잘못되었다는 느낌이 있었다. 우리가 하는 일은 그렇게 소중한 것이었을까? 이 호황은 얼마나 지속될 수 있을까? 10대 때 나는 웹 디자인을 조금 했는데, 당시에는 그 일이 수요가 많고 존경받았다. 주말 동안 한 가지 프로젝트를 하고도 수천 달러를 벌 수가 있었다. 그러나 Squarespace와 같은 도구가 등장하여, 피자가게 주인과 프리랜서 아티스트들이 클릭 몇 번으로 자신들의 웹사이트를 뚝딱 만들어낼 수 있는 날이 왔다. 전문 코더들에게 있어서는 상대적으로 적은 노력으로 많은 돈을 벌 수 있는 일자리가 사라진 셈이다.

이러한 변화에 대한 개발자 커뮤니티의 반응은 단순했다. 그렇다, 계속해서 스킬을 업그레이드해야 한다. 어렵고 잘 알려지지 않은 것을 계속해서 배워야 한다. 소프트웨어 엔지니어라는 인간들은 자동화를 사랑한다. 따라서 그들 중 최고의 인재들은 필연적으로 어떤 작업을 쓸모없게 만드는 도구를 개발해낸다. 바로 이 본질이 우리가 왜 그러한 좋은 대우를 받는지 설명해 준다. 코드는 엄청난 영향력을 가진다. 소프트웨어 하나가 수백만 명의 사람들의 일에 영향을 미친다. 그리고 이 사실은 자연스럽게 프로그래머 자신들을 대체하기도 한다. 우리는 이러한 진보를 밀물이 들어오며 발을 조금씩 갉아내는 것으로 생각해야 했다. 계속 배우기만 한다면, 그래도 건조한 상태를 유지할 수 있을 것이다. 좋은 조언이었다. 쓰나미가 오기 전까지는 그랬다.

처음으로 AI 챗봇을 사용하여 프로그래밍 도움을 받았을 때, 나는 그것들을 피해 다니며 공부에 몰두했다. 그리고 나의 동료들도 그럴 것으로 예상했다. 하지만 곧 내 책상으로 가는 길에 프로그래머들의 모니터에서 AI 채팅 세션의 뚜렷한 색깔 - 질문과 응답으로 나누어져 있는 패턴 - 을 보기 시작했다. 이 도구가 생산성을 높여준다는 것이 일반적인 주장이었고, 어떤 경우에는 10배 빨리 문제를 해결할 수 있도록 도와주기도 했다.

나는 그게 정말 필요한지 확신할 수 없었다. 프로그래밍이라는 행위 자체를 즐기고 그로부터 유용함을 느끼고 싶었다. 내게는 코드를 정렬하고 탐색하는 데 사용하는 텍스트 편집기같이 익숙한 도구가 그 목적에 부합했다. 텍스트 편집기는 물론 더 빨리 작업을 제출할 수 있도록 도와주지만, 그래도 여전히 공은 내가 세웠다고 느껴진다. 그러나 AI는 달랐다. 많은 도움을 제공했다. 나는 그것이 퍼즐을 푸는 기쁨과 만족감을 빼앗아버릴까 봐 두려웠다. 나의 생산성을 보여줄 수 있는 것은 오직 결과물 뿐이었다.

대부분의 프로그래머들의 실제 작업 결과물은 별로 흥미롭지 않다. 사실 웃길 정도로 평범하다. 몇 달 전, 나는 사무실에서 집으로 돌아와 그날 특히 재미있는 문제와 씨름하며 멋진 하루를 보냈다고 아내에게 이야기했다. 나는 표를 생성하는 프로그램을 작업하고 있었고, 누군가 두 개 이상의 열에 걸쳐 있는 헤더를 추가하고 싶어 했는데, 이것은 우리가 만든 맞춤형 레이아웃 엔진이 지원하지 않는 기능이었다. 그 일은 긴급했다. 이 표들은 중요한 사람들이 원하는 중요한 문서에 쓰이고 있었다. 그래서 나는 오후 대부분을 방에 틀어박혀있었다. 해결해야 할 사랑스러운 부가 문제들이 잔뜩 있었다. 레이아웃 엔진 사용자들이 열을 걸쳐 있는 헤더를 원한다는 것을 어떻게 표현해야 할까? 코드는 어떤 모습이어야 할까? 또 무시할 경우 버그를 일으킬 수 있는 까다로운 세부사항들이 있었다. 예를 들어, 헤더가 걸쳐야 할 열 중 하나에 데이터가 없어서 삭제된다면 어떻게 될까? 그날은 나에게 좋은 하루였다. 펜과 패드를 꺼내야 했고, 시나리오를 그리고, 내 논리를 확인하고 또 확인했기 때문이다.

그날 있었던 일을 멀리서 바라본다면 테이블에 새로운 헤더가 추가되었을 뿐, 그 이상도 이하도 아니다. 나의 즐거움은 과정에 있지 제품에 있는 게 아니었다. 그리고 그 과정을 ChatGPT로 3분 만에 끝내버렸다면, 그것의 가치는 어떻게 될 것인가? 물론 프로그래머로서 우리의 일은 글자 그대로 코드를 작성하는 것 외에도, 신입사원을 교육하고 시스템을 설계하는 등 많은 것을 포함한다. 하지만 코딩은 언제나 그 핵심이었다. 내 경력을 통틀어 나는 까다롭고 사소한 프로그래밍 퍼즐을 해결할 수 있는 능력 하나로 채용되어왔다. 그런데 갑자기 이 능력이 그다지 중요하지 않게 되어버린 것이다.

나는 벤을 통해 많은 것을 알게 되었는데, 그는 GPT-4로 놀라운 성과를 거두고 있다고 거듭 말해주었다. 그것은 까다로운 일을 해낼 뿐만 아니라 고급 엔지니어의 특성도 가지고 있다. 깊은 지식의 우물에서 문제에 접근하는 방식을 제안할 줄 알았다. 한 프로젝트에서 벤은 작은 스피커와 빨간 LED 전구를 찰스 왕의 초상화 액자에 연결했고, 전구는 왕관의 보석 같은 역할을 했다. 웹사이트에 메시지를 입력하면 스피커가 멜로디를 연주하고 빛이 모스부호로 된 메시지를 번쩍이는 프로젝트였다. 기이한 영국 이민자를 위한 선물이었다. 그런데 새로운 메시지를 가져오는 장치를 프로그래밍한다는 것은 벤에게 너무 어려운 일이었다. 그가 사용하려는 마이크로컨트롤러뿐만 아니라 메시지를 저장하는 백엔드 서버 기술인 Firebase에 대한 전문 지식이 필요했을 것이다. 벤은 나에게 조언을 구했고, 나는 몇 가지 가능한 방법을 중얼거렸지만 동시에 그가 원하는 것을 구현할 수 있을지 확신할 수 없었다. 그러나 그가 GPT-4에게 물어보니 그것은 Firebase에 프로젝트를 훨씬 간단하게 만들 수 있는 기능이 있다고 답하는 것이었다. 마이크로컨트롤러와 호환되는 코드, 바로 거기에 답이 있었다.

나는 GPT-4를 사용하는 것이 두려웠고, 매달 OpenAI에 20달러를 지불하는 것도 약간 불쾌했으므로 벤을 통해 그것의 능력을 탐구하기 시작했다. 우리는 아까의 십자말풀이 프로젝트를 진행했고, 나는 그에게 제안했다. “이렇게 프롬포팅 해보는 건 어때?” 그러자 벤은 나에게 키보드를 건네려고 했다. “아니, 네가 직접 해.” 내가 말했다. 우리는 함께 AI가 할 수 있는 것에 대한 감각을 키워갔다. 벤은 나보다도 경험이 많았고, 한 번에 더 많은 것을 얻어낼 수 있었다. 나중에 그는 자신의 뇌가 GPT-4의 그것과 동일해지기 시작했다고 말했다. 나라면 그가 기계 공감을 달성했다고 말했을 거다. 한 번은, 벤이 AI에게 오래된 노키아 전화기에 있는 스네이크 게임을 똑같이 만들도록 했다. 그러나 GPT-4와 짧은 대화를 나눈 후, 벤은 게임을 다음과 같이 수정하도록 했다. “네가 졌을 때 가장 효율적인 경로에서 얼마나 벗어났는지 보여줘.” GPT-4가 이 작업을 수행하는 데 약 10초가 걸렸다. 솔직히 말해서, 나조차도 할 수 있을지 확신이 서지 않는 작업이었는데 말이다.

수십 년 동안 인공지능이 지배하고 있는 체스에서 플레이어의 유일한 희망은 봇(bot)과의 팀워크다. 반-인간-반-AI 팀, 이 센타우르스는 혼자 작업하는 최고 능력 인간이나 최고 성능 AI 엔진을 이길 수 있을지도 모른다. 프로그래밍은 아직 체스처럼 되지 않았다. 그러나 센타우르스는 도착했다. 현재로서 GPT-4 자체는 나보다 못한 프로그래머이다. 벤은 더욱 심하다. 그러나 벤과 GPT-4가 결합되면 위협적인 존재가 된다.

나는 금세 굴복했다. 작은 검색 도구를 만드는 작업을 하고 있었는데, 사용자의 쿼리와 결과가 일치하는 부분만을 강조해 보이고 싶었다. 나는 쿼리를 단어별로 분리해 내는 방식으로 일을 훨씬 복잡하게 만들었다. 인내심이 떨어지기 시작하자 GPT-4 생각이 났다. 오후 내내 프로그래밍 대신 ‘프롬프팅’, 즉 AI와 대화하는 시간을 보낼 수 있을 것이었다.

1978년 ‘자연 언어 프로그래밍의 어리석음’이라는 에세이에서 컴퓨터 과학자 에츠거 W. 다익스트라는 C++나 파이썬 같은 전문 언어가 아닌 자연어로 컴퓨터에게 지시하면, 컴퓨터의 강점 중 하나인 정밀성을 상실할 것이라 말했다. 그는 정식 프로그래밍 언어가 “우리가 모국어를 사용할 때 거의 피할 수 없는, 모든 종류의 헛소리를 배제하는 놀랍도록 효과적인 도구”라고 썼다. 다익스트라이의 논리는 프로그래밍 분야에서 진리로 받아들여져왔다. 이 에세이가 2014년 레딧에서 회자될 때, 한 상위 댓글 작성자는 “이 아이디어가 얼마나 명백한지” 또는 “여전히 많은 사람들이 이를 모른다는 사실” 중 어느 것이 더 무서운지 모르겠다고 썼다.

나는 처음으로 GPT-4를 사용하면서 다익스트라가 이야기하고자 했던 것이 무엇이었는지 볼 수 있었다. 당신은 AI에게 “문제를 해결해 줘”라고 말할 수 없다. 그런 날이 올 수도 있지만, 지금은 연주 방법을 배워야 하는 악기와 같다. 초보에게 알려주듯 원하는 것을 신중하고 명확하게 말해야 한다. 그 검색 강조 문제에서, 나는 GPT-4에게 한 번에 너무 많은 것을 요구하다가 실패하는 것을 보고 다시 시작해 보았다. 매번 나의 프롬프트는 야심을 잃어갔다. 대화가 끝날 때쯤, 나는 검색이나 강조에 대해 이야기하는 것이 아니라 문제를 구체적이고 추상적이며 모호하지 않은 부문제들로 쪼개어 말하고 원하는 것을 얻게 되었다.

AI의 수준을 파악하고 나서, 나는 작업 생활이 즉시 변화하는 것을 느꼈다. 곳곳에 GPT-4 크기의 구멍이 보였고, 어째서 사무실 주변의 화면이 항상 채팅 세션으로 가득 차 있었는지, 어떻게 벤이 그렇게 생산적이 되었는지 마침내 이해할 수 있었다. 그리고 나는 더 자주 시도하기로 마음을 열었다.

나는 크로스워드 프로젝트로 돌아갔다. 우리의 퍼즐 생성기는 s c a r k u n i s a r e a 처럼 못생긴 텍스트 형식으로만 출력해냈다. 나는 그 출력을 그리드 안의 단어를 탐색할 수 있는 예쁜 웹 페이지로 바꾸고, 한눈에 득점 정보까지 볼 수 있게 만들고 싶었다. 하지만 이 작업이 까다로울 것임을 알고 있었다. 각 글자는 소속된 단어, 가로 및 세로에 태그를 달아야 했다. 이건 저녁 시간의 상당 부분을 소비해야 할 문제였다. 아이가 곧 태어날 예정이라 나는 여가 시간이 부족한 참이었고, 그렇게 GPT-4와 대화를 시작하게 되었다. 몇 번의 주고받기가 오갔다. 내가 직접 몇 줄의 코드를 읽어야만 GPT-4가 무엇을 하고 있는지 이해할 수 있었다. 그러나 전에 내가 코딩의 본질이라고 믿었던, 숫자, 패턴, 루프 같은 생각은 하지 않았다. 컴퓨터의 동작을 시뮬레이트 하지 않았다. 컴퓨터 프로그래머 제프리 리트가 비슷한 경험을 하고 쓴 것처럼, “나는 결코 내 프로그래머 두뇌를 가동하지 않았다.” 그럼 내가 _한 것은 무엇일까?

이세돌이 바둑 경기에서 은퇴하기로 결심한 것은 바둑이 영원히 저평가되었다는 느낌 때문이었을지도 모른다. 나는 컴퓨터가 마법처럼 느껴질 때 프로그래밍을 시작했다. 기계는 힘을 주었고, 그것의 신비한 비밀인 마법 언어를 배우게 만들었다. 이것은 특별한 마음가짐을 필요로 했다. 나는 선택받은 것 같았다. 지루함에 몰두하고, 신중한 사고에 집중하고, 불명확한 지식을 축적하는 데 나 자신을 바쳤다. 그런데 어느 날, 신중한 사고나 불명확한 지식 없이도 같은 결과를 달성할 수 있게 되어버렸다. 어떤 면에서 이것은 한 사람의 일생을 시간 낭비처럼 느끼게 할 수 있다.

하지만 이세돌에 대해 생각할 때마다 나는 체스를 떠올린다. 기계가 체스를 정복한지 약 30년 후, 더는 체스를 둘 이유가 없다는 우려에도 불구하고 체스는 어느 때보다 인기가 많다. 활력을 불어 넣은 것은 AI다. 내 친구는 최근에 체스를 배우기 시작했다. AI 코치는 친구의 한계에 맞는 체스 문제를 제공하고 게임 후 잘못된 부분을 정확히 짚어준다. 최고 수준의 그랜드 마스터들은 컴퓨터가 제안하는 움직임을 연구한다. 체스를 배우기는 그 어느 때보다 쉬워졌고, 그것의 가장 깊은 비밀을 알아내는 것은 어느 때보다 흥미진진하다.

컴퓨팅은 아직 극복되지 않았다. GPT-4는 인상적이지만 일반인은 프로그래머와 동일하게 그것을 다룰 수 없다. 나는 아직 내 직업이 안전하다는 것을 느낀다. 사실, 전보다 더 그렇게 느낀다. 소프트웨어 제작이 쉬워지면 소프트웨어 자체는 더 많아질 것이고, 프로그래머는 그것의 디자인, 구성, 유지 관리를 맡게 될 것이다. 나는 프로그래밍의 까다로운 부분에 특별히 능숙하지 않다. 나는 빅 테크 회사의 전형적인 코딩 테스트에서 여러 번 떨어졌다. 내가 비교적 잘하는 것은 무엇을 구축할 가치가 있는지, 사용자들이 무엇을 좋아하는지, 기술적으로뿐만 아니라 인간적으로 어떻게 소통하는지 아는 것이다. 내 친구는 이 AI 시대를 “평범 프로그래머의 반격”이라고 부른다. 코딩 자체의 중요성이 떨어지면서, 더 부드러운 기술이 빛을 발할 것이다.

그렇다면 내 아이에게 무엇을 가르쳐야 하는지 다시 생각해 보자. 아이가 성장함에 따라 우리는 프로래머를 지금 컴퓨터에 대해 생각하듯이 바라보게 될 것이다. 컴퓨터라는 단어가 손으로 계산을 하는 사람을 가리키던 시절이 있었듯이. C++나 파이썬을 직접 타이핑하여 프로그래밍 하는 것은, 천공 카드에 이진 명령어를 입력하는 것처럼, 다소 웃겨질지도 모른다. 다익스트라는 경악하겠지만, 컴퓨터에게 정확히 원하는 것을 하게 만드는 것은 보다 예의 바른 말로 요청하듯이 변할지도 모른다.

그러니 가르쳐야 하는 것은 기술이 아니라 정신인지도 모르겠다. 가끔 나는 내가 다른 시대에 태어났다면 무엇을 하고 있을지 생각한다. 농경 시대의 코더들은 아마 수차와 작물 품종으로 장난을 쳤을 것이고, 뉴턴 시대의 코더들은 유리와 염료와 시간을 측정하는 것에 집착했을 것이다. 최근 나는 신경망에 대한 구술 역사자료를 읽던 도중, 1930년대 즈음 태어난 많은 사람들이 어린 시절 라디오를 가지고 놀았다는 사실에 깜짝 놀랐다. 아마도 다음 세대들은 부모가 한때 블랙박스로 여겼던 AI의 심연에서 늦은 밤을 지새울 것이다. 코딩의 시대가 저물고 있다는 걱정은 필요 없다. 해킹은 영원하다. ♦


  1. 2023년 11월 20일 자 인쇄판에 Begin End: A Coder Considers the Waning Days of the Craft - The New Yorker)라는 제목으로 게재되었다.