결함투성이 탑, 바이브 멀미, 그리고 바이브 봅슬레이

3 days ago 12
  • LLM이 만든 코드를 사람이 이해하지 못해도 다시 LLM에 해석을 맡기며 개발하는 방식이 확산되면서, 한때 구분되던 에이전트 엔지니어링바이브 코딩의 경계가 빠르게 흐려지고 있음
  • 바이브 봅슬레이는 자동완성에서 코드 생성, 검토 포기, 프롬프트 포기로 이어지는 정해진 경로를 뜻하며, 생성 속도를 활용할수록 프로그래머의 핵심 역할인 이론 구축과 검토에서 멀어짐
  • Pvote 실험에서는 보안 전문가들이 위치를 미리 알고 100줄의 코드를 약 20시간 검토하고도 세 버그 중 어려운 버그를 찾지 못해, 사람이 대량의 LLM 출력을 온전히 검토한다는 전제가 비현실적임을 보여줌
  • 이해되지 않은 코드와 생성물이 음식점 포스터, 고객지원 챗봇, 연령 확인 코드, 오픈소스 이슈·PR까지 침투하는 바이브 멀미가 퍼지고 있으며, 도구를 쓰지 않는 사람도 타인의 생성물을 검토하느라 영향을 받음
  • 생성형 AI는 문제 발견에는 유용할 수 있지만 생성에는 특히 취약하며, 이해할 수 없는 시스템이 세계를 대체하는 흐름 속에서도 인간이 더 나은 환경을 직접 만드는 능력까지 포기해서는 안 됨

이해할 수 없는 코드의 탑

  • The Tower Keeps Rising은 과거라면 팀원끼리 대화해야 풀었을 상황에서도 에이전트를 이용해 계속 진척을 낼 수 있게 된 상태를 관찰함
    • Armin은 이를 좋거나 나쁜 일로 판단하지 않았으며, 지속 가능한 상태라고 옹호하지도 않음
    • 다만 바이브 코딩 회사를 운영하며 이러한 흐름을 진전시키는 위치에 있음
  • 바이브 코딩 시스템은 코드와 추상화를 계속 쌓다가 결국 어떤 인간도 코드베이스를 이해하지 못하는 상태에 도달할 수 있음
    • 사람이 이해할 수 없는 부분도 LLM이 다시 해석해 주므로 개발을 계속할 수 있다는 새로운 운영 방식이 생김
  • 이를 옹호하는 쪽에서도 인간이 시스템을 이해하지 못하는 종착점을 인정하고, 그 상태를 앞으로의 개발 방식으로 받아들이는 변화가 나타남

에이전트 엔지니어링과 바이브 코딩의 경계 붕괴

  • Simon Willison은 처음 에이전트 엔지니어링(agentic engineering)을 바이브 코딩과 명확히 구분함
    • 2025년 3월 글에서 프로덕션 품질의 AI 보조 프로그래밍이라면 저장소에 커밋하는 모든 코드를 읽고 다른 사람에게 정확히 설명할 수 있어야 한다는 원칙을 세움
    • LLM이 작성한 코드라도 사람이 검토하고 철저히 테스트하며 작동 방식을 설명할 수 있다면 바이브 코딩이 아니라 소프트웨어 개발이라고 구분함
  • 약 1년 뒤 Vibe coding and agentic engineering are getting closer than I’d like에서는 코딩 에이전트의 신뢰성이 높아지면서 프로덕션 코드조차 모든 줄을 검토하지 않게 됐다고 밝힘
    • Claude Code가 SQL 쿼리를 실행해 JSON을 반환하는 API 엔드포인트를 올바르게 만들고 테스트와 문서까지 추가할 것이라고 신뢰함
    • 동시에 검토하지 않은 코드를 프로덕션에 사용하는 일이 책임 있는지 죄책감과 의문을 느낌
  • 두 입장 사이의 간격은 1년을 조금 넘는 정도에 불과함
  • 에이전트 엔지니어링이 바람직한 사용법이라는 인식이 널리 퍼졌지만, 실제 사용자는 Simon 자신을 포함해 바이브 코딩 쪽으로 끌려가는 경향을 보임

바이브 봅슬레이

  • 봅슬레이는 얼음 트랙을 빠르게 내려가지만 이동할 방향은 사실상 하나뿐인 스포츠임
    • 선수끼리 숙련도를 겨루고 짜릿함을 느낄 수 있지만, 탑승자가 여정 자체를 선택할 여지는 크지 않음
  • 바이브 봅슬레이에서는 LLM이 탈것이고 사용자는 승객임
    • 사용자가 느끼는 것보다 실제 주도권은 훨씬 적으며, 단순히 미끄러운 경사라기보다 미리 만들어진 여정에 가까움
  • 개발자는 다음 단계를 거치며 코드 생산 과정에서 자신을 제거함
    • 처음에는 고급 자동완성으로만 사용한다고 생각함
    • 이후 아이디어 탐색용 에이전트를 실행하되 코드는 직접 작성하겠다고 함
    • 다음에는 에이전트가 코드를 생성하지만 모든 결과를 검토하겠다고 다짐함
    • 곧 코드를 거의 검토하지 않으면서 에이전트가 자신보다 더 나은 개발자일 수 있다고 믿게 됨
    • 마지막에는 “더는 코딩하지 않는다”를 넘어 “더는 프롬프트도 작성하지 않는다”는 단계로 향할 수 있음
  • 각 단계는 LLM이 자신의 작업을 이해하고 잘 처리한다는 신뢰 기반 코드 생산으로 이동하는 과정임

생성 속도와 검토의 충돌

  • 코딩에서 느린 부분은 생성이 아니라 이론 구축과 검토이며, 그럴듯하지만 잘못된 결과는 디버깅하고 이해하기 매우 어려움
  • LLM의 가장 강력한 속성은 생성 속도이므로 사람이 결과를 모두 검토하면 그 속도를 충분히 활용하기 어려움
  • 반면 이론 구축과 검토는 프로그래머의 가장 중요한 역할이어서, LLM의 장점을 극대화할수록 핵심 역할에서 멀어지는 충돌이 생김
  • Ka-Ping Yee의 논문 Building Reliable Voting Machine Software는 소프트웨어 검증을 어렵게 만드는 요인으로 다음 네 가지를 꼽음
    • 구성 요소의 수
    • 복잡한 상호작용
    • 광범위한 영향
    • 비선형성
  • 이 네 가지 문제는 LLM의 코드 생성 방식으로 더 심해질 수 있음

Pvote 버그 검토 실험

  • Ka-Ping Yee와 David Wagner는 모델 투표기 Pvote에 선거 결과를 바꾸는 데 악용할 수 있는 쉬운·중간·어려운 버그를 하나씩 삽입함
  • 세 버그는 모두 Navigator.py의 11~109행에 해당하는 100줄 영역에 배치됨
    • 프로그램 로직상 흥미로운 부분이면서 검토자의 제한된 시간을 고려한 선택이었음
    • 검토자들에게 살펴볼 영역은 알려줬지만 버그가 몇 개인지는 알리지 않음
  • 세 번째 날의 검토 결과는 다음과 같음
    • Python에 매우 익숙한 Dan Sandler는 약 70분 안에 쉬운 버그와 중간 버그를 찾음
    • Yoshi Kohno와 Mark Miller는 약 4시간 뒤 쉬운 버그를 발견함
    • 어려운 버그는 아무도 찾지 못함
  • 네 번째 날에는 Ian Goldberg가 약 2시간 안에 쉬운 버그를 찾았지만 다른 버그는 발견하지 못함
  • 숙련된 보안 전문가들은 위치까지 알고 있었지만 총 약 20 검토자-시간을 투입하고도 세 버그를 모두 찾지 못함
  • Mark S. Miller는 나중에 버그를 확인한 뒤 모두가 명백한 버그이며 자신들이 찾아냈어야 했다고 동의한 점에 놀라움을 느낌
  • 최고 수준의 프로그래머도 100줄 안에 반드시 존재하는 버그를 놓친다면, 인간이 LLM의 방대한 출력을 검토하는 방식은 감당하기 어려움
    • 결국 사용자는 검토를 포기하고 코드 생산 과정에서 자신을 단계적으로 제거하게 됨

AI 정신증과 바이브 멀미

  • “AI psychosis”는 생성형 AI로 발생한 나쁜 행동이나 결과 전반을 가리키는 말로 넓게 쓰이지만, 원래는 사용자를 지나치게 긍정하는 챗봇과 상호작용하며 실제 정신증과 망상적 현실 이탈을 겪는 상태에 가까웠음
  • 임상적 정신증이 아닌 생성형 AI로 인한 광범위한 불쾌감에는 바이브 멀미(vibe sickness) 가 더 적합함
  • Glyph의 PyCon US 2026 후기에는 다음 상황이 동시에 나타남
    • 광범위한 바이브 멀미
    • 오픈소스의 대규모 지속 가능성 위기
    • 저품질 보안 PR의 범람
    • 상호 이해를 위한 희망·에너지·노력과 작업에 대한 감사

일상과 오픈소스에 번지는 생성물

  • 사람들은 저품질 생성물인 슬롭(slop) 을 불평하지만, 생성형 AI 사용자는 자신의 결과물을 슬롭이라고 부르지 않음
  • 그럴듯하면서도 이해할 수 없는 생성물은 일상 곳곳에 나타남
    • 이해하기 어려운 디자인의 지역 음식점 포스터
    • 이용자를 좌절시키는 고객지원 챗봇
    • 연령 확인 코드
    • 오픈소스 프로젝트에 제출되는 저품질 이슈와 PR
  • 이러한 도구는 일부 작업에 유용하며 문제 발견에는 다르게 평가할 여지가 있음
  • 그러나 “genAI”라는 이름이 강조하는 생성은 오히려 도구가 가장 못하는 부분임
    • 생성물의 품질뿐 아니라 시스템의 구축·구조·유지보수 방식을 아무도 이해하지 못하는 문제까지 생김

생성형 AI에서 벗어날 수 없는 환경

  • 생성형 AI를 직접 사용하지 않아도 동료나 오픈소스 기여자가 자신도 이해하지 못한 생성물을 “기여”로 보내올 수 있음
    • 검토자는 LLM 생성 여부를 물으면 무례한지 고민해야 함
    • 이슈나 PR에 답하는 동안 에이전트와 간접적으로 상호작용하며 의도치 않게 바이브 코딩 작업 흐름에 참여하게 됨
  • Glyph는 LLM이 들어간 모든 소프트웨어를 거부하는 일을, 자동차의 유연 휘발유 도입에 항의하려고 모두가 사용을 멈출 때까지 숨을 참는 것에 비유함
    • 현실적으로 어느 정도 받아들일 수밖에 없어 개인적인 윤리선을 정하더라도, 그것이 생성형 AI 환경에 대한 기대나 흥분을 뜻하지는 않음
  • 불쾌한 골짜기(uncanny valley) 가 현실 세계를 점유하면서 아무도 이해하지 못하는 시스템이 기존 세계를 대체하고 있음
  • 이 상태에서 회복할 때 치러야 할 대가는 아직 파악되지 않았으며, 현재의 생성형 AI에 참여하지 않기로 선택한 프로젝트는 존중할 가치가 있음

더 나은 지형을 만드는 선택

  • 업무나 환경 때문에 생성형 AI 문제에 기여하는 일을 완전히 거부하지 못할 수도 있음
  • 자동차 운전자가 도로의 자전거 이용자에게 화를 내더라도, 자전거 인프라가 부족하면 이용자는 주차 차량의 문이나 조급한 운전자 때문에 위험해짐
  • 운전 중 앞에 자전거가 있다면 그 존재에 감사하고, 자전거가 더 안전하게 참여할 수 있도록 지형과 인프라를 바꾸는 방법을 생각할 수 있음
    • 이런 변화는 자동차 운전을 쉽게 만들고, 상황에 따라 자전거를 선택하기도 쉽게 함
  • 기술이 정한 경로에 자신을 맡기기보다 인간이 직접 참여해 더 나은 세계를 만들 수 있다는 믿음을 포기하지 않아야 함
Read Entire Article