코드 작성 없이 20개 프로젝트를 만든 경험 (Vibe Coding 1년 기록)
요약
본 기사는 프로그래밍 경험이 전무했던 사람이 AI의 자연어 지시(Vibe Coding)만으로 1년간 20개 이상의 프로젝트를 개발한 경험을 공유합니다. Vibe Coding은 코드를 직접 작성하는 대신, '무엇을 만들고 싶은지'를 AI에게 전달하여 구현하게 하는 방식입니다. 이를 통해 복잡한 시스템 설계부터 보안 요건까지 높은 수준의 결과물을 얻는 방법을 제시합니다.
핵심 포인트
- Vibe Coding: 자연어 지시만으로 개발 진행
- AI 에이전트 프레임워크 등 고도화된 구조 구현 가능
- 보안 및 아키텍처 패턴 명시적 지시가 중요함
- 테스트 용이성 확보를 위해 DI 패턴 등을 요구해야 함
2025년 5월, 저는 IT와 무관한 공무원이었습니다. 프로그래밍 경험은 전무했습니다. Python의 print("hello")도 쓸 수 없는 상태였습니다.
그로부터 1년 만에 GitHub에 20개 이상의 프로젝트를 만들었습니다 (이 중 14개를 공개 중). AI 에이전트 프레임워크, LINE Bot 예약 시스템, 물품 판매 관리 시스템, 브라우저 자동화 도구 등등입니다.
코드는 단 한 줄도 작성하지 않았습니다. 모든 것을 일본어로 AI에게 지시했고, AI가 구현했습니다.
본 기사에서는 이 'Vibe Coding(바이브 코딩)'이라는 방식으로 1년간 개발을 지속하며 얻은 지식을 정리합니다.
Vibe Coding이란, 코드를 직접 작성하는 것이 아니라 자연어(Natural Language)로 AI에게 지시를 내려 개발을 진행하는 방식입니다. AI에게 '무엇을 만들고 싶은지'를 전달하고, AI가 코드를 생성하고 구현하게 합니다.
2026년 현재, 'Vibe Coding 엔지니어', 'AI 네이티브 프로덕트 엔지니어'와 같은 직군의 채용 공고가 실제로 존재하며 주목받고 있습니다.
| 지표 | 수치 |
|---|---|
| GitHub 리포지토리 | 14개 공개 + 9개 비공개 (총 23개) |
| ... | |
| 10개 이상의 전문 에이전트(요건 정의・계획・구현・테스트・리뷰 등)가 협조 동작하는 멀티 에이전트 프레임워크. 6단계 개발 파이프라인(요건 정의 → 계획 → 아키텍처 → 구현 → 테스트 → 리뷰)을 자동 실행합니다. |
LLM 라우터(Router)를 내장하여 태스크 종류에 따라 모델을 전환하는 구조를 가지고 있습니다.
LINE Messaging API + Stripe 결제 + Cloudflare Workers로 구축한 예약 관리 시스템. 사용자가 LINE 상에서 시술 선택 → 날짜 → 시간 → 결제 → 확인의 플로우를 완결할 수 있습니다.
Stripe Webhook의 서명 검증(Signature Verification), 공집합성 체크(Idempotency Check), 타이밍 공격 대책 등의 보안 요건도 일본어 지시에 포함함으로써 구현했습니다.
Flask + Playwright(브라우저 자동화) + 가격 최적화 엔진으로 구축. 스크래핑을 통한 가격 감시, CSV 가져오기, 이익 계산 등을 자동화하고 있습니다.
총 20개 리포지토리의 의사결정 기록을 일원 관리하는 지식 기반(Knowledge Base). 일기 → 결정 기록 → 리포지토리가 상호 링크되어 언제・왜・어떻게 결정했는지 모두 추적 가능합니다.
| 항목 | 이유 |
|---|---|
| 아키텍처 설계 지시 | |
| "Handler/Service 계층으로 분리해", "Agent/Orchestrator 패턴으로"와 전달하면, AI는 고품질의 구조를 생성한다 | |
| 보안 요건 구현 | |
| "타이밍 공격 대책 해줘", "공집합성 체크 넣어줘"라고 지시하면, AI는 올바르게 구현한다 | |
| 테스트 코드 생성 | |
| "이 함수의 유닛 테스트를 작성해줘"라고 지시하면, AI는 포괄적인 테스트를 생성한다 | |
| 반복 개선 | |
| "이 에러를 수정해줘", "리팩토링 해줘"와 반복함으로써, 품질이 단계적으로 향상된다 | |
| 문서 생성 | |
| 사양서(Specification), README, 기술 기사의 생성은 AI가 매우 능숙하다 |
| 항목 | 원인 | 대책 |
|---|---|
테스터빌리티 (Testability) |
AI는 "작동하는 코드"를 우선시하고, "테스트하기 쉬운 코드"를 후순위로 한다 | "DI 패턴으로 구현해", "생성자(Constructor)에 주입해"를 명시적으로 지시한다 |
에러 처리 통일 |
AI는 bare except나 예외 포획(Exception Catching)을 생성하는 경향이 있다 | "모든 예외에 로그를 남겨줘"라고 지시. 코드 리뷰에서 발견 |
코드 독해력 |
AI가 작성한 코드를 스스로 이해하기 어렵다 | 직접 만든 코드 리뷰 프롬프트를 사용해 품질을 7가지 축으로 평가하고, 약점을 정량적으로 파악한다 |
AI에게 코드를 작성하게 하는 개발 스타일로 어떻게 품질을 보장하는지가 가장 많이 듣는 질문입니다.
AI가 테스트 코드를 생성하게 하고 실행하여 통과하는 것을 확인합니다. NexusCore에서는 4,798개의 테스트가 모두 통과했습니다. 테스트가 통하면 최소한의 동작 보장은 할 수 있습니다.
AI가 생성한 코드를 다른 AI에게 평가시키는 방식을 개발했습니다. 7가지 축(아키텍처・보안・테스터빌리티・에러 처리・유지보수성・퍼포먼스・문서)으로 ★1~5점 평가하고, 개선 항목을 리스트화합니다.
이 방식으로 3개 프로젝트 30개 파일을 평가한 결과, 보안과 아키텍처에서 모든 파일 A 평가를 달성했습니다. 테스터빌리티가 모든 프로젝트 공통의 약점임을 파악하여, 20가지 항목의 리팩토링을 실행했습니다.
테스트의 품질 자체를 측정하기 위해, mutmut(Mutation Testing 툴)을 도입했습니다. 코드에 의도적인 버그를 심고, 테스트가 그것을 감지할 수 있는지 확인하는 방법입니다. 543개의 버그 변이(bug mutation) 중 325개를 테스트가 감지했고, 나머지 218개는 '등가 변이(동작을 바꿔도 코드가 달라지지 않는 것)'임을 확인했습니다.
하나의 LLM뿐만 아니라, GLM, MiniMax, Claude Opus 세 가지 LLM으로 동일한 평가를 실시하여 합의를 도출했습니다. 이는 단일 LLM의 편향성을 줄여줍니다.
월간 27.4억 토큰을 처리하기 때문에, 비용 최적화는 필수였습니다.
3단계 구성으로 운영하고 있습니다.
총 $180/월(약 28,000엔)로, Claude Code Max($220/월)보다 저렴하면서도 사용량은 훨씬 많은 구성입니다. 게다가 429 rate limit 대책의 로컬 프록시를 개발했고, 사용률에 따라 자동으로 모델을 전환하는 시스템도 구축했습니다.
코드를 작성하는 스킬이 아니라, 'AI에게 무엇을 어떻게 전달할지' 설계하는 능력이 성과를 좌우합니다. 도메인 지식(예: 예약 관리의 업무 흐름, 결제 보안 요건 등)을 정확하게 언어화할 수 있는 것이 Vibe Coding의 핵심입니다.
AI가 작성한 코드를 그대로 신뢰해서는 안 됩니다. 테스트, 코드 리뷰, Mutation Testing과 같은 품질 관리 시스템을 직접 구축함으로써, 코드를 읽지 못해도 품질을 보장할 수 있습니다.
323건의 의사 결정 기록(SSOT)이 있기 때문에, '왜 이 설계를 했는지', '무엇이 실패했었는지'를 되돌아볼 수 있습니다. Vibe Coding에서는 특히 AI에게 지시하는 것이 좋았는지 나빴는지가 결과에 직결되므로, 기록이 중요합니다.
LLM 프로바이더는 429 에러, 장애, 사양 변경 등의 위험을 안고 있습니다. 멀티 프로바이더 구성을 통해 복원력(resilience)을 확보하는 것이 지속적인 개발에 필수적입니다.
솔직하게 한계점도 적어둡니다.
코드 읽기가 불가능: AI가 생성한 코드의 동작을 스스로 설명할 수 없는 경우가 있습니다. 면접 등에서 '이 코드는 어떻게 작동하나요?'라고 물으면, 대답하지 못하는 때가 있습니다. -
팀 개발 경험 부족: 개인 개발만 했기 때문에, 타인과의 코드 리뷰나 페어 프로그래밍(pair programming) 경험이 없습니다. -
심층 디버깅의 어려움: 복잡한 버그의 원인을 특정할 때는 AI에게 의존할 수밖에 없는 경우가 있습니다.
이러한 한계점을 인식한 상태에서, Python 기초 학습이나 OSS 기여를 통해 개선을 진행하고 있습니다.
1년 전, 저는 코드의 `print(
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기