콘텐츠로 이동

03. [종합] 나만의 프로그램 만들기

"이제 여러분은 파이썬이라는 언어를 배웠고, 컴퓨터라는 주방을 이해했습니다. 남의 레시피를 따라 하는 단계는 지났습니다. 이제 여러분만의 요리를 시작할 차례입니다."

1. 우리가 걸어온 길 (Roadmap)

우리는 주방 세팅부터 시작해 여기까지 왔습니다. 이 모든 지식이 합쳐져서 하나의 프로그램이 됩니다.

graph TD
    Step1["1부: 주방 세팅<br>(Python 설치, VS Code)"] --> Step2["2부: 재료 손질<br>(변수, 제어문, 입출력)"]
    Step2 --> Step3["3부: 도구 만들기<br>(함수, 모듈)"]
    Step3 --> Step4["4부: 재료 창고<br>(데이터, 행렬, 텐서)"]
    Step4 --> Step5["5부: 설계하기<br>(클래스, AI 협업)"]
    Step5 --> Step6["6부: 실전 요리<br>(라이브러리, 디버깅)"]
    Step6 --> Goal["🏆 나만의 프로그램"]

    style Goal fill:#fff9c4,stroke:#fbc02d,stroke-width:4px

2. 무엇을 만들까? (아이디어)

거창한 인공지능이나 앱을 만들려고 하지 마세요. "나의 사소한 귀찮음을 해결해주는 것"이 최고의 첫 프로젝트입니다.

  • 자동화: "매일 아침 뉴스 기사 3개 긁어서 나에게 카톡 보내기"
  • 파일 정리: "다운로드 폴더에 쌓인 사진 파일들을 날짜별 폴더로 자동 분류하기"
  • 데이터 수집: "내가 좋아하는 가수의 콘서트 표가 나오면 알림 울리기"

AI에게 아이디어 얻기

도저히 뭐가 필요한지 모르겠다면 AI에게 물어보세요.

"나는 직장인이고 엑셀 업무가 많아. 파이썬 초보자로서 주말 동안 만들 수 있는 업무 자동화 프로젝트 아이디어 3개만 추천해줘."

3. 프로젝트 진행: AI와 설계부터 구현까지

코드는 AI가 짭니다. 하지만 그 코드가 무엇이어야 하는지는 오직 사람만이 결정할 수 있습니다. 여러분의 역할은 직접 코딩하는 것에서 1.기획, 2.설계/검토, 3.검증하는 것으로 바뀝니다.

🔄 Human-AI 협업 사이클

단계 역할 누가? 하는 일
Step 1 기획 (Planning) 🧑+🤖 막연한 아이디어를 구체적인 PRD(제품 요구사항 정의서)로 발전 및 검토
Step 2 설계 (Design) 🧑+🤖 클래스/시퀀스 다이어그램 생성 및 검토
Step 3 구현 (Coding) 🤖 설계도에 따라 실제 파이썬 코드 작성
Step 4 검증 (Verify) 🧑 실행 결과가 기획 의도와 맞는지 확인

"코딩(구현)은 AI에게 맡기고, 여러분은 제대로 된 기획(Planning)설계(Design)에 집중해야 합니다. AI와 대화하며 PRD를 다듬고, 그것이 내가 원하는 것이 맞는지 끊임없이 확인하세요."


1단계: 기획 (Planning)

막연히 "파일 정리기 만들어줘"라고 하면 AI는 헷갈려합니다. AI와 대화하며 PRD(제품 요구사항 정의서) 수준으로 구체화하세요.

사용자: "나는 다운로드 폴더 정리가 너무 귀찮아. 아이디어 좀 줘." AI: "확장자별 자동 분류는 어때요? 아니면 오래된 파일 삭제?" 사용자: "확장자 분류가 좋겠다. 구체적인 기능을 정리해서 PRD(기획서)로 써줘."

(결과물: 기획서 텍스트) * 기능 1: .jpg, .pngImages 폴더로 이동 * 기능 2: 다른 파일은 건드리지 않음 * 기능 3: 이동 후 로그 출력

2단계: 구조 설계 (Class Diagram)

"어떤 녀석들(Object)이 필요한가?"를 정의합니다.

사용자: "파일 정리 프로그램을 만들 거야. FileMover는 파일을 이동시키고, FolderScanner는 파일 목록을 가져와. 클래스 다이어그램 그려줘."

[AI가 그린 다이어그램 확인 및 수정] AI가 그려준 다이어그램을 보고 사람(Architect)이 검토해야 합니다.

사용자(피드백): "잠깐, FolderScanner에 특정 확장자(.jpg)만 골라내는 기능이 빠졌어. filter_by_extension 메서드를 추가해서 다시 그려줘."

classDiagram
    class FolderScanner {
        +get_files(path)
        +filter_by_extension(ext)
    }
    class FileMover {
        +move_file(file, target_folder)
    }
    FolderScanner ..> FileMover : 사용

3단계: 흐름 설계 (Sequence Diagram)

"시간 순서대로 누가 누구를 부르는가?"를 정의합니다. 프로그램의 시나리오를 짜는 것입니다.

사용자: "좋아. 이제 프로그램이 시작되면 FolderScanner가 파일을 찾고, 반복문을 돌면서 FileMover에게 이동을 시키는 과정을 시퀀스 다이어그램으로 그려줘."

[AI가 그린 다이어그램 확인 및 수정] 시나리오가 내 생각과 맞는지 확인합니다.

사용자(피드백): "파일을 찾지 못했을 때의 처리가 빠졌어. 파일이 0개일 때 '파일 없음'을 출력하는 흐름을 추가해줘."

sequenceDiagram
    participant Main as 프로그램(Main)
    participant Scanner as FolderScanner
    participant Mover as FileMover

    Main->>Scanner: 1. 파일 목록 줘! (get_files)
    Scanner-->>Main: [파일1.jpg, 파일2.txt, ...]

    alt 파일이 있을 때
        loop 모든 파일 반복
            Main->>Mover: 2. 이 파일 옮겨줘 (move_file)
            Mover-->>Main: 이동 완료!
        end
    else 파일이 없을 때
        Main->>Main: '파일 없음' 알림
    end

4단계: 구현 지시 (Code Generation)

설계도(Class & Sequence)가 완벽하게 검증되었다면, 이제 코딩을 지시합니다.

사용자: "위의 클래스 다이어그램시퀀스 다이어그램을 기반으로 파이썬 코드를 작성해 줘. 주석도 달아줘."

4. 실패하지 않는 법칙 (MVP)

  1. 목표를 작게 잡으세요: "완벽한 웹사이트" (X) -> "글자 하나 띄우는 창" (O)
  2. 설계도로 소통하세요: AI가 엉뚱한 코드를 짜면, 코드를 고치지 말고 다이어그램(설계)을 고쳐서 다시 시키세요.
  3. 일단 작동하게 만드세요: 실행되는 쓰레기(?)가 실행 안 되는 명작보다 낫습니다.