6주차: GitHub Copilot과 협업하는 사고법
개요
지난 두 주 복습: 4대 원리 완성
지난 4주차와 5주차에 걸쳐 여러분은 컴퓨팅 사고의 4대 원리를 모두 학습했습니다:
- 분해(Decomposition): "쇼핑몰 만들기"를 "상품 목록", "장바구니", "결제"로 나누기
- 패턴 인식(Pattern Recognition): "파일 읽기"와 "파일 쓰기"의 비슷한 패턴 발견하기
- 추상화(Abstraction): 지하철 노선도처럼 핵심만 남기고 세부사항 제거하기
- 알고리즘적 사고(Algorithmic Thinking): 요리 레시피처럼 단계별로 명확하게 정리하기
이 원리들은 문제를 체계적으로 분석하고 해결하는 강력한 도구입니다. 하지만 이것만으로는 충분하지 않습니다. 이제 이 생각들을 GitHub Copilot에게 효과적으로 전달하는 방법을 배워야 합니다.
이번 주: 사고에서 행동으로
이번 주차는 바이브 코딩의 핵심 기술인 AI와의 협업을 다룹니다. 특히 GitHub Copilot Agent 모드와 효과적으로 대화하는 방법에 집중합니다. Agent는 단순히 코드 한 줄을 제안하는 것을 넘어, 여러분과 대화하며 함께 문제를 해결하는 협업 파트너입니다.
여러분이 팀원에게 업무를 요청할 때를 떠올려 보세요. "이것 좀 해줘"라고만 하면 원하는 결과를 얻기 어렵습니다. 무엇을 원하는지, 왜 필요한지, 어떤 맥락인지를 명확히 전달해야 하죠. GitHub Copilot Agent와의 협업도 마찬가지입니다.
이번 주차에서 배울 내용:
- GitHub Copilot Agent와의 효과적인 대화 방법: Agent 모드를 활성화하고 자연스럽게 대화하는 법
- 프롬프트 엔지니어링 기초: 명확한 목표, 충분한 맥락, 단계별 요청으로 더 나은 결과 얻기
- 반복적 개선 전략: 첫 결과를 바로 개선하고 점진적으로 완성도 높이는 법
- AI의 강점과 한계: 무엇을 맡기고 무엇을 직접 판단해야 하는지
이번 주차가 끝나면 여러분은:
- GitHub Copilot Agent를 마치 경험 많은 동료처럼 활용할 수 있습니다
- 효과적인 프롬프트를 작성하여 원하는 결과를 빠르게 얻을 수 있습니다
- 결과가 마음에 들지 않을 때 어떻게 개선 요청을 해야 하는지 알게 됩니다
- AI와 사람의 역할을 적절히 분담하여 더 나은 결과를 만들 수 있습니다
지금까지 배운 컴퓨팅 사고가 "무엇을" 요청할지 생각하는 능력이었다면, 이번 주는 "어떻게" 요청할지 배우는 시간입니다. 이 두 가지가 만나면, 여러분은 진정한 바이브 코더가 됩니다.
준비되셨나요? 그럼 GitHub Copilot Agent와의 협업 세계로 들어가 보겠습니다.
GitHub Copilot Agent와의 효과적인 대화 방법
Agent 모드란 무엇인가
GitHub Copilot Agent는 단순한 코드 완성 도구가 아닙니다. 여러분과 대화를 나누며 함께 문제를 해결하는 AI 협업 파트너입니다. 마치 옆자리에 경험 많은 동료가 앉아서 "어떻게 도와드릴까요?"라고 묻는 것과 비슷합니다.
Agent 모드는 VS Code의 Copilot Chat에서 선택할 수 있는 특별한 협업 모드입니다. Chat 입력창 하단의 드롭다운 메뉴에서 "Agent"를 선택하면 활성화되며, 이 모드에서는 AI가 자율적으로 여러 파일을 생성하고 수정하며 복잡한 작업을 처리합니다.
일반적인 자동완성 기능은 여러분이 입력하는 코드의 다음 줄을 예측합니다. 하지만 Agent 모드는 훨씬 더 많은 일을 합니다:
대화형 협업 일반적인 도구: "이 다음에 뭘 입력할까?" → 한 줄 제안 Agent: "무엇을 만들고 싶으세요?" → 전체 해결책 제시
맥락 이해 일반적인 도구: 현재 파일만 봄 Agent: 프로젝트 전체를 파악하고, 여러 파일을 함께 고려
반복적 개선 일반적인 도구: 한 번 제안하면 끝 Agent: 피드백을 받고 계속 개선
Agent 모드의 강력한 기능들:
1. @workspace 멘션 - 프로젝트 전체 이해
Agent 모드의 가장 강력한 기능은 @workspace 멘션입니다. 이것을 사용하면 Agent가 여러분의 프로젝트 전체를 이해하고 작업합니다.
@workspace
할 일 목록 프로그램에 우선순위 기능을 추가하고 싶어요.
어떤 파일들을 수정해야 할까요?
Agent는 프로젝트의 모든 파일을 살펴보고, 관련된 파일들을 찾아서 수정 방법을 제안합니다.
2. 여러 파일 동시 작업
Agent는 한 번에 여러 파일을 만들거나 수정할 수 있습니다. 예를 들어:
@workspace
새로운 사용자 프로필 기능을 추가해줘.
필요한 파일들을 모두 만들고 연결해줘.
Agent는:
- 새 파일을 만듭니다 (profile.html, profile.css 등)
- 기존 파일을 수정합니다 (main.js에 연결 코드 추가)
- 모든 파일이 서로 잘 작동하도록 조정합니다
3. 프로젝트 수준의 계획 수립
복잡한 작업을 요청하면, Agent가 먼저 계획을 제시합니다:
@workspace
데이터를 엑셀 파일에서 읽어서 그래프로 만들고 싶어요.
Agent의 응답:
다음과 같이 작업하겠습니다:
1. 필요한 라이브러리 확인
2. 엑셀 읽기 모듈 추가
3. 데이터 처리 함수 작성
4. 그래프 생성 코드 추가
5. 메인 프로그램에서 연결
각 단계를 진행할까요?
여러분이 승인하면 Agent가 단계별로 실행합니다.
Agent 모드 활용의 핵심 팁:
✓ @workspace를 자주 사용하세요: 프로젝트 전체 맥락이 필요한 작업에서 ✓ 큰 작업은 Agent에게 맡기세요: 여러 파일을 수정해야 하는 복잡한 작업 ✓ 계획을 먼저 요청하세요: "어떻게 하면 될까요?" 물어보고 승인 후 진행 ✓ 피드백을 주세요: Agent가 한 일을 확인하고 개선점 제안
// 이미지로 교체되어야 함 : Agent 모드의 작동 방식을 보여주는 다이어그램. 사용자 - Agent - 프로젝트 파일들의 상호작용 프롬프트: A diagram showing how Agent mode works: user (person icon) communicates with Copilot Agent (AI brain icon with @ symbol), Agent examines entire workspace (folder tree), creates plan, executes changes across multiple files (multiple document icons), returns to user for feedback. Circular workflow with arrows, modern tech illustration style
Agent 모드를 사용하면 여러분은:
- 자연어로 편하게 요청할 수 있습니다
- 복잡한 작업도 단계별로 함께 진행할 수 있습니다
- 결과가 마음에 들지 않으면 바로 수정 요청할 수 있습니다
- 여러 파일에 걸친 변경도 한 번에 처리할 수 있습니다
- 프로젝트 전체를 이해하는 AI와 협업합니다
실전 예시: Agent 모드 vs 일반 모드
일반 모드 (한 번에 한 파일):
"할일 추가하는 함수 만들어줘"
→ 현재 파일에만 함수 추가
→ 다른 파일과의 연결은 직접 해야 함
→ 여러 번 반복 필요
Agent 모드 (프로젝트 전체):
@workspace
"할일 관리 앱에 카테고리 기능을 추가하고 싶어요.
할일마다 카테고리를 선택할 수 있고,
카테고리별로 필터링할 수 있으면 좋겠어요."
→ Agent가 관련 파일들 찾기
→ 데이터 구조 수정
→ UI에 카테고리 선택 추가
→ 필터링 기능 구현
→ 모든 파일을 일관되게 업데이트
앞으로 모든 실습에서 Agent 모드를 적극 활용하세요!
// 이미지로 교체되어야 함 : 일반 자동완성과 Agent 모드의 차이를 보여주는 비교 다이어그램. 왼쪽은 단방향 화살표로 '입력→제안', 오른쪽은 순환 화살표로 '대화→이해→제안→피드백→개선' 프롬프트: A comparison diagram showing difference between autocomplete and Agent mode. Left side shows simple one-way arrow 'input→suggestion', right side shows circular collaboration flow 'conversation→understanding→suggestion→feedback→improvement'. Clean, professional infographic style
Agent 모드를 사용하면 여러분은:
- 자연어로 편하게 요청할 수 있습니다
- 복잡한 작업도 단계별로 함께 진행할 수 있습니다
- 결과가 마음에 들지 않으면 바로 수정 요청할 수 있습니다
- 여러 파일에 걸친 변경도 한 번에 처리할 수 있습니다
Agent 모드 사용하기: 단계별 완전 가이드
Agent 모드가 무엇인지는 알았습니다. 이제 실제로 어떻게 사용하는지 처음부터 끝까지 따라해봅시다. 컴퓨터를 켜고, VS Code를 열고, 첫 대화를 시작하는 모든 과정을 상세히 안내하겠습니다.
준비 단계: VS Code와 GitHub Copilot 설정
Step 1: VS Code 설치 확인
- Visual Studio Code가 설치되어 있는지 확인하세요
- 없다면 https://code.visualstudio.com 에서 무료로 다운로드
- 설치 후 VS Code를 실행하세요
Step 2: GitHub Copilot 확인 및 로그인
좋은 소식: 최근 VS Code에는 GitHub Copilot이 이미 포함되어 있습니다!
별도로 확장을 설치하지 않아도 됩니다. 다만 사용하려면 GitHub 계정으로 로그인해야 합니다.
Copilot이 이미 있는지 확인하기:
- VS Code 오른쪽 하단을 보세요
- Copilot 아이콘(비행기 모양 또는 로고)이 보이나요?
- 보인다면: 이미 설치되어 있습니다! Step 3으로 이동
- 보이지 않는다면: 아래 설치 과정을 따라하세요
혹시 Copilot이 없다면 설치하기:
- VS Code 왼쪽 사이드바에서 확장(Extensions) 아이콘 클릭 (네모 4개 모양)
- 검색창에 "GitHub Copilot" 입력
- "GitHub Copilot" (제작자: GitHub) 찾기
- 파란색 "Install" 버튼 클릭
- 설치 완료!
Step 3: GitHub 계정으로 로그인
Copilot을 사용하려면 GitHub 계정이 필요합니다.
- VS Code 오른쪽 하단의 Copilot 아이콘 클릭
- "Sign in to GitHub" 버튼이 보이면 클릭
- 웹 브라우저가 열리며 GitHub 로그인 화면 표시
- GitHub 계정으로 로그인
- VS Code로 돌아오면 자동으로 연결됨
Step 4: Copilot이 활성화되었는지 확인
- VS Code 오른쪽 하단의 Copilot 아이콘을 확인하세요
- 아이콘에 마우스를 올리면 "GitHub Copilot is active" 메시지가 표시되면 성공!
- 준비 완료!
// 이미지로 교체되어야 함 : VS Code 오른쪽 하단의 Copilot 아이콘과 로그인 버튼, 활성화 상태를 보여주는 화면 프롬프트: Screenshot-style illustration of VS Code bottom-right corner showing GitHub Copilot icon, sign-in prompt, and active status indicator. Clean UI mockup with arrows highlighting the Copilot icon and login button
Agent 모드 시작하기: 실전 가이드
이제 본격적으로 Agent와 대화를 시작해봅시다.
Step 1: Copilot Chat 열기
VS Code에서 Chat을 여는 방법은 두 가지입니다:
-
메뉴에서 열기:
- 상단 메뉴 → View → Chat
- 또는 Command Palette(
Ctrl+Shift+P) → "Chat: Open Chat" 입력
-
단축키 사용:
Ctrl + Alt + I(Windows/Linux)Cmd + Option + I(Mac)
Chat 창이 왼쪽 또는 오른쪽 사이드바에 나타납니다.
// 이미지로 교체되어야 함 : VS Code 상단 메뉴에서 View > Chat을 선택하는 화면과 Chat 창이 열린 모습 프롬프트: Screenshot-style illustration showing VS Code menu bar with View > Chat highlighted, and the Chat panel opening on the sidebar. Clean UI mockup with arrows pointing to key elements
Step 2: Agent 모드 선택하기
Chat 창이 열리면, 채팅 입력창 하단을 주목하세요.
-
입력창 바로 아래 또는 옆에 모드 선택 드롭다운이 있습니다
-
드롭다운을 클릭하면 네 가지 모드가 표시됩니다:
- Ask (질문 모드): 답변만 받기
- Edit (편집 모드): 특정 파일 수정
- Agent (에이전트 모드): 자율적으로 여러 파일 작업
- Plan (계획 모드): 구현 전 상세 계획 수립 (프리뷰)
-
Agent를 선택하세요
// 이미지로 교체되어야 함 : Chat 입력창 하단의 모드 드롭다운 메뉴에서 Ask, Edit, Agent, Plan 중 Agent를 선택하는 화면 프롬프트: Detailed illustration of Copilot Chat input box bottom area, showing mode dropdown menu with four options: Ask, Edit, Agent, and Plan. Agent option is highlighted or selected. Modern UI design with clear labeling
Agent 모드와 다른 모드의 차이
각 모드는 서로 다른 목적으로 사용됩니다:
| 모드 | 언제 사용하나요? | 무엇을 하나요? |
|---|---|---|
| Ask | 코드 설명, 질문 | 답변만 제공 (파일 수정 안 함) |
| Edit | 열린 파일 빠른 수정 | 현재 파일만 수정 |
| Agent | 복잡한 작업, 여러 파일 | 자율적으로 계획하고 실행 |
| Plan | 큰 프로젝트 설계 | 구현 전 상세 계획 수립 (프리뷰) |
Agent 모드가 선택되었는지 확인하기
- 입력창 근처에 "Agent" 텍스트가 표시됨
- 또는 드롭다운이 "Agent"로 설정되어 있음
- 이제 Agent와 대화할 준비가 완료되었습니다!
// 이미지로 교체되어야 함 : Ask, Edit, Agent, Plan 네 가지 모드의 차이를 비교하는 다이어그램. 각 모드의 특징과 사용 사례를 시각적으로 표현 프롬프트: Comparison infographic showing four Copilot modes: Ask mode (question mark icon, answers only), Edit mode (pencil icon, single file changes), Agent mode (robot icon, autonomous multi-file work), Plan mode (clipboard icon, implementation planning). Clean icons and brief descriptions for each
첫 대화 실전 예시: 처음부터 끝까지
이제 실제로 Agent와 대화하는 전체 과정을 따라해봅시다.
상황: 간단한 할 일 목록 만들기
Step 1: Chat 창 열고 Agent 모드 선택
Ctrl + Alt + I눌러서 Chat 창 열기- 입력창 하단의 드롭다운에서 Agent 선택
- 입력창이 준비됨
Step 2: 프롬프트 입력
Agent 모드가 선택된 상태에서 입력창에 이렇게 입력하세요:
할 일 목록 웹 페이지를 만들고 싶어요.
사용자가 할 일을 입력하고, 목록으로 보고, 완료 체크할 수 있으면 좋겠어요.
HTML, CSS, JavaScript로 만들어주세요.
Step 3: Agent의 계획 확인
Agent 모드는 작업을 시작하기 전에 계획을 보여줍니다:
할 일 목록 애플리케이션을 만들겠습니다.
다음 단계로 진행합니다:
1. index.html 파일 생성 - 기본 HTML 구조와 입력 폼
2. style.css 파일 생성 - 깔끔한 디자인
3. script.js 파일 생성 - 할 일 추가/완료/삭제 기능
파일을 생성하겠습니다...
Agent 모드의 특징은 자동으로 작업을 진행한다는 것입니다. Ask 모드처럼 답변만 주는 것이 아니라, 실제로 파일을 만들고 코드를 작성합니다.
Step 4: 작업 과정 관찰
Agent가 작업하는 동안:
- 에디터에 코드가 스트리밍됩니다 - 실시간으로 코드가 작성되는 모습을 볼 수 있습니다
- 변경 사항 미리보기가 표시됩니다 - 어떤 파일이 생성/수정되는지 확인
- 도구 사용 권한 요청이 나타날 수 있습니다 - 예: "파일을 생성해도 될까요?"
Step 5: 변경 사항 검토 및 승인
Agent가 작업을 마치면:
- 변경된 파일들의 diff(차이점) 보기가 표시됩니다
- 각 변경 사항을 검토합니다
- Accept 버튼을 클릭하여 변경 사항 적용
- 원치 않는 변경은 Discard로 거부 가능
// 이미지로 교체되어야 함 : Agent 모드에서 코드 변경 사항을 검토하는 화면. 파일 diff 보기와 Accept/Discard 버튼이 표시됨 프롬프트: Screenshot-style illustration of VS Code showing Agent mode code review screen with file diff view, highlighting changes in green (additions) and red (deletions), with Accept and Discard buttons at the bottom. Modern UI design
Step 6: 실행해보기
- 생성된
index.html파일을 오른쪽 클릭 - "Open with Live Server" 선택 (Live Server 확장이 필요합니다)
- 또는 파일을 더블 클릭하여 브라우저에서 열기
- 작동하는지 확인!
Step 7: 반복적 개선
Agent 모드의 강력한 기능은 계속 대화하며 개선할 수 있다는 점입니다:
완료된 항목은 취소선과 회색으로 표시하고 싶어요.
그리고 각 항목에 삭제 버튼도 추가해주세요.
Agent가 다시 작업을 시작합니다:
- 기존 파일들을 분석
- 필요한 부분만 수정
- 변경 사항을 보여주고 승인 요청
이렇게 원하는 결과를 얻을 때까지 계속 개선할 수 있습니다!
Agent 모드의 자율성 이해하기
Agent 모드가 다른 모드와 다른 점:
| 특징 | Ask 모드 | Edit 모드 | Agent 모드 | Plan 모드 |
|---|---|---|---|---|
| 파일 수정 | ❌ 없음 | ✅ 선택된 파일만 | ✅ 여러 파일 자동 | ❌ 계획만 수립 |
| 작업 방식 | 답변만 제공 | 직접 지정 필요 | 자율적 판단 | 단계별 계획 제시 |
| 터미널 명령 | ❌ 없음 | ❌ 없음 | ✅ 제안 및 실행 | ❌ 없음 |
| 반복 개선 | ❌ 어려움 | ⚠️ 제한적 | ✅ 원활함 | ✅ 계획 수정 가능 |
Agent 모드를 선택하면 AI가 더 적극적으로 작업합니다. 여러분은 "무엇을" 원하는지만 말하면, Agent가 "어떻게" 할지 결정합니다.
@workspace 멘션 활용하기
Agent 모드의 가장 강력한 기능인 @workspace 사용법을 배워봅시다.
@workspace가 뭔가요?
@workspace는 Agent에게 "내 프로젝트 전체를 봐주세요"라고 알려주는 특별한 명령어입니다. 이것을 사용하면:
- 여러 파일을 한 번에 이해합니다
- 파일 간 연결을 파악합니다
- 프로젝트 구조를 고려하여 작업합니다
언제 사용하나요?
✅ 여러 파일을 수정해야 할 때 ✅ 새로운 기능을 기존 프로젝트에 추가할 때 ✅ 프로젝트 전체의 구조를 파악해야 할 때 ✅ "이 프로젝트에서..."로 시작하는 질문
사용 방법:
Chat 입력창에서 메시지 앞에 @workspace를 붙이세요:
@workspace
이 프로젝트에 사용자 로그인 기능을 추가하고 싶어요.
어떤 파일들을 수정해야 할까요?
Agent의 응답 예시:
프로젝트를 분석한 결과, 다음 파일들을 수정해야 합니다:
1. index.html - 로그인 폼 추가
2. script.js - 로그인 처리 로직 추가
3. style.css - 로그인 폼 스타일 추가
4. auth.js (새 파일) - 인증 관련 함수들
각 파일을 어떻게 수정할지 보여드릴까요?
@workspace 실전 예시:
@workspace
할 일 목록에 카테고리 기능을 추가하고 싶습니다.
각 할 일마다 "업무", "개인", "공부" 같은 카테고리를 선택할 수 있고,
카테고리별로 필터링해서 볼 수 있으면 좋겠어요.
Agent는:
- 현재 프로젝트의 모든 파일을 분석
- 데이터 구조가 어떻게 되어 있는지 파악
- HTML, CSS, JavaScript를 모두 일관되게 수정
- 카테고리 선택 UI, 필터 버튼, 데이터 저장 로직을 추가
@workspace 없이 vs 있을 때 차이:
❌ @workspace 없이:
카테고리 기능 추가해줘
→ Agent가 어떤 파일을 수정할지 모름 → 코드 조각만 제안 → 직접 여러 파일을 수정해야 함
✅ @workspace 사용:
@workspace
카테고리 기능 추가해줘
→ Agent가 전체 프로젝트 파악 → 관련된 모든 파일 수정 제안 → 일관된 구조로 자동 통합
# 멘션으로 컨텍스트 추가하기
@workspace 외에도 # 기호를 사용하여 Agent에게 더 구체적인 컨텍스트를 제공할 수 있습니다. Chat 입력창에서 #을 입력하면 사용 가능한 옵션들이 표시됩니다.
자주 사용하는 # 멘션:
| 멘션 | 설명 | 예시 |
|---|---|---|
#file | 특정 파일 참조 | #file:index.html 이 파일에 버튼 추가해줘 |
#codebase | 전체 코드베이스 검색 | #codebase 사용자 인증 관련 코드가 어디 있어? |
#terminalSelection | 터미널 출력 참조 | #terminalSelection 이 에러 어떻게 해결해? |
#fetch | 웹 콘텐츠 가져오기 | #fetch https://api.example.com 이 API 사용법 알려줘 |
실전 예시:
#file:script.js
이 파일에서 할 일 추가 기능이 어떻게 작동하는지 설명해줘
#terminalSelection
방금 실행했는데 이런 에러가 났어요. 어떻게 고쳐야 할까요?
# 멘션은 Agent에게 정확한 맥락을 제공하여 더 정확한 답변을 얻는 데 도움이 됩니다. 특히 #file은 특정 파일에 대해 질문하거나 수정을 요청할 때 매우 유용합니다.
실전 팁: Agent와 효과적으로 대화하기
Tip 1: 구체적으로 요청하세요
❌ 나쁜 예: "뭔가 만들어줘" ✅ 좋은 예: "사용자가 메모를 입력하고 저장할 수 있는 웹 페이지 만들어줘"
Tip 2: 단계별로 진행하세요
❌ 한 번에: "완벽한 쇼핑몰 만들어줘" ✅ 단계별:
- "간단한 상품 목록 페이지 만들어줘"
- 확인 후 → "장바구니 기능 추가해줘"
- 확인 후 → "결제 버튼 추가해줘"
Tip 3: 결과를 항상 확인하세요
코드를 받으면:
- 실제로 실행해보기
- 의도대로 작동하는지 확인
- 문제가 있으면 바로 피드백
Tip 4: 질문을 두려워하지 마세요
"이 코드가 어떻게 작동하는지 설명해줄 수 있어요?"
"왜 이 방법을 사용했나요?"
"다른 방법도 있나요?"
Agent는 기꺼이 설명해줍니다!
Tip 5: 에러 메시지를 그대로 보여주세요
문제가 생기면:
이런 에러가 났어요:
[에러 메시지 복사해서 붙여넣기]
어떻게 고칠 수 있을까요?
// 이미지로 교체되어야 함 : Agent와의 대화 모범 사례를 보여주는 플로우차트. 명확한 요청 → Agent 응답 → 실행 및 테스트 → 피드백 → 개선의 순환 과정 프롬프트: Flowchart showing best practices for Agent conversation: Clear request → Agent response → Execute & test → Provide feedback → Improvement. Circular flow with checkmarks for successful steps, friendly professional style
이제 여러분은 Agent 모드를 실제로 사용할 수 있습니다! 처음에는 어색할 수 있지만, 몇 번 대화해보면 금방 자연스러워질 것입니다. Agent는 여러분의 가장 친절한 코딩 파트너입니다.
4단계: 대화하며 구체화하기
Agent의 질문에 답하며 점점 구체화합니다:
여러분: "네, 웹 페이지로 만들어주세요."
Agent: "알겠습니다. 필요한 기능을 말씀해주세요."
여러분: "할 일을 입력할 수 있고, 완료 체크를 할 수 있으면 좋겠어요."
Agent: "추가로 삭제 기능도 필요하신가요?"
여러분: "네, 그것도 있으면 좋겠네요."
이렇게 자연스러운 대화로 진행됩니다.
5단계: 결과 확인하기
Agent가 코드를 제안하면, 실행해보고 확인합니다. 코드를 직접 읽지 않아도 됩니다. 결과를 보고 판단하세요:
- 원하는 대로 작동하나요?
- 빠진 기능은 없나요?
- 개선할 점은 무엇인가요?
효과적인 대화의 핵심 원칙
Agent와 효과적으로 대화하려면 몇 가지 원칙을 따르는 것이 좋습니다. 사람과 대화할 때와 비슷하지만, 약간의 차이가 있습니다.
원칙 1: 명확하고 구체적으로 말하기
모호함: "뭔가 만들어줘" 명확함: "사용자가 메모를 저장하고 나중에 볼 수 있는 도구를 만들어줘"
모호한 요청은 Agent도 어려워합니다. "뭔가"는 무한한 가능성이 있으니까요. 하지만 너무 세세한 것까지 다 말할 필요는 없습니다. 핵심만 전달하세요.
원칙 2: 목적을 먼저 말하기
방법 중심: "버튼 3개와 입력창을 만들어줘" 목적 중심: "사용자가 정보를 입력하고 저장할 수 있게 해줘"
목적을 말하면 Agent가 더 나은 방법을 제안할 수 있습니다. 버튼이 3개 필요한지는 Agent가 판단하게 하세요.
원칙 3: 맥락 제공하기
맥락 없음: "이거 고쳐줘" 맥락 있음: "할 일 목록 앱을 만들고 있어요. 지금 추가 기능은 작동하는데, 삭제가 안 돼요. 고쳐주세요."
Agent는 여러분의 전체 상황을 모릅니다. 무엇을 하려고 하는지, 지금 무엇이 문제인지 알려주세요.
원칙 4: 한 번에 하나씩 요청하기
한꺼번에: "할 일 목록 만들고, 색상 바꾸고, 애니메이션 추가하고, 데이터 저장하고..." 단계별: "먼저 기본적인 할 일 목록을 만들어주세요. 그다음에 다른 기능을 추가하겠습니다."
복잡한 요청은 단계별로 나누세요. 각 단계를 확인하며 진행하는 것이 더 효과적입니다.
원칙 5: 긍정적이고 협력적인 태도
Agent는 도구지만, 협력적인 태도로 접근하면 대화가 더 수월합니다.
명령조: "빨리 만들어" 협력적: "이렇게 만들어주시면 감사하겠습니다"
물론 Agent는 감정이 없지만, 여러분이 협력적으로 생각하면 더 나은 요청을 하게 됩니다.
원칙 6: 질문하고 확인하기
Agent가 제안한 것이 이해되지 않으면 질문하세요: "이 기능은 어떻게 작동하나요?" "왜 이런 방식으로 만들었나요?" "다른 방법도 있나요?"
Agent는 설명도 잘합니다. 이해할 때까지 물어보세요.
실제 대화 예시
좋은 대화 흐름:
여러분: "간단한 타이머를 만들고 싶어요. 공부할 때 사용하려고요."
Agent: "알겠습니다. 어떤 기능이 필요하신가요?"
여러분: "시간을 설정하고, 시작하면 카운트다운이 되고, 시간이 끝나면 알려주면 좋겠어요."
Agent: "웹 페이지로 만들어드릴까요?"
여러분: "네, 웹 페이지로 부탁드려요."
Agent: [코드 제안]
여러분: "잘 작동하네요! 그런데 남은 시간이 더 크게 보였으면 좋겠어요."
Agent: "화면에서 타이머 표시를 더 크게 만들겠습니다."
이 대화에서 주목할 점:
- 목적이 명확함 (공부용 타이머)
- 필요한 기능을 간단히 나열
- 결과를 확인하고 피드백
- 구체적인 개선 요청
Agent와의 대화는 연습할수록 자연스러워집니다. 처음엔 어색하더라도, 몇 번 해보면 마치 동료와 대화하듯 편해질 것입니다.
프롬프트 엔지니어링 기초
프롬프트 엔지니어링이라는 말이 어렵게 들릴 수 있습니다. 하지만 본질은 간단합니다. AI에게 효과적으로 요청하는 기술입니다. 마치 좋은 질문을 하면 좋은 답을 얻듯이, 좋은 프롬프트를 작성하면 좋은 결과를 얻습니다.
프롬프트 엔지니어링의 세 가지 핵심은:
- 명확한 목표 제시
- 충분한 컨텍스트 제공
- 단계별 개선 요청
하나씩 자세히 살펴보겠습니다.
명확한 목표 제시하기
Agent는 여러분의 머릿속을 들여다볼 수 없습니다. 원하는 것을 명확히 말해야 합니다. 하지만 "명확하다"는 것이 "복잡하다"는 뜻은 아닙니다.
좋은 목표 제시의 특징
1. 결과를 설명한다 (방법이 아니라)
❌ 나쁜 예: "HTML 파일을 만들고 CSS를 추가해줘" ✅ 좋은 예: "사용자가 메시지를 남길 수 있는 방명록 페이지를 만들어줘"
첫 번째는 "어떻게"에 집중하고, 두 번째는 "무엇을"에 집중합니다. Agent는 "무엇을" 알면 "어떻게"를 스스로 결정할 수 있습니다.
2. 핵심 기능을 나열한다
모호함: "쇼핑 사이트 같은 거 만들어줘" 명확함: "상품 목록을 보여주고, 각 상품을 장바구니에 담을 수 있는 페이지를 만들어줘"
너무 큰 목표는 작게 나누세요. 지난 주에 배운 분해를 기억하시나요? 여기서도 활용됩니다.
3. 누가 사용할지 언급한다
일반적: "계산기 만들어줘" 구체적: "초등학생이 구구단을 연습할 수 있는 계산 문제 만들어줘"
사용자를 말하면 Agent가 적절한 수준과 방식을 선택합니다.
4. 왜 필요한지 간단히 설명한다 (선택사항)
기본: "타이머 만들어줘" 맥락 포함: "집중해서 공부할 때 쓰려고 하는데, 타이머 만들어줘"
"왜"를 알면 Agent가 더 적합한 기능을 제안할 수 있습니다. 예를 들어 공부용이라면 긴 시간 설정이 필요하다는 것을 이해합니다.
실전 예시: 목표를 점점 명확히 하기
버전 1 (너무 모호함): "앱 만들어줘" → Agent가 무엇을 만들어야 할지 모름
버전 2 (조금 나아짐): "메모 앱 만들어줘" → 메모 앱이 어떤 기능을 해야 하는지 불명확
버전 3 (더 명확함): "메모를 작성하고 저장할 수 있는 앱 만들어줘" → 기본 기능은 명확하지만 세부사항은 여전히 모호
버전 4 (충분히 명확함):
간단한 메모 앱을 만들고 싶습니다.
필요한 기능:
- 메모를 작성할 수 있어야 합니다
- 작성한 메모를 저장할 수 있어야 합니다
- 저장된 메모 목록을 볼 수 있어야 합니다
- 메모를 클릭하면 내용을 볼 수 있어야 합니다
웹 페이지 형태로 만들어주세요.
버전 4가 가장 좋은 이유:
- 앱의 목적이 명확함 (메모 작성 및 저장)
- 핵심 기능이 나열됨
- 형태를 지정함 (웹 페이지)
- 하지만 지나치게 세세하지는 않음
충분한 컨텍스트 제공하기
컨텍스트(context)는 "맥락"을 의미합니다. Agent가 여러분의 상황을 이해하도록 돕는 배경 정보입니다.
왜 컨텍스트가 중요한가?
같은 요청이라도 상황에 따라 다른 결과가 필요합니다.
예: "버튼을 크게 만들어줘"
- 모바일 앱이라면: 손가락으로 누르기 좋게 충분히 크게
- 데스크톱 웹이라면: 화면에 맞게 적당한 크기로
- 어린이용이라면: 실수로 누르기 어렵게 더 크게
컨텍스트를 제공하면 Agent가 적절한 판단을 합니다.
어떤 컨텍스트를 제공해야 하나?
1. 현재 작업 상황
"할 일 목록 앱을 만들고 있어요.
지금까지 추가 기능은 완성했고,
이제 삭제 기능을 추가하고 싶습니다."
무엇을 하고 있는지, 어디까지 왔는지 알려주세요.
2. 기존에 만든 것과의 관계
"이전에 만든 계산기에
기록 기능을 추가하고 싶어요.
계산한 결과들을 목록으로 보여주면 좋겠습니다."
기존 작업과 연결되는지 말하면 일관성 있는 결과를 얻습니다.
3. 제약 조건
"간단한 가계부를 만들고 싶은데,
복잡한 기능은 필요 없어요.
지출만 기록하고 총액을 볼 수 있으면 됩니다."
무엇이 필요 없는지도 중요한 정보입니다.
4. 예상 사용 환경
"스마트폰에서 사용할 예정이니,
화면이 작아도 잘 보이게 만들어주세요."
어디서 어떻게 쓸지 알면 Agent가 그에 맞게 만듭니다.
프로젝트 전체에 가이드 제공하기: copilot-instructions.md
매번 Agent와 대화할 때마다 같은 맥락을 반복해서 설명하는 것은 번거롭습니다. "이건 학생용이에요", "간단하게 만들어주세요", "이 프로젝트는 이런 목적이에요" 같은 말을 계속 해야 한다면 피곤하겠죠?
다행히 GitHub Copilot에는 프로젝트 전체에 대한 가이드를 한 번만 작성해두면, Agent가 항상 그것을 기억하며 작업하는 기능이 있습니다. 바로 .github/copilot-instructions.md 파일입니다.
copilot-instructions.md가 뭔가요?
여러분의 프로젝트 폴더에 .github라는 이름의 폴더를 만들고, 그 안에 copilot-instructions.md라는 파일을 만들어 두면, GitHub Copilot Agent가 이 파일을 읽고 프로젝트에 대한 맥락을 이해합니다.
마치 새로 들어온 팀원에게 "우리 프로젝트는 이런 거야"라고 설명하는 문서를 만드는 것과 비슷합니다. 한 번 작성해두면 Agent가 항상 그 내용을 참고하며 작업합니다.
어떤 내용을 쓰면 좋을까요?
copilot-instructions.md 파일에는 다음과 같은 내용을 담을 수 있습니다:
1. 프로젝트 목적과 대상
# 프로젝트 안내
이 프로젝트는 초등학생이 구구단을 연습할 수 있는 학습 도구입니다.
간단하고 직관적인 인터페이스로 만들어주세요.
이렇게 써두면 Agent는 "아, 어린이용이니까 쉽게 만들어야겠구나"를 자동으로 이해합니다.
2. 작성 스타일 요청
## 코딩 스타일
- 변수 이름은 한글로 작성해주세요 (예: `학생이름`, `점수`)
- 주석을 충분히 달아서 나중에 이해하기 쉽게 해주세요
- 복잡한 기능보다는 단순하고 명확한 방식을 선호합니다
매번 "변수 이름 한글로"라고 말하지 않아도, Agent가 알아서 따릅니다.
3. 사용하는 기술이나 제약 조건
## 기술 스택
- HTML, CSS, JavaScript만 사용합니다
- 외부 라이브러리는 사용하지 않습니다
- 웹 브라우저에서 바로 실행할 수 있어야 합니다
Agent가 불필요하게 복잡한 기술을 제안하는 것을 방지합니다.
4. 프로젝트의 핵심 가치
## 핵심 원칙
- 사용자 친화성: 누구나 쉽게 사용할 수 있어야 합니다
- 단순성: 필요한 기능만 포함합니다
- 접근성: 작은 화면에서도 잘 보여야 합니다
이런 원칙을 적어두면 Agent가 제안할 때 이를 고려합니다.
실제 예시: 할 일 목록 프로젝트
다음은 간단한 할 일 목록 앱을 위한 copilot-instructions.md 예시입니다:
# 할 일 목록 프로젝트
## 프로젝트 설명
개인용 할 일 관리 도구입니다.
복잡한 기능보다는 빠르고 간단하게 할 일을 기록하고
완료 표시하는 것이 목표입니다.
## 대상 사용자
자신의 할 일을 빠르게 기록하고 싶은 일반인
## 기술 요구사항
- HTML, CSS, JavaScript만 사용
- 웹 브라우저에서 바로 실행 가능
- 외부 서버나 데이터베이스 불필요 (브라우저 저장소 활용)
## 디자인 원칙
- 깔끔하고 미니멀한 디자인
- 큰 글자와 버튼으로 사용성 중시
- 모바일에서도 잘 보이게
## 코드 스타일
- 이해하기 쉬운 변수 이름 사용
- 주석을 충분히 작성
- 기능은 작은 단위로 나누어 구현
## 피해야 할 것
- 복잡한 프레임워크나 라이브러리
- 과도한 애니메이션이나 장식
- 불필요한 기능 추가
copilot-instructions.md의 장점
1. 일관성 모든 대화에서 Agent가 같은 맥락을 이해하고 작업합니다.
2. 편리함 매번 같은 설명을 반복하지 않아도 됩니다.
3. 초점 유지 Agent가 프로젝트의 핵심 목표를 잃지 않습니다.
4. 협업 도움 나중에 다른 사람이 프로젝트에 참여할 때도 맥락을 쉽게 파악할 수 있습니다.
실습: copilot-instructions.md 만들어보기
간단한 프로젝트를 위한 instructions 파일을 만들어봅시다.
1단계: 폴더 만들기
프로젝트 폴더 안에 .github라는 이름의 폴더를 만듭니다.
(폴더 이름 앞에 점(.)이 있는 것에 주의하세요!)
2단계: 파일 만들기
.github 폴더 안에 copilot-instructions.md 파일을 만듭니다.
3단계: 내용 작성하기
여러분의 프로젝트에 맞는 가이드를 작성합니다. 예시:
# 나의 첫 프로젝트
이 프로젝트는 바이브 코딩을 배우면서 만드는 연습용 프로젝트입니다.
## 원칙
- 간단하고 이해하기 쉽게
- 기본적인 기능만 포함
- 한 번에 하나씩 만들기
## 코드 스타일
- 명확한 변수 이름 사용
- 주석으로 설명 추가
4단계: Agent에게 확인하기
Agent와 대화를 시작하고, instructions 파일의 내용을 따르는지 확인합니다:
"간단한 계산기를 만들어주세요."
Agent가 여러분이 instructions 파일에 적어둔 원칙(간단하게, 기본 기능만 등)을 따라 작업하는지 확인해보세요.
주의사항
1. 너무 길게 쓰지 마세요 핵심만 간단히 적는 것이 좋습니다. 너무 길면 오히려 혼란스러울 수 있습니다.
2. 필요한 것만 쓰세요 당장 필요하지 않은 세세한 규칙까지 다 쓸 필요는 없습니다.
3. 언제든 수정할 수 있습니다 프로젝트가 진행되면서 instructions 파일도 업데이트할 수 있습니다.
4. 모든 프로젝트에 필수는 아닙니다 간단한 실습이나 일회성 작업에는 굳이 만들지 않아도 됩니다.
언제 사용하면 좋을까요?
copilot-instructions.md는 다음과 같은 경우에 특히 유용합니다:
✅ 며칠에 걸쳐 작업하는 프로젝트 ✅ 일관된 스타일이 중요한 경우 ✅ 특정 규칙이나 제약이 있는 프로젝트 ✅ 여러 파일을 만들어야 하는 큰 프로젝트
❌ 간단한 일회성 실습 ❌ 매우 짧은 코드 작성 ❌ 특별한 규칙이 필요 없는 경우
정리
copilot-instructions.md 파일은:
- 프로젝트 전체의 맥락을 Agent에게 알려주는 가이드 문서
.github폴더 안에 생성- 프로젝트 목적, 스타일, 원칙 등을 간단히 작성
- Agent가 자동으로 읽고 참고하며 작업
- 매번 같은 설명을 반복하지 않아도 됨
이 파일을 잘 활용하면 Agent와의 협업이 훨씬 수월해집니다. 매번 "간단하게", "초보자용으로" 같은 말을 반복하지 않아도 Agent가 알아서 그렇게 작업합니다.
다음 섹션에서는 단계별로 개선 요청하는 방법을 배워보겠습니다.
5. 기술적 배경 (있다면)
"저는 프로그래밍이 처음이라
가능한 한 간단하게 만들어주세요."
혹은
"이전에 비슷한 것을 만들어 본 적 있어요.
조금 복잡해도 괜찮습니다."
여러분의 수준을 알면 Agent가 설명을 조절합니다.
컨텍스트 제공 실전 예시
컨텍스트 부족:
"색상 바꿔줘"
→ Agent는 무엇의 색상을 어떻게 바꿔야 할지 모름
컨텍스트 충분:
"할 일 목록 앱을 만들고 있어요.
완료된 항목의 색상을 회색으로 바꾸고 싶습니다.
지금은 완료해도 색상이 그대로라서 구분이 안 돼요."
→ Agent는 정확히 무엇을 어떻게 해야 할지 이해함
컨텍스트 과다 (피할 것):
"할 일 목록 앱을 만들고 있는데, 어제부터 시작했고,
HTML이라는 걸 처음 봤고, CSS는 색깔 바꾸는 거라고 들었고,
친구가 만들라고 해서 만드는 건데..."
→ 불필요한 정보가 너무 많음. 핵심만 말하세요.
적절한 컨텍스트 균형:
"할 일 목록 앱을 만들고 있습니다.
완료된 항목을 시각적으로 구분하고 싶어요.
회색으로 표시되면 좋겠습니다."
→ 필요한 정보만 간결하게 전달
// 이미지로 교체되어야 함 : 컨텍스트의 적절한 양을 보여주는 그래픽. 왼쪽(너무 적음), 가운데(적절함), 오른쪽(너무 많음)을 저울로 표현 프롬프트: An infographic showing appropriate amount of context using a balance scale. Left shows 'too little context' (scale tilted), middle shows 'balanced context' (scale level), right shows 'too much context' (scale tilted opposite). Simple, clear visual representation
단계별 개선 요청하기
완벽한 프롬프트를 처음부터 작성하려고 하지 마세요. 대신 단계별로 개선하는 전략을 사용하세요.
왜 단계별인가?
- 각 단계를 확인할 수 있음
- 문제가 생기면 어디서 발생했는지 쉽게 파악
- 중간에 방향을 바꿀 수 있음
- 복잡한 요청을 간단하게 나눔
단계별 접근법
1단계: 기본 기능부터
"할 일을 추가하고 목록으로 볼 수 있는
간단한 페이지를 먼저 만들어주세요."
핵심 기능만 먼저 만듭니다.
2단계: 확인 후 추가
"잘 작동하네요! 이제 각 할 일을
완료 표시할 수 있게 해주세요."
기본이 작동하면 기능을 추가합니다.
3단계: 계속 확장
"완료 표시도 잘 돼요.
이제 할 일을 삭제할 수 있는 기능도 추가해주세요."
한 번에 하나씩 추가하며 확인합니다.
4단계: 다듬기
"기능은 다 좋은데,
완료된 항목을 다른 색으로 표시해주시면 좋겠어요."
기능이 완성되면 외관을 다듬습니다.
잘못된 접근: 한 번에 모든 것 요청
"할 일 목록 앱 만들어주세요.
추가, 삭제, 완료 표시 기능이 있고,
완료된 건 회색으로 표시하고,
카테고리별로 분류할 수 있고,
우선순위도 설정할 수 있고,
마감일도 넣을 수 있고..."
이렇게 하면:
- 한 번에 너무 많은 것을 만들어서 오류 가능성 높음
- 어디서 문제가 생겼는지 파악하기 어려움
- 중간에 방향 수정이 어려움
올바른 접근: 점진적 확장
1단계: "할 일을 추가하고 보는 기본 페이지"
↓ 확인
2단계: "완료 표시 기능 추가"
↓ 확인
3단계: "삭제 기능 추가"
↓ 확인
4단계: "완료 항목 색상 변경"
↓ 확인
5단계: (필요하면) "카테고리 기능 추가"
각 단계마다 작동을 확인하고 다음으로 넘어갑니다.
단계 나누는 팁
우선순위 정하기:
- 꼭 필요한 것: 먼저
- 있으면 좋은 것: 나중에
- 없어도 되는 것: 생략
의존 관계 파악:
- A가 있어야 B를 만들 수 있다면, A를 먼저
- 독립적인 기능들은 어느 순서든 가능
복잡도 고려:
- 간단한 것부터 시작
- 복잡한 것은 나중에
실전 예시: 가계부 앱 만들기
한 번에 요청 (비추천):
"가계부 앱을 만들어주세요.
수입과 지출을 기록하고,
카테고리별로 분류하고,
월별 통계를 보여주고,
그래프도 있었으면 좋겠고..."
단계별 요청 (추천):
1단계:
"간단한 가계부를 만들고 싶습니다.
먼저 지출 금액과 항목명을 입력하고
목록으로 보는 기능부터 만들어주세요."
[결과 확인]
2단계:
"잘 됩니다! 이제 총 지출 금액을
화면 상단에 표시해주세요."
[결과 확인]
3단계:
"좋아요. 이제 각 항목을 삭제할 수 있는
기능도 추가해주실 수 있나요?"
[결과 확인]
4단계:
"거의 완성인 것 같아요.
카테고리를 선택할 수 있으면 어떨까요?
식비, 교통비, 기타 정도면 충분합니다."
이렇게 단계별로 진행하면:
- 각 단계마다 성취감을 느낌
- 문제가 생겨도 쉽게 해결
- 중간에 "이 기능은 필요 없겠다" 싶으면 생략 가능
- 전체적인 흐름을 제어할 수 있음
정리: 효과적인 프롬프트 엔지니어링
- 명확한 목표: 무엇을 만들지 분명히 말하기
- 충분한 컨텍스트: 상황과 맥락 제공하기
- 단계별 접근: 한 번에 하나씩, 확인하며 진행하기
이 세 가지만 기억하면, 여러분의 프롬프트는 훨씬 효과적이 될 것입니다. 완벽한 프롬프트는 없습니다. 중요한 것은 Agent와 대화하며 점점 개선해 나가는 것입니다.
반복적 개선 전략
바이브 코딩의 핵심은 한 번에 완벽한 결과를 얻는 것이 아니라, 계속 개선해 나가는 것입니다. 마치 조각가가 돌을 조금씩 깎아내며 작품을 만들듯이, 여러분도 Agent와 대화하며 점점 원하는 결과에 가까워집니다.
첫 결과를 완성본으로 보지 않기
Agent가 처음 제시한 결과는 시작점입니다. 완성품이 아닙니다. 이것을 이해하면 훨씬 편해집니다.
잘못된 기대: "한 번 요청하면 완벽한 결과가 나와야 해" → 이렇게 생각하면 실망하기 쉽습니다
올바른 기대: "일단 기본을 만들고, 대화하며 다듬어 나가자" → 이렇게 생각하면 과정을 즐길 수 있습니다
첫 결과를 확인하는 체크리스트
Agent가 결과를 제시하면 다음을 확인하세요:
-
기본 기능이 작동하나요?
- 예: 할 일 추가가 되나요?
- 목록이 표시되나요?
-
빠진 기능은 없나요?
- 요청한 것 중 구현되지 않은 것은?
- 예상과 다른 부분은?
-
개선하고 싶은 점은?
- 크기, 색상, 배치 등
- 사용하기 불편한 점
-
추가하고 싶은 기능은?
- 처음엔 생각 못 했지만 필요한 것
- 있으면 더 좋을 것 같은 기능
완벽을 기대하지 마세요. 대신 개선할 점을 찾으세요.
실전 예시
Agent가 할 일 목록을 만들어 줬습니다. 확인해보니:
✅ 좋은 점:
- 할 일 추가가 잘 됨
- 목록이 제대로 표시됨
❓ 개선 필요:
- 글자가 너무 작음
- 완료 표시가 없음
- 삭제 기능이 없음
이제 무엇을 요청해야 할지 명확합니다!
효과적인 피드백 제공 방법
Agent에게 피드백을 줄 때는 구체적이고 건설적으로 말하세요. "이거 별로야"보다 "이 부분을 이렇게 바꾸면 좋겠어요"가 훨씬 효과적입니다.
좋은 피드백의 특징
1. 구체적이어야 합니다
❌ 나쁜 피드백: "이상해요" ✅ 좋은 피드백: "버튼이 화면 밖으로 나가 보여요"
❌ 나쁜 피드백: "마음에 안 들어요" ✅ 좋은 피드백: "글자 크기가 너무 작아서 읽기 어려워요"
2. 무엇을 어떻게 바꿀지 말합니다
❌ 모호함: "더 예쁘게 만들어줘" ✅ 명확함: "버튼 색을 파란색으로 바꿔주세요"
❌ 모호함: "잘 안 돼" ✅ 명확함: "삭제 버튼을 눌러도 항목이 사라지지 않아요"
3. 긍정적인 부분도 언급합니다
❌ 부정만: "이것도 안 되고 저것도 안 돼" ✅ 균형잡힌: "추가 기능은 잘 작동해요. 그런데 삭제가 안 되네요"
긍정적인 부분을 말하면 무엇이 유지되어야 하는지 Agent가 알 수 있습니다.
4. 한 번에 하나씩 피드백합니다
❌ 한꺼번에: "색상 바꾸고, 크기 조정하고, 기능 추가하고..." ✅ 하나씩: "먼저 글자 크기를 좀 키워주시겠어요?"
하나씩 수정하고 확인하는 것이 더 안전합니다.
피드백 템플릿
다음 형식을 활용하면 효과적입니다:
[잘된 점] + [개선 필요한 점] + [구체적 요청]
예시:
"할 일 추가 기능은 잘 작동해요. (잘된 점)
그런데 입력창이 좀 작은 것 같아요. (개선 필요한 점)
입력창을 더 크게 만들어주시겠어요?" (구체적 요청)
피드백 수준별 예시
레벨 1: 작동하지 않는 것 고치기
"추가 버튼을 눌렀는데 아무 반응이 없어요.
확인해주시겠어요?"
레벨 2: 기능 개선하기
"삭제는 되는데, 확인 없이 바로 삭제돼요.
'정말 삭제하시겠습니까?' 확인 메시지를
추가해주실 수 있나요?"
레벨 3: 외관 다듬기
"기능은 다 좋은데,
완료된 항목을 회색으로 표시하면
구분이 더 쉬울 것 같아요."
레벨 4: 사용성 향상
"전체적으로 잘 되는데,
할 일을 입력하고 엔터를 눌러도 추가되면
더 편할 것 같아요. 지금은 버튼을
클릭해야 해서 번거롭거든요."
// 이미지로 교체되어야 함 : 반복적 개선 과정을 나선형으로 표현한 다이어그램. 시작→만들기→확인→피드백→개선→확인→피드백... 점점 위로 올라가는 나선형 프롬프트: A spiral diagram showing iterative improvement process. Starting from bottom, spiraling upward through stages: Create → Check → Feedback → Improve → Check → Feedback, getting progressively better. Clean, upward progress visualization
점진적으로 완성도 높이기
개선은 한 번에 끝나지 않습니다. 여러 번의 반복을 통해 점점 나아집니다. 이 과정을 즐기세요.
반복 개선의 단계
1단계: 핵심 기능 구현
첫 요청:
"할 일을 추가하고 목록으로 볼 수 있는 페이지를 만들어주세요."
결과 확인 → 기본은 작동함
2단계: 필수 기능 추가
두 번째 요청:
"잘 되네요! 이제 각 할 일을 완료 표시할 수 있게 해주세요."
결과 확인 → 체크박스 생김
3단계: 편의 기능 추가
세 번째 요청:
"좋아요. 할 일을 삭제하는 기능도 추가해주세요."
결과 확인 → 삭제 버튼 생김
4단계: 시각적 개선
네 번째 요청:
"기능은 완벽해요. 완료된 항목을 회색으로 표시해주시면 좋겠어요."
결과 확인 → 색상 변경됨
5단계: 세부 조정
다섯 번째 요청:
"거의 완성인데, 글자 크기를 조금 키워주시겠어요?"
결과 확인 → 최종 완성!
각 단계의 특징
- 1-3단계: 기능에 집중
- 4-5단계: 외관과 편의성에 집중
- 각 단계: 확인하고 다음으로
언제 멈춰야 할까?
다음 질문에 "네"라고 답할 수 있으면 충분합니다:
- 필요한 기능이 다 작동하나요?
- 사용하는 데 불편함이 없나요?
- 더 개선하려면 많은 시간이 걸릴 것 같나요?
완벽을 추구하지 마세요. "충분히 좋음"이 목표입니다.
너무 많이 개선하는 것을 피하기
개선은 좋지만, 끝없이 할 수는 없습니다. 다음 신호가 보이면 멈추세요:
⚠️ "이 정도면 충분한데 계속 손보고 있어" ⚠️ "작은 디테일에 너무 많은 시간 쓰는 것 같아" ⚠️ "실제로 사용해보지도 않고 계속 수정만 하고 있어"
이럴 때는 잠시 멈추고 실제로 사용해보세요. 써보면서 진짜 필요한 개선점이 보입니다.
실전 예시: 타이머 앱 개선 과정
1차 (핵심 기능):
여러분: "시간을 설정하고 카운트다운하는 타이머 만들어주세요."
Agent: [기본 타이머 생성]
여러분: 테스트 → 작동 확인
2차 (기능 개선):
여러분: "잘 돼요. 그런데 시간이 끝나면 알려주는 게 없네요.
메시지를 띄워주시겠어요?"
Agent: [완료 메시지 추가]
여러분: 테스트 → 메시지 확인
3차 (편의성):
여러분: "좋아요. 그런데 매번 시간을 입력하기 번거로워요.
5분, 10분, 25분 버튼을 만들어주시면 어떨까요?"
Agent: [빠른 선택 버튼 추가]
여러분: 테스트 → 편리해짐
4차 (시각적 개선):
여러분: "완벽한데, 남은 시간 숫자를 더 크게 보여주시면 좋겠어요."
Agent: [글자 크기 조정]
여러분: 테스트 → 보기 좋아짐
5차 (최종 다듬기):
여러분: "거의 완성이에요. 타이머 시작하면 버튼 색이 바뀌면
지금 작동 중인지 알기 쉬울 것 같아요."
Agent: [버튼 상태 표시 추가]
여러분: 테스트 → 완벽!
총 5번의 반복으로 만족스러운 타이머가 완성되었습니다. 각 단계마다:
- 한 가지씩만 개선
- 작동 확인
- 다음 개선점 파악
개선 과정에서 방향 바꾸기
때로는 개선하다가 생각이 바뀔 수 있습니다. 괜찮습니다!
예시:
여러분: "카테고리 기능을 추가해주세요."
Agent: [카테고리 기능 추가]
여러분: "음... 써보니까 너무 복잡한 것 같아요.
이 기능은 빼주시겠어요?"
Agent: [카테고리 기능 제거]
시도해보고 마음에 안 들면 되돌리면 됩니다. 이것이 반복적 개선의 유연성입니다.
정리: 반복적 개선의 핵심
- 첫 결과는 시작점: 완성품이 아닙니다
- 구체적인 피드백: "이 부분을 이렇게" 명확히 말하기
- 한 번에 하나씩: 여러 개선을 동시에 하지 않기
- 확인하며 진행: 각 단계마다 테스트
- 적당한 때 멈추기: 완벽보다는 충분함을 목표로
반복적 개선은 처음엔 번거로워 보일 수 있지만, 실제로는 가장 안전하고 효과적인 방법입니다. 각 단계를 확인하며 나가므로, 큰 문제가 생기지 않고 원하는 결과를 얻을 수 있습니다.
GitHub Copilot Agent 모드 실전 가이드
지금까지 Agent와의 대화에 대해 배웠습니다. 하지만 "Agent 모드가 정확히 무엇인지", "어떻게 활성화하는지", "일반 Chat과 무엇이 다른지" 궁금하실 것입니다. 이제 구체적으로 알아보겠습니다.
Agent 모드란 정확히 무엇인가
GitHub Copilot에는 여러 가지 작동 방식이 있습니다. 그 중에서도 Agent 모드는 가장 강력한 협업 도구입니다.
일반 Chat vs Agent 모드
일반 Chat 모드:
- 코드 한 부분에 대한 질문과 답변
- 현재 파일 중심의 제안
- 단발성 도움
예: "이 함수를 설명해줘", "오류가 뭐야?"
Agent 모드:
- 프로젝트 전체를 이해하고 작업
- 여러 파일에 걸친 복잡한 작업 처리
- 단계별 계획을 세우고 실행
- 지속적인 대화와 협업
예: "할 일 관리 앱을 만들어줘. 필요한 파일들을 만들고 연결해줘"
Agent 모드가 할 수 있는 것:
- 새 파일 여러 개 동시 생성
- 기존 파일 여러 개 동시 수정
- 프로젝트 구조 이해하고 적절한 위치에 코드 배치
- 파일 간 연결 자동 처리
- 복잡한 작업을 단계별로 나누어 진행
Agent 모드가 할 수 없는 것:
- 인터넷에서 자료 검색 (프로젝트 내 파일만 접근)
- 외부 서비스 실행
- 사람처럼 창의적 판단 (여러분의 명확한 지시 필요)
Agent 모드 활성화 및 기본 사용법
1단계: Chat 창 열기
VS Code에서 GitHub Copilot Chat 창을 여는 방법:
- 단축키:
Ctrl+Shift+I(Windows/Linux) 또는Cmd+Shift+I(Mac) - 또는: 왼쪽 사이드바에서 GitHub Copilot 아이콘 클릭
Chat 창이 열리면 대화를 입력할 수 있는 텍스트 박스가 보입니다.
2단계: @workspace 멘션 사용하기
Agent 모드의 핵심은 @workspace 멘션입니다. 이것을 사용하면:
- Agent가 프로젝트 전체를 이해합니다
- 여러 파일에 걸친 작업이 가능해집니다
- 더 정확하고 일관된 결과를 얻습니다
사용 방법:
대화 시작 시 @workspace를 입력합니다:
@workspace 할 일 관리 앱을 만들어주세요.
@workspace를 사용하지 않으면:
- 현재 열린 파일만 참조
- 단일 파일 작업만 가능
- 프로젝트 구조 파악 못 함
@workspace를 사용하면:
- 프로젝트 전체 파악
- 필요한 파일 자동 생성
- 파일 간 연결 처리
3단계: 프로젝트 컨텍스트 이해시키기
Agent에게 현재 상황을 알려주세요:
새 프로젝트 시작할 때:
@workspace
새로운 프로젝트를 시작합니다.
[무엇을 만들고 싶은지]
필요한 파일 구조를 제안해주세요.
기존 프로젝트에 기능 추가할 때:
@workspace
현재 [무엇]을 만들고 있습니다.
[어떤 기능]을 추가하고 싶습니다.
어떻게 하면 좋을까요?
// 이미지로 교체되어야 함 : VS Code에서 Chat 창이 열려있고 @workspace를 입력하는 화면 스크린샷 프롬프트: A VS Code interface screenshot showing the GitHub Copilot Chat panel open on the right side, with '@workspace' being typed in the input box at the bottom, modern IDE interface, clean and professional
실습: Agent와 함께 할 일 관리 앱 만들기 (처음부터 끝까지)
이제 실제로 Agent 모드를 사용하여 처음부터 끝까지 앱을 만들어봅시다. 코드를 직접 작성하지 않고, Agent와의 대화만으로 완성하는 것이 목표입니다.
실습 목표:
- Agent 모드의 전체 워크플로우 경험하기
- @workspace 멘션 활용법 익히기
- 여러 파일이 생성되고 연결되는 과정 이해하기
- 반복적 개선 과정 경험하기
준비물:
- VS Code 설치
- GitHub Copilot 확장 설치 및 활성화
- 빈 폴더 하나 (예:
todo-app)
실습 시간: 약 30-40분
단계 1: 프로젝트 폴더 준비 및 Agent 대화 시작
1-1. 폴더 생성
- 바탕화면이나 원하는 위치에
todo-app폴더 생성 - VS Code에서 이 폴더 열기 (File > Open Folder)
1-2. Chat 창 열기
Ctrl+Shift+I(또는Cmd+Shift+I) 누르기- 오른쪽에 Chat 창이 나타나는지 확인
1-3. Agent와 대화 시작
Chat 창에 다음과 같이 입력하세요:
@workspace
간단한 할 일 관리 앱을 만들고 싶습니다.
필요한 기능:
- 할 일 추가하기
- 할 일 목록 보기
- 완료 표시하기
- 할 일 삭제하기
Python으로 만들어주세요.
먼저 어떤 파일 구조가 필요한지 제안해주세요.
Agent의 예상 응답:
Agent는 보통 이렇게 답합니다:
할 일 관리 앱을 만들어드리겠습니다.
다음과 같은 구조를 제안합니다:
1. todo.py - 할 일 데이터를 관리하는 부분
2. storage.py - JSON 파일로 저장/불러오기
3. main.py - 사용자와 상호작용하는 메인 프로그램
각 파일을 만들어드릴까요?
여러분의 답변:
네, 좋습니다. 파일들을 만들어주세요.
Agent가 하는 일:
- 세 개의 Python 파일 생성
- 각 파일에 기본 코드 작성
- 파일 간 연결 처리
여러분이 할 일: 생성된 파일들을 열어보고 확인하세요. 코드를 완전히 이해할 필요는 없습니다. 파일이 만들어졌고, 각 파일이 어떤 역할을 하는지만 알면 됩니다.
단계 2: 생성된 파일 확인하기
2-1. 파일 탐색기 확인
VS Code 왼쪽 파일 탐색기를 보면 다음 파일들이 생성되어 있을 것입니다:
todo.pystorage.pymain.py
2-2. 각 파일의 역할 이해
Agent에게 물어보세요:
각 파일이 정확히 어떤 역할을 하는지
간단히 설명해주세요.
Agent가 설명해줍니다. 예:
todo.py: 할 일의 정보를 담는 부분storage.py: 할 일을 파일로 저장하고 나중에 다시 읽어오는 부분main.py: 사용자가 실제로 실행하는 프로그램
2-3. 실행해보기
터미널에서 프로그램을 실행해봅시다:
python main.py
(만약 Python이 설치되어 있지 않다면, Agent에게 "Python 없이 실행할 수 있는 방법이 있나요?"라고 물어보세요)
프로그램이 실행되면 메뉴가 나타납니다:
=== 할 일 관리 ===
1. 할 일 추가
2. 목록 보기
3. 완료 표시
4. 삭제
5. 종료
선택:
2-4. 기본 기능 테스트
각 메뉴를 하나씩 눌러보며 작동하는지 확인하세요:
- 1번: 할 일 추가 → "책 읽기" 입력
- 2번: 목록 보기 → 방금 추가한 할 일이 보이는지 확인
- 3번: 완료 표시 → 체크 표시가 되는지 확인
- 4번: 삭제 → 할 일이 지워지는지 확인
작동하나요? 축하합니다! 여러분은 Agent와 함께 첫 번째 앱을 만들었습니다.
단계 3: 기능 개선 요청하기
기본 기능은 잘 작동합니다. 이제 개선해봅시다.
3-1. 우선순위 기능 추가
Agent에게 요청하세요:
@workspace
잘 작동하네요!
이제 각 할 일에 우선순위를 추가하고 싶습니다.
(높음, 보통, 낮음)
할 일을 추가할 때 우선순위도 입력받고,
목록을 볼 때 우선순위가 표시되면 좋겠습니다.
Agent의 작업:
todo.py파일 수정 (우선순위 필드 추가)main.py파일 수정 (우선순위 입력 및 표시)storage.py파일 수정 (저장 형식 업데이트)
여러분이 할 일: 수정된 파일들을 확인하고, 다시 실행해보세요:
python main.py
할 일 추가 시 우선순위를 묻는지, 목록에 우선순위가 표시되는지 확인하세요.
3-2. 정렬 기능 추가
다음 개선을 요청하세요:
좋아요!
이제 목록을 우선순위 순으로 정렬해서
보여주면 더 좋을 것 같아요.
(높음 → 보통 → 낮음 순서)
Agent가 코드를 수정하고, 다시 실행해서 확인하세요.
단계 4: 사용성 개선하기
기능은 완성되었습니다. 이제 사용하기 편하게 만들어봅시다.
4-1. 색상 추가
@workspace
기능은 완벽한데요,
완료된 할 일을 다른 색으로 표시하면
구분이 더 쉬울 것 같아요.
Agent가 터미널 색상 코드를 추가하여 완료된 항목을 회색으로 표시하도록 수정합니다.
4-2. 간편 입력
할 일을 빠르게 추가할 수 있게
프로그램 시작 시 할 일을 바로 입력받으면 어떨까요?
예: python main.py "책 읽기" 높음
Agent가 명령줄 인자를 처리하는 코드를 추가합니다.
단계 5: (선택사항) 웹 앱으로 변환하기
터미널 프로그램이 잘 작동한다면, 웹 브라우저에서 사용할 수 있게 바꿔볼 수 있습니다.
@workspace
이 프로그램을 웹 브라우저에서
실행할 수 있게 바꾸고 싶어요.
Streamlit을 사용해서 만들어주시겠어요?
Agent의 작업:
app.py파일 생성 (Streamlit 웹 앱)- 기존 로직을 웹 인터페이스에 연결
- 버튼, 입력창 등 시각적 요소 추가
실행 방법:
pip install streamlit
streamlit run app.py
브라우저가 자동으로 열리며, 예쁜 웹 인터페이스로 할 일 관리 앱이 실행됩니다!
실습 정리: 무엇을 배웠나요?
이 실습을 통해 여러분은:
✅ Agent 모드 기본 사용법
- @workspace 멘션으로 프로젝트 컨텍스트 활용
- 여러 파일을 동시에 생성하고 수정
✅ 대화형 개발 프로세스
- 명확한 요청 → Agent 작업 → 확인 → 개선 반복
- 한 번에 하나씩 기능 추가하며 발전
✅ Agent의 강점 활용
- 파일 간 연결 자동 처리
- 구조적 설계 제안
- 빠른 프로토타입 제작
✅ 바이브 코딩의 실현
- 코드를 직접 작성하지 않음
- 생각을 명확히 표현하는 것에 집중
- 결과를 확인하고 개선하는 역할
여러분이 만든 것:
- 완전히 작동하는 할 일 관리 앱
- 우선순위, 정렬, 색상 표시 기능
- (선택) 웹 브라우저에서 실행되는 버전
걸린 시간:
- 약 30-40분
- 전통적 방식이라면 수 시간 또는 며칠
사용한 도구:
- 여러분의 사고력 (문제 정의, 요구사항 정리)
- GitHub Copilot Agent (구현, 연결, 제안)
- 반복적 대화 (점진적 개선)
Agent 모드 활용 팁
실습을 통해 기본을 익혔다면, 이제 더 효과적으로 사용하는 팁을 알아봅시다.
팁 1: 명확한 의도 전달
❌ 모호함:
@workspace 뭔가 만들어줘
✅ 명확함:
@workspace
사용자가 두 숫자를 입력하면
사칙연산을 수행하는 계산기를 만들어주세요.
팁 2: 단계별 확인
한 번에 모든 것을 요청하지 말고:
- 기본 구조 먼저
- 핵심 기능 추가
- 부가 기능 추가
- 외관 개선
각 단계마다 실행하고 테스트하세요.
팁 3: 구체적 예시 제공
@workspace
가계부를 만들고 싶어요.
예시 데이터:
- 2024-01-15, 점심, 8000원
- 2024-01-15, 교통비, 2500원
이런 형식으로 입력하고 저장하고 싶습니다.
예시를 보여주면 Agent가 정확히 이해합니다.
팁 4: 문제 상황 공유
뭔가 작동하지 않으면:
@workspace
삭제 버튼을 누르는데 아무 일도 안 일어나요.
터미널에 이런 메시지가 나옵니다:
[오류 메시지 붙여넣기]
어떻게 고칠 수 있을까요?
오류 메시지를 그대로 복사해서 보여주세요.
팁 5: 참고 파일 명시
@workspace
todo.py 파일과 비슷한 방식으로
note.py 파일을 만들어주세요.
기존 파일을 참고하라고 하면 일관된 스타일로 만듭니다.
흔한 문제와 해결법
문제 1: Agent가 응답하지 않음
원인:
- 인터넷 연결 끊김
- Copilot 세션 만료
- 너무 복잡한 요청
해결:
- 인터넷 연결 확인
- VS Code 재시작
- 요청을 더 작은 단위로 나누기
문제 2: 생성된 코드가 작동하지 않음
원인:
- 요청이 불명확했음
- 필요한 라이브러리 미설치
- 파일 간 연결 문제
해결:
@workspace
실행하니까 이런 오류가 나요:
[오류 메시지]
어떻게 해결하나요?
Agent에게 오류를 보여주고 도움 요청하세요.
문제 3: 원하는 것과 다르게 만들어짐
원인:
- 요청이 모호했음
- 예시 부족
해결:
@workspace
아, 제가 원한 건 [구체적 설명]이었어요.
[예시]처럼 작동하면 좋겠어요.
더 구체적으로 설명하고 예시를 제공하세요.
문제 4: @workspace가 작동하지 않음
원인:
- 폴더가 열려있지 않음
- Copilot 버전이 오래됨
해결:
- VS Code에서 폴더 열기 (File > Open Folder)
- GitHub Copilot 확장 업데이트
다음 단계
이제 Agent 모드를 사용할 줄 알게 되었습니다. 다음은:
연습 과제:
- 간단한 메모장 앱 만들기
- 주사위 게임 만들기
- 간단한 퀴즈 프로그램 만들기
각 과제를 Agent와 함께 처음부터 끝까지 완성해보세요.
학습 포인트:
- @workspace 멘션 습관화
- 명확한 요청 연습
- 단계별 개선 경험
- 문제 해결 과정 익히기
다음 주차부터는 이 Agent 모드를 활용하여 더 복잡한 실습을 진행합니다. 지금 충분히 연습해두세요!
AI의 강점과 한계 이해하기
GitHub Copilot Agent는 강력한 도구지만, 만능은 아닙니다. 무엇을 잘하고 무엇을 어려워하는지 알면, 더 효과적으로 협업할 수 있습니다. 마치 팀원의 장단점을 알고 일을 분담하는 것처럼요.
GitHub Copilot이 잘하는 것
Agent가 특히 잘하는 영역을 알면, 이런 작업은 자신 있게 맡길 수 있습니다.
1. 반복적이고 패턴화된 작업
Agent는 패턴을 따르는 작업을 빠르고 정확하게 처리합니다.
잘하는 예:
- "이 목록의 각 항목에 삭제 버튼을 추가해주세요"
- "10개의 질문을 같은 형식으로 만들어주세요"
- "이 데이터를 표 형식으로 정리해주세요"
왜 잘하나: AI는 패턴을 인식하고 반복하는 데 탁월합니다.
2. 일반적이고 보편적인 기능
많은 사람들이 자주 만드는 것들은 Agent가 잘 알고 있습니다.
잘하는 예:
- "할 일 목록 앱"
- "간단한 계산기"
- "타이머"
- "메모장"
왜 잘하나: 학습 데이터에 비슷한 예시가 많기 때문입니다.
3. 표준적인 구조와 형식
정해진 규칙이나 관례가 있는 것들을 잘 만듭니다.
잘하는 예:
- "웹 페이지 기본 구조 만들어주세요"
- "표준 양식 만들어주세요"
- "일반적인 버튼 스타일로 해주세요"
왜 잘하나: 표준을 따르는 것은 AI가 학습한 내용과 일치합니다.
4. 설명과 문서화
코드나 기능을 설명하는 것도 잘합니다.
잘하는 예:
- "이 기능이 어떻게 작동하는지 설명해주세요"
- "이 부분을 왜 이렇게 만들었나요?"
- "다른 방법도 있나요?"
왜 잘하나: 패턴과 개념을 이해하고 설명하는 능력이 있습니다.
5. 빠른 프로토타입
아이디어를 빠르게 형태로 만드는 것을 잘합니다.
잘하는 예:
- "간단한 버전으로 먼저 만들어보세요"
- "기본 기능만 있는 샘플을 만들어주세요"
왜 잘하나: 핵심 기능에 집중하는 것을 잘 이해합니다.
GitHub Copilot이 어려워하는 것
Agent가 잘 못하는 것을 알면, 이런 부분은 여러분이 판단하거나 더 명확히 지시해야 합니다.
1. 창의적이고 독창적인 아이디어
Agent는 기존 패턴을 따르지, 완전히 새로운 것을 만들지 못합니다.
어려운 예:
- "지금까지 없었던 완전히 새로운 형태의 앱"
- "독특하고 창의적인 디자인"
대안: 여러분이 창의적인 아이디어를 제시하고, Agent는 그것을 구현하게 하세요.
2. 맥락과 의도 파악
명시적으로 말하지 않은 것은 추론하기 어렵습니다.
어려운 예:
- 모호한 요청: "뭔가 멋진 걸로"
- 암묵적 기대: "당연히 이렇게 되어야 하는데..."
대안: 원하는 것을 구체적으로 말하세요.
3. 복잡한 비즈니스 로직
여러분의 특정 상황이나 규칙은 Agent가 모릅니다.
어려운 예:
- "우리 회사의 급여 계산 규칙대로 만들어주세요"
- "우리 동네 맛집 정보를 넣어주세요"
대안: 구체적인 규칙과 데이터를 제공하세요.
4. 사용자 경험(UX) 판단
무엇이 사용하기 편한지는 주관적입니다.
어려운 예:
- "사용자가 가장 편하게 느낄 레이아웃"
- "직관적인 인터페이스"
대안: 여러분이 직접 사용해보고 피드백하세요.
5. 전체 맥락 파악
프로젝트의 큰 그림이나 장기적 목표는 이해하기 어렵습니다.
어려운 예:
- "나중에 확장할 것을 고려해서..."
- "전체 프로젝트와 어울리게..."
대안: 현재 단계에 필요한 것만 명확히 요청하세요.
// 이미지로 교체되어야 함 : AI의 강점과 한계를 벤 다이어그램으로 표현. 왼쪽 원은 'AI가 잘하는 것'(반복, 패턴, 표준), 오른쪽 원은 '사람이 잘하는 것'(창의성, 판단, 맥락), 중간 겹치는 부분은 '함께 하면 최고' 프롬프트: A Venn diagram showing AI strengths and human strengths. Left circle labeled 'AI excels at' (patterns, repetition, standards), right circle 'Humans excel at' (creativity, judgment, context), overlapping middle section 'Best together' (collaboration). Clean, professional infographic
사람과 AI의 역할 분담
효과적인 협업의 핵심은 적절한 역할 분담입니다. 각자 잘하는 것을 하면 됩니다.
여러분(사람)이 할 일
1. 아이디어와 목표 정하기 "무엇을 만들지" 결정하는 것은 여러분의 몫입니다.
- 어떤 문제를 해결할까?
- 누구를 위한 것인가?
- 어떤 가치를 제공할까?
2. 판단하고 평가하기 Agent의 결과를 보고 판단하세요.
- 이게 좋은가 나쁜가?
- 사용하기 편한가?
- 우리 목적에 맞는가?
3. 우선순위 정하기 무엇이 더 중요한지 결정하세요.
- 이 기능을 먼저 만들까, 저 기능을 먼저 만들까?
- 이 정도면 충분한가, 더 개선해야 하나?
4. 창의적인 요소 제공하기 독창적인 아이디어는 여러분에게서 나옵니다.
- 특별한 기능
- 독특한 디자인
- 새로운 접근법
5. 맥락과 제약 조건 제공하기 Agent가 모르는 배경 정보를 알려주세요.
- 누가 쓸 것인가
- 어디서 쓸 것인가
- 어떤 제약이 있는가
Agent(AI)가 할 일
1. 구현하기 여러분의 아이디어를 실제로 만듭니다.
- 코드 작성
- 기능 구현
- 구조 생성
2. 제안하기 일반적인 패턴과 방법을 제안합니다.
- "이런 기능도 필요하지 않을까요?"
- "보통 이렇게 만듭니다"
3. 반복 작업 처리하기 비슷한 것을 여러 번 만드는 것을 대신합니다.
- 10개의 버튼 만들기
- 같은 형식으로 여러 항목 만들기
4. 설명하기 만든 것이 어떻게 작동하는지 설명합니다.
- "이 기능은 이렇게 작동합니다"
- "이 부분은 이런 이유로 필요합니다"
5. 수정하기 피드백에 따라 빠르게 수정합니다.
- "색상을 파란색으로 바꿔주세요" → 즉시 수정
- "크기를 키워주세요" → 바로 조정
이상적인 협업 흐름
1. 여러분: "이런 걸 만들고 싶어요" (아이디어)
↓
2. Agent: "이렇게 만들어 볼까요?" (제안)
↓
3. 여러분: "네, 좋아요" (판단)
↓
4. Agent: [구현]
↓
5. 여러분: "이 부분은 이렇게 바꿔주세요" (피드백)
↓
6. Agent: [수정]
↓
7. 여러분: "완벽해요!" (최종 판단)
실전 예시: 날씨 앱 만들기
여러분의 역할:
- 아이디어: "출근할 때 비 오는지 확인하려고 날씨 앱이 필요해"
- 판단: "지금 날씨만 보여주면 돼, 일주일 예보는 필요 없어"
- 우선순위: "먼저 기본 기능만, 디자인은 나중에"
- 평가: "사용해보니 글자가 작네, 키워야겠어"
Agent의 역할:
- 구현: 현재 날씨를 가져와서 표시하는 페이지 생성
- 제안: "위치 기반으로 날씨를 가져올까요?"
- 반복작업: 여러 날씨 정보 항목을 같은 형식으로 표시
- 수정: 글자 크기 조정, 색상 변경 등
함께 만드는 과정: 여러분이 "무엇을", Agent가 "어떻게"를 담당하며, 대화를 통해 점점 완성해 갑니다.
정리: 효과적인 역할 분담
| 영역 | 여러분 | Agent |
|---|---|---|
| 아이디어 | 창출 | 구체화 |
| 판단 | 결정 | 제안 |
| 구현 | 지시 | 실행 |
| 평가 | 테스트 및 피드백 | 수정 |
| 창의성 | 독창적 아이디어 | 표준 패턴 |
이렇게 역할을 나누면, 각자 강점을 살려 더 나은 결과를 만들 수 있습니다. 여러분은 생각하고 판단하고, Agent는 만들고 수정합니다. 완벽한 팀워크입니다!
실습: GitHub Copilot Agent와 협업하기
이제 배운 내용을 실제로 적용해볼 시간입니다. 세 가지 실습을 통해 Agent와의 효과적인 협업 방법을 체득하겠습니다.
실습 1: 대화로 간단한 앱 만들기
목표: Agent와 자연스럽게 대화하며 간단한 메모 앱을 만들어봅시다.
실습 단계
1단계: 대화 시작하기
GitHub Copilot Agent와 대화를 시작하세요. 명확하지만 자연스럽게 요청합니다.
여러분: "간단한 메모 앱을 만들고 싶어요.
텍스트를 입력하고 저장할 수 있으면 돼요.
도와주실 수 있나요?"
2단계: Agent의 응답 기다리기
Agent가 질문하거나 제안할 것입니다. 예를 들어:
Agent: "웹 페이지로 만들어드릴까요?
메모를 여러 개 저장하시겠어요,
아니면 하나의 메모만 편집하시겠어요?"
3단계: 구체화하기
Agent의 질문에 답하며 점점 구체화합니다.
여러분: "웹 페이지로 만들어주세요.
여러 개의 메모를 저장할 수 있으면 좋겠어요."
4단계: 첫 결과 확인하기
Agent가 만든 것을 실행해보세요. 다음을 확인합니다:
- 메모를 입력할 수 있나요?
- 저장이 되나요?
- 저장한 메모 목록이 보이나요?
5단계: 피드백하기
잘 작동하는 부분과 개선이 필요한 부분을 말합니다.
여러분: "메모 추가는 잘 되네요!
그런데 각 메모를 클릭하면
내용을 볼 수 있으면 좋겠어요."
6단계: 반복적으로 개선하기
Agent가 수정한 것을 다시 확인하고, 필요하면 추가 요청합니다.
여러분: "좋아졌어요. 이제 메모를 삭제하는
기능도 추가해주시겠어요?"
7단계: 완성 확인하기
필요한 기능이 다 갖춰지면 마무리합니다.
여러분: "완벽해요! 잘 작동하네요. 감사합니다."
실습 체크포인트
✅ 자연스럽게 대화했나요? ✅ 명확하게 요청했나요? ✅ 각 단계를 확인했나요? ✅ 구체적인 피드백을 줬나요?
실습 2: 수정 요청으로 개선하기
목표: 첫 결과를 반복적으로 개선하는 연습을 합니다.
실습 시나리오: 간단한 카운터 앱을 만들고 개선하기
초기 요청
"숫자를 증가시키고 감소시킬 수 있는
간단한 카운터를 만들어주세요."
Agent가 기본 카운터를 만들 것입니다.
개선 1: 기능 추가
첫 결과를 보고 개선점을 찾습니다.
여러분: "잘 작동해요! 그런데 0으로
리셋하는 버튼도 있으면 좋겠어요."
Agent가 리셋 버튼을 추가합니다. 확인하세요.
개선 2: 시각적 조정
여러분: "좋아요. 그런데 숫자가 좀 작은 것 같아요.
더 크게 보여주시겠어요?"
Agent가 글자 크기를 키웁니다. 확인하세요.
개선 3: 제약 조건 추가
여러분: "거의 완벽한데, 음수로는
내려가지 않게 해주실 수 있나요?"
Agent가 0 이하로 내려가지 않게 만듭니다. 확인하세요.
개선 4: 추가 기능
여러분: "마지막으로 10씩 증가하는 버튼도
추가해주시면 좋겠어요."
Agent가 +10 버튼을 추가합니다. 최종 확인하세요.
실습 포인트
각 개선 요청에서:
- 한 번에 하나씩 요청했습니다
- 구체적으로 무엇을 바꿀지 말했습니다
- 확인하고 다음으로 넘어갔습니다
- 긍정적인 피드백을 포함했습니다
이 과정을 통해 기본 카운터가 점점 발전합니다.
추가 연습
시간이 있다면 다음 개선도 시도해보세요:
- 색상 변경 (숫자가 10 이상이면 파란색으로)
- 버튼 배치 조정
- 최댓값 설정 (100까지만 증가)
실습 3: 복잡한 프로젝트 함께 진행하기
목표: 여러 단계가 필요한 프로젝트를 Agent와 함께 완성합니다.
프로젝트: 간단한 퀴즈 앱
이 프로젝트는 여러 부분으로 나뉘므로, 단계별로 접근합니다.
프로젝트 계획하기 (여러분의 역할)
먼저 무엇이 필요한지 생각합니다:
- 질문과 답 목록
- 질문 보여주기
- 답 선택하기
- 정답 확인하기
- 점수 표시하기
1단계: 기본 구조 만들기
여러분: "간단한 퀴즈 앱을 만들고 싶어요.
먼저 질문 하나와 4개의 선택지를
보여주는 페이지부터 만들어주세요."
Agent가 기본 구조를 만듭니다. 확인하세요.
2단계: 정답 확인 기능 추가
여러분: "잘 나오네요. 이제 사용자가
답을 선택하면 정답인지 알려주는
기능을 추가해주세요."
Agent가 정답 확인을 추가합니다. 테스트해보세요.
3단계: 여러 질문으로 확장
여러분: "좋아요. 이제 질문을 3개로 늘리고,
'다음 문제' 버튼으로 넘어갈 수 있게 해주세요."
Agent가 여러 질문을 처리하도록 만듭니다. 확인하세요.
4단계: 점수 시스템 추가
여러분: "잘 작동해요. 이제 맞힌 문제 수를
세서 화면 상단에 보여주세요."
Agent가 점수를 추가합니다. 테스트하세요.
5단계: 최종 결과 표시
여러분: "거의 완성이에요. 모든 문제를 풀면
'총 3문제 중 X개 맞혔습니다' 같은
결과를 보여주세요."
Agent가 결과 화면을 만듭니다. 확인하세요.
6단계: 다듬기
여러분: "기능은 완벽해요. 정답일 때는
초록색, 오답일 때는 빨간색으로
표시해주시면 어떨까요?"
Agent가 색상을 추가합니다. 최종 확인하세요.
실습 복기
이 실습에서 우리가 한 것:
- 계획: 먼저 무엇이 필요한지 생각
- 분해: 큰 프로젝트를 작은 단계로 나눔
- 단계별 구현: 한 번에 하나씩 만듦
- 확인과 개선: 각 단계마다 테스트
- 점진적 완성: 기능 → 다듬기 순서로
중요한 깨달음
복잡한 프로젝트도:
- 작게 나누면 어렵지 않습니다
- 한 단계씩 확인하며 가면 안전합니다
- Agent와 대화하며 함께 만들어갑니다
추가 도전 과제
시간과 의욕이 있다면 다음도 시도해보세요:
난이도 하:
- 퀴즈를 다시 풀 수 있는 "다시 시작" 버튼 추가
난이도 중:
- 타이머 추가 (문제당 10초 제한)
- 힌트 기능 (틀린 답 하나 제거)
난이도 상:
- 카테고리 선택 (일반 상식, 역사, 과학 등)
- 난이도 선택 (쉬움, 보통, 어려움)
각 기능을 추가할 때도 단계별로 접근하세요!
실습 마무리
세 가지 실습을 통해 여러분은:
- Agent와 자연스럽게 대화하는 법을 익혔습니다
- 반복적으로 개선하는 과정을 경험했습니다
- 복잡한 프로젝트를 단계별로 완성했습니다
이제 여러분은 GitHub Copilot Agent를 효과적으로 활용할 수 있습니다. 협업의 핵심은:
- 명확한 소통
- 단계별 접근
- 확인과 개선의 반복
이 원칙만 기억하면, 어떤 프로젝트든 Agent와 함께 해낼 수 있습니다!
실습 결과 요약
이번 주차에서 우리는 GitHub Copilot Agent와 효과적으로 협업하는 방법을 배웠습니다. 이제 여러분은 단순히 코드를 만드는 도구가 아니라, 함께 문제를 해결하는 파트너로 Agent를 활용할 수 있습니다.
핵심 내용 정리
1. GitHub Copilot Agent와의 대화
Agent는 대화형 협업 파트너입니다. 명령을 내리는 것이 아니라 대화를 나눕니다.
효과적인 대화의 핵심:
- 명확하게: 무엇을 원하는지 분명히 말하기
- 구체적으로: 모호한 표현 피하기
- 맥락 제공: 상황 설명하기
- 단계별로: 한 번에 하나씩 요청하기
기억하세요: Agent와의 대화는 연습할수록 자연스러워집니다.
2. 프롬프트 엔지니어링
좋은 프롬프트의 3가지 요소:
명확한 목표
- 무엇을 만들지 분명히
- 결과를 설명 (방법이 아니라)
- 핵심 기능 나열
충분한 컨텍스트
- 현재 상황 설명
- 제약 조건 제시
- 사용 환경 언급
단계별 접근
- 한 번에 모든 것 요구하지 않기
- 확인하며 진행
- 점진적으로 확장
3. 반복적 개선
첫 결과는 시작점일 뿐입니다. 대화를 통해 계속 개선합니다.
반복 개선의 단계:
- 기본 기능 구현
- 필수 기능 추가
- 편의 기능 확장
- 시각적 다듬기
- 세부 조정
각 단계마다 확인하고, 피드백하고, 다음으로 넘어갑니다.
4. AI의 강점과 한계
Agent가 잘하는 것:
- 반복적인 작업
- 일반적인 기능
- 표준적인 구조
- 빠른 프로토타입
- 설명과 문서화
Agent가 어려워하는 것:
- 창의적인 아이디어
- 맥락 파악
- 복잡한 비즈니스 로직
- 사용자 경험 판단
- 전체 큰 그림
역할 분담:
- 여러분: 아이디어, 판단, 우선순위, 창의성, 맥락
- Agent: 구현, 제안, 반복 작업, 설명, 수정
여러분이 습득한 능력
이번 주차를 마치며, 여러분은 다음을 할 수 있게 되었습니다:
✅ 효과적으로 대화하기
- Agent와 자연스럽게 의사소통
- 명확한 요청과 구체적인 피드백
✅ 좋은 프롬프트 작성하기
- 목표, 컨텍스트, 단계별 요청 구조화
- 상황에 맞는 적절한 수준의 정보 제공
✅ 반복적으로 개선하기
- 첫 결과를 출발점으로 보기
- 단계별로 확인하며 완성도 높이기
✅ AI와 협업하기
- 각자의 강점 이해하고 역할 분담
- 사람과 AI가 함께 만드는 과정 즐기기
실습에서 배운 교훈
실습 1 (메모 앱): 대화의 중요성
- 자연스러운 대화로 시작
- Agent의 질문에 답하며 구체화
- 점진적으로 기능 확장
실습 2 (카운터 앱): 반복 개선의 힘
- 한 번에 하나씩 개선
- 긍정적 피드백 포함
- 구체적인 수정 요청
실습 3 (퀴즈 앱): 복잡한 프로젝트 다루기
- 큰 프로젝트를 작은 단계로 분해
- 각 단계 확인하며 진행
- 기능 구현 후 다듬기
효과적인 협업을 위한 체크리스트
Agent와 작업할 때 이것들을 확인하세요:
요청하기 전: ☐ 무엇을 만들지 명확한가? ☐ 필요한 기능을 생각했는가? ☐ 한 번에 하나만 요청하는가?
요청할 때: ☐ 목표를 분명히 말했는가? ☐ 충분한 맥락을 제공했는가? ☐ 구체적으로 설명했는가?
결과 확인 후: ☐ 기본 기능이 작동하는가? ☐ 개선할 점을 찾았는가? ☐ 다음 단계가 명확한가?
피드백할 때: ☐ 구체적으로 말했는가? ☐ 긍정적인 부분도 언급했는가? ☐ 한 번에 하나만 요청했는가?
자주 하는 실수와 해결법
실수 1: 너무 모호하게 요청 문제: "좋은 앱 만들어줘" 해결: "할 일을 추가하고 완료 표시할 수 있는 앱 만들어줘"
실수 2: 한 번에 너무 많이 요청 문제: "할 일 앱에 카테고리, 우선순위, 마감일, 알림, 통계..." 해결: "먼저 기본 추가 기능만, 그다음 카테고리 추가"
실수 3: 첫 결과에 실망 문제: "완벽하지 않으니 실패" 해결: "기본은 작동하니 이제 개선하자"
실수 4: 컨텍스트 부족 문제: "색상 바꿔줘" 해결: "완료된 할 일의 색상을 회색으로 바꿔줘"
실수 5: 확인 없이 진행 문제: 여러 단계를 한꺼번에 진행 해결: 각 단계마다 테스트하고 다음으로
연습 과제
이번 주에 배운 내용을 복습하고 싶다면:
과제 1: 대화 연습 GitHub Copilot Agent와 간단한 것을 만들어보세요:
- 주사위 굴리기 앱
- 색상 선택기
- 간단한 투표 앱
목표: 자연스러운 대화로 완성하기
과제 2: 반복 개선 연습 기본 기능만 있는 앱을 만든 후, 5번 이상 개선해보세요:
- 계산기 (기본 4칙연산 → 여러 기능 추가)
- 타이머 (기본 카운트다운 → 다양한 기능)
목표: 단계별 개선 과정 익히기
과제 3: 프롬프트 비교 같은 앱을 두 가지 방법으로 요청해보세요:
- 방법 A: 모호하고 한꺼번에
- 방법 B: 명확하고 단계별로
목표: 좋은 프롬프트의 중요성 체감하기
과제 4: 역할 분담 연습 프로젝트를 시작할 때:
- 여러분이 할 일 목록 작성 (아이디어, 판단)
- Agent가 할 일 목록 작성 (구현, 반복 작업)
목표: 효과적인 역할 분담 연습
다음 주를 위한 준비
이번 주에 배운 협업 기술은 앞으로 계속 사용됩니다. 다음 주부터는:
- 4대 원리를 실제 문제에 적용
- 더 복잡한 프로젝트 진행
- 실생활 문제 해결
GitHub Copilot Agent는 이제 여러분의 든든한 파트너입니다. 언제든 대화를 시작하고, 함께 문제를 해결하세요.
격려의 말
6주 동안 여러분은 놀라운 여정을 해왔습니다:
- 1-2주차: 바이브 코딩의 개념을 이해했습니다
- 3주차: GitHub Copilot을 처음 만났습니다
- 4-5주차: 컴퓨팅 사고의 4대 원리를 배웠습니다
- 6주차: Agent와 효과적으로 협업하는 법을 익혔습니다
이제 여러분은 도구가 아닌 파트너로 AI를 활용할 수 있습니다. 혼자서는 시간이 오래 걸릴 일을 Agent와 함께 빠르게 해낼 수 있습니다.
코드를 한 줄도 직접 작성하지 않았지만, 여러분은 이미:
- 문제를 분석할 수 있고
- 해결책을 설계할 수 있고
- AI와 소통할 수 있고
- 결과를 평가하고 개선할 수 있습니다
이것이 바로 바이브 코딩입니다. 여러분의 생각이 코드가 됩니다.
완벽하지 않아도 괜찮습니다
Agent와의 대화가 아직 어색한가요? 괜찮습니다. 처음부터 완벽한 사람은 없습니다. 중요한 것은:
- 시도하는 것
- 경험에서 배우는 것
- 조금씩 나아지는 것
각 프로젝트를 진행할 때마다, 여러분은 더 나은 프롬프트를 작성하게 됩니다. 더 효과적으로 피드백하게 됩니다. 더 자연스럽게 대화하게 됩니다.
실수는 배움의 기회입니다
Agent가 예상과 다른 결과를 냈나요? 좋은 배움의 기회입니다:
- "아, 이렇게 요청하면 이렇게 해석하는구나"
- "다음엔 더 구체적으로 말해야겠다"
- "컨텍스트를 더 제공하면 되겠네"
이런 경험들이 쌓여 여러분을 더 나은 바이브 코더로 만듭니다.
앞으로의 여정
남은 9주 동안 여러분은:
- 배운 원리들을 실제 문제에 적용하고
- 점점 더 복잡한 프로젝트를 다루고
- 최종적으로 자신만의 프로젝트를 완성할 것입니다
이 모든 과정에서 GitHub Copilot Agent는 여러분과 함께합니다. 믿음직한 파트너로, 든든한 동료로.
다음 주에는 지금까지 배운 분해와 패턴 인식을 실제로 연습합니다. 일상의 문제들을 컴퓨팅 사고로 분석하고, Agent와 함께 해결책을 만들어봅니다.
준비되셨나요? 여러분은 이미 충분히 준비되어 있습니다. 지금까지 배운 것만으로도 놀라운 일들을 해낼 수 있습니다.
다음 주에 또 만나요. 그때까지 오늘 배운 것을 연습하며 즐거운 시간 보내세요!
이번 주의 명언
"최고의 협업은 각자의 강점을 인정하고 존중할 때 이루어집니다. 여러분은 생각하고 판단하고, Agent는 구현하고 제안합니다. 함께하면 놀라운 결과를 만들 수 있습니다."
여러분은 잘하고 계십니다. 계속 나아가세요!