AI 코딩이 드러낸 개발자의 두 얼굴
최근 AI 코딩 툴의 급격한 발전으로 인해 개발자 커뮤니티 내에서 묘한 균열이 감지되고 있다. 어떤 이들은 자신이 평생 갈고닦아온 기술적 장인정신이 훼손되는 것에 대해 깊은 상실감을 느끼고, 또 다른 이들은 전례 없는 생산성의 파도를 타며 즐거워한다. 이러한 현상을 다룬 흥미로운 글을 읽었는데, AI가 개발자들 사이에 원래 존재했지만 보이지 않았던 본질적인 차이를 드러내고 있다는 분석이었다. 예전에는 모두가 똑같은 방식으로 코드를 짰기 때문에 보이지 않았던 동기의 차이가, 이제는 AI라는 도구를 대하는 태도에 따라 선명하게 갈리고 있다.
한 글에서는 이를 '애도와 AI의 분열’이라는 키워드로 설명한다. 저자는 AI 지원 코딩이 그동안 숨겨져 있던 개발자들의 두 가지 부류를 폭로하고 있다고 말한다. 첫 번째는 코드를 짜는 행위 그 자체, 즉 텍스트를 한 줄씩 정성껏 써 내려가며 논리를 구축하는 과정에서 아름다움과 희열을 느끼는 ‘장인’ 그룹이다. 두 번째는 코드가 무엇으로 이루어졌든 상관없이 그 결과물이 가져다주는 기능과 목적 달성에 집중하는 ‘실행가’ 그룹이다. 이전에는 두 그룹 모두 동일한 에디터에서 동일한 언어로 코드를 작성했기에 겉으로는 구분이 불가능했다. 하지만 이제는 기계에게 코딩을 맡기고 결과물의 방향을 지시할 것인지, 아니면 여전히 자신의 손으로 조각하듯 코드를 써 내려갈 것인지 선택해야 하는 갈림길에 섰다.
James Randall이나 Nolan Lawson 같은 개발자들의 글을 보면 이 ‘장인’ 그룹이 느끼는 상실감이 얼마나 큰지 알 수 있다. 그들은 마치 숙련된 조각가가 찰흙을 만지며 형태를 빚어내듯 코드를 다루는 느낌을 그리워한다. 새벽 2시까지 버그와 씨름하다가 마침내 해결했을 때의 그 짜릿한 쾌감, 자신이 직접 만든 저장소 하단에 '내가 만들었음’이라고 서명을 남길 때의 그 자부심이 AI의 등장으로 희석되고 있다는 것이다. 그들에게 코딩은 단순한 노동이 아니라 자아를 투영하고 표현하는 예술적 행위에 가까웠기 때문이다. 그들이 느끼는 슬픔은 단순히 도구가 바뀐 것에 대한 거부감이 아니라, 자신의 정체성을 지탱하던 공예의 본질이 사라지는 것에 대한 진심 어린 애도다.
하지만 나의 생각은 조금 다르다. 나는 이전부터 코딩은 내 아이디어를 구현하기 위한 하나의 수단일 뿐이라고 생각해 왔다. 누군가에게는 코딩이 예술적인 카타르시스를 주는 행위일 수도 있겠지만, 적어도 나에게 있어 산업 현장에서의 코딩은 비즈니스 가치를 창출하기 위한 공학적 프로세스다. 코드는 예술 작품이 아니며, 문제를 해결하기 위한 도구이자 수단일 뿐이다. 반 고흐의 그림이 그 자체로 독창적인 가치를 지니는 것은 인간의 고뇌를 담은 단 하나의 결과물이기 때문이지만, 코드는 실행되어 의도한 결과를 내놓을 수만 있다면 그 소스가 AI에 의해 생성되었든 사람이 직접 타이핑했든 상관없다. 개발자를 예술가로 정의하는 것 자체가 이미 소프트웨어 개발의 본질을 오해하고 있는 것이 아닐까 생각한다.
컴퓨터 공학의 역사를 돌이켜보면 지금의 변화는 전혀 낯선 것이 아니다. 우리는 이미 수많은 추상화 단계를 거쳐왔다. 1980년대에 코모도어 64에서 어셈블리어로 코딩하던 시절에는 메모리 주소 하나하나를 직접 관리하는 것이 실력이었다. 하지만 더 복잡한 프로그램을 만들기 위해 고수준 언어가 등장했고, 그때마다 누군가는 '진정한 제어권을 잃었다’며 한탄했다. 어셈블리어에서 C언어로, 다시 자바나 파이썬으로 발전해온 과정 자체가 개발자가 기계의 내부 구조를 덜 신경 써도 더 큰 시스템을 설계할 수 있게 해주는 추상화의 역사였다. AI 코딩은 이 추상화의 사다리에서 한 단계 더 위로 올라가는 과정일 뿐이다. 이제 우리의 퍼즐은 개별 함수를 어떻게 짤 것인가가 아니라, 전체적인 시스템 아키텍처를 어떻게 구성하고 어떤 방향으로 서비스를 이끌 것인가로 이동했다.
생산성이라는 측면에서 AI는 그야말로 축복이다. 이전에 쓴 글에서도 언급했듯이, 똑같은 결과물을 10배, 100배 빠르게 낼 수 있다는 사실 자체가 혁신의 정의다. 과거에는 게시판 하나를 만드는 데도 수많은 보일러플레이트 코드를 작성하며 시간을 허비해야 했지만, 이제는 그런 지루한 작업을 AI에게 맡기고 더 복잡한 비즈니스 로직이나 사용자 경험을 고민하는 데 집중할 수 있다. 자동차 공장에서 로봇이 용접을 하는 것을 보고 '사람의 손맛이 없다’고 비난하는 것이 의미 없듯이, 개발 영역에서도 더 효율적인 도구가 나왔다면 그것을 활용해 더 많은 가치를 창출하는 것이 프로의 자세다. 도구가 좋아졌다면 우리는 그 도구를 딛고 올라서서 더 높은 수준의 창의성을 발휘해야 한다.
물론 AI가 생성하는 코드가 완벽하지 않다는 지적도 있다. 소위 '슬롭(slop)'이라 불리는 저품질 코드가 양산될 수 있다는 우려다. 하지만 질 낮은 코드와 버그는 AI가 등장하기 전에도 늘 존재했다. 과거에도 실력 없는 개발자는 인터넷에서 복사해 온 코드를 이해하지 못한 채 붙여넣어 문제를 일으켰다. 지금 우리 눈에 저품질 코드가 더 많이 보이는 이유는 전체적인 생산 총량이 늘어났기 때문이지 AI 자체가 원인은 아니다. 오히려 우리는 AI가 생성한 코드를 검증할 수 있는 테스트 자동화, 정적 분석 도구, 보안 스캔 시스템 등을 이미 갖추고 있다. 인간이 코드를 직접 읽고 검토하는 것만이 유일한 해결책은 아니며, AI를 활용해 더 촘촘한 검증 레이어를 만드는 것이 훨씬 생산적인 방향이다.
흥미롭게도 Les Orchard의 글에서 언급된 '남아있는 슬픔’에 대해서는 나도 깊이 공감하는 부분이 있다. 그것은 코드를 직접 짜지 못하는 것에 대한 아쉬움이 아니라, 코드를 둘러싼 환경이 변하는 것에 대한 불안감이다. 오픈 웹 생태계가 거대 기업들의 데이터 학습장으로 전락하거나, 개발자의 커리어 지형도가 급격하게 변하는 것은 분명 두려운 일이다. 지난 30년 넘게 웹 개발이 주류였지만 이제는 AI 엔지니어링이 그 자리를 대체하고 있다. 이러한 변화 속에서 우리가 가진 기술이 구식이 될지 모른다는 불안감은 실존적인 문제다. 하지만 이것은 도구의 문제가 아니라 시대의 흐름이다. 환경이 변한다면 우리는 그에 맞춰 새로운 가치를 찾아야 한다.
장인정신이라는 이름 뒤에 숨어 과거의 방식을 고수하는 것은 변화하는 시대를 거부하는 방어 기제에 불과할 수 있다. 훌륭한 목수는 전동 드릴을 쓴다고 해서 자신의 기술이 퇴보한다고 생각하지 않는다. 오히려 그 도구 덕분에 더 견고하고 복잡한 가구를 더 빨리 만들 수 있게 된 것을 기뻐한다. 우리도 마찬가지다. 코드 한 줄 한 줄에 소울을 담는 고행에서 벗어나, AI와 함께 더 높은 곳으로 올라가야 한다. 생산성이 높아졌기 때문에 우리는 더 많은 시도를 할 수 있고, 더 빠르게 실패하며, 결과적으로 더 나은 세상을 만드는 데 기여할 수 있다.
결국 이번에 드러난 '분열’은 개발자로서 우리가 무엇을 지향하는지를 묻고 있다. 텍스트를 타이핑하는 행위 자체에 가치를 둘 것인가, 아니면 문제를 해결하고 새로운 것을 창조하는 결과에 가치를 둘 것인가. 나는 주저 없이 후자를 선택한다. AI라는 거대한 흐름은 이미 시작되었고 이를 막을 방법은 없다. 그렇다면 이 강력한 파도에 올라타서 어디까지 갈 수 있는지 시험해 보는 것이 더 흥미로운 일이 아닐까.
관련 글
AI 코딩이 드러낸 개발자의 두 얼굴