프로그램 기획하기
“이거 뭐 만들지?” 6-1. 프로그램 기획부터 시작하기
솔직히 말하면, 코드는 나중이에요.
처음부터 막 “바로 짜자!” 하면… 음… 보통은 기능이 끝날 때까지 계속 늘어나거나, 중간에 “어? 이거 왜 만들고 있지?” 모드로 빠지더라구요. 나름 개발하다 보면 다 한 번쯤 겪는 그 느낌… 맞죠? 😅
그래서 이번엔 6장 작은 프로그램 만들기의 첫 단계인 프로그램 기획하기를 해볼게요.
이 단계가 제대로 되면, 다음 글에서 코드 구조 설계할 때 훨씬 편해집니다.
오늘 목표: “무엇을 만들지”를 딱 정하기
우리가 지금 할 건 거창한 게 아니에요. 딱 3가지입니다.
- 프로그램 목적을 한 문장으로 정하기
- 사용자 입장에서 필요한 기능을 정리하기
- 입력/출력 형태를 대충이라도 그려보기
이게 끝이면, 다음 단계(6-2 코드 구조 설계)에서 “어떤 파일/함수/흐름으로 짤지” 자연스럽게 넘어갈 수 있어요.
1) 프로그램 목적: 한 문장으로 말해보기
먼저, 만들고 싶은 걸 이렇게 적어보면 좋아요.
예시)
- “사용자가 입력한 값으로 간단한 계산 결과를 보여준다”
- “텍스트로 된 할 일을 저장하고, 목록을 관리해준다”
- “간단한 문제를 내고 맞추면 점수를 주는 게임을 만든다”
아! 근데 여기서 중요한 포인트.
목적은 길게 쓰면 안 돼요. 길어질수록 나중에 기능이 계속 늘어납니다. (제가 그랬어요… “아 이거 있으면 더 재밌겠다” 하다가 끝이 안 보이더라고요. 하하)
2) 기능 목록: “필수/선택” 나누기
사람 마음이 그렇잖아요?
“필수만 하면 심심할 것 같은데…” 하고 선택 기능을 자꾸 추가하게 돼요.
그래서 저는 보통 아래처럼 나눠요.
- 필수(MVP): 이거 없으면 프로그램이 성립이 안 됨
- 선택: 있으면 더 좋지만 없어도 완성은 가능
예시) “간단한 메뉴 기반 계산기”라면
- 필수:
- 메뉴 보여주기
- 사용자 입력 받기
- 계산하고 결과 출력하기
- 선택:
- 히스토리(이전 계산 기록) 보여주기
- 잘못된 입력일 때 재시도하기
- 종료 시 저장하기(파일로)
솔직히 말하면, 선택 기능은 시간이 허락할 때만 넣는 게 좋아요.
이번 시리즈는 “기초”가 목적이니까요. 뭐든 욕심 내면 시간도 늘고, 실수도 늘고… 그건 제가 이미 많이 겪었습니다(진짜 유머러스하게 실패했음…).
3) 입력/출력: 콘솔 기준으로 먼저 그려보기
바이브 코딩이 콘솔 중심이기도 해서, 전 여기서 항상 “사용 흐름”을 먼저 잡습니다.
예를 들어, 이런 식으로요.
- 입력:
- 사용자가 메뉴 번호를 입력한다
- 사용자가 숫자 두 개(또는 한 개)를 입력한다
- 출력:
- 계산 결과를 보여준다
- 잘못된 입력이면 안내 문구를 보여준다
“어떤 데이터가 들어오고, 어떤 결과가 나가야 하는지”만 정해도
다음 단계에서 함수 설계가 확 쉬워져요.
어?, 여기서 벌써 함수 생각해도 되냐고요?
되죠. 다만 지금은 “구현”이 아니라 그림만 그리는 느낌이면 충분해요.
4) 흐름(스텝) 정하기: 프로그램은 결국 루프야
대부분의 작은 프로그램은 이런 구조를 가집니다.
- 화면 출력
- 입력 받기
- 처리하기
- 결과 보여주기
- 다시 반복(또는 종료)
예시 흐름)
- 시작 메뉴 출력
- 메뉴 선택 입력
- 선택한 기능 실행
- 결과 출력
- 계속할지 확인(또는 메뉴로 복귀)
여기까지 정해두면, 다음 글에서 코드 구조 설계할 때 “어떤 순서로 함수를 연결할지”가 딱 보입니다.
아! 그리고 이런 것도 미리 정하면 좋아요.
- 종료 조건은 뭐로 할지? (예:
q입력하면 종료) - 잘못된 입력은 어떻게 처리할지? (예: “숫자만 입력하세요”)
이거 나중에 막히면 진짜 답답하거든요.
저도 한 번 입력 검증을 안 하고 갔다가… 변수가 꼬여서 콘솔이 지옥이 된 적 있어요. 지금 생각하면 웃기지만, 그땐 진짜 눈물…😂
5) 이번 프로젝트에서 내가 정할 것들(템플릿)
아래 템플릿을 그대로 채워보면, 다음 글까지 이미 준비 끝이에요.
- 프로그램 목적(한 문장):
- 필수 기능(3~5개):
- 선택 기능(있으면 좋은 것):
- 입력(사용자 행동):
- 출력(프로그램이 보여줄 것):
- 종료 방법:
- 잘못된 입력 처리 방식:
마무리: 다음 글에서 “코드 구조”로 넘어갈 준비
이번 글(6-1)에서는 “무엇을 만들지”를 확정했어요.
그리고 다음 글(6-2)에서는 그걸 바탕으로:
- 어떤 함수가 필요한지
- 입력/처리/출력을 어떻게 나눌지
- 코드가 커져도 흔들리지 않게 구조를 잡는지
이걸 정리해볼 예정입니다.
원하면, 너(혹은 너의 아이디어)로 하나 골라서 템플릿을 같이 채워볼 수도 있어요.
지금 만들고 싶은 프로그램 주제, 뭐가 떠올라요?





