바이브 코딩은 진짜 어려운 걸까, 아니면 사람들이 AI를 잘못 쓰고 있는 걸까? AI 이전부터 개발해온 입장에서의 생각
Is vibe coding actually hard, or are people just using AI wrong? My take as a developer from before AI
핵심 요약
AI를 활용한 개발에서도 결국 기초 지식과 아키텍처 설계 능력이 필수적이라는 의견입니다.
- 개발 기초 — AI는 코딩 능력을 배가시키지만, 기본기가 없으면 아무것도 못 함
- 아키텍처 설계 — AI에게 의존하기보다 전체 시스템 구조를 직접 파악하고 통제해야 함
- 점진적 개발 — 전체를 한 번에 만들기보다 작은 단위로 나누어 검증하며 진행해야 함
- 비판적 수용 — AI가 내놓은 코드를 맹신하지 말고 원리와 부작용을 직접 확인해야 함
면책 조항: 이 글은 이미 "바이브 코딩(vibe coding)"이나 AI 보조 개발을 시도하고 있는 사람들을 위한 글임. 이게 모두에게 정답이라는 소리가 아니라, 기존 개발 배경을 가진 내가 AI를 쓰면서 효과를 봤던 방법과 깨달은 점들을 공유하는 거임.
AI가 등장한 이후로 "바이브 코딩"이 생각보다 훨씬 어렵다거나, 막상 제대로 된 걸 만들어보려 하면 AI가 멍청하다는 글을 수없이 봤음. 어느 정도는 이해함. AI는 네 의도를 잘못 파악하기도 하고, 엉뚱한 방식으로 접근하기도 하고, 따로 떼어놓고 보면 멀쩡해 보여도 전체 시스템이랑은 아예 안 맞는 코드를 짜기도 하니까. AI가 엄청 유용하긴 해도 인간의 판단력, 기술적 이해도, 경험, 그리고 전체적인 그림을 보는 능력까지 대체할 수는 없음.
나는 AI가 워크플로우에 들어오기 훨씬 전부터 개발을 해왔음. 그래서 나한테 AI는 사고 과정을 대체하는 도구가 아님. 내가 뭘 만드는지, 전체적인 설계도, 데이터베이스 스키마, 인증 흐름, 프론트엔드 상태 관리, 보안, 기능 간의 연결 고리, 그리고 한 곳을 수정했을 때 다른 곳에 어떤 영향을 미칠지 같은 건 여전히 내가 직접 파악해야 함. AI가 코드를 짜줄 수는 있어도, 시스템이 실제로 어떻게 돌아가야 할지 정의하는 건 결국 내 몫이었던 적이 한두 번이 아님. 프로젝트를 세세하게 알고 있는 게 진짜 중요함. 안 그러면 기술적으로는 돌아가는데 나중에 문제 터지는 코드를 그대로 받아들이기 십상이거든.
많은 사람들이 여기서 삽질한다고 봄. 막연한 아이디어로 시작해서 AI한테 아키텍처 결정권을 너무 많이 넘겨주고, 뭐가 바뀐 건지도 모른 채 계속 땜질만 하는 거지. 결국 코드베이스는 개판이 되고, AI는 문맥을 놓치고, 새로운 기능을 넣을 때마다 다른 곳이 터지기 시작함. 프로젝트가 커질수록 이 문제는 더 심각해짐. 네가 뭘 만드는지, 더 중요하게는 어떻게 만들어야 하는지를 알고 있다면 AI는 엄청난 효율을 보여줌. 하지만 네가 길을 잃거나 시스템을 이해하는 걸 포기하는 순간, AI는 지 맘대로 추측하면서 빈틈을 채우기 시작함. 실제로 이런 식으로 앱 개발에 뛰어들었다가 몇 주, 몇 달씩 시간만 날리고 결국 포기하는 사람들을 많이 봤음.
나한테 AI가 진짜 빛을 발하는 순간은 '실행' 단계임. 반복 작업을 줄여주고, 다양한 접근 방식을 탐색하게 해주며, 가끔은 내가 미처 생각하지 못한 아이디어나 해결책을 던져주기도 함. 하지만 핸들을 잡고 있는 건 여전히 나임. AI가 내놓은 결과물을 검토하고, 이게 우리 앱에 진짜 맞는 건지 결정하는 건 내 역할이라고. 그래서 기술적 지식이 있는 사람이 AI를 쓸 때 훨씬 강력해진다고 생각함. 명심해, 네가 길을 잃으면 AI도 결국 길을 잃게 되어 있음.
나한테 가장 잘 먹히는 방식은 AI를 집중시키고, 작고 통제 가능한 단위로 문맥을 제공하는 거임. "전체 다 만들어줘"라고 안 함. 기능을 정의하고, 기존 시스템에 어떻게 들어맞는지 설명하고, 뭘 건드리면 안 되는지 알려준 뒤에 결과를 검토하고 다음 단계로 넘어감. AI가 프로젝트 전체를 기억해주길 바라는 대신, 내 머릿속에 명확한 아키텍처를 유지하려고 노력함.
또 하나 중요한 건, AI가 내놓은 해결책을 무지성으로 받아들이지 않는 거임. 뭐가 고장 나면 AI한테 고쳐달라고 하기 전에 왜 고장 났는지부터 이해하려고 함. 안 그러면 잘못된 결정 하나를 덮으려고 땜질 다섯 개를 하는 꼴이 됨. AI는 네가 이미 이해하고 있는 문제를 해결할 때 훨씬 더 잘 써먹을 수 있음. 문제 전체를 AI한테 떠넘기지 마라.
그래서 내 기본 원칙은 이거임: 먼저 계획하고, 명확한 문맥을 주고, 작게 수정하고, 모든 걸 검토하고, 아키텍처의 주도권을 놓지 마라. 그래야 AI가 "아무렇게나 하는 바이브 코딩"이 아니라 진짜 개발 도구처럼 느껴지기 시작함.
내가 AI로 개발하는 법을 물어보는 사람들한테 항상 해주는 몇 가지 습관은 다음과 같음:
프롬프트를 날리기 전에 계획부터 세워라. 이 기능이 뭘 해야 하는지, 어떤 데이터가 필요한지, 프로젝트의 나머지 부분과 어떻게 맞물려야 하는지 확실히 파악해라.
작업을 잘게 쪼개라. AI한테 한 번에 앱 전체를 다 짜달라고 하지 마라. 기능 하나 만들고, 테스트하고, 이해한 다음에 다음 단계로 넘어가라.
AI가 준 코드를 읽어봐라. 잘 돌아가더라도 왜 돌아가는지, 다른 부분에 어떤 영향을 줄지 확실히 파악해라.
그냥 "고쳐줘"라고 하지 말고 "왜?"라고 물어봐라. 뭐가 고장 나면 패치를 받기 전에 AI한테 원인부터 설명하라고 해라.


