바이브코딩(vibecoding)으로 만들어진 소프트웨어는 어딘가 무작위적이고 예측하기 어려운 방식으로 변해간다는 느낌이 든다. 그러다 자연스럽게 브뤼헐(Bruegel)의 '바벨탑'이 떠올랐다. 이미 혼돈 그 자체를 화폭에 담아낸 그 그림처럼. 바벨탑 이야기는 흔히 교만과 야망, 그리고 인류가 더 이상 서로를 이해하지 못하게 된 이유에 관한 이야기로 전해진다. 하지만 이 이야기에는 또 다른 면이 있다. 바로 기술적 진보를 가능하게 했던 연대(unity)에 관한 이야기이기도 하다.
이 이야기는 기술의 도약으로 시작된다.
서로 말하되 자, 벽돌을 만들어 견고히 굽자 하고 이에 벽돌로 돌을 대신하며 역청으로 진흙을 대신하고
그리고 그 기술을 문명적 기획에 사용한다.
자, 성읍과 탑을 건설하여 그 탑 꼭대기를 하늘에 닿게 하자
그런데 하나님께서 상황을 살피실 때, 그분의 관심은 벽돌이 아니었다.
이 무리가 한 족속이요 언어도 하나이라 […] 이후로는 그 하고자 하는 일을 막을 수 없으리로다1
그들의 힘은 협력에서 나왔다. 같은 언어를 공유했기에, 그 공유된 언어를 바탕으로 혼자서는 결코 세울 수 없는 것을 함께 만들어낼 수 있었다. 하나님은 벽돌을 빼앗지 않았고, 벽돌 만드는 기술을 지우지도 않았다. 서로를 이해하는 능력을 거두셨을 뿐이다. 그것으로 충분했다. 공사는 멈췄다.
AI 보조 프로그래밍이 더 나은 도구를 가져다주고, 덕분에 더 야심찬 소프트웨어를 만들 수 있다는 생각은 충분히 설득력이 있다. 개인 수준에서는 분명히 맞는 말이다. 에이전트를 갖춘 개발자가 코드베이스를 바꾸는 능력은 이전과 비교할 수 없을 만큼 커졌다. 그러나 대규모 소프트웨어 프로젝트의 병목은 한 번도 개인이 코드를 얼마나 빠르게 생산하느냐에만 있었던 적이 없다. 진짜 병목은, 사람들이 자신들이 바꾸고 있는 시스템에 대한 이해를 얼마나 잘 조율하느냐에 있다.
소프트웨어 프로젝트의 공유 언어는 영어도, 파이썬도 아니다. 각 개념이 무엇을 의미하는지, 경계는 어디에 있는지, 어떤 불변 조건이 중요한지, 누가 무엇을 담당하는지, 그리고 시스템이 왜 지금의 형태를 갖게 됐는지에 대한 공통된 이해가 바로 그 언어다. 이런 언어는 어느 한 곳에 깔끔하게 정리돼 있는 경우가 거의 없다. 문서와 코드 속에 일부 담겨 있기도 하지만, 코드 리뷰, 대화, 논쟁, 그리고 누군가에게 변경 사항을 직접 설명해야 했던 경험 속에서도 살아 숨 쉰다.
에이전트가 등장하기 전, 이 공유된 이해는 마찰(friction)을 통해 유지되는 측면이 있었다. 누군가의 스토리지 레이어를 변경하려면 대개 그 코드를 직접 읽고, 질문을 던지고, 해당 서비스에 의존하는 다른 팀과 조율해야 했다. 느린 과정이었고, 그 느림의 상당 부분은 낭비였다. 하지만 전부가 낭비는 아니었다. 일부는 상대의 이해가 내 것이 되고, 우리 둘 다 시스템이 어떻게 작동하는지에 대해 여전히 같은 생각을 갖고 있는지 확인하는 과정이었다. 이 마찰이 사람들을 동기화했다.
에이전트는 그 마찰의 상당 부분을 제거한다. 나는 에이전트에게 OAuth 추가를 맡기고, 당신은 캐싱을 맡기고, 또 다른 누군가는 데이터베이스를 처음부터 다시 설계하고 UI를 분홍색으로 바꾸라고 지시할 수 있다. 각각의 변경은 따로 떼어놓고 보면 합리적일 수 있다. 코드는 컴파일되고, 테스트는 통과하고, 설명은 필요할 때마다 자동으로 생성된다. 굳이 서로 대화할 필요도 없고, 그 변경이 예전이라면 어쩔 수 없이 배워야 했을 공유 모델의 일부를 새로 익힐 필요도 없다.
여러 번 말했지만, 에이전트는 고통을 느끼지 않는다. 고통을 느끼는 건 인간뿐이다. 에이전트는 이제 우리가 예전이라면 반드시 다른 사람의 도움이 필요했던 시스템 영역에서도, 사람이었다면 진즉에 반발했을 코드베이스에서도 거침없이 움직일 수 있게 해준다.
바이브코딩으로 확장된 프로젝트들을 들여다보면, 코드베이스가 바벨이 되는 이유는 아무도 소통할 수 없어서가 아니다. 아무도 소통할 필요가 없어서다. 개발자마다 지치지 않는 번역가가 붙어, 탑의 어느 한 귀퉁이를 설명해주고 원하는 대로 국소적인 수정을 해준다. 변경은 계속 반영된다. 인간이 함께 시스템을 추론하는 데 필요한 아키텍처 언어가 사라지는 동안에도.
그러나 이건 성경 속 이야기와 다르다. 바벨에서는 공통 언어를 잃자 공사가 멈췄지만, AI 보조 엔지니어링에서는 공유된 이해가 이미 무너진 뒤에도 공사가 계속된다. 즉각적인 실패가 없다는 것, 그게 이 상황을 묘하고도 당혹스럽게 만드는 지점이다. 탑은 무너지지 않는다. 그래서 우리는 무엇을 잃었는지 알아채지 못한다. 탑은 그저 계속 높아질 뿐이다.