프로그램 기획하기

in #krsuccess2 months ago

“이거 뭐 만들지?” 6-1. 프로그램 기획부터 시작하기

솔직히 말하면, 코드는 나중이에요.
처음부터 막 “바로 짜자!” 하면… 음… 보통은 기능이 끝날 때까지 계속 늘어나거나, 중간에 “어? 이거 왜 만들고 있지?” 모드로 빠지더라구요. 나름 개발하다 보면 다 한 번쯤 겪는 그 느낌… 맞죠? 😅

그래서 이번엔 6장 작은 프로그램 만들기의 첫 단계인 프로그램 기획하기를 해볼게요.
이 단계가 제대로 되면, 다음 글에서 코드 구조 설계할 때 훨씬 편해집니다.

Pexels


오늘 목표: “무엇을 만들지”를 딱 정하기

우리가 지금 할 건 거창한 게 아니에요. 딱 3가지입니다.

  • 프로그램 목적을 한 문장으로 정하기
  • 사용자 입장에서 필요한 기능을 정리하기
  • 입력/출력 형태를 대충이라도 그려보기

이게 끝이면, 다음 단계(6-2 코드 구조 설계)에서 “어떤 파일/함수/흐름으로 짤지” 자연스럽게 넘어갈 수 있어요.


1) 프로그램 목적: 한 문장으로 말해보기

먼저, 만들고 싶은 걸 이렇게 적어보면 좋아요.

예시)

  • “사용자가 입력한 값으로 간단한 계산 결과를 보여준다”
  • “텍스트로 된 할 일을 저장하고, 목록을 관리해준다”
  • “간단한 문제를 내고 맞추면 점수를 주는 게임을 만든다”

아! 근데 여기서 중요한 포인트.
목적은 길게 쓰면 안 돼요. 길어질수록 나중에 기능이 계속 늘어납니다. (제가 그랬어요… “아 이거 있으면 더 재밌겠다” 하다가 끝이 안 보이더라고요. 하하)

Pexels


2) 기능 목록: “필수/선택” 나누기

사람 마음이 그렇잖아요?
“필수만 하면 심심할 것 같은데…” 하고 선택 기능을 자꾸 추가하게 돼요.

그래서 저는 보통 아래처럼 나눠요.

  • 필수(MVP): 이거 없으면 프로그램이 성립이 안 됨
  • 선택: 있으면 더 좋지만 없어도 완성은 가능

예시) “간단한 메뉴 기반 계산기”라면

  • 필수:
    • 메뉴 보여주기
    • 사용자 입력 받기
    • 계산하고 결과 출력하기
  • 선택:
    • 히스토리(이전 계산 기록) 보여주기
    • 잘못된 입력일 때 재시도하기
    • 종료 시 저장하기(파일로)

솔직히 말하면, 선택 기능은 시간이 허락할 때만 넣는 게 좋아요.
이번 시리즈는 “기초”가 목적이니까요. 뭐든 욕심 내면 시간도 늘고, 실수도 늘고… 그건 제가 이미 많이 겪었습니다(진짜 유머러스하게 실패했음…).

borevina


3) 입력/출력: 콘솔 기준으로 먼저 그려보기

바이브 코딩이 콘솔 중심이기도 해서, 전 여기서 항상 “사용 흐름”을 먼저 잡습니다.

예를 들어, 이런 식으로요.

  • 입력:
    • 사용자가 메뉴 번호를 입력한다
    • 사용자가 숫자 두 개(또는 한 개)를 입력한다
  • 출력:
    • 계산 결과를 보여준다
    • 잘못된 입력이면 안내 문구를 보여준다

“어떤 데이터가 들어오고, 어떤 결과가 나가야 하는지”만 정해도
다음 단계에서 함수 설계가 확 쉬워져요.

어?, 여기서 벌써 함수 생각해도 되냐고요?
되죠. 다만 지금은 “구현”이 아니라 그림만 그리는 느낌이면 충분해요.

StartupStockPhotos


4) 흐름(스텝) 정하기: 프로그램은 결국 루프야

대부분의 작은 프로그램은 이런 구조를 가집니다.

  • 화면 출력
  • 입력 받기
  • 처리하기
  • 결과 보여주기
  • 다시 반복(또는 종료)

예시 흐름)

  1. 시작 메뉴 출력
  2. 메뉴 선택 입력
  3. 선택한 기능 실행
  4. 결과 출력
  5. 계속할지 확인(또는 메뉴로 복귀)

여기까지 정해두면, 다음 글에서 코드 구조 설계할 때 “어떤 순서로 함수를 연결할지”가 딱 보입니다.

아! 그리고 이런 것도 미리 정하면 좋아요.

  • 종료 조건은 뭐로 할지? (예: q 입력하면 종료)
  • 잘못된 입력은 어떻게 처리할지? (예: “숫자만 입력하세요”)

이거 나중에 막히면 진짜 답답하거든요.
저도 한 번 입력 검증을 안 하고 갔다가… 변수가 꼬여서 콘솔이 지옥이 된 적 있어요. 지금 생각하면 웃기지만, 그땐 진짜 눈물…😂


5) 이번 프로젝트에서 내가 정할 것들(템플릿)

아래 템플릿을 그대로 채워보면, 다음 글까지 이미 준비 끝이에요.

Pexels

  • 프로그램 목적(한 문장):
  • 필수 기능(3~5개):
  • 선택 기능(있으면 좋은 것):
  • 입력(사용자 행동):
  • 출력(프로그램이 보여줄 것):
  • 종료 방법:
  • 잘못된 입력 처리 방식:

마무리: 다음 글에서 “코드 구조”로 넘어갈 준비

이번 글(6-1)에서는 “무엇을 만들지”를 확정했어요.
그리고 다음 글(6-2)에서는 그걸 바탕으로:

  • 어떤 함수가 필요한지
  • 입력/처리/출력을 어떻게 나눌지
  • 코드가 커져도 흔들리지 않게 구조를 잡는지

이걸 정리해볼 예정입니다.

원하면, 너(혹은 너의 아이디어)로 하나 골라서 템플릿을 같이 채워볼 수도 있어요.
지금 만들고 싶은 프로그램 주제, 뭐가 떠올라요?

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.091
BTC 63089.06
ETH 1779.04
USDT 1.00
SBD 0.39