IT 분야 비전공자가 바이브로 앱을 만든다는 것

English version

1. 왜 이 글을 시작하는가

혹시 이런 생각을 해 본 적이 있는가.

  • "AI가 코딩을 다 해 주는 시대라는데, 나는 왜 여전히 막막하지?"
  • "ChatGPT한테 코드를 달라고 했는데, 붙여넣기만 하다가 에러가 쌓여서 결국 포기했어."
  • "유튜브에서는 뚝딱 만드는데, 왜 내 손에서는 안 될까?"

이 시리즈를 쓰는 나도 처음에는 그랬다.

4년 전, ChatGPT가 막 나왔을 때를 기억하는가. 나는 지금의 "바이브 코딩"이라는 말조차 없었다. Python 문법을 하나하나 외우고, 에러 메시지를 구글에 검색하고, Stack Overflow의 영문 답변을 번역기에 돌려가며 코드를 완성해 나갔다.

ChatGPT의 웹 인터페이스에 코드를 복사붙여넣기하고, 에러가 나면 다시 복사붙여넣기하는 반복이 일상이었다. 당시의 AI는 지금처럼 똑똑하지 않았기 때문에, 원하는 결과를 얻으려면 프롬프트를 여러 번 수정하고, 나온 코드를 조각조각 이어붙여야 했다. 한 줄짜리 함수를 만드는 데도 수십 번의 복사붙여넣기가 필요했고, 긴 코드는 중간에 맥락을 잃어버려서 처음부터 다시 시작해야 하는 일도 잦았다.

그러다 Cursor를 필두로 에이전트(agent) 방식 개발이 도입되면서 모든 것이 단순해졌다. 이제는 터미널에서 "이런 프로그램 만들어 줘"라고 말하면 AI가 폴더를 만들고, 파일을 생성하고, 코드를 짜고, 실행까지 해 준다.

하지만 이 과정에서 수없이 많은 사고도 겪었다.

  • 컨텍스트가 길어지면 AI가 이전에 짠 중요한 로직을 통째로 지워버렸다.
  • 프롬프트가 애매하면 원하는 것과 전혀 다른 결과물이 나왔다.
  • 가장 끔찍했던 순간은 AI가 "데이터베이스를 초기화하겠습니다"라고 말하고 실제로 날려버린 순간이었다.

이런 경험을 반복하면서 깨달은 것이 있다.

코드를 먼저 짜기 전에, AI가 지켜야 할 원칙을 정하고, 설계를 먼저 세워야 한다.

그렇지 않으면 AI는 내가 원하는 방향으로 가다가도, 갑자기 길을 잃어서 이전까지의 성과를 갈아엎어버린다. 이를 막기 위해 agent.md라는 AI 지시 문서를 만들고, docs/ 폴더에 설계 문서를 쌓아가기 시작했다.

최근에는 이런 경험이 하네스 프로그래밍(harness programming)이라는 개념으로 정리되고 있다. AI의 컨텍스트를 관리하고, AI가 안전하게 작업할 수 있도록 "마구(하네스)"를 채우는 방식이다. 그리고 이 방향을 지원하는 도구들이 속속 나오고 있다. 플러그인으로 다양한 워크플로우를 확장할 수 있는 OpenCode, Claude Code, Hermes 같은 도구들이 그것이다.

나는 IT 계열 취업을 희망하는 학생들을 가르치는 입장에서, 이런 도구들을 학생들과 함께 빠르게 접하고 시행착오를 겪었다. 학생들이 "AI가 다 해 주는 줄 알았는데, 왜 자꾸 엉뚱한 방향으로 가죠?"라고 묻는 순간, 나 역시 똑같은 좌절을 느꼈다.

이 시리즈는 그런 경험을 바탕으로 쓴다.

코딩을 전혀 몰라도, AI와 함께 작은 유틸이나 프로그램을 만들 수 있다.
하지만 그러려면 "바로 코드를 짜라"고 시키는 것이 아니라, 먼저 설계하고, AI에게 원칙을 주고, 문서를 쌓아가는 방법을 알아야 한다.

2. 이 시리즈의 약속

이 시리즈는 개발자를 위한 고급 강의가 아니다. 각자 분야의 문제를 가진 사람이 IT 도구를 빌려 작은 앱을 만들어 보는 과정이다. 그래서 다음 네 가지를 약속한다.

  • 새 용어는 처음 나오는 자리에서 짧게 설명한다.
  • 명령어와 코드는 "어디에 쓰는지"와 "무슨 일이 일어나는지"를 함께 설명한다.
  • 오류는 실패가 아니라 컴퓨터가 보내는 안내문으로 다룬다.
  • 도구 이름을 먼저 외우지 않고, 입력·출력처럼 역할을 먼저 나눈다.

3. 이번 글에서 새로 나오는 용어

  1. : 특정 일을 더 쉽게 처리하도록 만든 프로그램이나 도구
  2. 입력: 사용자가 앱에 주는 정보
  3. 출력: 앱이 처리한 결과를 보여 주는 일
  4. 바이브: AI와 대화하며 앱의 구조와 결과를 함께 다듬는 작업 방식

4. 앱을 너무 크게 생각하지 말자

여기서 말하는 은 스마트폰에 설치하는 앱만 뜻하지 않는다. 내 컴퓨터에서 실행되는 작은 프로그램, 반복 업무를 줄여 주는 도구, 자료를 보기 좋게 정리해 주는 화면도 모두 앱이라고 부르겠다.

처음 설계할 때는 구체적인 도구 이름보다 역할을 먼저 잡는 편이 좋다. 대부분의 앱은 "사용자가 주는 입력", "앱이 하는 처리", "사용자에게 보여 주는 출력"이라는 기본 역할로 이해할 수 있다.

앱을 작은 사무실로 생각해 보자. 이 사무실에는 방문자가 서류를 제출하는 접수창구가 있고, 안쪽에서 서류를 정리하고 판단하는 담당자가 있고, 처리한 자료를 보관하는 서랍이 있다.

사용자입력이름·제출 여부처리분류·계산출력현황·목록저장파일 기록 정보 입력자료 전달기록불러오기결과화면 표시

이 그림에서 처리저장은 아직 익숙하지 않아도 괜찮다. 처리 흐름은 4편에서, 실제 저장 기능은 6편에서 다시 다룰 것이다. 지금은 "입력이 들어가서 출력이 나온다"는 흐름만 이해하면 된다.

5. 왜 직접 작은 앱을 만들어야 할까

요즘 AI로 만든 앱과 서비스가 쏟아져 나온다. 과제 제출 현황을 관리해 주는 서비스, 수행평가 기록을 정리해 주는 도구, 학부모 문자를 보내 주는 프로그램 등등. 하지만 대부분 구독형이고, 기능에 비해 가격이 높은 경우가 많다.

물론 그 서비스들이 얼마나 정교하게 만들어졌는지는 중요하다. 하지만 학교 현장이나 사무실에서 실제로 써 보면 알 수 있는 한 가지가 있다.

완벽한 결과물보다, 초벌을 빠르게 내어주는 도구가 더 유용하다.

학교에서 학생 30명의 과제 제출 현황을 관리한다고 해 보자. 외부 서비스에 가입해서 양식에 맞춰 입력하고, 설정을 조정하고, 보고서 형태로 받아내는 데 시간이 더 걸릴 수 있다. 반면 내가 직접 작은 프로그램을 만들면, 내가 원하는 입력 방식과 출력 형태를 그대로 쓸 수 있다.

실무에서는 결국 사람의 손을 거치는 과정이 들어간다. AI가 100퍼센트 완벽한 결과를 주는 경우는 드물고, 주는 것이 완벽하더라도 현장의 특수한 상황에 맞춰 다시 고쳐 쓰는 경우가 대부분이다. 그래서 중요한 것은 다음과 같다.

  • 빠른 초벌: AI가 반복 작업의 초안을 빠르게 만들어 주면, 사람은 검토하고 살리는 데 집중할 수 있다.
  • 커스텀 가능성: 내 업무 흐름에 맞게 입력 방식과 출력 형태를 바꿀 수 있어야 한다.
  • 비용 없는 지속: 한 번 만들어 두면 구독료 없이 계속 쓸 수 있다.

이 시리즈에서 만드는 앱은 외부 서비스를 대체하려는 것이 아니다. "이런 것도 직접 만들 수 있구나"하는 경험을 쌓고, AI를 도구로 쓰면서 내 업무에 맞게 조금씩 고쳐 나가는 힘을 기르는 것이 목표다.

예를 들어 이런 순간이 있다.

  • 매일 같은 양식의 문서를 만들어야 하는데, 반복해서 타이핑하는 게 지친다.
  • 여러 사람의 제출 현황을 한눈에 보고 싶다.
  • 매번 반복하는 행정 작업을 조금 줄이고 싶다.

이런 문제는 너무 작아서 외부 업체에 맡기기 어렵다. 그렇다고 매번 엑셀과 수작업만으로 해결하기에는 시간이 많이 든다. 이때 직접 작은 앱을 만들 수 있으면 선택지가 하나 더 생긴다.

더 중요한 것은, 앱을 직접 만들어 보면서 프롬프트와 로직을 조합해 원하는 결과를 끌어내는 능력이 생긴다는 점이다. 이 능력은 앱을 만드는 것뿐 아니라, 앞으로 다양한 AI 도구를 쓸 때도 직접 연결된다.

오늘은 아직 파일을 만들지 않아도 된다. 1편의 목표는 "내가 만들 수 있는 작은 앱이 무엇인지" 감을 잡는 것이다. 실제 프로젝트 폴더는 3편에서 만든다.

6. 바이브는 코딩을 몰라도 된다는 뜻일까

완전히 그렇지는 않다.

바이브는 코딩을 전혀 몰라도 모든 것이 자동으로 끝나는 마법이 아니다. AI가 코드를 만들어 줄 수는 있지만, 그 코드가 내가 원하는 방향인지 판단하는 일은 여전히 사람에게 남아 있다.

실제 작업 장면은 이런 모습에 가깝다. AI 채팅창에 "학생 이름과 제출 여부를 입력하면, 제출한 학생과 미제출 학생을 나누어 보여 주는 프로그램을 만들고 싶어요"라고 적는다. 그러면 AI가 코드 예시를 제안한다. 우리는 그 결과를 보고 "좋아요. 그런데 미제출 학생은 빨간색으로 표시하고 싶어요"처럼 다시 요청한다. 이렇게 요청하고, 실행해 보고, 고쳐 달라고 말하는 과정을 반복한다.

그래서 이 시리즈에서는 개발 용어를 일부러 모두 숨기지 않으려고 한다. 다만 첫 장에서 너무 많은 말을 한꺼번에 외우게 하지는 않겠다. 이번 글에서는 앱의 큰 구조만 잡고, 실제 작업에 필요한 도구 이름은 그 도구를 처음 쓰는 글에서 다시 설명할 것이다.

7. AI 코딩 도구는 무엇을 쓰나

이 시리즈에서는 AI에게 코드를 만들어 달라고 요청할 때 opencode라는 AI 코딩 도구를 기본으로 쓴다. opencode는 터미널에서 실행되는 AI 도구이고, 내가 만든 프로젝트 폴더를 기준으로 동작한다.

다른 AI 코딩 도구도 큰 틀은 같다. 도구마다 명령어 이름과 설치 방법이 조금씩 다를 뿐, "프로젝트 폴더 안에서 동작한다", "자연어로 요청하면 코드를 만든다"는 점은 비슷하다.

도구 실행 방식
opencode 터미널에서 opencode 실행
Claude Code 터미널에서 claude 실행
Gemini CLI 터미널에서 gemini 실행
Antigravity 데스크톱 앱 실행
Codex CLI 터미널에서 codex 실행

본문에서 명령어나 동작을 보여 줄 때는 opencode 기준으로 쓴다. 다른 도구를 쓰는 독자는 각 장의 마지막 박스에서 해당 도구의 차이점을 확인하면 된다.

8. 이 시리즈에서 만들 방식

대략 이런 순서로 진행한다.

  1. 내 컴퓨터에 프로젝트 폴더를 만든다.
  2. 그 안에 docs/ 폴더와 agent.md를 둘 자리를 준비한다.
  3. 만들 앱의 목적을 docs/01-plan.md로 정리한다.
  4. Python으로 아주 작은 CLI 버전부터 만든다.
  5. PySide로 창이 뜨는 GUI 버전으로 바꾼다.
  6. 파일 저장 기능을 붙여 앱처럼 다듬는다.

첫 장의 목표는 "도구 공부"가 아니라 "앱 만들기의 전체 순서"를 잡는 것이다.

9. 다음 글에서 할 일

오늘 여기까지 했으면 성공

이번 글을 끝내고 나면 손에 남아야 하는 것은 코드가 아니다. 대신 "나도 작은 앱을 만들 수 있고, 먼저 폴더와 문서부터 준비하면 된다"는 전체 그림이면 충분하다.

다음 글에서는 먼저 터미널을 켜고, 몇 가지 기본 명령어를 익힌다.

  • 터미널을 연다.
  • 현재 위치를 확인하고, 폴더 안을 보고, 새 폴더를 만든다.
  • pwd, ls, cd, mkdir 명령어를 각각 한 번씩 써 본다.

다음 글에서도 아직 코드는 쓰지 않을 것이다. 하지만 터미널에 익숙해지면, 그다음 글에서 myproject01 폴더를 만드는 것이 어렵지 않다.

여기까지 할 수 있으면 앱 만들기는 이미 시작된 것이다.

💬 댓글

이 글에 대한 의견을 남겨주세요