The Code Works. What Could Possibly Go Wrong?
Would you treat a serious illness without seeing a doctor, relying only on whatever your favorite AI...
심각한 병을 앓으면서 의사는 찾아가지 않고 좋아하는 AI 모델이 추천하는 대로만 치료하겠는가? AI에게 자녀 교육을 맡기겠는가?
아마 그렇게 하지 않을 것이다.
그렇다면 왜 전체 코드베이스는 AI에게 맡기려 하는가?
AI는 거짓말을 하는가? #
LLM을 코딩 외의 용도로도 자주 쓰다 보면 흥미로운 패턴이 눈에 띈다.
학교나 대학을 떠올려보자. 일반 지식은 쉽게 구할 수 있었다. 하지만 전문적인 내용이 필요할 때는 도서관에 가거나 학술 저널을 뒤져야 했다.
모델도 놀랍도록 비슷하게 작동한다. 일반적인 정보라면 거의 믿을 만하다. 하지만 직접 깊이 아는 주제를 다룰수록 허점이 보이기 시작한다.
맞다. 모델은 예전보다 환각이 줄었다. 답변마다 완전히 엉뚱한 사실을 지어내지는 않는다. 하지만 정말로 실수를 멈췄는가? 그건 아니다.
사실이 대부분 맞더라도 이름이 뒤바뀌기도 한다. 동일한 의학적 문제에 대해 서로 다른 두 대화에서 자신 있게 서로 다른 설명을 내놓기도 한다.
물론 LLM은 대개 의사와 상담하고 중요한 정보를 검증하라고 상기시켜 준다.
솔직히, 멀쩡한 사람이라면 건강 문제를 AI 모델에 맹목적으로 맡기지 않는다.
그런데 코드베이스는? 물론이죠, 마음껏 쓰세요.
코드베이스의 역설 #
여기서 상황이 흥미로워진다.
웹 개발을 오랫동안 해온 사람이 LLM과 아키텍처를 논의하면 결과가 놀랍도록 좋을 때도 있다.
하지만 때로는 완전히 끔찍하기도 하다. 거대한 모놀리식 파일, 빠진 추상화, 혹은 그보다 더 나쁘게는 불필요한 추상화가 곳곳에 넘쳐난다.
그리고 그것도 최악이 아니다. 가끔은 생성된 코드에 XSS 취약점이나 다른 보안 문제가 슬그머니 섞여 들어오기도 한다.
대부분의 코드는 멀쩡해 보인다. 문제는 보통 작다. 아주 작다. 세부 사항 어딘가에 숨어 있다. 하지만 그 작은 문제들이 며칠 안에 프로덕션을 무너뜨릴 수 있다.
10년 넘게 이 일을 해온 사람은 그 실수들을 알아볼 수 있다.
하지만 처음 스타트업을 만들거나 이제 막 프로그래밍을 시작한 사람이라면, 에이전트가 방금 앞문을 활짝 열어놨다는 사실을 어떻게 알 수 있겠는가?
Photo by Lee Campbell on Pexels
바이브 코딩의 함정 #
그럼에도 사람들은 항상 바이브 코딩을 한다.
분명히 말하자면, 바이브 코딩은 훌륭하다.
Unity를 한 번도 써본 적 없는 상태에서 딸의 대학 프로젝트를 도왔다는 이야기가 있다. AI로 초기 골격을 만드는 데 30분이 걸렸고, 이후 다섯 시간은 모델이 만든 결과물을 수정하는 데 썼다.
핵심은 이것이다. 모델 없이는 그 다섯 시간 동안 시작조차 못 했을 수도 있다. 환경 설정에만 다 써버렸을 수도 있다. 이건 엄청난 힘이다.
소프트웨어 엔지니어링을 제대로 이해하고 나면 기술 스택과 생태계의 제약이 훨씬 줄어든다. 이전보다 훨씬 빠르게 거의 모든 것을 만들 수 있게 된다.
바로 거기서 유혹이 시작된다.
개발자가 AI가 생성한 코드를 이해해야 한다는 논쟁은 이제 끝났는가? 아니면 아직도 진행 중인가?
어쩌면 이해가 필요하지 않을 수도 있다. 어쨌든 작동하니까. 모델이 단위 테스트까지 작성해줬다. 무엇이 잘못될 수 있겠는가?
취미 프로젝트, 실험, 대학 과제라면 그것으로 완전히 괜찮다. 다섯 명이 보고, 점수를 받고, 조용히 저장소 어딘가로 사라진다.
진짜 문제는 누군가가 이것이 프로덕션에 충분히 좋다고 결정할 때 시작된다. 안타깝게도 그런 경우가 종종 있기 때문이다.
AI가 프로덕션을 망가뜨리지 않는다 #
무언가 잘못됐을 때 AI를 탓하는 경향이 있다. 하지만 그렇지 않다.
AI 에이전트가 데이터베이스를 삭제하고 이를 은폐하려 했던 이야기들이 있었다. 비교적 경험이 적은 공격자도 악용할 수 있는 보안 취약점을 안고 출시된 서비스들도 있었다. 예를 들면 내일 아침까지도 계속 나열할 수 있다.
사실 침투 테스터들이 바이브 코딩 소프트웨어 시대만큼 일하기 쉬운 때는 없었다.
"봐요? AI가 이 재앙을 일으켰잖아요"라고 할 때마다 피식 웃음이 난다. 아니다. AI가 아니다. 책임 있는 사람은 에이전트에게 과도한 권한을 준 인간이다. 출력물을 검토하지 않은 인간이다.
경험 있는 엔지니어를 고용하기엔 너무 비싸다고 판단해, 자신이 완전히 이해하지 못하는 것을 만들기로 결정한 인간이다.
AI가 그 코드를 배포하지 않았다. 인간이 했다.
그렇다면, AI가 당신의 일자리를 빼앗을 것인가? #
AI는 프로그래머의 일자리를 빼앗지 않는다.
하지만 AI를 무비판적으로 신뢰하는 프로그래머들은 스스로 그 일자리를 없애는 데 상당히 기여할 수 있다.
AI가 생성한 모든 줄을 검토하는가? 에이전트가 자율적으로 변경을 가하도록 허용하는가? 아니면 이미 모델을 검증하는 것보다 신뢰하는 것이 더 자연스럽게 느껴지는 지점에 이르렀는가?
얼마나 많은 신뢰가 지나친 것인가?

