
"군자는 그릇이 아니다 (君子不器 - 군자불기)" — 논어(論語) 위정편
AI 시대, 능력의 신호와 군자불기(君子不器)의 프로그래밍
나는 원래 이론물리학을 전공했다. 세상이 어떻게 움직이는지 알고 싶었고, 가능하다면 학계에 남아 계속 공부하고 싶었으나, 능력이 부족했고, 돈이 부족했다.
하지만 한국에서 물리학으로 인정받으려면 국내 최상위권 대학의 학맥을 타거나, 미국 중심의 해외 박사 학위라는 경로를 거쳐야만 했다. 집안 형편상 미국 유학은 불가능했고, 내가 지켜본 학계에서 나는 그 '혈통(Pedigree)' 밖에 있었다. 내가 학계를 포기한 것은 내 실력의 한계도 있지만, 내가 그 배타적인 네트워크의 증명서 안에 들어갈 수 없다는 것을 확신하게 되는 관찰이 동반되었다.
그리고 결정타는 그 외곽에 있는 사람 즉 강사의 월급이었다. 난 그 월급에 충격을 받았다. 나는 그 월급을 가지고는 내가 생각하는 삶을 영위하지 못하리라 깨달았다. 아내가 있고 작은 집이 있는 평범하다고 여겨지는 그 삶.
학문이 가장 순수하다는 것은 사실 거짓말이다. 그들은 가장 순수하게 배타적이다. 어느 연구소의 소속이었고, 누구의 밑에 있었는지를 가장 많이 따진다.
과학은 반증 가능한 영역이지만, 그 과학에 스폰하는 것은 기업이고, 그 기업은 믿고 싶어하는 누군가를 유명하게 만들려고 한다. 과학은 아름답지 않다. 학회에 돈을 주는 사람에 따라서 통계 모델링을 바꿔서 해석하고, 다른 결론을 내고 학회의 좌장에 반항하기 극히 어려운 구조로 만들어진다. 내가 관측한 결과이므로 다르게 생각할 수 있다. 나는 그곳에서 튕겨나왔기때문에 악의적인 시각으로 왜곡하는 자일 수 있다.
어쟀건 나는 그만두던 해의 박사 취업 통계를 들여다봤다. 그 통계는 내가 이미 짐작하고 있던 사실을 확인시켜 주었다. 학계는 능력주의가 아니다. 혈통이다. 엄밀한 과학이라는 옷을 입은 추천과 인맥의 네트워크다.
그래서 나는 떠났다. 물리학을 사랑하지 않아서가 아니라, 내가 그 학문을 수행할 자격증을 결코 받지 못하리라는 것을 이해했기 때문이다.
그 뒤 프로그래머가 되었다.
나는 코드가 아름답다거나 이런 것에는 일절 관심없었다. 나는 수학이 아름답다거나 이런 것들을 예전부터 느끼지 못했으니까. 단지 나는 세계를 내 머릿속에 그려놓고 싶었다.
물리학이 수식으로 세계를 모델링하듯, 나는 코드로 내 머릿속 세계를 시뮬레이션하고 싶었을 뿐이다.
내게 프로그래밍의 최종 목적지는 '머릿속의 아이디어가 화면 위에서 얼마나 아름답게 움직이는가'에 있다.
그리고 이건 나한테 꽤 큰 도움이 되었고, 내 또래 치고 엄청난 돈을 만지게도 해주었다. 사기 당해서 날렸지만.(물론 상위 1%급은 아니다. 상위 10%급 말이다. 대한민국 월급 근로자 절반은 300만원을 못번다. 적어도 300만원 이상은 벌었으니까.)
포트폴리오의 붕괴와 동질화(Homophily)의 귀환
AI를 매일 사용하며 뼈저리게 느끼는 딜레마가 있다.
앞으로 인간의 능력은 무엇으로 증명될 것인가?
과거에는 무언가를 실제로 만들어 배포했다는 사실 자체가 강력한 신호(Signal)였다. 프론트엔드, 백엔드, DB, 인증, 배포를 모두 뚫고 게임이나 서비스를 런칭했다면 그 결과물만으로도 실력을 추론할 수 있었다.
적어도 한국 시장에서 내부 코드 아키텍쳐 묻는게 아니라 포트폴리오가 중요했다.(애초에 지방에서 내부 코드 아키텍쳐는 엉망이다)
하지만 AI는 이 '관찰 가능한 결과물의 하한선'을 폭발적으로 끌어올렸다. 초보자도 AI를 쓰면 겉보기에는 로그인도 되고, 차트도 그려지며, 테스트 코드까지 갖춘 그럴듯한 산출물을 낸다.
결과물의 생성 비용이 0에 수렴하면, 결과물은 더 이상 실력의 증거가 되지 못하게 된다. 나는 학생 10명을 튜터링했고 그중 6명을 취직시켰다. (물론 다 스타트업에 중소다)
그때 핵심은 전부 발매였다. 즉 출시 경험은 정말로 강력했고 한 3년전만 해도 출시경험이 가장 강력한 포트폴리오였다. 하지만 이제는 아니다.
채용자나 투자자가 수백 개의 그럴듯한 AI 포트폴리오를 일일이 검증할 시간은 없다. 검증 비용이 치솟을 때, 인간은 가장 원시적이고 배타적인 지표로 회귀한다고 생각한다.
학위, 유명 기업 출신, 기존 네트워크의 보증. AI가 기술의 진입 장벽을 무너뜨렸음에도, 역설적으로 내가 가지지 못하는 '혈통과 인맥(Homophily)'이 다시 가장 강력한 신호로 부상하는 것이다.
단기적으로 아이비리그와 서울대 학생증 가치가 낮아질 수 있으나, 장기적으로는 더욱 강력해질 것이다. 지금도 이미 SI 시장과 VC 투자시장에서는 해외 대학 출신과 출신이 가장 강력한데 더욱 강해질 것이다.
이제 누구나 그럴듯한 제품을 만들어낼 수 있다. 몇 번의 프롬프트로 프론트엔드를 생성하고, 인증을 연결하고, 데이터베이스 스키마를 흉내 내고, 겉보기에 시니어 엔지니어가 만든 것과 동일한 결과물을 만들어낼 수 있다. 그럴듯한 산출물을 만드는 비용은 0으로 수렴하고 있다.
군자불기(君子不器): 그릇이기를 포기하라
AI에 의존할수록 가장 두려운 것은 내 코드 작성 능력(타건 능력)이 퇴화하고 있다는 감각이다. 예전처럼 API가 바로 떠오르지 않고, 복잡한 구현은 직접 짜기보다 AI에게 생성시킨다. 없는 시절로 돌아가는 것은 불가능하다라고 생각한다.
옛날에는 서브모니터에는 문서를 띄워놓고 그걸 번역하면서 실제 예시와 깃허브 돌아다니면서 끊임없이 나은 구현을 찾았다. 600줄 쓰는데 하루를 쓰는 경우도 잦았다. 하지만 지금은 3분이면 된다.
논어(論語)에는 "군자불기(君子不器 - 군자는 하나의 용도로만 쓰이는 기물이 아니다)"라는 말이 있다.
타자를 쳐서 국소적인 구문(Syntax)을 완성하는 과거의 '코딩 근육'은 철저하게 도구(器)의 영역이었지만, AI가 그 도구의 역할을 완벽히 대체하고 있는 지금, 코딩 능력이 감퇴한다고 느끼지만, 나는 인지적 자원의 사용처가 줄어들면 다른 부분이 늘어난다고 믿는다. 나는 국소적 디테일에 더 약해졌지만, 거시적인 파이프라인 설계능력이 발달하고 있다.
나는 이제 선택을 내려야한다. 코드를 계속 갂을 것이냐, 아니면 군자는 그릇이 아니라고 자기 최면을 건 후에, 쏟아지는 코드를 어떻게 안정화 시킬 것이냐에 대한 선택 말이다.
나는 비처럼 쏟아지는 코드 중에 안정적인것만을 담을려는 노력을 하겠다고 선택했다.
동질성과 기술적 새로움의 죽음
한때 인터넷은 예상치 못한 곳에서 이상하고 아름답고 세상을 바꾸는 것들을 만들어냈다. 리눅스는 핀란드 학생에게서 나왔고, PHP는 자기 이력서를 관리하고 싶었던 한 사람에게서 나왔다. 트위치가 유명하게 만든 구독 모델조차 원래는 한국의 한 플랫폼에서 영감을 받았다고 트위치 CEO가 말한 적이 있다. 초기 인터넷 역사는 허락 없이 세상을 바꾼 아웃사이더들로 가득하다.
그 시대는 끝나가고 있다.
업계는 성숙해졌다. 소프트웨어를 만드는 방식을 지배하는 표준은 이제 거의 전적으로 미국 빅테크가 결정한다. 새로운 언어, 새로운 프레임워크, 새로운 아키텍처 패턴은 캘리포니아에서 설계되어 전 세계로 내려온다. 그 생태계 밖에 있으면, 당신은 그들이 이미 만들어 놓은 변화를 따라잡는 데 에너지의 대부분을 쓴다.
리눅스를 생각해 보라. 초창기 리눅스는 단순했다. 커널에만 집중하면 됐다. 이제 경쟁하려면 커널, 드라이버, GPU, 파일 시스템, 툴체인, 패키지 매니저, 보안 모델을 모두 동시에 다뤄야 한다. 개인이 이길 수 있는 게임이 아니다. 개척지는 닫혔다.
그래서 나는 애플리케이션 레이어로 이동했다. 시스템에 관심이 없어서가 아니라, 시스템 레이어가 더 이상 아웃사이더가 싸울 수 있는 곳이 아니기 때문이라 생각한다.
한국이 미국의 표준에 도전했던 시스템들은 레거시가 되었고 지금 그 기술이 한국 프로그래머가 세계에 도전하는데에 발목을 잡는다. 나는 그 게임에서 이길 수 없다고 판단했다.
통제와 정명(正名)의 아키텍처
AI 시대의 진정한 위협은 '코드를 못 짜는 것'이 아니라, '너무 많은 코드가 너무 쉽게 생성되는 것'이다. 수백 줄의 코드가 쏟아질 때마다 중복된 상태, 숨겨진 예외 처리, 경쟁하는 캐시가 시스템을 갉아먹는다.
그래서 나는 Rocq(Coq)와 같은 최소 증명 기법과 ADT(대수적 데이터 타입)로 돌아갔다. 목적은 모든 코드를 수학적으로 증명하겠다는 것이 아니다.
망가지면 안되는 부분만 증명하고, 망가지는 부분에 대해서 정해놓는 경계선을 만들기로 했다.
상태를 ADT로 좁혀 불가능한 상태를 원천 차단하고, 의존성 방향을 통제하려고 한다. 이를 위해 나는 AI가 생성한 코드를 줄 단위로 읽는 대신, 함수와 클래스의 소유권과 의존성 흐름을 시각적으로 추적하는 '시각적 디버거(Visual Debugger)'를 구축해 사용하고 있다.
이제 코드가 아니라 코드가 이어지는 연결이 중요하다고 나는 생각한다.
옛날에는 코드 작성능력이 개천줄기고 사람마다 그 물줄기를 만드는게 달랐다. 하지만 AI는 댐이 터져서 나오는 물줄기이다. 엄청난 양의 엄청난 코드를 계속 만든다. 그렇기때문에 나는 그 물줄기가 어떻게 흐를지 고랑을 파려고 한다.
지능의 자본화, 그리고 5년의 유예
지방에서 가난한 학생들을 가르치며 마주하는 또 다른 현실은 '지능의 자본화'다. 유료 AI 모델을 쓰는 학생과 무료 모델을 쓰는 학생의 격차는 절망적일 정도로 벌어진다. 유료 모델과 무료 모델의 격차를 나는 매일 본다.
봉사활동을 하면서 학생들에게 AI 사용법을 가르치면서 지겹도록 본다. 이 격차는 아마 누적이 될 것이다.
정보의 평등화가 역설적으로 '연산량(Compute) 접근의 불평등'을 낳았다. 나 역시 매월 상당한 구독료를 AI에 지불하고 있다. 인지 능력을 돈으로 사야 하는 시대가 온 것이다.
인터넷에는 AI Slop(쓰레기 데이터)이 쏟아지고 있다. 나는 5년은 이럴 것이라 생각한다. 그런 상황에서 나는 어떻게 로컬에서 자리 잡을 수 있을까.
늘 어렵다.