26P by spilist2 | ★ favorite | 댓글 7개

지난 몇주간 비개발자 지인들(변호사, 마케터, PM 등)과 함께 바이브 코딩으로 간단한 앱을 대여섯 개 만들어봤음

이 과정을 정리하여 '비개발자를 위한 바이브 코딩 입문 가이드'를 5단계로 만들어봄

  1. 요즘 AI가 어디까지 뭘 할 수 있는지 감 잡기
  2. 풀고 싶은 문제, 만들고 싶은 제품 명확히 정의하기
  3. 빠르고 빈번하게 내 눈으로 결과물 동작 확인하기
  4. AI가 잘 코딩할 수 있도록 프롬프팅하며 주고받기
  5. 이상 동작과 개선점을 인지하고 개선하며 마감하기

1) 요즘 AI가 어디까지 뭘 할 수 있는지 감 잡기

바이브 코딩을 처음 접하는 비개발자 분들은 이정도 활동으로 시작하시길 권함

  • LLM에서, 또는 AI 프로토타이핑 서비스에서 짧은 프롬프트만으로 동작하는 무언가를 만들 수 있다는 걸 직접 경험해보며 효능감 높이기
  • 최신 AI 정보를 정리해서 알려주는 SNS와 뉴스레터 몇 개 구독하기
  • 모든 AI 정보와 도구를 소화할 욕심은 버리고, 내가 관심있는 특정 주제의 도구들만 관심 가지며 찍먹해보기

2) 풀고 싶은 문제, 만들고 싶은 제품 명확히 정의하기

  • AI의 능력에 대한 인식은 했더라도 문제 정의가 명확하지 않으면 제품을 만들 수 없음
  • 그래서 먼저 메타인지를 높이는 질문을 통해 내가 똑똑해져야 함.
  • 바이브 코딩으로 만든 메타인지 앱 이용
    1. 뭘 만들고 싶은가?
    2. 그걸 왜 만들고 싶은가? 어떤 문제를 풀려고?
    3. 누가 겪는 문제인가?
    4. 그들이 어떤 상황에서 그 문제를 겪나?
    5. 그 상황에서 지금은 어떤 임시방편/대체재를 쓰고 있나?
    6. 5보다 1이 문제를 더 잘 풀어준다는 걸 어떻게 확인할 수 있을까?
    7. 그들이 5 대신 기꺼이 1을 쓰게 만드려면 어떻게 할까?
  • 만들고 싶은 게 정리되면, 위 앱에서 생성된 'PRD 생성 프롬프트'를 LLM에 집어넣어 PRD를 만들게 했음

3) 빠르고 빈번하게 내 눈으로 결과물 동작 확인하기

  • '동작하는 앱'을 굉장히 이른 시점에 바이브 코딩의 가장 큰 장점. 비개발자에 동기부여 되는 데에도 아주 중요
  • 그런 의미에서 비개발자가 Cursor로 바이브 코딩 시작하는 걸 별로 권하지 않음. 앱 실행까지 넘어야 할 크고작은 산이 많다고 생각하기 때문
  • 대신 PRD를 주면 동작하는 프로토타입이 튀어나오는 Lovable 같은 서비스들이 더 좋은 출발점이라고 봄. 퍼블릭 링크도 바로 만들어지니 지인에게 보여주고 피드백받기도 좋음
  • 단 만들려는 앱이 웹 기반이 아니라면 조금 복잡해짐. 프로토타이핑 도구들은 웹앱으로 만들어주기 때문
  • 이 때는 기술적 의사결정과 실행 환경 세팅이 필요한데, 그러려면 나와 AI가 모두 똑똑해져야 함

4) AI가 잘 코딩할 수 있도록 프롬프팅하며 주고받기

  • 나와 AI가 똑똑해진다 <-> 프롬프트 잘 짠다 <-> 결과물이 더 빨리, 더 잘 나온다
  • 프롬프트 잘 짤수록 목표 달성에 드는 핑퐁 횟수(= 시간과 돈)이 줄어듦
  • 각종 프롬프트 엔지니어링 가이드를 보면 공통적으로 언급하는 게 프롬프트 안에 역할(Role), 맥락(Context), 작업(Task)을 잘 정의하라는 것

역할, 맥락, 작업

  • 바이브 코딩에서 '역할'은 엄청 중요하지 않음
    • 코딩 에이전트들에 이미 적절한 역할이 정의되어 있어서 꼬일 수 있고
    • 코딩이 중요한 벤치마크라서인지 LLM에서도 역할 부여 없이 코딩 잘 하기 때문
    • 물론 내가 만들려는 앱이 특별하다면 적절한 역할을 주는 것도 좋음
  • '맥락'은 PRD 잘 만들었으면 충분
  • '작업'은 목표와 완료기준을 잘 정하는 것. 완료기준은
    • 프롬프트 내에 명시되어있을 수도 있고(few-shot 프롬프팅)
    • 외부 파일이나 코드에 정의되어있을 수도 있고(TODOs.md 나 테스트 코드)
    • 내 머릿속에만 있을 수도 있음(이 스타일은 예쁘지 않아)
  • 바이브 코딩의 궁극적 목표는 AI가 잘 코딩하도록 지시해서 PRD대로 동작하는 앱을 빠르게 만드는 것. 이를 위해선 3가지 중간목표를 삼는 게 좋음
    • 내가 더 똑똑해진다
    • AI가 더 똑똑해진다
    • 기능이 스펙대로 동작한다

내가 더 똑똑해진다?

  • 비개발자이거나, 도메인이 생소하거나, 기술 스택이 생소하다면 정확한 용어로 지시하기 어려움
  • 이럴 때는 내가 부족함을 LLM에게 알리고 배우면 됨
    • "(스샷 주고) 이런 게임은 보통 뭘로 만들어?"
    • "이런 거 만들건데, 너라면 데이터를 어떻게 확보할 것 같아?"
    • "네이티브 앱의 핵심 동작을 최대한 빨리 확인하려면 어떤 기술을 써야 해?"
  • 이런 질문을 통해 내가 이렇게 변하고 있는지 관찰해볼 것
    • 기술 키워드: 내가 정확한 기술 용어/도메인 용어를 사용하고 있다
    • 데이터 흐름: 내 앱의 핵심 기능을 위한 데이터를 어떻게 확보해서, 처리해서, 보여주는지 설명할 수 있다
    • 실행 환경: AI가 짜준 코드를 실행해서 동작 여부를 내 눈으로 확인할 수 있는 환경을 마련했다
  • 이상적으로는 unknown unknown을 다 해소한 상태에서 PRD 쓴 뒤 코딩 착수하는 게 좋으나 꼭 안그래도 됨
  • 코딩 들어가야 학습하는 것도 많고, 여차하면 처음부터 다시 만들면 되니까. (이미 있는 거 고치기보다 더 빠를 수도 있음)

AI가 더 똑똑해진다?

  • 파악한 기술 키워드나 데이터 흐름을 시스템 프롬프트(Cursor Rules 등)로 AI에게 알려주는 것
  • 나의 개입 횟수를 줄이고, AI의 코드가 내 마음에 더 들게 하려면 크게 두 가지가 필요함. 제약조건과 문서화에 대한 지침임
  • 제약조건 지침은 AI가 더 일관된 코드를 쓰도록 도움. 예를 들어:
    • 기술 스택: NextJS app router 써라, Tailwind와 ShadCN으로 스타일링해라, 아이콘은 Lucid만 써라, 결제는 Stripe 써라 등
    • 구조와 패턴: 폴더는 이렇게 구성해라, 파일명은 이렇게 지어라, UI 스타일은 Material처럼 해라 등
    • (실행 환경에 따른) 출력 형식: Electron Fiddle을 쓸 거니까 그에 맞춰 파일 4개를 줘, CodePen을 쓸 거니까 HTML, CSS, JS를 하나씩 줘 등
  • 문서화 지침은 AI의 집중력과 기억력을 향상시키도록 도움. 두 가지 아이디어가 아주 유용했음
  • 메모리 뱅크는 현재 무슨 일이 일어나는지 관찰과 학습이 쉬워지니, 비개발자에게 특히 추천

기능이 스펙대로 동작한다?

  • 프로젝트 수준이 아닌 (코딩 에이전트에서) 채팅할 때의 프롬프팅 전략
  • 기능이 스펙대로 동작하게 만드는 가장 좋은 전략은 테스트 통과하면 커밋이라고 생각
    • "X를 구현해줘. 테스트 먼저 작성하고, 코딩한 다음, 테스트를 돌려보고, 통과할 때까지 계속 코드를 수정해줘."
  • 이는 코딩 에이전트가 테스트 코드를 작성하고, 터미널에서 실행하고, 그 결과를 읽을 수 있는 권한과 능력이 있기 때문에 가능
  • 그렇게 테스트를 통과하면 커밋 메시지를 제안받아서, 테스트 코드와 기능 코드를 함께 커밋하면 됨. 나는 커밋을 직접 하지만 에이전트가 자동 커밋도 가능
  • 유닛 테스트뿐 아니라 통합 테스트, E2E 테스트도 AI가 짜고, 실행하고, 알아서 고치게 할 수 있음 (참고: Cursor + Playwright 자동화 테스트)
  • 이 모든 게 '스펙대로 개별 기능이 구현되고, 전체 앱이 PRD대로 동작하는가' 를 바이브 코더와 AI 양측이 더 쉽게 확인하도록 만들어주는 전략임

5) 이상 동작과 개선점을 인지하고 개선하며 마감하기

  • 내가 생각하는 바이브 코딩은 '딸깍'과 거리가 멀고 학습할 게 많음
  • 그중에서도 '나만의 작은 프로토타입'을 넘어, 솔로 창업자로서 상용 제품 수준의 앱을 만드는 데 필수적이라고 보는 3가지 역량이 있음. 인지 역량, 코딩 역량, 프로덕 엔지니어링 역량임

인지 역량

  • PRD(또는 내 원래 의도)와 다르게 동작하는 화면 또는 기능을 예민하게 인지하는 것
  • 이게 부족하면 AI가 잘못한 걸 찾아서 고치라고 하기가 너무 어려움
    • 4단계의 '테스트'는 AI의 잘못을 애초에 줄임과 동시에 내 역량을 키워주기도 함.
    • 스펙을 AI가 테스트 코드로 변환하는 과정을 읽으면서 단순히 '이 기능이 필요해'가 아닌 '이 기능 구현을 완료하려면 이 조건들이 필요해'를 학습할 수 있기 때문
  • 그런데 '앱을 스펙대로 구현했다'와 '앱이 좋다'는 다름. 그래서 개선점을 찾는 '프로덕 센스'가 중요 (자세한 내용은 링크한 Lenny의 뉴스레터 참조)

코딩 역량

  • 적어도 아직까지는, 아무리 일을 잘 쪼개서 AI에게 맡겨도 최소 5% 정도는 직접 코드에 손대서 마감을 쳐야 함.
    • 이걸 못해서 80% 수준에서 머물며 출시 못하는 앱들이 SNS상에 수두록함
  • 물론 만들고자 하는 앱에 따라 이 비율이 달라질 수도 있고, 끝까지 AI만으로 구현하는 것도 불가능하진 않겠지만 너무 비효율적임
  • 바이브에 완전히 몸을 맡기기보다는 (메모리 뱅크, 테스트 코드 등을 통해) AI가 생성해주는 문서들을 보며 코딩 자체도 공부하길 권함. 개발자에게 코칭도 받아보고.
  • 특히 상대적으로 눈에 덜 보이는 백엔드(사용자 인증, 외부 API 연동, 데이터 입출력, 결제 등)와 배포 전략(메인 브랜치와 피처 브랜치, 환경변수 관리 등)에 대해서 학습하시는 게 효과가 클 것

프로덕 엔지니어링 역량

  • 앱 출시는 끝이 아니라 시작임. 제대로 하려면 제품 개발 라이프싸이클 전체를 이해할 필요가 있음
    • 문제 인식, 해결 아이디어 도출, 기획, 디자인, 구현, 테스트, 배포, 홍보, 에러 모니터링, 피드백 수집, 운영...
  • 이 모든 단계를 깊이있게 다루는 것까지는 아니어도, 적어도 해당 단계에서 어떤 일을 하고 어떤 키워드를 쓰는지까지는 알아두는 게 좋음
  • 그래야 모르는 걸 배울 수 있고, 혼자 감당이 안될 때 함께할 동료의 역량을 알아볼 수 있음

맺으며

  • 바이브 코딩으로 앱을 상용 제품 수준으로 만드는 건 결코 쉬운 일이 아님. 그러나 '시작'하기가 그 어느 때보다 쉬워진 건 누구도 부정할 수 없을 것
  • 자신의 작은 아이디어가 살아 움직이는 걸 본 지인들이 탄성과 함께("와 내가 코딩을 하다니!") 너무나 즐거워하는 걸 보니 나 또한 굉장히 행복했음
  • 이 글을 읽는 다른 비개발자 분들도 이번 기회에 즐겁게 '메이커'가 되어보시는 걸 권함
  • 본인만의 도메인 전문성을 이용해, 특정 문제를 탁월하게 해결하는 작고 빠르며 유용한 도구를 (바이브 코딩으로) 만든다면 AI 시대에도 충분히 경쟁력이 있을 거라고 생각
GeekNews Weekly에 포함된 글입니다. 에디터 코멘트 보기

댓글과 토론

와~ 바이브 코딩은 허상이라고 생각하고 있었는데
이 정도로 전문성 있게 쓴 글은 오랜만에 보네요
재미있게 잘 읽었습니다.

감사합니다! 저는 가능성을 크게 보고 있습니다 ㅎㅎ

아;; 이제 보니 제 덧글이 좀 그렇네요.
허상이라는 표현보다는 아직은 멀었다? 같은 느낌이긴 합니다.
결국 바이브 코딩은 한계가 있고, 개발적인 지식이 없이는 힘들다 라고 느끼고 있거든요.
물론 AI가 발달하면서 나중에는 훨씬 좋아질 거라고 생각합니다.

제 댓글이 바이브 코딩이 의미 없다 하는 것처럼 느껴질 것 같아서 주절주절 다시 답글 답니다
저도 바이브 코딩 많이 애용합니다 ㅎㅎ

아 아닙니다.ㅎㅎ 저도 말씀하신 뉘앙스 파악했습니다.

그래서 본문에도 썼듯 제가 말하는 바이브 코딩은 '딸깍'과는 거리가 멀고, 수준을 높이려면 엔지니어가 많이 노력해야 한다고 생각해요.

항상 잘 읽고있습니다.