
개발자가 자연어와 AI를 활용하여 코드를 작성하는 새로운 개발 방식
그냥 무작정 "해줘~"를 남발하면 LLM는 간단한 문제는 잘 해결하지만 복잡한 문제는 잘 해결하지 못하는 경향이 있다.
예전에 프롬프팅 관련 포스팅에서도 이야기한 것처럼 AI에게 큰 문제는 단계별로 쪼개서 자세하고 정확하게 요청해야 좋은 결과를 얻을 수 있다. 때문에 바이브 코딩을 잘 하려면 LLM을 제대로 활용해야 하며 다음 두가지만 지켜도 충분하다.
LLM은 종종 간단한 문제 조차 너무 과도하게 복잡한 구조를 만들려고 하는 경향이 있다. 처음부터 복잡하게 만들지 말고 최소한의 형태를 만들고 살을 붙여나가는 방식으로 개발을 시키자.
항상 이야기하는 부분이지만 한 번에 모든 걸 해결하려고 하지 말고 차근차근 작은 단계를 밟아가며 접근하자. 모호한 부분은 예시를 들어 해결하자.
요구사항 > 설계 문서 > 체크리스트 > 개발 시작
공학용 계산기 웹앱을 만들어줘.
공학용 계산기 웹앱을 만들고 싶어.
우선 요건 정의에 필요한 질문들을 알려줘.
요건 정의는 docs 폴더 아래에 생성해줘.
AI가 생성해준 요건 정의 문서(requirements.md)에 하나씩 답을 달면서 문제를 정의한다.
아무래도 LLM이 오래된 data도 많이 학습했다보니까 사용하는 버전이 옛날 것일 수도 있는데 이 부분은 context7이라는 MCP를 활용하면 좋다.
@requirements.md에 기반해서 설계 문서를 작성해줘.
이제 작업 순서에 맞춰서 작업 내용들을 체크 리스트로 만들어줘.
이처럼 사람이 직접하던 작업도 AI를 활용해 문제를 세분화하고 계획을 세워 하나씩 작업을 해나갈 수 있다.
최근 진행한 프로젝트에서 팀원들의 역량 부족으로 인해 사실상 혼자 빠르게 개발을 진행해야 하는 상황이 발생했다. 이를 해결하기 위해 바이브 코딩을 적극 활용했고, 그 과정에서 느낀 점을 정리해 보았다.
바이브 코딩은 확실히 빠르게 프로토타입을 개발하는 데에 있어 소요 시간을 획기적으로 단축할 수 있는 좋은 도구이다.
특히 이미 다양한 개발 패턴을 이해하고 전체 아키텍처를 그릴 줄 아는 경험 많은 시니어 개발자에게 바이브 코딩은 반복 업무를 대신 처리해주는 '슈퍼 인턴'과 같은 존재라고 볼 수 있다.
하지만 나를 비롯한 주니어 개발자들에게 바이브 코딩은 경계해야 할 도구라고 생각한다.
기억 유지, 의사 결정, 정보 검색과 같은 인지 작업을 외부 도구에 위임하는 현상
과거에 우리는 맨땅에 헤딩하며 문제를 조사하고 시도·실패하는 과정을 통해 비판적·논리적 사고 능력을 기르는 등 많은 것을 배웠다. 하지만 AI가 등장하며 AI에게 우리의 인지 과정을 위임하는 인지적 오프로딩(cognitive offloading)이 자연스러워졌고, AI가 문제 해결 과정을 대신해주게 되면서 개발자가 스스로 사고하고 학습할 기회가 자연스럽게 줄어들게 되었다. 결국 AI에 지나치게 의존하면 지식의 깊이가 얕아지고, 실제 문제에 맞닥뜨렸을 때 해결 능력이 떨어져 속빈 강정이 될 위험이 있는 것이다.
단순 반복 작업이나 기본 구현에서는 AI를 적극적으로 활용해 효율을 높이되, 자료 조사나 개념 학습, 실험적인 시도는 여전히 스스로 수행해서 자기 주도적 학습을 유지해야 한다. 먼저 AI로 큰 그림을 빠르게 잡되, 그 이후 세부 구현·디버깅 과정에서는 스스로 고민하고 해결해 보는 흐름을 가져가야 한다.
바이브 코딩은 올바르게 사용하면 강력한 생산성 도구가 될 수 있지만, 특히 주니어 개발자는 AI 도구 뒤에 숨지 않고 직접 부딪혀보고 실패하며 얻은 경험이 진정한 성장의 밑거름이 된다는 점을 잊지 말아야 한다.
참고문서