News Feed

기술 부채 쌓이는 지름길? 바이브 코딩을 제대로 쓰는 법

컨텐츠 정보

  • 조회 374

본문

프로그래밍이 아이디어를 실행 가능한 코드로 옮기는 작업에 그친다면, AI 기반 개발 도구는 이미 그 약속을 완전히 실현했을 것이다. 그러나 자연어 프롬프트를 실행 가능한 소프트웨어로 변환하는 AI의 능력은 오히려 프로그래밍에서 비기계적 요소가 얼마나 중요한지를 드러낸다.

AI는 소프트웨어 개발 과정에서 인간의 역할을 줄이기는커녕, 성공적인 프로젝트를 이끄는 인간적 특징을 선명하게 보여준다. 특히 소프트웨어가 더 이상 관리하기 어려운 방향으로 흐르고 있을 때 이를 감지하고 문제를 최소화하는 인간의 능력은 프로그래밍에 있어 여전히 핵심적인 역량이다.

이 같은 식견은 초급 개발자와 숙련 개발자를 구분하는 요소이며, 최근에는 인간이 작성한 코드와 AI가 생성한 코드를 가르는 기준으로도 자리 잡고 있다.

무엇이 ‘바이브 코딩’이 아닌가

이제 대부분 개발자가 ‘바이브 코딩(vibe coding)’이 무엇인지 잘 알고 있다. 이미 일상적인 작업 과정의 일부로 바이브 코딩을 사용하는 개발자도 적지 않다. AI를 활용한 개발이 소프트웨어 개발 생명주기의 한 단계로 받아들여지는 데 걸린 시간은 불과 며칠에 지나지 않았다. 업계의 변화를 흡수하고 곧바로 다음 단계로 나아가는 개발자 특유의 적응력이 다시 한번 드러난 셈이다.

하지만 한 가지 핵심을 놓치는 시각이 여전히 존재한다. 기술을 도입하고 활용하는 주체가 개발자라는 점이다. 결국 도구를 다루고 방향을 잡는 역할은 인간 개발자가 맡고 있기 때문에 개발자가 대체될 수 없다는 결론에 이른다.

앞으로의 개발 환경은 ‘AI가 개발자를 대체하는 시대’가 아니라 ‘AI로 역량이 확장된 개발자의 시대’에 가깝다. 코드 작성과 배포 비용이 낮아질수록 숙련된 개발자의 본래 역량이 오히려 더 중요해진다. 개발자가 배제된 개발 과정에는 기능을 갖춘 소프트웨어 대신 기술 부채만 쌓일 뿐이다.

이 요구사항이 그렇게 쉬워 보이는가?

AI 기반 개발의 핵심 아이디어는 평범한 영어로 애플리케이션을 설명하기만 하면 곧바로 구현할 수 있다는 것이다. 그러나 애플리케이션이 무엇을 해야 하는지 정확히 서술하는 일은 소프트웨어 개발에서 가장 어려운 작업이다. 이 과정을 요구사항 수집(requirements gathering)이라고 한다.

요구사항을 다뤄본 사람이라면 누구나 이 작업이 진흙탕이라는 사실을 잘 알고 있다. “보면 안다”라는 말은 결국 “저게 아니라는 건 보면 알겠다”라는 의미에 가깝다. 기술적 프로그래밍 세계와 실제 사용자가 원하는 결과 사이의 간극을 메우는 일은 예나 지금이나 까다롭다. 뛰어난 개발자는 바로 이 두 세계를 오가며 균형을 잡는 사람이다.

하지만 오늘날 개발자는 느낌, 즉 바이브에 올라타 있다. 여기서 말하는 바이브는 말로 표현되지 않은 요구사항이다. 끊임없이 변하고, AI를 활용하면 이런 즉흥적 요구를 빠른 속도로 구현할 수 있다. 문제는 보이지 않는 코드에 의도를 투영하는 과정에서 눈에 띄지 않는 부작용이 누적된다는 점이다. 결국 이런 부작용은 대규모 기술 부채로 이어지고, 언젠가는 반드시 개발자의 발목을 잡는다.

개발자가 실제로 하는 것

AI 연구자 게리 마커스는 최근 서브스택(Substack)에 ‘바이브 코딩은 사라지고 있는가?’라는 글을 올리며, AI 개발에 환멸을 느낀 한 사용자 의견을 인용했다.

이제 나는 더 이상 아무것도 만들고 싶지 않다. 작은 프로젝트를 하나 만들려고 했는데, 오류가 점점 늘어나서 지쳤다. 약 3개월 동안 작업했지만 코딩 경험은 전혀 없고, 모든 것을 커서, 챗GPT 등 AI로 진행했다. 그런데 아주 작은 부분을 바꾸려고 할 때마다, 전혀 엉뚱한 곳에서 문제가 생겼고 그걸 디버깅하는 데 4일씩 걸린다.

이제 더는 이 일을 이어갈 에너지가 없다. 희망이 보이지 않는다. AI는 여전히 너무 멍청해서 한 가지를 고치면 코드의 다른 열 가지를 망가뜨린다. 초반에는 즐거웠지만 지금은 고통과 분노뿐이다. 코딩 지식 없이도 무언가를 만들어 정상적으로 작동하게 하는 사람들이 정말 대단하다고 생각한다.

대부분 개발자는 이 인용문이 상황을 얼마나 정확하게 짚고 있는지 단번에 파악할 수 있다. 이 사용자에게는 프로젝트가 실패한 이유가 본인의 경험 부족과 AI 의존 때문이라고 느껴질 수 있다. 그러나 개발자라면 “X를 바꿨더니 Y와 Z에서 엉뚱한 문제가 터졌다” 같은 상황이 소프트웨어 개발에서 흔히 겪는 전형적인 함정이라는 사실을 잘 알고 있다.

소프트웨어는 기이할 만큼 얽히고설킨 복합체이며, 양자 얽힘처럼 서로 영향을 주고받는 구조에 가깝다. 이 복잡성을 통제하고 관리하는 것이 숙련된 개발자의 핵심 업무다.

바이브 코딩의 대가

물론 오해하지는 말아야 한다. 필자 역시 AI 플랫폼 위에서 ‘바이브’를 타며 펼쳐지는 거침없는 창의성을 높이 평가한다. 아직 시도해보지 않았다면, 루 코드(Roo Code)를 열어 몇 번의 키 입력만으로 동작하는 소프트웨어를 뚝딱 만들어내는 경험을 해보길 권한다.

바이브 코딩의 첫인상은 중독적이다. 생각할 틈도 없이 애플리케이션의 기본 골조를 순식간에 구성해낼 수 있다. 마치 과속방지턱을 가볍게 날아넘는 사륜구동 차량을 모는 느낌에 가깝다. 하지만 곧 앞선 인용문처럼 끝없이 반복되는 ‘하나 고치면 다른 곳이 깨지는’ 지형의 골짜기로 몰리게 된다. 처음에는 마법처럼 보였던 기능적 코드가 어느 순간 거대한 기술 부채의 협곡으로 변하고, 이를 감당하려면 결국 직접 해결해야 한다. 코딩 배경지식이 없다면 이 골짜기에서 빠져나오지 못한 채 허우적거리게 된다.

물론 AI에 깨지는 부분을 고쳐달라고 요청할 수 있다. 그러나 실제로 해본 적 있는가? 자신감 넘치는 AI 조수가 개발자를 똑같은 문제 앞에서 계속 맴돌게 만드는 상황에 갇혀본 적이 있을 것이다. 서버와 클라이언트 출력을 모두 볼 수 있는 제미나이 CLI와 데브툴(DevTools) 통합 같은 환경에서도, 이 과정은 손쉽게 악순환으로 빠져든다. 결국 사용자는 스스로 팔을 걷어붙이고 문제를 해결하지 않은 채 AI에 의존하려 했던 자신을 돌아보게 된다.

AI가 문제의 본질을 오히려 흐려놓는 상황에서, 그동안 쌓아온 직관을 동원해 근본 원인을 스스로 찾아내야 했던 경험은 필자가 컴퓨터를 사용하며 겪은 가장 기묘한 순간이었다.

사용 주의

필자는 AI 반대론자가 아니다. 오히려 코딩 분야에서 AI를 매우 좋아한다. AI가 인터넷 초창기 시절의 즐거움과 가능성을 다시 불러왔다고 생각한다. 코딩의 형식적이고 반복적인 부분을 AI가 대신 처리해주는 덕분에 개발자는 더 야심 찬 아이디어와 시도를 실제 개발 범주 안으로 끌어들이고 창의성의 영역에 더 오래 머물 수 있다.

AI 코딩에서 가장 매력적이라고 느끼는 점을 하나만 꼽으라면, 무(無)에서 빠르게 스케일을 키울 수 있는 능력이다. 아이디어 몇 줄만 제시했을 뿐인데 완전한 형태의, 실제로 동작하는 무언가가 눈앞에 나타나는 순간은 큰 짜릿함을 준다. 이상하게 들릴 수 있지만, AI 덕분에 덜 외롭다고 느낄 때도 있다. 마치 방 안에 또 다른 목소리가 있는 듯한 느낌을 준다.

이런 감각을 바이브 코딩이라 부른다면 전적으로 찬성한다. 그 누구보다 흐름을 타는 개발 경험을 좋아한다. 단, 무심코 불량 코드 더미를 쌓아 올리지 않는 상태에서 그 흐름을 유지하는 것이 핵심이다. AI는 우리가 투입한 것을 몇 배로 증폭시킨다. 줄톱을 전기톱으로 바꾸는 일에 비유할 수 있다. 더 강력해진 만큼 그만큼 더 조심해서 써야 한다.

균형 감각은 변하지 않았다

프로그래밍은 언제나 공학적 사고와 장인적 감각이 함께 요구되는 작업이었다. 뛰어난 소프트웨어 개발자는 이 두 요소를 하나의 사고 안에서 조화롭게 결합한다. 현대의 AI는 소프트웨어 개발의 창의적 측면과 기계적 측면 모두를 도와주지만, 이 둘을 이해를 기반으로 하나로 묶어내는 역할은 여전히 인간이 맡아야 한다.

소프트웨어 개발에서 요구되는 균형 감각은 변하지 않았다. 다만 AI가 등장하면서 그 균형을 맞추는 무대가 더 높은 차원으로 옮겨갔을 뿐이다.
dl-itworldkorea@foundryco.com

관련자료

댓글 0
등록된 댓글이 없습니다.
Member Rank