Design Thinking 8단계를 바탕으로 한 프로젝트 강의이며, 중간/기말고사 없이 3회 발표로 평가합니다.
강의: 19:00~22:00 (5404) · 3시간 블록 = 강의 40분 / 실습 80분 / 코칭·공유 60분
15주 지도
한 줄에 두 가지가 함께 있습니다. 모임 시간에 다루는 것과, 그 강의가 성립하기 위해 수강자가 미리 만들어 와야 하는 것입니다.
| 주차 | 모임에서 다루는 것 | 수강자가 미리 준비할 것 | 모임 중 완성 |
|---|
| 1 | 강의 구조, 실패 패턴, AI 정책, 인터뷰·관찰 설계법 | — | 프로젝트 계획서, 탐색 영역, 저장소, 리뷰 짝, 인터뷰 스크립트 |
|---|
| 2 | 질적 코딩, 요약과 인사이트의 차이 | 인터뷰 3건 전사록 + 관찰 노트 | 공감지도, 인사이트 3개 이상 |
|---|
| 3 | POV/HMW, 문제를 요구사항으로 번역 | 개인별 문제 정의 후보 3개 | 문제 정의서, PRD, 사용자 스토리 |
|---|
| 4 | 발산·수렴 기준, 출처 검증 · 주제 확정 심사 | 선행사례 3건 이상(URL 필수) | 최종 주제 + 선정 근거서 |
|---|
| 5 | 충실도, 플로우, 빈 상태·에러 화면 | 사용자 플로우, 화면 목록 | 와이어프레임, 클릭 목업 |
|---|
| 6 | 리스크 스파이크, AI 디버깅 3단 | 기술 리스크 2개, 개발환경 세팅 완료 | PoC 코드, 리스크 리포트 |
|---|
| 7 | 1차 발표 + 방향 교정 | 발표자료, 리허설 영상 | 평가, 피드백 정리 (9주차 스프린트 계획에 담음 · 따로 제출 없음) |
|---|
| 8 | 아키텍처, 데이터 모델, API, ADR | 아키텍처 대안 3개, 데이터 항목 목록 (조사만 · 따로 제출 없음) | 다이어그램, ERD, ADR-0001 한 건 (대안·제약·데이터 항목 · 더 쓰는 것은 선택) |
|---|
| 9 | 백로그, DoD, 리뷰 짝 코드리뷰, 자동 검증 | 백로그 이슈 15개, 저장소 세팅 | 스프린트 계획(한 건 · Sprint 2·3 목표 · 1차 발표 피드백 반영 포함), 자동 검증 동작 |
|---|
| 10 | 스펙 → 테스트 → 구현, 코드 워크스루 | Sprint 1 변경 1건 이상 반영 | 핵심 기능 E2E, 테스트, 스프린트 1 회고(모임 중 · 제출 없음) |
|---|
| 11 | 통합, 디버깅 클리닉 | 통합 시도 결과 + 실패 로그 (막힌 주의 AI 사용 로그 «막혔을 때» 칸) | 통합 데모 |
|---|
| 12 | 예외처리·보안·성능, 배포, 교차 QA | 배포 준비, README | 배포 URL, QA 리포트 |
|---|
| 13 | 2차 발표 + 코드 설명 확인 | 발표자료, 간이 테스트 2명(사용성 테스트 참가자 표) | 평가 |
|---|
| 14 | 사용성 데이터 분석, 우선순위 판단 | 사용성 테스트 5명 원자료(참가자 표 한 건) | 검증 보고서, 개선 백로그 |
|---|
| 15 | 최종 발표 + 과정 확인 | 최종 보고서, 시연 영상, 기여 명세서 | 평가 |
|---|
원칙: 모임 시간은 데이터를 가지고 판단하는 시간, 데이터 수집은 각자 해 옵니다.
인터뷰·사용성 테스트·구현은 교실 밖에서만 가능하고, 코칭·의사결정·워크샵은 교실 안에서만 가능합니다.
제출 규칙
제출 경로는 두 가지입니다. 무엇을 어디에 내는지 헷갈리지 않게 아래 표를 기준으로 하세요.
| 무엇을 | 어디에 |
|---|
| 서식 15종 전부 — 프로젝트 계획서, 인터뷰 스크립트·전사록, 공감지도, 문제 정의서, 선행사례 조사표, PRD, 사용자 스토리, 플로우·화면 목록, 리스크 리포트, ADR, 스프린트 계획, 사용성 테스트, 기여 명세서, AI 사용 로그 (발표 자료는 «자동으로 만들기»에서 만들고 따로 내지 않습니다) | 서식 제출 페이지 — 폼을 채우고 제출 |
|---|
| 이슈 본문 · 변경 요청 본문 | 이슈 트래커 / 변경 요청 (거기서 바로 쓰는 것) |
|---|
| README · 소스 코드 | 개인 저장소 |
|---|
문서는 제출 페이지 하나로 모입니다. 저장소는 코드와 작업 이력을 담습니다.
| 항목 | 규칙 |
|---|
| 마감 | 해당 주차 모임 전날 자정 |
|---|
| 지각 | 감점. 미제출 시 해당 주차 모임 활동 참여 불가 |
|---|
| 매주 제출 | AI 사용 로그는 매주 냅니다. 한 번에 몰아 낼 수 없습니다 (7주차부터 세 칸 · 5분 · «무엇을 시켰나»는 «AI 구현 요청»에서 복사한 요청으로 미리 채워짐) |
|---|
| 로그인 | 제출 페이지는 Google 계정 로그인이 필요합니다. 내가 낸 것만 고치거나 지울 수 있습니다 |
|---|
워크샵형 강의는 재료가 없으면 성립하지 않습니다. 즉, 사전 제출물이 없으면 모임 시간에 그 재료부터 만들어야 하고, 그만큼 코칭 시간을 잃게 됩니다.
개인 저장소
이 강의는 특정 서비스를 요구하지 않습니다. GitHub·GitLab·학내 Git 서버 중 무엇이든 되고, 계정을 만들 수 없거나 네트워크가 막힌 경우를 위한 대체 경로도 있습니다. 1주차에 각자 결정하세요.
→ 저장소 운영 방식 선택 가이드
→ GitHub 협업 × AI 사용 가이드 — 9주차부터 매주 쓰는 흐름
경로가 달라도 아래 네 가지는 누구나 남겨야 하는데, 이것이 학습 목표이기 때문입니다.
- 작업이 시간에 걸쳐 분포한 기록
- 누가 무엇을 했는지 식별 가능
- 변경이 다른 사람의 눈을 거친 흔적
- 동작을 자동으로 확인하는 수단
project-<이름>/
├── README.md # 프로젝트 소개, 설치/실행 방법
├── docs/ # 문서 산출물 (서식을 복사해 채움)
│ ├── 01-team-charter.md
│ ├── ...
│ ├── adr/ # ADR은 번호별 개별 파일
│ ├── interviews/ # 인터뷰 전사록
│ ├── reviews/ # 리뷰 기록 (변경 요청을 쓸 수 없는 경우)
│ └── usability/ # 사용성 테스트 기록
├── logs/ # AI 사용 로그 (개인별 파일)
│ └── ai-log-홍길동.md
└── src/ # 소스 코드
이 저장소(학습 자료)는 weeks/ 수강자용 · teaching/ 운영 노트 · templates/ 서식 · rubrics/ 평가 기준 · guides/ 가이드로 나뉩니다.
AI 사용 정책
AI 사용은 전면 허용합니다. 대신 3가지가 원칙입니다.
- 내가 설명할 수 있게: 내가 낸 코드와 문장은 스스로 설명할 수 있으면 됩니다. 발표 때 한 부분을 골라 설명을 청하는데, 설명할 수 있으면 그것으로 완성입니다.
- 출처 검증: AI가 알려준 사실·논문·서비스 사례는 원 출처를 직접 확인한 뒤에만 인용합니다. 확인되지 않은 인용이 발견되면 해당 산출물은 0점입니다.
- 과정을 남기기: 매주 개인 AI 사용 로그를 제출합니다. 즉, 무엇을 시켰고, 무엇으로 검수했고, 무엇을 왜 반려했는지 세 칸만 남기는 것이고(5분), 이 로그가 내가 한 일을 대신 말해 줍니다. 반려가 «없음»이면 그 주 로그는 인정되지 않습니다.
이 강의에서 여러분은 팀장이고 AI는 팀원입니다. 팀장이 하는 일은 코딩이 아니라 지시 · 검수 · 반려입니다.
금지 사항
- 인터뷰 대상자·사용자 피드백을 AI로 생성하는 행위 (실제 사람만 인정)
- 검증하지 않은 AI 생성 코드를 통합본에 반영하는 행위
- 리뷰 짝이 한 작업을 본인 기여로 기재하는 행위
자세한 내용은 AI 활용 가이드북에 있습니다.
저장소 운영 경로에 따라 "기록"의 형태가 달라집니다. 어떤 경로를 쓰든 동등한 근거로 인정하며, 경로 선택 때문에 점수에 유불리가 생기지 않습니다. → 저장소 운영 방식 선택 가이드
서식과 평가 기준
문서 산출물은 마크다운(.md)으로 씁니다. 외울 문법은 6개뿐이고 1주차에 15분 실습으로 다룹니다 → 마크다운 15분
✍️ 서식 제출 페이지 — 서식 15종 전부를 여기서 채워 바로 제출합니다.
항목마다 작성 방법과 예시가 붙어 있고, 제출 전에 체크리스트가 실시간으로 확인됩니다.
제출한 것은 제출함에서 다시 열어 수정할 수 있습니다(내가 낸 것만).
https://capstone.mayai.kr/forms-firebase.html
처음 들어갈 때 참여 코드 6자리를 한 번 넣습니다. 교수자가 알려 줍니다.
한 번 넣으면 다음부터는 바로 들어옵니다.
표는 손으로 그리지 않아도 됩니다. 목록으로 써도 되고, 집계용 표는 스프레드시트로 만들어 저장소에 넣고 링크만 걸어도 됩니다. AI에게 표 정리를 맡기는 것도 허용합니다 — 내용은 여러분이 판단하고 형식은 도구가 정리하는 것, 그 자체가 이 강의가 가르치는 분담입니다.
모든 서식에는 작성 예시가 함께 있습니다. 예시는 두 가지 프로젝트로 채워져 있습니다.
| 예제 | 성격 |
|---|
| 동네장터 — 중고 직거래 약속 도우미 | 기술 난이도는 낮고 사용자 심리가 핵심 |
|---|
| 캠퍼스 캡션 — 청각장애 수강자 강의 자막 서비스 | 문제는 명확하고 기술 리스크가 성패를 가름 |
|---|
평가 기준은 시작 시점에 공개됩니다.
1차 발표 · 2차 발표 · 최종 발표 · 상호 평가지
여러 강의가 함께 쓰는 구조
이 사이트는 강의 하나가 아니라 여러 강의를 담습니다.
교수자가 강의를 만든다 → 참여 코드 6자리가 나온다
수강자가 코드를 넣는다 → 그 강의 안에서 제출한다
- 강의별 분리: 제출물·임시저장·카드보드는 강의별로 완전히 나뉩니다. 다른 반 것은 보이지 않습니다.
- 시작일: 시작일은 강의마다 다르고, 주차와 마감이 그 날짜로 계산됩니다.
- 다만 15주 구성·서식 15종은 이 강의 틀을 쓰는 강의가 함께 씁니다. 새로 여는 강의는 기본으로 «SW/AI 캡스톤디자인 (서식 간소화)» 틀(13종)을 씁니다.
- 역할: 그 강의 명단에 적힙니다 — 교수자 · 수강자 · 참관.
- 개설 권한: 강의를 만들 수 있는 계정만 따로 정해 둡니다 → firebase/SETUP.md 4장
새 강의를 여는 방법, 자료를 옮기는 방법은 모두 firebase/SETUP.md에 있습니다.
이 자료의 원본과 빌드
문서 원본은 마크다운이며, 사이트는 다음 명령으로 다시 만듭니다.
node site/dist.js # 문서 빌드 + public/ 준비 (배포용)
node site/build.js # 학습 자료(docs.html)만 다시 만들기
- 문서 추가:
site/build.js 상단의 GROUPS 배열에 한 줄을 넣으면 됩니다. - 외부 의존성: 배포되는 사이트에는 외부 라이브러리 의존성이 없습니다.
- 슬라이드: Marp 테마를 사용합니다.
손대기 전에 해 볼 것
npm install # 처음 한 번만 (확인용 도구. 배포물과는 무관합니다)
npm run try # 내 컴퓨터에서 연습판 띄우기 — 진짜 데이터를 건드리지 않습니다
npm test # 보안 규칙 111가지 확인 — «A반이 B반을 못 본다» 포함
보안 규칙을 고쳤다면 게시하기 전에 npm test 를 돌려 보세요.
이번 주에 남길 것 하나 — 이 강의가 아이디어 대회가 아니라 프로세스 훈련임을 이해하고, 다음 주 인터뷰를 실제로 나갈 수 있는 상태가 되는 것.
| 시간 | 활동 |
|---|
| 25분 | 강의 ① — 강의 구조, 실패 패턴, AI 사용 정책 |
|---|
| 20분 | 강의 ② — AI를 팀원으로 다루는 법 |
|---|
| 15분 | 실습 ① 마크다운 15분 |
|---|
| 30분 | 실습 ② 프로젝트 계획서 작성 |
|---|
| 20분 | 실습 ③ 제출 경로와 도구 |
|---|
| 70분 | 탐색 영역 확정 + 인터뷰 설계 워크샵 (이번 주 핵심) |
|---|
강의 ① 강의 구조와 기준 (25분)
다룰 내용
- 강의 구조: Design Thinking 8단계, 시험 없음, 발표 3회, 매주 사전 작업
- 실패하는 캡스톤 4가지 패턴
- 주제가 너무 큼 → 12주차에 아무것도 완성 안 됨
- 사용자 없이 시작 → 만들고 나서 쓸 사람이 없음
- 막판 통합 → 11주차에 모듈이 안 붙음
- 문서를 마지막 무렵에 몰아 씀 → 프로세스를 배우지 못함
- 평가 방식: 루브릭 3종을 오늘 배포하고 함께 읽습니다
- AI 사용 정책: 전면 허용, 대신 내가 설명할 수 있게·출처는 직접 확인·과정을 남기기
핵심
"AI 사용은 막지 않습니다. 대신 여러분이 설명하지 못하는 것은 없는 것으로 칩니다."
이 기준은 15주 내내 동일하게 적용됩니다. 세 번의 발표에서 저장소의 코드를 한 부분 골라 설명을 청하는데, 설명할 수 있으면 그것으로 완성입니다. 즉, 그 코드를 누가 썼는지는 묻지 않습니다. 설명이 되는지만 봅니다.
이번 주 AI 함정 시연 — 자신 있게 틀리기
모임 중에 AI에게 존재하지 않는 것을 함께 물어봅니다. 우리 학과 교관리 번호나 가상의 라이브러리 함수 같은 것이면 되는데, AI가 망설임 없이 그럴듯한 답을 내놓는 장면을 함께 보게 됩니다. 확신의 강도와 정확도는 아무 관계가 없습니다.
강의 ② AI를 팀원으로 다루는 법 (20분)
이 강의의 프로젝트 구조
개인 프로젝트입니다. 그런데 혼자 하는 것은 아닙니다.
팀장이 하는 일은 코딩이 아니라 지시하고, 검수하고, 반려하는 것입니다.
이 강의가 평가하는 것도 코딩량이 아니라 이 세 가지입니다.
| 단계 | 하는 일 | 어디에 남나? |
|---|
| ① 지시 | 무엇을 어떤 조건으로 만들지 정해서 넘긴다 | AI 사용 로그 「무엇을 시켰나」 |
|---|
| ② 검수 | 받은 것이 그 조건을 만족하는지 확인한다 | 「검수 방법」 |
|---|
| ③ 반려 | 아니면 되돌려 보내고 이유를 남긴다 | 「반려 기록」 · 기여 명세서 |
|---|
주의세 번째가 없으면 팀장이 아니라 전달자입니다. 받은 것을 그대로 붙여넣는 일은 누구나 합니다.
또한 팀장이므로 모든 영역을 직접 맡습니다. "나는 프론트만"이 불가능한 구조이고, 그게 이 강의가 개인 프로젝트인 이유입니다. 좀 부담스러우시겠지만, 그래야 15주차에 본인이 설명할 수 있는 것이 남습니다.
① 지시 — 지시가 부실하면 결과도 부실합니다
| ❌ 이건 지시가 아닙니다 | ✅ 이게 지시입니다 |
|---|
| 로그인 기능 만들어줘 | 이 인수조건 3개를 만족하는 로그인 API. 스키마는 이거고, 테스트를 먼저 써줘 |
|---|
| 문제 정의서 써줘 | 이 인터뷰 인용 5개만 근거로 POV 문장 3개. 인용에 없는 내용은 쓰지 마 |
|---|
사람 팀원은 지시가 부실하면 되묻지만, AI는 되묻지 않고 그냥 만듭니다.
그래서 결과가 나쁘면 대개 팀원이 아니라 지시가 나빴던 것입니다.
→ AI 활용 가이드북 「패턴 1. 맥락 먼저」 · 「패턴 2. 인수조건 주입」
② 검수 — 무엇으로 확인할지를 먼저 정합니다
| 무엇을 받았나? | 무엇으로 검수하나? |
|---|
| 코드 | 테스트 실행 · 직접 실행 · 경계값(빈 값, null, 자정 직전) 넣어보기 |
|---|
| 사실 · 통계 · 사례 | 출처 URL을 직접 열어보기 |
|---|
| 설계 제안 | 반대 근거를 다시 시켜보기 (「패턴 3. 반박 요청」) |
|---|
| 문서 초안 | 내가 준 근거에 없는 문장이 섞였는지 |
|---|
핵심검수 기준은 지시하기 전에 정해 두시기 바랍니다. 받은 다음에 정하면 이미 그 결과에 설득당한 뒤가 됩니다.
③ 반려 — 이 강의가 실제로 보는 것
일단 반려는 AI가 틀렸을 때만 하는 것이 아닙니다.
| 반려하는 경우 | 예 |
|---|
| 틀렸다 | 시간대를 UTC로 처리해 자정 근처에서 하루 오차가 남 |
|---|
| 맞지만 우리 것이 아니다 | join 최적화 제안 — 우리 스키마에서는 데이터 중복이 커짐 |
|---|
| 맞지만 내가 설명하지 못한다 | 동작은 하는데 왜 되는지 모르는 코드 |
|---|
세 번째를 기억하세요. 이 강의의 기준은 15주 내내 같습니다 —
설명하지 못하는 것은 없는 것으로 칩니다. 설명 못 하는 코드는 그 자리에서 반려 대상입니다.
매주 AI 사용 로그에 반려 최소 1건을 적습니다.
반려 기록이 여러분이 판단했다는 거의 유일한 흔적이고, 15주차 개인 평가가 보는 것도 그것입니다.
AI 팀원이 사람 팀원과 다른 세 가지
| 차이 | 그래서 팀장이 해야 할 일 |
|---|
| 반대하지 않는다 | 반대 의견은 직접 시켜서 받아야 합니다 (「패턴 3. 반박 요청」) |
|---|
| 모른다고 말하지 않는다 | 모르는 영역일수록 출처를 직접 열어야 합니다 |
|---|
| 어제 내린 결정을 기억하지 못한다 | 결정은 사람이 문서에 남깁니다 — ADR과 프로젝트 계획서가 그 자리입니다 |
|---|
주의혼자 + AI의 가장 큰 위험은 「이해하지 않은 채 진도가 나가는 것」입니다.
사람 팀원에게는 설명해야 해서 강제로 이해하게 되는데, AI는 설명을 요구하지 않습니다.
그래서 이 강의는 발표마다 코드를 무작위로 골라 설명을 청합니다. 그게 안전장치입니다.
실습 파트 (65분)
① 마크다운 15분 (15분)
이 강의의 문서 산출물은 마크다운으로 씁니다. 마크다운 15분을 화면에 띄우고 함께 봅니다.
외울 것은 6개뿐입니다 — 제목 #, 목록 -, 굵게 **, 체크박스 - [ ], 코드 백틱 3개, 링크 []().
| 시간 | 내용 |
|---|
| 5분 | 6가지 문법 시연. VS Code에서 Ctrl+K V로 미리보기를 띄운 채 직접 타이핑 |
|---|
| 5분 | 표는 손으로 그리지 않는다 — 내용을 불러주고 AI에게 표로 정리시키는 시연 |
|---|
| 5분 | 각자 따라 해보기. 다음 실습(프로젝트 계획서)이 곧 연습입니다 |
|---|
왜 배우는가? — AI가 내놓는 답, 저장소 README, 이슈 본문, 코딩 도구 설정 파일이 전부 마크다운이라, 이 모임에서 안 배워도 어차피 매일 마주칩니다.
부담은 갖지 않아도 됩니다. 표는 스프레드시트로 내도 되고, AI에게 정리시켜도 됩니다. 형식과 씨름하는 시간은 이 강의에서 배울 것이 아닙니다.
② 프로젝트 계획서 작성 (30분)
프로젝트 계획서 서식을 채웁니다. 방금 배운 마크다운을 바로 쓰는 첫 문서입니다.
가장 중요한 항목은 4. AI 사용 기준 인데, 방금 배운 지시·검수·반려를 본인 기준으로 옮겨 적는 칸입니다.
「2. 탐색 영역」은 지금 비워둡니다. 오늘 마지막 워크샵에서 정한 뒤 채워서 제출합니다.
③ 제출 경로와 도구 (20분)
제출 경로는 두 가지입니다. 오늘 둘 다 열어 확인합니다.
| 무엇을 | 어디에 |
|---|
| 서식 15종 전부 (최종 보고서는 한글·워드 템플릿) | 서식 제출 페이지 |
|---|
| 이슈·변경 요청 본문 | 이슈 트래커 / 변경 요청 |
|---|
| README · 소스 코드 | 개인 저장소 |
|---|
주의오늘 제출 페이지 로그인을 확인합니다. 제출하려면 Google 계정 로그인이 필요한데,
로그인하면 작성자 이름이 계정에서 자동으로 채워지고 내가 낸 것만 고치거나 지울 수 있습니다.
프로젝트 계획서 제출이 첫 실습이므로, 그 자리에서 전원 로그인이 되는지 확인합니다.
제출함은 같은 강의 구성원이 함께 보는 공간입니다. 남의 제출물은 열어보기만 한다는 것도 오늘 규칙으로 정합니다.
- 저장소 운영 경로 결정: 저장소 운영 방식 선택 가이드를 함께 읽고 개인별로 A/B/C 중 선택
- 저장소 생성: 개인 저장소 생성 후, 리뷰 짝이 볼 수 있는지 확인
- 폴더 구조:
docs/ logs/ src/ 폴더 구조 생성 - 도구 설치: AI 코딩 도구 설치 — 15주 내내 쓸 것 하나를 정합니다 (도구를 옮겨 다니면 로그가 흩어집니다)
- 첫 제출: 서식 제출 페이지에서 프로젝트 계획서를 제출하는 것까지 오늘 안에 끝내기
이 강의는 특정 서비스를 요구하지 않습니다. 계정을 만들 수 없거나 학교 네트워크에서 막히는 경우 1주차에 확인하고 경로 B로 정합니다. 그대로 두면 기여가 15주 내내 남지 않아, 15주차 개인 평가에 반영하기 어렵습니다.
탐색 영역 확정 + 인터뷰 설계 워크샵 (70분)
주의이 워크샵을 2주차로 미루면 안 됩니다. 인터뷰 방법을 2주차에 다루면 인터뷰를 해 올 시간이 없고, 2주차 모임이 통째로 비게 됩니다.
| 시간 | 내용 |
|---|
| 10분 | 탐색 영역 확정 — 무엇에 대해 물을 것인가? |
|---|
| 12분 | 강의 ① 질문을 만드는 다섯 가지 방식 |
|---|
| 8분 | 강의 ② 어떻게 진행할 것인가? |
|---|
| 10분 | 강의 ③ 말로 나오지 않는 것 보기 — 맥락 질의법 |
|---|
| 25분 | 실습 — 개인 질문지 완성 |
|---|
| 5분 | 점검 — 소리 내어 읽고 교정 |
|---|
탐색 영역 확정 (10분)
인터뷰를 설계하려면 무엇에 대해 물을지가 먼저 정해져야 합니다. 오늘 정하는 것은 만들 것이 아니라 살펴볼 영역입니다.
| 이 강의의 세 단계 | 언제 | 무엇을 정하나? |
|---|
| 탐색 영역 | 1주차 (지금) | 어떤 사람들의 어떤 상황을 볼 것인가? |
|---|
| 문제 정의 | 3주차 | 그 중 무엇이 진짜 문제인가? |
|---|
| 주제 | 4주차 | 그 문제를 어떻게 풀 것인가? |
|---|
| ❌ 이건 이미 해결책입니다 | ✅ 이게 영역입니다 |
|---|
| 중고거래 앱을 만들자 | 직거래 약속을 잡다가 서로 눈치만 보다 흐지부지되는 과정 |
|---|
| AI 학습 도우미 | 혼자 공부하다 막혔을 때 물어볼 데가 없는 상황 |
|---|
| 자취생 식단 서비스 | 자취 3개월 차가 저녁을 정하는 데 쓰는 시간 |
|---|
정하는 순서
- 후보를 3개 적습니다
- 관심 있는 영역 중에서 고르되, "내가 다음 주에 만날 사람이 한 명은 떠오르는가?" 를 통과한 것만 적습니다
- 후보마다 그 사람을 이름이나 관계로 함께 적습니다 (예: "같은 과 선배 김○○")
- 막연히 "대학생"은 안 됩니다. 연락처를 아는 사람이어야 합니다
- 사람이 안 떠오르는 후보는 지웁니다 — 인터뷰를 못 하면 그 영역은 진행할 수 없습니다
- 남은 것 중 가장 궁금한 하나를 고릅니다
- 고른 영역에서 만날 3명이 채워지는지 확인합니다
- 안 채워지면 2순위 후보로 바꿉니다. 다음 주까지 3명을 실제로 만나야 합니다
핵심옆 사람과 겹쳐도 괜찮습니다. 같은 영역을 봐도 만나는 사람이 다르면 나오는 것이 다릅니다.
오히려 3주차에 서로의 인사이트를 비교할 수 있어 도움이 됩니다.
주의여기서 해결책을 정하면 인터뷰가 망가집니다. 만들 것을 정해놓고 나가면 질문이 전부 "그거 필요하시죠?"가 되고, 사용자는 예의상 그렇다고 답합니다. 그 데이터로는 3주차 문제 정의를 쓸 수 없습니다.
핵심영역은 3주차까지 바뀔 수 있습니다. 인터뷰에서 전혀 다른 것이 나오면 그쪽으로 옮기면 됩니다. 오늘 정하는 것은 다음 주에 누구를 만날지입니다.
확정한 영역은 프로젝트 계획서의 2. 탐색 영역에 적어 제출합니다.
강의 ① 질문을 만드는 다섯 가지 방식 (12분)
해결책을 묻지 말고 경험을 물어라.
| ❌ | ✅ |
|---|
| 이런 앱 있으면 쓰시겠어요? | 마지막으로 그 문제 겪은 게 언제예요? 그때 어떻게 하셨어요? |
|---|
| 뭐가 불편하세요? | 그 일 하실 때 순서대로 하나씩 알려주시겠어요? |
|---|
좋은 질문은 감각으로 나오지 않고, 다섯 가지 형태를 조합해 만듭니다.
| 유형 | 무엇을 캐는가? | 이렇게 묻습니다 |
|---|
| 순차적 경험 | 어떤 순서로 행동하고 경험했는가? | 그때 있었던 일을 처음부터 순서대로 말씀해 주시겠어요? |
|---|
| 감정 | 특정 순간에 어떤 느낌이었는가? | 그 순간 기분이 어떠셨어요? |
|---|
| 이유 | 그 행동·그 감정이 왜 나왔는가? | 왜 그렇게 하셨어요? |
|---|
| 또 | 답변의 가짓수를 늘린다 | 또 어떤 게 있었나요? |
|---|
| 구체화 | 한 지점을 더 깊이 판다 | 좀 더 구체적으로 이야기해 주시겠어요? |
|---|
쓰는 순서가 있습니다.
순차적 경험 → 감정 → 이유
(무엇을) (어떻게 느꼈나) (왜)
「또」와「구체화」는 순서가 없습니다. 답이 얕다 싶은 어디에든 끼워 넣습니다.
핵심「또」 질문 하나가 답변 항목을 두 배로 늘립니다. 사용자는 첫 대답에서 가장 무난한 것 하나만 말하는데, "또 있으세요?"를 세 번 물으면 세 번째에 진짜가 나옵니다.
- "왜요?"를 최소 5번: 표면적인 대답 아래에 진짜 이유가 있습니다
- 침묵을 먼저 채우지 않기: 3초를 기다리면 사용자가 채웁니다
강의 ② 어떻게 진행할 것인가? (8분)
진행 방식은 두 가지가 있습니다.
| 방식 | 어떻게 | 언제 쓰나? |
|---|
| 구조화 면담 | 정해진 질문 항목을 순서대로 질문 | 여러 명의 답을 나란히 비교해야 할 때 |
|---|
| 반구조화 면담 | 정해진 틀을 바탕으로, 준비하지 않은 질문을 이어감 | 아직 무엇이 문제인지 모를 때 |
|---|
이 강의는 반구조화입니다. 우리는 아직 무엇을 물어야 하는지 모르기 때문입니다.
(준비된 질문) 언제 운동을 하시나요?
↓ 답변을 듣고
(준비하지 않은 질문) 왜 식사하기 직전에 하시나요?
충분히 깊은 이야기가 나왔다고 판단되면 다음 항목으로 넘어갑니다. 질문지는 대본이 아니라 지도입니다.
진행할 때 지킬 세 가지
| |
|---|
| 면담의 목적을 잊지 않기 | 가르치거나 설득하는 자리가 아닙니다. 사용자가 틀린 말을 해도 정정하지 않습니다 |
|---|
| 사실 확인이 아니라 이유 탐색 | "무엇을 하는지" 목록을 모으는 것보다 왜 그렇게 했는지가 중요합니다 |
|---|
| 정답 확인이 아니라 문제 발견 | 원하는 답을 머리에 두고 물으면 편견 때문에 진짜 데이터가 안 나옵니다. 중립적으로 접근합니다 |
|---|
주의가장 흔한 실패 — 이미 만들고 싶은 것을 정해놓고 인터뷰를 나가는 경우입니다. 그러면 질문이 전부 "그거 필요하시죠?"가 되고, 사용자는 예의상 그렇다고 답합니다. 그렇게 모은 데이터로는 3주차 문제 정의를 쓸 수 없습니다.
강의 ③ 말로 나오지 않는 것 보기 — 맥락 질의법 (10분)
맥락 질의법(Contextual Inquiry) 은 사용자가 실제로 그 일을 하는 현장에서 관찰과 면담을 함께 하는 방법입니다. 공감 단계에서 가장 많이 쓰는 방식입니다.
사람은 자기 행동의 절반을 설명하지 못합니다. 매일 하는 일일수록 더 그런데, 그래서 하는 것을 옆에서 봅니다.
네 가지 원칙
| 원칙 | 내용 |
|---|
| 맥락 | 작업 환경의 디테일을 관찰합니다. 절대 축약하거나 추상화하지 않습니다 |
|---|
| 파트너십 | 대상자를 공감합니다. 어떤 행동(what)을 하는지 보고 그 이유(why)를 묻습니다 |
|---|
| 해석 | 내가 이해한 것을 그 자리에서 대상자에게 말해 줍니다. 대상자가 확장하거나 바로잡아 줍니다 |
|---|
| 포커스 | 핵심 주제에서 벗어나지 않습니다 |
|---|
준비물과 기록할 것
준비물 노트와 펜, 녹음기 또는 촬영 장비
기록 · 대상자의 역할, 업무, 주고받는 말, 그 조직의 문화
· 물리적 공간과 환경
· 대상자가 쓰는 물건·도구 (주제와 관련된 것만)
· 핵심 행동, 그 사람 나름의 요령, 의도
도제관계 모델 (Master–apprentice) — 관계를 뒤집는 것이 핵심입니다.
- 대상자가 스승입니다. 자기 일을 하면서 「소리 내어 생각하기」를 합니다
- 우리는 견습생입니다. 중간중간 물어보며 배웁니다. 평가하러 간 것이 아닙니다
핵심소리 내어 생각하기(Think Aloud) — 작업을 하면서 자신의 생각과 행동을 전부 말로 내뱉게 하는 방법입니다.
| 방식 | 언제 말하나? | 장점 | 단점 |
|---|
| 병행식 | 과업을 하는 중에 실시간으로 | 실시간 정보를 얻습니다 | 말하느라 실제와 다르게 행동하게 됩니다 |
|---|
| 회고식 | 단계를 끝낸 뒤에 | 실제 행동에 영향을 덜 줍니다 | "진짜" 생각이 아닐 수 있습니다 (고의든 아니든) |
|---|
| 하이브리드 | 둘 다 | 양쪽을 보완합니다 | 대상자에게 부담이 큽니다 |
|---|
맥락 질의법이 맞지 않는 경우도 있습니다.
- 며칠·몇 주·몇 달에 걸친 장기 관찰이 필요할 때
- 보려는 상황이 드물게 일어날 때 (하루에 1분, 일주일에 한 번)
- 대상자가 수십·수백 명일 때
세 경우에 해당하면 인터뷰와 설문으로 대신합니다. 다만 이 강의의 주제 대부분은 맥락 질의법이 가능한 범위입니다.
실습 (25분)
인터뷰 스크립트 서식으로 1인당 질문지 하나를 오늘 완성합니다.
참고질문지는 하나입니다. 방금 확정한 탐색 영역 하나에 대해 만듭니다.
인터뷰 3건을 모두 같은 질문지로 진행합니다.
사람마다 질문을 바꾸면 2주차에 전사록 3건을 나란히 놓을 수 없고, 공감지도를 만들 재료가 남지 않습니다.
- 알아내려는 것을 질문 형태로 1~2개 적습니다
- 심화 질문을 탐색 영역에 맞게 직접 만듭니다 (3개 이상)
- 만든 질문마다 다섯 유형 중 무엇인지 표시합니다
- 「이유」 유형이 하나도 없으면 그 질문지는 사실 목록만 모으게 됩니다
- 「또」와 「구체화」를 넣을 지점을 최소 2군데 미리 정해 둡니다
- 현장에서 볼 수 있는 주제라면 어디로 갈지를 정합니다 (맥락 질의법)
핵심전사는 도구에 맡기세요. 다음 주 서식인 전사록 3건은 AI 전사 도구를 쓰면 됩니다.
손으로 받아 적으면 한 사람당 서너 시간이 걸리는데, 그 시간은 배우는 시간이 아닙니다.
여러분이 할 일은 관찰 노트와 인용 확인입니다. → AI 활용 가이드북
점검 (5분)
완성한 사람은 질문 2개를 소리 내어 읽습니다. 해결책을 묻는 질문이 섞여 있으면 그 자리에서 고칩니다.
| 점검 항목 | |
|---|
| 순차적 경험을 묻는 질문이 있는가? | ☐ |
|---|
| 감정을 묻는 질문이 있는가? | ☐ |
|---|
| 이유를 묻는 질문이 있는가? | ☐ |
|---|
| 「또」·「구체화」를 넣을 지점을 정했는가? | ☐ |
|---|
| 해결책을 묻는 질문이 섞여 있지 않은가? | ☐ |
|---|
다음 주 서식
[2주차 모임 전까지 · 제출]
1. 실제 사용자 3명 이상 인터뷰 (1인당 30~40분)
- 리뷰 짝, 이 강의 수강자, 가족은 제외
- 녹음 전 구두 동의를 받고, 그 동의 발언을 녹음에 포함할 것
- 동의를 받을 때 «녹음 파일은 강의 담당 교수자만 듣습니다»를 함께 알릴 것
2. 전사록 3건 → 서식 제출 페이지 «인터뷰 전사록» (대상자별 한 건씩)
- **대상자 ID를 사람마다 다르게** (P1 · P2 · P3) 적고 한 건씩 따로 제출합니다
- 같은 ID로 다시 제출하면 앞의 전사록을 덮어씁니다. 세 번 모두 P1로 내면 한 건만 남습니다
- 제출 뒤 «제출함»에서 전사록이 3건인지 확인하세요
- 타임스탬프 포함
- 녹음 파일 업로드는 선택입니다 (올리면 교수자와 본인만 들을 수 있습니다)
- 손으로 받아 적지 마세요. AI 전사 도구를 쓰고 결과를 붙여넣습니다
- 검수는 «인상적인 발언 3개»로 뽑을 구간만 원본 음성과 대조하면 됩니다
- 방법: AI 활용 가이드북 「부록 — 인터뷰 전사에 AI 쓰기」
3. 각 인터뷰마다 관찰 노트
- 표정·망설임·한숨이 나온 지점
- 말과 행동이 어긋난 지점
- 인상적인 발언 3개 (그대로 인용)
마감: 모임 전날 자정 · 제출: 서식 제출 페이지
미제출자는 2주차 워크샵에 참여할 수 없습니다.
제출 형식
서식 제출 페이지에서 «인터뷰 전사록» 선택 — 대상자 1명당 한 건씩 제출합니다.
동네장터 — P1 전사록 (발췌)
> 주차: 1주차 서식 · 작성일: 2026-XX-XX
> 작성: 김서연
# 인터뷰 P1
| 항목 | 내용 |
|---|---|
| 대상자 프로필 | 3학년. 지난달 중고로 아이패드를 팔려다 약속을 못 정해 거래가 무산됨 |
| 녹음 동의 | ☑ 구두 동의 확보 |
## 전사
[00:04:28] 진행자: 그래서 어떻게 하셨어요?
[00:04:31] P1: 제가 정해서 말했어야 하는데... 사실 거의 못 했어요.
[00:04:38] 진행자: 왜요?
[00:04:40] P1: 제가 재촉하는 사람처럼 보일까 봐요. "내일 3시에 어디로 오세요"
이렇게 말하면 좀 그렇잖아요. 물건 파는 사람이 갑질하는 것 같고.
## 관찰 노트
- 04:17에서 3초 망설임 → 장소를 모르는 게 아니라 먼저 말하지 못하는 것
- 05:44의 "(웃음)"이 즐거움이 아니라 체념으로 들림
## 인상적인 발언 3개
1. "제가 재촉하는 사람처럼 보일까 봐요." (04:40)
2. "제가 정한 데가 그쪽한테 멀면 어떡하지." (05:06)
3. "사흘 동안 그러다가 그쪽이 그냥 안 읽더라고요." (05:27)
관찰 노트와 인용 3개가 없으면 3주차에 쓸 재료가 남지 않습니다.
이 전사록의 전문은 2주차 시연 자료에 있습니다 —
여기 발췌한 네 줄이 거기 그대로 들어 있고, 2·3주차 시연이 이 말에서 출발합니다.
이번 주에 남길 것 하나 — 인터뷰 데이터에서 근거가 붙은 인사이트를 최소 3개 찾아내는 것. 요약이 아니라, 인터뷰 전에는 예상 못 했던 것이어야 합니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 30분 | 강의 — 질적 코딩, 인사이트란 무엇인가? |
|---|
| 80분 | 실습 — 공감지도 워크샵 |
|---|
| 60분 | 수강자 간 교차 리뷰 + 코칭 |
|---|
강의 파트 (30분)
참고시연 자료가 따로 있습니다. 2주차 시연 — 인사이트 뽑기
전사록 3건 샘플부터 인사이트 10개까지 전 과정이 실제 문장으로 들어 있습니다. 강의 파트에서 이걸로 한 번 보여준 뒤 실습으로 넘어갑니다.
다룰 내용
- 질적 코딩: 발언을 잘라 라벨을 붙이고, 라벨을 묶어 주제를 만드는 절차
- 요약과 인사이트의 차이 ← 이번 주 핵심
핵심 — 요약과 인사이트의 차이
| 문장 |
|---|
| 요약 | 사용자는 앱이 복잡해서 불편해한다 |
|---|
| 인사이트 | 사용자는 복잡해서가 아니라 실수를 되돌릴 방법이 없어서 신중해지고, 결국 포기한다 |
|---|
좋은 인사이트에는 긴장(tension)이 있습니다. "A를 원하면서 동시에 B를 한다" 같은 모순이 있어야 하고, 모순이 없으면 그건 그냥 누구나 아는 말입니다.
이번 주 AI 함정 — 한국어 뉘앙스 오독
전사록 한 대목을 AI에게 감정 분류시켜 보면, 반어법·완곡어법·체념이 섞인 대목에서 거의 반드시 틀립니다.
"괜찮아요 뭐, 그냥 제가 하면 되니까" — AI는 이걸 긍정으로 분류합니다.
그래서 공감지도의 감정 칸을 AI 결과 그대로 채우면 안 됩니다. 분류는 시키되 판정은 직접 합니다.
실습 파트 (80분)
진행 순서
각 단계의 결과물이 어떤 모습이어야 하는지는 시연 자료에서 확인하세요.
- (15분) 발언 카드화: 전사록에서 인상적인 발언을 포스트잇 한 장에 하나씩. 최소 24장
- (20분) 그룹핑: 비슷한 것끼리 묶고 이름 붙이기. AI에게 같은 작업을 요청해 결과를 비교합니다
- (25분) 공감지도: 2번에서 내가 만든 분류를 그대로 칸으로 씁니다. 공감지도 서식에서 카드보드의 분류를 가져올 수 있습니다
- (20분) 인사이트 3개 이상: 각 인사이트에 근거 인용을 반드시 붙이기 — 서식 사이트 «인사이트 찾기»에서 AI 후보를 받아 다듬고 내가 찾은 것을 1개 이상 더해 고르면 공감지도 칸에 근거와 함께 들어갑니다. 원하면 카톡 링크로 외부 공감 투표를 받아 참고합니다
점검 항목
- 추측 여부: 공감지도 칸에 내 추측이 들어가 있지 않은가? 근거 없는 칸은 지웁니다
- 발언 출처: 감정·생각을 적은 칸에 어느 발언에서 나왔는지가 붙어 있는가?
교차 리뷰 (60분)
일단 둘씩 짝지어 공감지도를 서로 설명하는데, 듣는 사람은 딱 두 가지만 묻습니다.
- "그 인사이트의 근거가 어느 발언이에요?"
- "그건 인터뷰 전에도 예상했던 거 아니에요?"
두 번째 질문에 답하지 못한다면 그 인사이트는 요약이니, 전사록으로 돌아가 다시 파고드시기 바랍니다.
다음 주 서식
[3주차 모임 전까지]
1. 개인 작업 — 문제 정의 후보 3개씩 (각자 3개)
- 인사이트에 근거해야 함. 아이디어가 아니라 '문제'를 쓸 것
- 형식: "[구체적 사용자]는 [무엇]이 필요하다. 왜냐하면 [인사이트]이기 때문이다."
- 제출: 개인 저장소 이슈로 각자 등록
2. 작업 — 부족한 인터뷰 2건 보완
- 2주차에 새로 생긴 질문을 가지고 다시 만날 것
3. 개인 작업 — AI 사용 로그 1주치
- 「반려 기록」 항목 필수 (최소 1건)
마감: 모임 전날 자정
제출 형식
- 이슈 트래커(또는 칸반 보드): 제목
[문제후보] 홍길동 1. 후보를 서로 보고 토론해야 하므로 보드에 올립니다. 서식은 서식 제출 서식.
동네장터 — 문제 정의 후보 (개인 제출 1건)
## 후보 1
**POV**
이번 과정에 처음 중고 물건을 팔아본 3학년 학생은
상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법이 필요하다.
왜냐하면 먼저 장소를 제안하는 행위가 재촉처럼 보일까 봐
말을 못 꺼낸 채 서로 미루다가 결국 거래가 흐지부지되기 때문이다.
**근거 인용:** "제가 재촉하는 사람처럼 보일까 봐요." (P1 04:40)
**해결책 단어 점검:** 앱·플랫폼·AI·자동화 포함 여부 ☑ 없음
마지막 점검 항목이 핵심인데, 해결책 단어가 들어가면 문제가 아니라 아이디어입니다.
이번 주에 남길 것 하나 — 해결책 단어가 하나도 없는 문제 정의 문장을 갖는 것. 이 강의에서 결과가 갈리는 첫 번째 지점입니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 40분 | 강의 — POV/HMW, 문제 정의를 요구사항으로 번역하기 |
|---|
| 80분 | 실습 — 문제 정의 확정 + PRD 초안 + AI 반박 |
|---|
| 50분 | 개인별 코칭 |
|---|
강의 파트 (40분)
참고시연 자료가 따로 있습니다. 3주차 시연 — 문제 정의
POV를 세 번 고쳐 쓰는 과정, AI가 쓴 PRD와 직접 다시 쓴 PRD 비교가 나란히 들어 있습니다.
다룰 내용
- POV 문장:
[사용자]는 [니즈]가 필요하다. 왜냐하면 [인사이트]이기 때문이다. - HMW 질문: 범위 조절이 전부입니다
- 문제 → 요구사항 번역: 기능/비기능, 사용자 스토리와 인수조건
- 스코프 경계: PRD «비목표»(하지 않는 것) 목록
핵심
① 타깃 사용자는 "상황"까지 써야 합니다.
| ❌ | ✅ |
|---|
| 대학생 | 이번 과정에 처음 중고 물건을 팔아본 3학년 |
|---|
② POV에 해결책 단어(앱·플랫폼·AI·자동화)가 들어가면 실패입니다. 내 문장에서 그 단어를 찾아 지워 보세요. 지우고 나서도 문장이 성립하면 통과고, 말이 안 되면 문제 대신 답을 먼저 적어 둔 것이니 다시 써야 합니다.
③ HMW 범위 조절
| 범위 | 예 |
|---|
| 너무 넓음 | 어떻게 하면 중고거래를 잘 되게 할까? → 아무것도 못 함 |
|---|
| 너무 좁음 | 어떻게 하면 진행률 바를 넣을까? → 이미 해결책임 |
|---|
| 적당함 | 어떻게 하면 서로 묻지 않아도 만날 시간이 좁혀질까? |
|---|
④ PRD의 «비목표»(하지 않는 것)가 비어 있으면 12주차에 무너집니다. 로그인, 결제, 관리자 페이지, 추천 알고리즘. 이 중 정말 필요한 것이 몇 개인지 지금 따집니다.
이번 주 AI 함정 — 일반론으로 도피
인터뷰 데이터 없이 PRD를 시키면 어느 프로젝트에 갖다 붙여도 되는 문서가 나옵니다.
인용을 넣기 전과 후를 나란히 놓아 보세요. 차이가 바로 보입니다.
지시에 내 인터뷰 인용이 들어가야 내 문서가 나옵니다. → 「패턴 1. 맥락 먼저」
실습 파트 (80분)
진행 순서
막히면 시연 자료를 보세요. 각 단계의 결과물이 어떤 모습이어야 하는지가 3주차 시연 자료에 그대로 들어 있습니다.
2주차 시연의 3조가 그대로 이어집니다 — 인사이트에서 POV·HMW·PRD·스토리까지 실제 문장으로 들어 있습니다.
- (20분) 후보 3개 → 1개: 내 후보를 나란히 놓고 근거 강도로 고릅니다. 인용이 몇 명에게서 나왔는지가 기준입니다
- (20분) POV·HMW 확정: 문제 정의서 작성
- (20분) PRD 초안: AI로 PRD 골격 생성 후, 「3. 사용자 시나리오」 절은 직접 다시 쓰기
- (20분) AI 반박 실습 ← 이번 주 필수
AI 반박 실습 (필수)
일단 각자 자기 문제 정의를 AI에게 넣고 이렇게 요청합니다.
이 문제 정의의 약점을 3가지 지적해줘.
특히 '우리가 근거 없이 가정하고 있는 것'을 찾아줘.
좋게 말하지 말고 냉정하게 평가해줘.
그리고 수용한 것 1개 / 반려한 것 1개를 고릅니다. 각각 왜 그렇게 정했는지를 옆 사람에게 말로 설명하되, 따로 제출할 것은 없고 반려한 것만 이번 주 AI 사용 로그의 «반려 기록»에 적으면 됩니다.
말이 막히면 그 문제는 아직 내 것이 아닙니다.
개인별 코칭 (50분)
1인당 6~7분씩입니다. 아래 네 질문을 받으니 미리 답을 준비해 오시기 바랍니다.
- 이 사용자를 몇 명이나 실제로 만났나요?
- 이 문제를 겪지 않는 사람은 누구예요? 왜 안 겪죠?
- 지금 사용자들은 이 문제를 어떻게 버티고 있나요?
- 15주차에 무엇이 관찰되면 성공한 건가요?
4번에 "많은 사람이 좋아하면요"는 답이 아니니, 무엇이 몇 번 관찰되면 성공인지로 씁니다.
다음 주 서식
[4주차 모임 전까지]
1. 작업 — 유사·경쟁 서비스 3건 이상 조사표
- 무엇이 있고 / 어떻게 쓰이고 / 왜 부족한가
- AI가 알려준 사례는 반드시 원 출처 URL을 직접 열어 확인할 것
확인하지 않은 사례를 쓰면 해당 항목은 0점으로 봅니다
2. 작업 — 필요 기술 리스트업 (모르는 것 위주로)
3. 개인 작업 — AI 사용 로그
※ 아이디어 발산은 4주차 모임에서 그 자리에 합니다. 미리 만들어 올 것이
아니라, 위에서 고른 HMW 질문을 가지고 와서 함께 펼칩니다.
※ 4주차 모임에서 주제 승인 심사가 있습니다. 통과해야 5주차로 넘어갑니다.
제출 형식
서식 제출 페이지에서 «선행사례 조사표» 선택 — 3건 이상을 한 건으로 제출합니다.
동네장터 — 선행사례 조사표 (3건 중 2건)
| # | 이름 | 무엇을 하는가 | 어떻게 쓰이나 | 왜 부족한가 | 출처 URL | 직접 확인 |
|---|
| 1 | 당근마켓 채팅 | 앱 안에서 1:1 대화 | 약속을 여기서 주고받음 | 결국 사람이 먼저 제안해야 함. P1 05:27 "사흘 동안 그러다가 그쪽이 그냥 안 읽더라고요" | (실제 URL) | ☑ |
|---|
| 2 | 네이버 캘린더 공유 | 일정 공유 | 만날 시간을 맞출 때 | 모르는 사람과 캘린더를 트지는 않음. P3 05:21 "그걸 말하면 까다로워 보이니까" | (실제 URL) | ☑ |
|---|
직접 써 본 것
- 당근마켓 / 40분 / 좋았던 점: 이미 다 쓰고 있음 / 불편했던 점: 누가 먼저 말할지를 앱이 정해 주지 않음
우리가 다르게 할 지점
- 협상을 시키지 않는다. 양쪽이 미리 고른 것에서 겹치는 것만 보여 준다
"왜 부족한가"에 우리 인터뷰 근거를 넣은 것이 핵심인데, 일반적인 단점 나열은 조사가 아닙니다.
주차별 진행워크샵
4주차 Ideate · 주제확정
4주차 · Ideate — 발산·수렴과 주제 확정
이번 주에 남길 것 하나 — 탈락시킨 대안과 그 이유를 말할 수 있는 상태로 주제를 확정하는 것.
이번 주는 게이트입니다. 여기를 통과하지 못하면 5주차로 넘어가지 않습니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 30분 | 강의 — 발산 규칙, 수렴 기준, 출처 검증 |
|---|
| 60분 | 실습 — 발산·수렴 워크샵 |
|---|
| 60분 | 주제 확정 심사 (1인당 10분) |
|---|
| 20분 | 교차 검토 — 옆 사람 주제를 반박 |
|---|
강의 파트 (30분)
다룰 내용
- 발산 규칙: 비판 금지, 양이 질을 만든다, 남의 아이디어에 올라타기
- 수렴 기준: 임팩트 / 실현 가능성 / 우리만의 차별점
- 출처 검증 3단계: 출처를 묻는다 → 직접 연다 → 원문을 확인한다
핵심
발산은 AI, 수렴은 사람.
AI는 30개를 5분에 만듭니다. 하지만 "내 프로젝트가 15주 안에 할 수 있는 것"은 AI가 모릅니다.
첫 번째 아이디어를 그대로 가져가기가 참 쉽습니다. 고른 것이 아니라 그냥 남은 것입니다. 탈락 대안을 설명하지 못하면 그것은 선택이 아니라 관성입니다. (버린 것이 없으면 고른 것도 없습니다.)
이번 주 AI 함정 — 없는 출처 만들기
"이 분야 논문 3편과 링크"를 시키면 링크가 나오는데, 그 링크를 실제로 클릭해 봅니다. (제목도 저자도 그럴듯하게 붙어 있어서 그냥 믿고 싶어집니다.)
몇 개는 아예 안 열립니다. 열리는 것도 전혀 다른 글인 경우가 있지요.
그 순간을 여러분들이 직접 한 번 겪어보시는 것이 이번 주의 요점입니다.
주의URL은 직접 엽니다. 열어보지 않은 사례는 조사표에서 그 자리에 지웁니다.
실습 파트 (60분)
참고아이디어는 여기서 만듭니다. 미리 만들어 오지 않으셔도 됩니다.
여러분들이 가지고 오실 것은 3주차에 고른 HMW 질문 하나뿐입니다. 그것이 오늘 발산의 과녁입니다.
진행 순서
- (15분) 혼자 발산: 3주차에 고른 HMW 질문에 대한 답을 30개씩 만듭니다. (여기에서는 절대 비판도 실현 가능성도 아직 따지지 않습니다.)
- (10분) 발산 추가: AI에게 그냥 시키면 이미 나온 것과 비슷하니 조건을 걸어야 합니다. (예: "내가 생각 못 했을 접근으로 10개 만들어 줘")
- (10분) 그룹핑: HMW 질문에 대한 답 40개 안팎을 성격별로 묶습니다.
- (15분) 수렴: 임팩트와 실현 가능성의 2×2 매트릭스로 만들어 후보 3개를 최종 선택합니다.
서식 사이트 «아이디어 찾기»에서 이 순서를 그대로 따라 하면(혼자 30개 → AI 발산 추가 → 묶기 → 2×2 → 후보 3개 → 방향과 탈락 이유) 결과가 문제 정의서 «아이디어 선정» 칸에 들어갑니다. 문제 정의서를 다시 내면 주제 확정 심사와 1차 발표 «아이디어 선정 과정»에 쓰입니다.
- (10분) 선정 근거서: 왜 이것을 골랐고, 왜 나머지 2개는 버렸는지 씁니다.
점검 항목
- 접근 다양성: 후보 3개가 서로 다른 접근인가? (같은 것의 변형 3개면 발산 실패)
- 선정 근거: 선정 근거가 "이게 제일 재밌어서"가 아닌가?
- 크기: 15주 안에 만들 수 있는 크기인가?
주제 확정 심사 (60분 · 1인당 10분)
각자 3분 발표하고 7분간 질의를 받는데, 아래 질문 중 3~4개가 나갑니다. (어느 것이 나올지는 미리 알려드리지 않습니다. 6개를 전부 준비해 오시기 바랍니다.)
발표 필수 항목
- 문제 정의 (POV 한 문장)
- 선정한 해결 방향
- 탈락시킨 대안 2개와 탈락 이유
- 15주차 성공 지표
심사 질문 (1인당 3~4개)
| # | 질문 | 확인하려는 것 |
|---|
| 1 | 이 사용자를 몇 명 만났나요? 가장 예상을 깬 사람은? | 근거의 실재 |
|---|
| 2 | 탈락시킨 것 중 가장 아까운 건 뭐고 왜 버렸나요? | 수렴이 판단이었는가? |
|---|
| 3 | 이미 이걸 하고 있는 서비스는 왜 부족하죠? | 선행 조사의 깊이 |
|---|
| 4 | 이 중 가장 만들기 어려운 부분은? 만들 수 있다고 보는 근거는? | 기술 리스크 인식 |
|---|
| 5 | 이번 과정에 하지 않을 것 세 가지는? | 스코프 통제 |
|---|
| 6 | 15주차에 무엇이 측정되면 성공인가요? | 지표의 구체성 |
|---|
판정
| 판정 | 기준 | 조치 |
|---|
| 승인 | 사용자 근거 있음 + 스코프 현실적 + 탈락 근거 설명 가능 | 5주차 진행 |
|---|
| 조건부 승인 | 방향은 맞으나 스코프 과대 | 이번 주 안에 축소안 제출 |
|---|
| 보류 | 근거 없음 또는 해결책부터 시작 | 이번 주 내 재심사. 필요하면 3주차로 되돌립니다 |
|---|
보류는 벌이 아니라 보호입니다. 지금 며칠 늦는 편이 13주차에 갈아엎는 것보다 훨씬 쌉니다.
여기서 그냥 넘어간 문제는 13주차에 큰 비용으로 돌아옵니다. (그때는 고칠 시간 자체가 없습니다.)
교차 검토 (20분)
혼자 하는 프로젝트일수록 외부 시선이 귀합니다. 내 주제는 내가 오래 들여다볼수록 이상한 데가 잘 안 보이더군요. 옆 사람 주제를 반박하는 것이 이번 작업입니다. (칭찬은 하지 않습니다.)
| 시간 | 진행 |
|---|
| 5분 | 옆 사람의 문제 정의서·선행사례 조사표를 읽습니다 |
|---|
| 5분 | 반박 3개를 씁니다 |
|---|
| 8분 | 서로 반박을 제시하고 답변합니다 |
|---|
| 2분 | 각자 오늘 수정할 것 1가지를 말합니다 |
|---|
반박은 이렇게 쓰시면 됩니다
| 유형 | 형태 |
|---|
| 근거 | 이 인사이트는 몇 명에게서 나왔나요? 한 명 말이면 개인 사정 아닌가요? |
|---|
| 스코프 | 이걸 15주에 만들 수 있다고 보는 근거가 뭔가요? |
|---|
| 대안 | 이미 ○○가 하고 있는데 왜 부족하다고 보나요? |
|---|
핵심반박을 잘 받는 것도 훈련입니다. 그 자리에서 답하려 하지 마시고 그냥 받아 적으시기 바랍니다.
여기서 막은 반박은 7주차 발표에서 그대로 다시 나옵니다. (지금 적어 두신 것이 그때 쓸 답입니다.)
다음 주 서식
[5주차 모임 전까지]
1. 사용자 플로우 초안
- 사용자가 진입해서 목표를 이루기까지의 화면 이동 순서
2. 필요 화면 목록
- 화면 이름 + 그 화면의 목적 한 줄
3. 개인 작업 — AI 사용 로그
4. (선택) Figma를 쓰고 싶다면 Figma 교육 요금제 학생 인증 신청
- 인증에 시간이 걸립니다. 5주차 목업은 Google 계정만 있으면 되는 Google Stitch가 기본입니다
마감: 모임 전날 자정
제출 형식
서식 제출 페이지에서 «플로우·화면 목록» 선택 — 핵심 경로·화면·빈 상태를 함께 제출합니다.
글로 적지 않고 화면 지도로 그립니다: 핸드폰 · 웹 중 화면 모양을 고르고, 필요한 화면을 카드로 놓은 뒤 카드 오른쪽 ●를 끌어 다음 화면에 놓아 화살표로 잇습니다 — 한 화면에서 기능마다 갈라지는 길도 모두 그립니다. 기능마다 사용자가 보통 지나는 메인 흐름(카드의 ☆ 차례)과 무언가 잘못됐을 때 가는 예외 흐름(나머지 화살표)을 나누고, 이 서비스의 핵심 기능을 ★로 고릅니다 — 핵심 기능의 메인 흐름이 발표 시연 · 사용성 테스트 순서가 됩니다. 카드마다 목적 · 관련 FR과 «비었을 때 · 실패했을 때» 쪽지를 붙입니다. 서식 안이 좁으면 크게 그리기 ↗로 새 창을 열어 넓은 판에서 그립니다 — 왼쪽 도구함에서 화면 · 쪽지를 끌어다 놓고, 고친 것은 서식에 바로 들어갑니다.
동네장터 — 화면 목록과 빈 상태
핵심 경로 (1개)
진입 → 거래 열기(링크 공유) → 시간 고르기 → 약속판 확인
| # | 화면 이름 | 이 화면의 목적 | 관련 FR |
|---|
| 1 | 거래 참여 | 공유 링크로 거래에 들어온다 | FR-01 |
|---|
| 2 | 약속판 | 상대·상태·겹치는 시간을 한눈에 본다 | FR-03 |
|---|
| 3 | 시간 고르기 | 30초 안에 만날 수 있는 시간 3개를 고른다 | FR-02 |
|---|
빈 상태·에러 화면
| 상황 | 무엇을 보여줄 것인가 |
|---|
| 고른 시간 0건 | "아직 고른 시간이 없어요" + 시간 고르기 버튼 |
|---|
| 로딩 중 | 약속판 골격만 먼저 표시 |
|---|
| 공유 링크 만료 | 만료 안내 + 판매자에게 재발급 안내 |
|---|
화면 3개짜리 목록이 정상이고, 10개가 넘으면 스코프가 넓은 것입니다.
빈 상태 표는 비워 두지 말고 채웁니다. 13주차 데모에서 데이터가 없거나 실패했을 때의 화면도 보여 줘야 합니다. (비워 두고 넘어가기 제일 쉬운 칸입니다.)
주차별 진행워크샵
5주차 Prototyping I
5주차 · Prototyping I — UX 프로토타입
이번 주에 남길 것 하나 — 화면으로 설명할 수 있는 상태가 되는 것. 말로 설명하던 것을 눈에 보이게 만드는 주입니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 30분 | 강의 — 충실도, 플로우, 정보구조 |
|---|
| 80분 | 실습 — 목업 3사이클 |
|---|
| 60분 | 수강자 간 상호 시연 + 코칭 |
|---|
강의 파트 (30분)
다룰 내용
- 저충실도 → 고충실도: 왜 손그림부터 시작하는가?
- 사용자 플로우: 화면이 아니라 이동을 먼저
- 정보구조: 한 화면에 하나의 목표
- 빈 상태·에러 상태: 가장 자주 빠뜨리는 화면
핵심
싸게 만들고 빨리 버립니다. 공들여 만든 것은 아까워서 못 버리게 되고, 못 버리면 사용자 피드백을 무시하게 됩니다.
빈 상태를 반드시 그립니다. 데이터가 하나도 없을 때, 로딩 중일 때, 에러일 때. 즉, 아무것도 없거나 잘못된 상황의 화면들입니다. 가장 자주 빠뜨리는 세 화면이라, 지금 정해 두면 13주차 라이브 데모를 준비하기 쉽습니다.
이번 주 AI 함정 — 맥락 유실
목업을 대화로 5~6턴 고치다 보면, 앞에서 정한 제약(사용자·화면 개수·톤)을 슬며시 잊고 다른 것을 만들어내는 지점이 옵니다.
대화가 길어지면 새 대화를 열고 맥락을 다시 넣습니다. 같은 대화에서 계속 고쳐 달라고 하는 편이 오히려 느립니다.
실습 파트 (80분)
진행 순서 — 3사이클 반복
| 사이클 | 시간 | 할 일 |
|---|
| 1 | 20분 | 손그림 와이어프레임 (종이). 도구 금지 |
|---|
| 2 | 30분 | AI로 목업 생성 → 내 비평 → 수정 |
|---|
| 3 | 30분 | 클릭 가능한 흐름으로 연결 (핵심 경로 1개만) |
|---|
1사이클을 종이로 하는 이유는, 도구를 먼저 잡으면 화면을 예쁘게 만드느라 흐름을 안 보기 때문입니다.
2사이클 도구 — AI 목업 생성
기본은 Google Stitch, 막히면 쓰던 AI의 캔버스로. 30분 안에 가입·사용법 익히기에 시간을 쓰면 비평·수정 사이클이 사라지므로, 도구는 하나로 통일합니다.
| 도구 | 좋은 점 | 주의할 점 | 권장 |
|---|
| Google Stitch (Google Labs) | 설치·결제 없이 Google 계정만 있으면 됩니다. 1사이클 손그림 사진을 올리면 화면으로 만들어 줍니다. 여러 화면을 한 번에 만들고 화면을 이어서 클릭 프로토타입으로 재생할 수 있어 2·3사이클을 한 도구로 끝냅니다. Figma 붙여넣기·HTML 코드 내보내기 지원 | 실험 서비스(Labs)라 정책이 바뀔 수 있습니다. 하루 크레딧 제한이 있습니다 | ★ 기본 |
|---|
| ChatGPT·Gemini·Claude의 캔버스/아티팩트 | 이미 쓰는 AI로 추가 가입 없이 HTML 클릭 목업을 만들고 링크로 공유합니다 | 디자인이 비슷비슷해지기 쉽고, 대화가 길어지면 앞의 제약을 잊습니다 (이번 주 AI 함정 «맥락 유실») | ★ 대안 |
|---|
| Figma (교육 요금제) + Figma Make | 학생 인증을 하면 Professional 요금제가 무료이고 Make와 AI 크레딧이 포함됩니다. 이후 디자인·발표까지 이어 쓰기 좋습니다 | 학생 인증에 시간이 걸리므로 4주차에 미리 신청해야 합니다. 도구를 익히는 부담이 큽니다 | 디자인에 관심 있는 수강자 |
|---|
| Uizard / Visily | 손그림 스캔에 특화 — 종이 스케치를 디지털 와이어프레임으로 바꿉니다 | 무료 범위가 제한적입니다 (Visily가 조금 넉넉함) | 선택 |
|---|
| Lovable · Bolt · v0 같은 앱 빌더 | 실제 동작하는 앱이 나옵니다 | 이번 주 목적(싸게 만들고 빨리 버린다)과 맞지 않습니다. 코드가 생기면 버리기 어렵고 무료 크레딧도 금방 씁니다 | 이번 주에는 쓰지 않습니다 (6주차 PoC 이후 고려) |
|---|
핵심목업 요청은 직접 쓰지 않아도 됩니다. 서식 제출 페이지 «AI 구현 요청 → 목업 요청» 탭에, 4주차에 낸 «플로우·화면 목록»(핵심 경로·화면·빈 상태)과 PRD의 한 줄 설명·타깃으로 만든 요청문이 있습니다. Stitch용과 채팅형 AI용(HTML 한 파일 클릭 목업) 중 하나를 복사해 붙여 넣고, 1사이클 손그림 사진을 함께 올리세요. 목록에 없는 화면을 AI가 멋대로 늘리지 않습니다.
📤 다 만든 목업은 링크로 냅니다. 모임이 끝나기 전에 «화면 목업» 서식에서 쓴 도구를 고르고 그 도구의 공유 링크를 아래 점검 · 상호 시연 기록과 함께 냅니다. 캡처해서 올릴 필요가 없습니다.
- Google Stitch — 담당 교수자 계정에 프로젝트를 공유하면(계정은 서식에 나옵니다) 화면 사진까지 교수자 화면에 저절로 모이고, 6시간마다 새로 가져오므로 고친 화면을 다시 낼 필요가 없습니다
- ChatGPT · Gemini · Claude 캔버스, Figma, 그 밖의 도구 — 로그인 없이 열리는 공유 링크를 넣습니다 (Figma는 «링크가 있는 누구나 볼 수 있음»)
- 고를 수 있는 도구는 담당 교수자가 강의마다 정합니다
주의무료 범위·요금제는 자주 바뀝니다. 위 표는 2026년 9월 기준입니다.
표의 근거 자료
점검 항목
- 경로 길이: 핵심 경로가 3~5화면 안에 끝나는가? (길면 문제 정의가 넓은 것)
- 빈 상태: 빈 상태 화면이 있는가?
- 시나리오 일치: 목업이 3주차 사용자 시나리오와 일치하는가?
상호 시연 (60분)
일단 둘씩 짝지어, 아무 설명 없이 상대에게 목업을 조작하게 합니다.
- 침묵: 만든 사람은 한 마디도 하지 않습니다
- 막힘 기록: 조작하는 사람이 막히는 지점을 기록합니다
- 역할 교대: 3분 뒤 역할을 바꿉니다
이것이 사용성 테스트의 축소판이라, 13~14주차에 할 일을 지금 미리 해보는 것입니다.
"설명하고 싶은데 설명할 수 없는" 경험이 이 시간의 핵심인데, 실제 사용자 앞에서도 똑같습니다.
다음 주 서식
[6주차 모임 전까지]
1. 기술 리스크 상위 2개 선정
- "이게 안 되면 프로젝트가 무너진다" 순으로
- 안 되면 무엇이 무너지는지 한 줄씩
2. ★ 개발 환경 세팅 완료 (필수)
- 리스크 2개와 관련된 API 키 발급, 계정 생성, 라이브러리 설치
- 'Hello World' 수준이라도 실행되는 상태까지
- 제출 서식은 없습니다. 6주차 모임 시작 때 실행 화면으로 확인합니다
3. 개인 작업 — AI 사용 로그
※ 2번을 안 해오면 6주차 모임(집중 코딩)에 참여할 수 없습니다.
세팅은 모임 시간에 하는 일이 아닙니다.
제출 형식
서식 제출 페이지에서 «리스크 리포트» 선택 — 리스크 2개를 제출합니다. 6주차 모임에서 검증한 결과는 같은 서식을 열어 채운 뒤 다시 제출합니다.
동네장터 — 리스크 리포트
리스크 1: 링크 하나로 상대를 끌어들일 수 있는가 (로그인 없이)
- 이게 안 되면: 4주차에 정한 핵심 경로(거래 열기 → 링크 공유 → 약속판)가 통째로 무너짐
- 확인 방법: 링크만으로 상대가 시간을 고르는 데까지 5명에게 시켜 보고, 중간에 막히는 사람이 없는지 센다
- 검증 상태: ☐ 미검증
리스크 2: 겹치는 시간이 0건일 때 무엇을 보여 줄 것인가
- 이게 안 되면: P3 05:06 "아무 데나 괜찮아요"가 그대로 재현됩니다 — 화면이 도로 협상을 시킵니다
- 확인 방법: 양쪽이 고른 시간이 안 겹치는 경우를 만들어, 다음에 무엇을 누르게 되는지 본다
- 검증 상태: ☐ 미검증
"이게 안 되면" 칸이 핵심인데, 프로젝트가 무너지지 않는 항목은 리스크가 아니라 그냥 할 일입니다.
캠퍼스 캡션 — 기술이 성패를 가르는 프로젝트라면
같은 서식이어도 프로젝트 종류가 다르면 리스크 자리가 완전히 달라집니다.
(문제 정의서의 둘째 예제입니다.)
리스크 1: 실시간 자막 지연이 목표(1.5초) 안에 들어오는가
- 이게 안 되면: 수업 중 참여라는 문제 정의 자체가 무너짐
- 확인 방법: 3분 강의 녹음으로 발화→표시 지연을 20회 측정, 평균 1.5초 이하
- 검증 상태: ☐ 미검증
리스크 2: 전공 용어 인식률
- 확인 방법: 실제 강의 10분 샘플의 용어 오인식 비율
- 검증 상태: ☐ 미검증
동네장터는 기술 난이도가 낮고 사람의 마음이 핵심이라 리스크가 «화면이 도로 협상을 시키는가» 에 있고,
캠퍼스 캡션은 문제가 명확한 대신 기술이 프로젝트를 가릅니다. 내 프로젝트가 어느 쪽인지 먼저 정하세요.
주차별 진행코칭
6주차 Prototyping II
이번 주에 남길 것 하나 — "이건 된다"와 "이건 아직 모른다"를 구분할 수 있게 되는 것.
강의는 짧게, 코딩과 코칭에 시간을 쓰는 주입니다.
| 시간 | 활동 |
|---|
| 15분 | 사전 확인 + 오늘의 목표 선언 |
|---|
| 25분 | 강의 — 리스크 스파이크와 타임박싱, AI 디버깅 |
|---|
| 100분 | 집중 코딩 스파이크 (교수자 순회 코칭) |
|---|
| 40분 | 결과 공유 + 리스크 리포트 작성 |
|---|
강의 파트 (25분)
다룰 내용
- 가장 불확실한 것부터 죽여라: 쉬운 것부터 하면 어려운 것이 12주차에 남습니다
- 타임박싱: 오늘 3시간 안에 답이 안 나오면, 그것 자체가 답(대안으로 전환)
- AI 디버깅 3단: 재현 → 최소화 → 가설
핵심
"고쳐줘"라고 하면 AI는 추측으로 코드를 바꿉니다. 그러면 원인을 모른 채 넘어가고, 같은 버그가 형태를 바꿔 다시 옵니다.
바로 코드를 고치지 말고, 먼저 이 에러가 발생할 수 있는 원인을
가능성 높은 순서로 3가지 알려줘. 그리고 각 가설을 확인하는 방법도.
- 2시간 규칙: 같은 버그로 2시간 이상 AI와 씨름했다면 멈추고 강의 채널에 올려 주시기 바랍니다. 그 시점부터는 AI가 아니라 접근 방식이 틀린 것 같습니다.
이번 주 AI 함정 — 없는 함수 만들기
여러분이 쓰는 라이브러리의 사용법을 구체적으로 물어보면, 존재하지 않는 메서드나 옵션을 자신 있게 알려주는 경우가 흔합니다.
공식 문서와 나란히 놓고 대조합니다. 처음 쓰는 라이브러리일수록 더 그렇습니다.
집중 코딩 (100분)
시작 전 (5분)
일단 각자 강의 채널에 한 줄로 선언합니다.
오늘 우리는 [___]가 가능한지 확인한다.
성공 기준: [___]가 화면/로그에 나오면 성공.
이 선언이 없으면 3시간 뒤 "뭔가 했는데 뭘 확인했는지 모르겠다"가 됩니다.
순회 코칭 (1인당 10~12분씩 2회전)
교수자가 두 번 돌며 아래를 물으니, 미리 답을 준비해 두세요.
1회전 — 방향 점검
- 지금 만드는 게 리스크 검증인가요, 아니면 편한 기능인가요?
- 성공 기준이 관찰 가능한가요?
2회전 — 막힘 해소
- 2시간 규칙을 지키고 있나요?
- AI에게 뭐라고 시켰는지 프롬프트를 그대로 보여주세요 — 막히는 경우는 대개 맥락이 빠져 있습니다
결과 공유 (40분)
각자 3분씩, 성공/실패 상관없이 공유합니다.
| 발표 항목 | |
|---|
| 검증된 것 | 이제 확실히 된다고 말할 수 있는 것 |
|---|
| 여전히 불확실한 것 | 오늘 못 밝힌 것 |
|---|
| 방향 전환 | 안 된다는 걸 알아서 바꾸기로 한 것 |
|---|
"안 된다는 것을 알아낸 것"도 성과입니다. 실패한 스파이크는 실패가 아니라 가장 값싼 학습입니다. 이것을 공개적으로 인정해야 13주차까지 정직한 보고가 이어집니다.
다음 주 서식
[7주차 1차 발표 준비]
1. 발표자료 (10분 분량)
필수 포함:
- 우리가 만난 실제 사용자와 인사이트
- 문제 정의(POV) — 왜 이 문제인가
- 아이디어 선정 과정과 탈락시킨 대안
- 프로토타입 시연 (슬라이드 설명 아님)
- 기술 리스크: 검증된 것 / 아직 불확실한 것
2. 데모 시나리오
- 무엇을 어떤 순서로 보여줄지 대본
3. 리허설 1회 + 녹화 영상 제출
- 10분 안에 끝나는지 실제로 재보세요
마감: 모임 전날 자정
※ 발표 후 코드/문서 무작위 선택 설명이 있습니다.
제출 형식
따로 제출하는 서식이 없습니다 (2026-10부터 «발표 구성서» 폐지). 서식 제출 페이지의 «자동으로 만들기 → 발표 자료» 에서 「1차 발표」를 고르면 슬라이드 순서가 자동으로 잡힙니다. 직접 적는 것은 두 가지 — 시연(보여줄 것·조작 순서) 과 시연이 실패하면 — 뿐이고, 적으면 자동으로 저장되어 PPT에 들어갑니다. 리허설 영상은 발표 모임에 가지고 옵니다.
동네장터 — 1차 발표 자료 (순서는 자동 · 시연 두 칸만 입력)
| 순서 | 내용 | 시간 |
|---|
| 1 | 내가 만난 P1·P2·P3 와 인사이트 3개 | 2분 |
|---|
| 2 | 문제 정의(POV)와 왜 이 문제인가 | 2분 |
|---|
| 3 | 아이디어 선정 과정 · 탈락시킨 2개 | 2분 |
|---|
| 4 | 프로토타입 시연 | 3분 |
|---|
| 5 | 검증된 것 / 아직 불확실한 것 | 1분 |
|---|
시연 — 보여줄 것·조작 순서 (직접 입력)
| # | 보여줄 것 | 조작 순서 | 준비물 |
|---|
| 1 | 거래 등록 → 약속판 반영 | 목업에서 3화면 이동 | 샘플 데이터 3건 미리 입력 |
|---|
| 2 | 겹치는 시간 0건 화면 | 새 거래로 진입 | 빈 테스트 계정 |
|---|
시연이 실패하면 (직접 입력): 미리 녹화한 30초 화면 재생 (발표자료 마지막 장에 삽입)
리허설 기록: 2026-XX-XX / 실제 12분 20초 / 3번 항목에서 2분 초과 → 탈락 대안 설명을 1개로 축약
리허설에서 시간을 재 보지 않으면 대부분 초과합니다.
이번 주에 남길 것 하나 — 각자 다음 8주를 어디에 쓸지 명확해진 상태로 나가는 것.
참고발표 자료 — 서식 제출 페이지 «발표 자료»에 1차 발표 슬라이드 재료가 루브릭 필수 항목 순서로 모여 있습니다. «개요 복사»를 누르고 파워포인트 [보기 → 개요]에 붙여 넣으면 끝입니다. 슬라이드가 한 번에 만들어집니다.
발표는 심사가 아니라 방향 교정입니다. 오늘 받은 지적 가운데 무엇을 받아들이고 무엇을 흘려보낼지가 남은 8주를 어디에 쓸지 그대로 정해 줍니다.
| 시간 | 활동 |
|---|
| 10분 | 진행 안내, 평가지 배포 |
|---|
| 90분 | 1인당 발표 10분 + 질의 5분 |
|---|
| 60분 | 교차 리뷰 — 서로의 산출물을 읽고 서면 리뷰 작성·교환 |
|---|
| 20분 | 총평 + 다음 단계 안내 |
|---|
6명이 각자 발표하는 기준으로 짠 시간표인데, 발표 자체가 곧 개인 단위 확인이라 따로 라운드를 두지 않습니다.
진행 방법
순서
- 발표 10분 (8분에 1차 알림, 10분에 종료)
- 동료 질문 2분: 수강자가 먼저 묻습니다
- 교수자 질문 3분
발표자를 제외한 5명은 질문 1개씩을 미리 준비해 옵니다.
평가
- 채점: 1차 발표 루브릭으로 채점합니다
- 상호 평가지: 모든 수강자는 상호 평가지 A파트를 발표를 들으며 작성합니다
- 익명 전달: 상호 평가는 평가자 이름을 지우고 발표자에게 전달됩니다
미리 알아두는 감점
| 항목 | 감점 |
|---|
| 발표자료 미제출 | -10 |
|---|
| 리허설 영상 미제출 | -10 |
|---|
| 상호 평가지에 "수고하셨습니다"만 적은 경우 | 미제출 처리 |
|---|
질의응답
| # | 질문 | 확인하려는 것 |
|---|
| 1 | 인터뷰 대상자 중 예상을 가장 많이 깬 사람은 누구고 왜였나요? | 데이터를 실제로 읽었는가? |
|---|
| 2 | 이 문제를 겪지 않는 사람은 누구예요? | 문제 경계의 이해 |
|---|
| 3 | 탈락시킨 아이디어 중 가장 아까운 건? 왜 버렸죠? | 수렴이 판단이었는가? |
|---|
| 4 | 지금 사용자들은 이 문제를 어떻게 버티고 있나요? | 대안 조사의 깊이 |
|---|
| 5 | 프로토타입에서 가장 확신이 없는 부분은? | 리스크 인식 |
|---|
| 6 | 15주차에 무엇이 관찰되면 성공인가요? | 지표의 구체성 |
|---|
| 7 | AI가 준 것 중 반려한 것이 있나요? 왜요? | 팀장으로서의 판정 |
|---|
7번은 이 강의의 시그니처 질문입니다. 매 발표마다 최소 한 사람은 받습니다.
여러분이 팀장이고 AI가 팀원인 이상, 무엇을 만들게 했는지보다 무엇을 되돌렸는지가 팀장으로서 한 일이기 때문입니다.
교차 리뷰 (60분)
| 시간 | 진행 |
|---|
| 20분 | 옆 사람의 문제 정의서·PRD·리스크 리포트를 읽습니다 |
|---|
| 25분 | 서면 리뷰를 작성해 교환합니다 |
|---|
| 15분 | 받은 리뷰에서 수용 2건 / 반려 1건을 정합니다 |
|---|
서면 리뷰에 담을 것은 셋입니다. 예를 들어 이런 식이면 됩니다.
| 항목 | 내용 |
|---|
| 가장 설득력 있었던 것 | 왜 그렇게 느꼈는지 함께 |
|---|
| 가장 약한 근거 | 어느 문장이 근거 없이 단정하는가? |
|---|
| 8주 안에 못 끝날 것 같은 것 | 그렇게 보는 이유 |
|---|
여기서 정한 수용·거부가 그대로 9주차 스프린트 계획 «1차 발표 피드백 반영» 표의 재료가 되니, 왜 그렇게 정했는지까지 함께 적어 두면 다음 주에 같은 고민을 두 번 하지 않습니다.
정리 (20분)
오늘 발표 전체에서 자주 나온 유형을 이름 없이 짚습니다. 대개 아래 넷입니다.
| 유형 | 무슨 뜻인가? |
|---|
| 근거 없는 문제 정의 | 사용자를 만났다는데 발표에 인용이 한 줄도 없음 |
|---|
| 스코프 과대 | 8주 남았는데 발표한 기능 전부를 만들 계획 |
|---|
| 해결책부터 시작 | 문제가 아니라 만들 것부터 정함 — 지금이 마지막 수정 기회 |
|---|
| 리스크 미인식 | "어려운 건 없다"고 답함. 가장 위험한 상태입니다 |
|---|
다음 8주는 설계 → 구현 → 검증입니다. 속도는 8·9주차에 갈립니다. 여기서 정한 아키텍처와 백로그를 들고 남은 기간을 전부 달리게 되니까요.
다음 주 서식
[8주차 모임 전까지]
1. 피드백 정리 (따로 제출하지 않습니다)
- 오늘 받은 지적 중 무엇을 수용하고 무엇을 거부할지
- 거부한 것은 이유를 쓸 것 (수용만 있으면 반려)
- ※ 9주차 스프린트 계획 «1차 발표 피드백 반영» 표에 담아 냅니다
2. 아키텍처 대안 3개 조사
- AI에게 "우리 요구사항에 맞는 접근 3가지와 트레이드오프"를 시키고
- 각 대안의 장단점 + 내 프로젝트 상황에서의 적합도를 정리
- ※ 결정은 하지 말 것. 8주차 모임에서 함께 결정합니다
- ※ 따로 제출하지 않습니다. 8주차에 ADR-0001 «검토한 대안»·«내 제약»으로 옮깁니다
3. 저장할 데이터 항목 전수 목록
- 화면에 보이는 것부터 역산해서 뽑을 것
- 개인정보 해당 여부 표시
- ※ 8주차에 ADR-0001 «저장할 데이터 항목» 표로 옮깁니다
4. 개인 작업 — AI 사용 로그
- 이번 주부터 세 칸: 무엇을 시켰나 · 무엇으로 검수했나 · 무엇을 왜 반려했나(5분)
마감: 모임 전날 자정
제출 형식
이번 주는 따로 내는 서식이 AI 사용 로그뿐입니다. 피드백 정리는 9주차 스프린트 계획의 «1차 발표 피드백 반영» 표로 냅니다(2026-10부터 «피드백 반영 계획서» 폐지 · 이미 낸 것은 스프린트 계획에 자동으로 옮겨집니다). 아키텍처 대안·데이터 항목은 조사만 해 오고 따로 내지 않습니다 — 8주차에 첫 ADR(ADR-0001)에 담아 냅니다.
동네장터 — 1차 발표 피드백 반영 (스프린트 계획 안의 표)
| # | 받은 지적 | 출처 | 수용/거부 | 이유 | 반영 시점 |
|---|
| 1 | 거래 등록 자체가 부담이라 아무도 안 쓸 것 | 교수자 | 수용 | 5명 중 3명이 같은 반응. 등록 단계를 2개로 줄인다 | 8주차 설계 |
|---|
| 2 | 알림 기능이 있어야 실효성이 있다 | 동료 | 거부 | 인터뷰에서 "알림이 더 부담"이라는 답이 나옴. 비목표로 유지 | — |
|---|
| 3 | 타깃을 대학생 전체로 넓혀라 | 동료 | 거부 | 넓히면 인터뷰 근거가 사라짐 | — |
|---|
거부 항목이 하나도 없으면 반려합니다. 받은 지적을 전부 수용했다는 건 하나하나 따져 보지 않았다는 뜻이니까요.
발표 진행 규칙
- 타이머를 화면에 띄웁니다. 모두에게 같은 화면 기준으로 적용됩니다
- 발표 순서는 추첨입니다. 순서에 따른 유불리를 없애기 위한 것입니다
- 채점 시점: 채점은 발표 직후 마무리됩니다
이번 주에 남길 것 하나 — "왜 그 기술을 선택했나요?"에 답할 수 있는 문서를 갖는 것.
15주차 발표에서 반드시 나오는 질문이고, 여기서 준비되지 않으면 그때는 늦습니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 40분 | 강의 — 아키텍처, 데이터 모델, API, ADR |
|---|
| 80분 | 실습 — 설계 결정 워크샵 |
|---|
| 50분 | 개인별 설계 리뷰 |
|---|
강의 파트 (40분)
다룰 내용
- 아키텍처 = 결정의 묶음: 그림이 아니라 결정입니다
- 데이터 모델링: 화면에서 역산하기, ERD
- API 설계: 경계를 먼저 정해야 병렬 작업이 됩니다
- ADR 쓰는 법: 대안 / 결정 / 결정적인 이유 / 포기한 것
핵심
① 결정에는 반드시 대가가 있습니다.
ADR에 "포기하는 것: 없음"이라고 썼다면 결정을 한 게 아니라 유일한 선택지를 받아적은 것입니다.
② 내 역량은 가장 중요한 제약입니다.
"이 언어를 써 본 적이 없다"는 부끄러운 게 아니라 핵심 설계 입력값입니다. 즉, 숨길 것이 아니라 적어야 할 것입니다. 첫 ADR(ADR-0001)의 «내 제약»에 솔직하게 쓰고, 결정의 근거로 쓰시면 됩니다.
③ AI는 대안 정리에 탁월합니다. 결정은 못 합니다.
AI에게 시킬 것: 대안 나열, 장단점 정리, 트레이드오프 비교
사람이 할 것: 우리 제약에서 무엇을 포기할지 결정
이번 주 AI 함정 — 동조 편향
이미 정한 스택을 AI에게 "이 선택 어때?"라고 물으면 대개 칭찬합니다. 물론, 정반대 선택을 제시하고 똑같이 물어도 칭찬합니다.
주의AI는 반대하지 않습니다. 반대는 명시적으로 시켜서 받아야 합니다. → 「패턴 3. 반박 요청」
실습 파트 (80분)
진행 순서
- (20분) 데이터 모델: 화면 목록에서 역산해 ERD 초안
- (20분) 아키텍처 결정: 대안 3개를 놓고 토론. AI에게 반박도 요청하기
- (25분) ADR-0001 작성: ADR 서식 — 7주차에 조사해 온 대안·데이터 항목은 ADR-0001에 옮겨 담습니다
- (15분) API 명세 초안: 모듈 경계와 시그니처
ADR 필수 1건 (더 쓰는 것은 선택)
| # | 영역 | 비고 |
|---|
| 1 | 아키텍처·데이터 결정 (ADR-0001) | 클라이언트-서버 경계, 어떤 DB를 왜. «내 제약»(역량·기간·예산)과 «저장할 데이터 항목» 표를 함께 적습니다 |
|---|
| (선택) | 가장 불확실한 것 | 더 쓰고 싶다면 6주차 리스크 리포트에서 "미해결"로 남은 항목을 고릅니다 |
|---|
7주차 «아키텍처 대안 조사»는 따로 내지 않습니다. 조사한 대안은 ADR-0001의 «검토한 대안» 표로 옮깁니다.
«저장할 데이터 항목»은 PRD 기능·플로우에서 뽑은 후보가 «확인 필요» 표시로 미리 채워져 있습니다. 확인하고 고쳐서 냅니다.
점검 항목
- 대안 수: ADR에 대안이 2개 이상 있는가? (1개면 결정이 아님)
- 포기한 것: "포기한 것"이 채워져 있는가? ← 가장 많이 비워둡니다
설계 리뷰 (50분)
일단 1인당 6분입니다. 화면에 다이어그램을 띄우고 아래 네 질문을 받습니다.
- 이 화면을 그리려면 어떤 데이터가 어디서 오나요?
- A 모듈과 B 모듈은 무엇을 주고받죠? 그 형식이 정해졌나요?
- 이 결정을 내리면서 무엇을 포기했나요?
- 이 설계에서 가장 먼저 문제가 생길 것 같은 곳은?
2번에 답을 못 하면 11주차 통합에서 모듈이 서로 맞지 않기 쉽습니다. 답이 막히면 그 자리에서 인터페이스를 종이에 적고 갑니다.
참고다음 주부터 브랜치·변경 요청으로 작업합니다. GitHub 협업 × AI 사용 가이드를 미리 훑어보세요.
다음 주 서식
[9주차 모임 전까지]
1. 백로그 전체를 이슈로 등록 (15개 내외)
※ 이슈 트래커가 없으면 스프레드시트 칸반으로 대체 (저장소 가이드 참조)
- 사용자 스토리 1개 = 이슈 1개
- 이슈 제목: [US-03] 상대와 겹치는 시간 확인
- 본문: As a / I want / So that + 인수조건 체크박스
- 인수조건에는 반드시 예외·빈 상태 케이스를 1개 이상 포함
2. 저장소 세팅
- 통합 브랜치 보호 (설정이 불가능하면 "직접 병합 금지"를 규칙으로)
- 브랜치 전략 확정 (이슈 하나 = 브랜치 하나, 통합 브랜치에 직접 커밋하지 않기)
- 이슈 라벨 생성: must / should / sprint-1,2,3
3. 개인 작업 — AI 사용 로그
※ 9주차 모임에서 CI를 구축합니다. 저장소가 비어 있으면 진행할 수 없습니다.
제출 형식
- 이슈 트래커(또는 칸반 보드): 스토리 1개 = 이슈 1개. 서식 전문은 서식 제출 서식.
동네장터 — 이슈 #14
제목: [US-03] 상대와 겹치는 시간 확인
**As a** 중고 물건을 파는 사람,
**I want** 상대에게 직접 묻지 않고 서로 가능한 시간이 겹치는 구간 보기,
**So that** 재촉하는 것처럼 보이지 않으면서 만날 시간을 정할 수 있다.
## 인수조건
- [ ] Given 양쪽이 가능 시간을 3개씩 골랐고, When 약속판에 진입하면,
Then 겹치는 시간이 이른 순서로 한 화면에 보인다.
- [ ] Given 겹치는 시간이 하나도 없으면, Then 다시 고르기 안내가 보인다.
- [ ] Given 작업이 0건이면, Then 빈 상태 안내와 추가 버튼이 보인다.
세 번째 인수조건(빈 상태)이 있고 없고가 10주차 구현 결과를 가릅니다.
이 이슈 본문을 그대로 AI 프롬프트로 쓸 수 있는지가 잘 쓴 이슈의 기준입니다.
이번 주에 남길 것 하나 — CI가 실제로 돌아가는 저장소를 갖는 것.
🤖 AI 구현 요청 — 서식 제출 페이지 «AI 구현 요청»에서 먼저 사용하는 AI(저장소에서 코드를 고치는 도구 / 채팅형 AI)를 고르세요. 어떤 AI든 쓸 수 있습니다. 코딩 도구라면 프로젝트 맥락 파일(AGENTS.md 등)을 저장소에 두고, 채팅형 AI라면 대화 시작 메시지를 먼저 보낸 뒤, 스토리 하나씩 구현 요청을 복사해 붙여 넣으면 됩니다. PRD·스토리·화면·ADR에 쓴 것이 그대로 들어갑니다. 막히면 같은 화면의 «디버깅 요청»을 쓰세요.
이 주가 남은 6주의 개발 속도를 결정합니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 40분 | 강의 — 백로그, DoD, 코드리뷰, CI |
|---|
| 80분 | 실습 — 스프린트 계획 + CI 구축 |
|---|
| 50분 | 실습 — 첫 리뷰 연습 |
|---|
강의 파트 (40분)
다룰 내용
- 백로그 분해: L짜리는 쪼갠다
- Definition of Done: 내가 정하는 "끝났다"의 기준
- 브랜치·변경 요청·코드리뷰: 리뷰가 형식이 되지 않으려면 → 이번 주부터 매주 쓰는 흐름입니다. GitHub 협업 × AI 사용 가이드를 함께 읽습니다
- CI: 린트와 테스트 자동 실행
핵심
AI가 쓴 코드를 믿는 방법은 자동화된 검증뿐입니다.
이 문장이 9주차의 전부입니다. 이미 AI로 코드는 빠르게 만들어집니다. 문제는 그게 맞는지 확인할 방법이 없다는 것이고, 그 방법이 테스트와 CI입니다. 즉, 코드를 만드는 속도가 아니라 확인하는 속도가 남은 6주를 결정합니다.
스토리를 쪼개는 능력 = AI를 잘 쓰는 능력임도 여기서 연결합니다.
- "쇼핑몰 만들어줘" → AI 실패
- 인수조건 3줄짜리 스토리 → AI 성공
- 즉, 9주차에 배우는 분해 능력이 10주차의 구현 속도를 결정합니다
이번 주 AI 함정 — 리뷰의 형식화
일단 관점을 안 주고 코드 리뷰를 시키면 "좋습니다" 수준의 답이 옵니다.
인수조건 충족 / 예외 처리 / 보안 / 가독성 으로 관점을 나눠 시키면 실제 지적이 나옵니다.
리뷰도 지시입니다. 지시가 부실하면 리뷰도 부실합니다.
실습 파트 (80분)
① 스프린트 계획 (30분)
스프린트 계획 서식을 채웁니다. 한 건만 냅니다 — Sprint 1을 자세히 쓰고, Sprint 2·3 목표는 «Sprint 2·3 목표»에 한 줄씩 적습니다. 스프린트가 바뀌면 같은 문서를 고쳐 다시 제출합니다.
- 이슈는 미리 채워져 있습니다. 사용자 스토리에서 가져온 이슈를 확인하고 고치면 됩니다
- «1차 발표 피드백 반영» 표도 이 서식 안에 있습니다 — 7주차에 정리한 받은 지적 · 출처 · 수용/거부 · 이유 · 반영 시점을 옮깁니다. 거부가 하나도 없으면 반려합니다 (옛 «피드백 반영 계획서»를 이미 냈다면 자동으로 옮겨져 있습니다)
| 스프린트 | 목표 |
|---|
| 1 (~10주차) | 핵심 기능 하나를 끝에서 끝까지 |
|---|
| 2 (~11주차) | 모듈 통합 |
|---|
| 3 (~12주차) | 품질·배포 |
|---|
주의Sprint 1에서 레이어별 분업을 하면 안 됩니다. 화면을 다 만든 뒤 API를 붙이려 하면 11주차에 안 붙습니다. 얇더라도 관통하는 경로 하나를 먼저 뚫습니다.
② Definition of Done 정하기 (15분)
프로젝트 계획서의 검수 기준으로 미리 채워져 있습니다. 확인하고 고칩니다. 최소 항목:
- 인수조건 충족 / 테스트 통과 / 자동 검증 통과 / 리뷰 짝 확인 /
main 병합 - 내가 코드를 설명할 수 있음 ← 이 항목을 빠뜨리지 마세요
마지막 항목이 이 강의의 평가 기준이자, AI가 준 것을 반려하는 세 번째 이유입니다.
③ 자동 검증 구축 (35분) — 모임 중 동작까지
CI를 쓸 수 있는 경우
- 린트 + 테스트를 변경 요청에서 자동 실행
- 실패하면 병합 불가 설정
- 오늘 안에 초록불 한 번을 보게 하는 것이 목표입니다
CI를 쓸 수 없는 경우 (경로 B)
scripts/check.sh (또는 check.ps1)에 린트 + 테스트를 묶는 스크립트 작성- 병합 전 실행을 규칙으로 확정 → DoD에 명시
- 실행 결과를 리뷰 기록지에 붙여넣는 것까지 오늘 연습
CI가 강제하던 것을 규칙이 대신하는 것입니다. 배우는 내용은 같습니다.
다만, 사람은 잊습니다. DoD 체크리스트에 반드시 넣어 두시기 바랍니다.
리뷰 연습 (50분)
리뷰 짝끼리 작은 변경을 하나씩 만들어 서로 리뷰합니다.
- 올리기: 한 사람이 사소한 기능을 변경 요청으로 올립니다 (일부러 예외 처리를 빼고) (변경 요청을 쓸 수 없으면 브랜치를 만들고 리뷰 기록지를 작성)
- 리뷰: 짝이 리뷰합니다 — 먼저 AI에게 관점별 리뷰를 시킨 뒤, 그 결과를 보고 직접 판단해 코멘트
- 수정·병합: 올린 사람이 수정 → 병합
- 역할 교대: 역할을 바꿔 한 번 더
여기서 짚을 것: AI 리뷰는 사람 리뷰를 대체하지 않습니다. 사람 리뷰어가 사소한 것에 시간 쓰지 않게 해주는 1차 필터입니다.
다음 주 서식
[10주차 모임 전까지 · Sprint 1 착수]
1. 변경 1건 이상을 통합본에 반영
- 핵심 기능의 골격이면 됩니다. 완성 아니어도 됩니다
- 자동 검증 통과 + 리뷰 승인을 거칠 것
- 리뷰 없이 통합본을 직접 고치지 말 것
※ 경로 A: 변경 요청 → 리뷰 짝 확인 → 병합
경로 B: 리뷰 기록지 작성 → 확인 → 커밋 묶음 반영
2. 이슈 보드 갱신
- 진행 중인 이슈에 담당자와 상태 표시
- 1인당 동시 진행 이슈는 최대 2개
3. 개인 작업 — AI 사용 로그
- 이번 주부터는 «무엇을 왜 반려했나»를 구현 과정에서 찾으세요
- 막힌 주에는 «막혔을 때만 — 통합·디버깅» 칸도 채웁니다
마감: 모임 전날 자정
제출 형식
변경 요청 본문 (또는 리뷰 기록지) — 서식 전문은 서식 제출 서식.
동네장터 — 변경 요청 #21
## 무엇을
약속판 조회 API 추가
관련 이슈: #14
## 인수조건 충족 여부
- [x] 상대·상태·겹치는 시간이 한 응답에 포함된다
- [x] 지연 여부를 서버에서 판정해 내려준다
- [ ] 빈 상태 → 다음 변경에서 (화면 작업과 함께)
## 검증
- 테스트: 4/4 통과
- 자동 검증: 통과
## 리뷰어가 봐줬으면 하는 곳
- 시간대 비교를 KST 기준으로 했는데, 경계값 처리가 맞는지
마지막 항목이 리뷰 품질을 좌우합니다. "봐주세요"만 있는 변경 요청은 형식적인 승인을 부릅니다.
주차별 진행워크샵
10주차 Implementation I
이번 주에 남길 것 하나 — 핵심 기능 하나를 끝에서 끝까지 동작시키는 것.
그리고 그 기능에 테스트가 붙어 있는 것.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 30분 | 강의 — 스펙 → 테스트 → 구현 |
|---|
| 90분 | 실습 — 개인별 구현 + 코드 워크스루 |
|---|
| 50분 | 막힘 해소 + 스프린트 1 회고 |
|---|
강의 파트 (30분)
다룰 내용
- 스펙 → 테스트 → 구현 순서와 그 이유
- 작업을 AI가 소화 가능한 크기로 쪼개기
- 테스트가 있는 코드와 없는 코드의 수정 비용 차이
핵심
① 인수조건을 그대로 지시에 넣습니다.
아래 사용자 스토리를 구현해줘.
[스토리 + 인수조건 그대로 붙여넣기]
구현 전에 먼저 이 인수조건을 검증하는 테스트를 작성해줘.
② 한 번의 지시는 변경 요청 하나 분량(반나절 이내). 그보다 크면 어디가 틀렸는지 못 찾고 통째로 버리게 됩니다.
③ 예외 경로는 AI가 절대 알아서 안 만듭니다. 빈 상태·에러·경계값을 인수조건에 명시하지 않으면 정상 경로만 나옵니다.
이번 주 AI 함정 — 예외 경로 누락
일단 간단한 목록 조회를 시킨 뒤 데이터가 0건일 때 실행해 봅니다. 빈 화면이나 에러, 깨진 레이아웃 중 하나가 나올 것 같습니다.
예외 경로는 AI가 알아서 만들지 않습니다. 인수조건에 빈 상태를 쓰지 않으면 정상 경로만 나옵니다.
빈 상태 · 에러는 인수조건에 직접 적습니다.
실습 파트 (90분)
진행
각자 구현하고, 그 사이 코드 워크스루가 1인당 10분씩 돌아갑니다.
코드 워크스루 (1인당 10분 · 전원)
저장소를 화면에 띄우고, 임의의 한 곳을 골라 아래 네 질문을 받습니다. 어디를 고를지는 미리 알려드리지 않습니다.
- 이 부분은 무엇을 하나요?
- 이거 AI에게 어떻게 시켰어요? 한 번에 됐나요?
- AI가 준 것 중에 고친 부분이 있어요? 왜 고쳤죠?
- 이 코드가 깨질 수 있는 상황은 뭘까요?
이것이 13주차·15주차 발표에서 할 코드 설명 확인의 예행연습입니다. 10주차에 한 번 겪어두면 남은 5주 동안 설명할 수 있는 코드를 만들게 됩니다.
점검 항목
- 테스트: 테스트가 실제로 존재하고 실행되는가?
- 관통 경로: Sprint 1 목표가 관통 경로인가, 아니면 화면만·API만인가?
- 워크스루 대비: 워크스루 질문 4개에 지금 답할 수 있는가?
스프린트 1 회고 (50분 중 20분)
15분 안에 함께 이야기합니다. 따로 제출하지 않습니다 — 막힌 것은 이 자리에서 Problem으로 꺼내고, 통합·디버깅 문제라면 AI 사용 로그의 «막혔을 때만 — 통합·디버깅» 칸에 남깁니다. 아래 순서를 지킵니다.
| 시간 | 활동 |
|---|
| 3분 | 각자 조용히 Keep/Problem 작성 (말하지 않고) |
|---|
| 5분 | 돌아가며 공유, 반박 금지 |
|---|
| 5분 | Problem 1~2개 선정 → Try 결정 |
|---|
| 2분 | 담당자·기한 확정 |
|---|
3분간 각자 조용히 쓰는 것이 핵심입니다. 바로 말로 시작하면 목소리 큰 사람 의견만 남습니다.
다음 주 서식
[11주차 모임 전까지 · Sprint 2]
1. 모듈 통합을 반드시 '시도'할 것
- 완성이 아니어도 됩니다. 붙여보는 것이 목적입니다
- 붙이다가 실패한 로그와 에러 메시지를 그대로 저장해 오세요
(11주차 디버깅 클리닉에서 그걸로 함께 짚습니다)
2. Sprint 2 이슈 진행
- 담당자·상태를 보드에 반영
3. 개인 작업 — AI 사용 로그
- 세 칸(시킨 것 · 검수한 것 · 반려한 것)을 씁니다. «시킨 것»은 «AI 구현 요청»에서 복사한 요청으로 미리 채워집니다
- 통합하다 막혔다면 «막혔을 때만 — 통합·디버깅» 칸에 실패 로그를 적을 것 (주간 회고는 따로 내지 않습니다)
마감: 모임 전날 자정
※ "아직 붙일 게 없어요"는 사유가 되지 않습니다. 지금 있는 것끼리라도 붙여보세요.
제출 형식
따로 내는 서식이 없습니다 (2026-10부터 «통합 시도 기록» 폐지). 막힌 주에는 AI 사용 로그의 «막혔을 때만 — 통합·디버깅» 칸 세 개를 채웁니다. 이 내용이 «AI 구현 요청 → 막혔을 때» 디버깅 요청에 그대로 들어가고, 11주차 디버깅 클리닉에서 이 기록으로 함께 짚습니다.
동네장터 — AI 사용 로그 «막혔을 때» 칸 (상태 변경 ↔ 저장 API)
기대한 동작 / 실제 동작
- 기대: 상태가 '진행 중'으로 바뀐다 / 실제: 400 응답 후 화면이 이전 상태로 되돌아감
에러 메시지 전문
POST /api/deals/12/status 400
{"error":"invalid status","received":"in_progress","expected":["INPROGRESS","DONE","TODO"]}
무엇을 해 봤고 어떻게 됐나
- 프론트에서 값을 대문자로 변환 → 다른 화면이 깨짐
- AI에게 "고쳐줘" 3회 → 매번 다른 코드가 나왔고 원인은 그대로
실패 로그가 성공보다 중요한 기록입니다. 11주차 모임은 이 기록으로 진행합니다.
2번처럼 "AI에게 시켰지만 해결되지 않은 과정"도 그대로 적습니다.
주차별 진행코칭
11주차 Implementation II
이번 주에 남길 것 하나 — 내 모듈들이 하나의 앱으로 연결된 상태.
강의는 최소로, 수강자가 가져온 실제 버그를 공개 해부하는 데 시간을 쓰는 주입니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 20분 | 강의 — 통합이 늦어지는 이유, 디버깅 3단 |
|---|
| 60분 | 디버깅 클리닉 (공개 해부) |
|---|
| 70분 | 통합 데이 (순회 코칭) |
|---|
| 20분 | 통합 데모 공유 |
|---|
강의 파트 (20분)
다룰 내용
- 통합은 마지막이 아니라 지금: 왜 항상 늦어지는가?
- 디버깅 3단: 재현 → 최소화 → 가설 검증
- AI가 못 잡는 버그를 사람이 잡는 절차
핵심
"고쳐줘"는 원인을 모른 채 넘어가게 만듭니다. 그러면 같은 버그가 형태를 바꿔 다시 옵니다.
디버깅 프롬프트에 반드시 넣을 것:
- 에러 메시지 전문 (잘라내지 말 것)
- 관련 코드
- 기대한 동작 / 실제 동작
- 이미 시도해본 것
그리고 요청은 "고쳐줘"가 아니라 "원인 가설 3개와 각각의 확인 방법".
이번 주 AI 함정 — 원인 모른 채 넘어가기
버그를 "고쳐줘"로 시키면 코드가 바뀌고 증상이 사라집니다. 그런데 왜 사라졌는지 설명하지 못하는 상태가 됩니다. 즉, 고친 것이 아니라 가려진 것입니다.
주의그 코드는 반려 대상입니다 — 맞아도 설명하지 못하면 없는 것으로 칩니다.
"원인 가설 3개와 각각의 확인 방법" 으로 다시 시킵니다.
디버깅 클리닉 (60분)
각자 가져온 통합 실패 로그(AI 사용 로그 «막혔을 때» 칸) 중 3~4개를 골라 전체 앞에서 함께 해부합니다.
진행 방법
- (2분) 버그를 가져온 사람이 증상을 설명합니다 — 무엇을 기대했고 무엇이 일어났는지
- (3분) 나머지 전원이 가설을 냅니다 (이 단계에서는 검증하지 않습니다)
- (5분) 가설을 확인 가능한 순서로 정렬 → 가장 싼 것부터 확인
- (5분) 원인 확정 후, 이 버그를 다음에 미리 잡으려면 무엇이 있어야 했는지 정리
4번이 클리닉의 핵심입니다. "테스트가 있었으면" / "인터페이스를 먼저 정했으면" / "타임존을 명시했으면" 같은 답이 나오면, 그것이 남은 4주의 개선 항목이 됩니다.
자주 나오는 통합 실패 유형
| 유형 | 흔한 원인 |
|---|
| 데이터 형식 불일치 | 8주차에 API 시그니처를 안 정함 |
|---|
| 시간대·날짜 오류 | AI 생성 코드의 단골 실패 지점 |
|---|
| 인증·권한 | 각자 로컬에서만 테스트함 |
|---|
| 빈 값·null | 인수조건에 예외 케이스가 없었음 |
|---|
| 환경 차이 | 환경변수·설정을 문서화 안 함 |
|---|
통합 데이 (70분)
점검 항목
- 오늘 안에 붙는가? 안 붙으면 무엇을 잘라야 붙는지 결정합니다
- 2시간 규칙: 2시간 규칙을 지키고 있는가? — 같은 화면을 30분 넘게 보고 있으면 이미 넘긴 것입니다
오늘의 판단 기준
12주차는 품질·배포 주입니다. 11주차에 안 붙으면 13주차 데모가 없습니다.
오늘 안 붙을 것 같으면 기능을 잘라서라도 붙이시기 바랍니다. 좀 아쉬우시겠지만, 미완성 기능 3개보다 동작하는 기능 1개가 낫습니다.
다음 주 서식
[12주차 모임 전까지 · Sprint 3]
1. 예외 처리 보강
- 빈 상태 / 로딩 / 에러 화면을 최소 핵심 경로에 대해 만들 것
2. 배포 준비
- 배포 대상 결정, 환경변수 분리, 빌드 성공 확인
- 12주차 모임 시간에 실제 배포를 합니다
3. README 작성
- 처음 보는 사람이 설치·실행할 수 있게
- 12주차 교차 QA에서 다른 수강자가 이 README로 여러분 서비스를 실행합니다
4. 개인 작업 — AI 사용 로그
마감: 모임 전날 자정
제출 형식
개인 저장소 루트 README.md — 서식 전문은 서식 제출 서식.
동네장터 — README (발췌)
제목·한 줄 설명
동네장터
묻지 않아도 만날 장소와 시간이 좁혀지는 직거래 약속 도우미
무엇을 해결하나
판매자와 구매자가 서로 먼저 제안하지 못해 조율이 길어지고, 결국 거래가 흐지부지되는 문제를 해결합니다.
데모
https://... (테스트 계정을 반드시 함께 적을 것)
설치·실행
npm install
cp .env.example .env # 값 채우기
npm run dev # http://localhost:3000
환경변수
| 이름 | 설명 | 예시 |
|---|
| DATABASE_URL | DB 접속 문자열 | postgres://... |
|---|
12주차 교차 QA에서 다른 수강자가 이 README만 보고 실행합니다. 질문은 받지 않습니다.
테스트 계정을 안 적어두면 옆 사람이 첫 화면에서 막힙니다.
주차별 진행코칭
12주차 Implementation III
이번 주에 남길 것 하나 — 외부인이 접속해서 쓸 수 있는 주소가 생기는 것.
"돌아가는 것"과 "쓸 수 있는 것"의 차이를 배우는 주입니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 25분 | 강의 — 예외처리·보안·성능 체크리스트 |
|---|
| 65분 | 실습 — 배포 |
|---|
| 60분 | 수강자 간 교차 QA |
|---|
| 20분 | 결과 공유 |
|---|
강의 파트 (25분)
다룰 내용
- 예외 처리: 빈 상태 / 로딩 / 에러 / 권한 없음
- 보안 기본: 키 노출, 입력 검증, 권한 확인
- 성능: 무엇을 재고 무엇을 무시할지
- 배포와 환경 분리
핵심
① 저장소에 키가 올라가 있는지 지금 확인합니다.
일단 저장소에 .env가 커밋되는 일은 드물지 않습니다. 커밋 이력에 한 번이라도 올라갔으면 키를 재발급해야 합니다. 지웠더라도 이력에는 남아 있기 때문입니다.
② 성능은 목표치가 있어야 개선입니다.
"빠르게 만들었어요"는 측정이 아닙니다. PRD 비기능 요구사항에 적은 수치와 대조합니다.
③ AI에게 보안 점검을 요청하되, 결과를 그대로 믿지 않습니다.
AI 점검은 놓치는 것이 많고, 반대로 문제없는 것을 지적하기도 합니다. 지적 하나하나를 직접 판정합니다 — 채택인지 반려인지.
이번 주 AI 함정 — 오래된 방식
배포·보안 설정을 물어보면 몇 년 전 방식을 알려주는 경우가 흔합니다. 물론, 그 시점에는 맞았던 답입니다.
프롬프트에 버전을 명시하면 달라집니다. 그래도 마지막에는 공식 문서와 대조합니다.
배포 실습 (65분)
진행
- (15분) 환경변수 분리, 시크릿 설정
- (30분) 실제 배포 — 막히면 그 자리에서 코칭을 받습니다
- (20분) 배포 환경에서 핵심 경로 동작 확인
로컬에서만 되던 것이 배포하면 깨집니다. 그 경험이 이번 주의 학습 목표입니다. 미리 걱정할 필요는 없습니다. 깨진 뒤에 원인을 함께 찾습니다.
점검 항목
- 키 관리: 키가 코드에 하드코딩되어 있지 않은가?
- 외부 접속: 배포 URL에 외부 기기(휴대폰)로 접속되는가?
- 첫 화면 속도: 첫 화면이 뜨는 데 얼마나 걸리는가?
교차 QA (60분)
일단 둘씩 짝지어, 상대 서비스를 부숩니다.
규칙
- README만 보고 접속/실행 (질문 금지)
- 30분간 자유롭게 사용하며 문제를 찾음
- 발견한 것을 상대 개인 저장소에 이슈로 등록
이슈 양식
[QA] 무엇을 하려다 / 어떻게 막혔나
재현 절차:
1.
2.
기대한 동작:
실제 동작:
심각도: 상 / 중 / 하
부수는 방법 힌트
- 빈 값, 아주 긴 문자열, 특수문자 입력
- 로그인 없이 내부 주소 직접 접근
- 뒤로가기·새로고침 반복
- 데이터가 0건인 상태로 진입
- 느린 네트워크 (개발자 도구에서 조절)
교차 QA는 13주차 발표 전에 자기 서비스의 구멍을 남의 눈으로 보는 마지막 기회입니다. 여기서 나온 이슈가 14주차 개선 백로그의 절반을 채웁니다.
다음 주 서식
[13주차 2차 발표 준비]
1. 발표자료 (10분) — 슬라이드보다 라이브 데모가 중심입니다
필수 포함:
- 1차 발표 피드백을 어떻게 반영했는지
- 아키텍처와 주요 설계 결정 (ADR 1건 이상 설명)
- 라이브 데모 (배포 환경에서)
- 간이 사용성 테스트 결과
- 남은 2주 계획과 리스크
※ «발표 구성서»는 내지 않습니다. «자동으로 만들기 → 발표 자료»에서 순서가 자동으로 잡히고,
시연(보여줄 것·조작 순서)·시연이 실패하면 두 칸만 적으면 PPT에 들어갑니다
2. 간이 사용성 테스트 2명
- 실제 타깃 사용자
- 과업을 주고 관찰만 할 것. 힌트 금지
3. 교차 QA 이슈 처리
- 심각도 '상'은 발표 전까지 수정
- 못 고친 것은 발표에서 정직하게 밝힐 것
4. 개인 작업 — AI 사용 로그
※ 발표 중 저장소 코드를 한 부분을 골라 설명을 요청합니다.
설명하지 못하면 1건당 -5점입니다.
제출 형식
서식 제출 페이지에서 «사용성 테스트» 선택 — 한 건만 냅니다. 과업 3개는 플로우의 핵심 경로에서 미리 채워져 있으니 확인하고 고친 뒤, 참가자를 만날 때마다 참가자 표에 «간이»로 한 줄씩 더해 다시 제출합니다. 13~14주차 본 테스트 5명도 같은 문서에 이어 적습니다.
동네장터 — 간이 테스트 2명
과업 (참가자 모두 같은 과업)
- 팔 물건을 등록하고 상대에게 링크를 보내 보세요
- 만날 수 있는 시간 3개를 골라 보세요
- 지금 늦어지고 있는 거래가 있는지 확인해 보세요
| 간이/본 | ID | 프로필 | 과업1 | 과업2 | 과업3 | 막힌 곳 · 사용자 발언 |
|---|
| 간이 | U1 | 3학년, 최근 한 달 직거래 2회 | 성공 | 실패 | 성공 | 1:40 수락 전에는 장소 변경이 막힘 — "어? 아까 보냈는데 왜 못 바꾸죠" |
|---|
| 간이 | U2 | 4학년, 중고 물건을 파는 사람 | 성공 | 포기 | 성공 | 시간 고르기에서 같은 절차 반복 — "이걸 세 번 다 해야 돼요?" |
|---|
관찰 노트: U1 — 2분 지점부터 한숨. 작업 1개 등록 후 "나머지도 이걸 다 해야 되나요?"
과업을 목표로 줬는지 확인하세요. "+ 버튼을 누르세요"라고 하면 데이터가 나오지 않습니다.
이번 주에 남길 것 하나 — 각자 남은 2주에 무엇을 해야 하는지 확정하고 나가는 것.
참고발표 자료 — 서식 제출 페이지 «발표 자료»의 «2차 발표»에 피드백 반영·설계 결정·테스트 결과 재료가 모여 있습니다.
이번 발표는 슬라이드가 아니라 라이브 데모가 중심입니다.
| 시간 | 활동 |
|---|
| 10분 | 진행 안내, 평가지 배포 |
|---|
| 90분 | 1인당 발표 10분 + 질의 5분 (코드 설명 포함) |
|---|
| 60분 | 사용성 테스트 리허설 — 다른 수강자를 참가자로 |
|---|
| 20분 | 총평 + 최종 2주 안내 |
|---|
진행 방법
라이브 데모 원칙
녹화 영상 대체는 -10점입니다. 네트워크 등 불가피한 사유는 사전 허가를 받아야 합니다.
- 배포 환경: 배포 환경에서 시연 (로컬 시연은 감점)
- 사전 연결: 데모 전에 각자 노트북을 미리 연결해 화면을 확인해 둡니다
- 에러 대응: 데모 도중 에러가 나도 감점하지 않습니다. 어떻게 대응하는지를 봅니다
코드 설명 확인
발표가 끝나면 저장소에서 임의의 파일 한 곳을 열어 설명을 청합니다. 어느 파일이 될지는 미리 알려드리지 않습니다.
| 질문 | |
|---|
| 1 | 이 부분은 무엇을 하는 코드인가요? |
|---|
| 2 | 왜 이렇게 짰나요? |
|---|
| 3 | AI에게 어떻게 시켰고, 무엇을 고쳤나요? |
|---|
- 진행 횟수: 발표 직후에는 1인당 1건. 나머지는 코드 설명 라운드(30분) 에서 전원에게 진행합니다
- 감점: 설명하지 못하면 1건당 -5점
평가
- 교수자 채점: 2차 발표 루브릭으로 교수자 채점
- 프로세스 채점: 개발 프로세스 항목(20점)은 저장소를 직접 열어 채점합니다. 발표 내용보다 실제 작업 이력이 우선입니다. 택한 저장소 경로에 따라 확인 대상이 달라집니다 (커밋·변경요청·CI 또는 칸반·리뷰 기록지·검증 로그)
- 상호 평가: 모든 수강자는 상호 평가지 A파트를 발표를 들으며 작성합니다
미리 알아두는 감점
| 항목 | 감점 |
|---|
| 발표자료 미제출 | -10 |
|---|
| 라이브 데모를 녹화 영상으로 대체 (사전 허가 없이) | -10 |
|---|
| 코드 설명 실패 (1건당) | -5 |
|---|
| 간이 사용성 테스트 2명 미실시 | 사용자 검증 항목 감점 |
|---|
질의응답
| # | 질문 | 확인하려는 것 |
|---|
| 1 | 이 기능을 AI에게 어떻게 시켰나요? 한 번에 됐나요? | 작업 분해 능력 |
|---|
| 2 | AI가 준 코드 중 버린 것이 있나요? 왜 버렸죠? | 판단의 존재 |
|---|
| 3 | 지금 이 시스템에서 가장 먼저 문제가 생길 것 같은 곳은? | 자기 코드에 대한 이해 |
|---|
| 4 | 테스트가 없는 부분은 어디이고 왜 없나요? | 정직성 |
|---|
| 5 | 통합할 때 가장 오래 걸린 문제는? | 실제 경험 |
|---|
| 6 | ADR 중 하나를 골라 설명해 주세요 | 설계 근거 |
|---|
| 7 | 남은 2주에 못 할 것 같은 것은 무엇인가요? | 현실 인식 |
|---|
7번에 정직하게 답하면 가점을 줍니다. "다 할 수 있습니다"라고 답하는 사람이 15주차에 가장 크게 무너집니다.
코드 설명 라운드 (30분)
전원이 각자 5분씩 진행합니다.
| 순서 | 진행 |
|---|
| 1 | 저장소에서 한 부분을 무작위로 고릅니다 |
|---|
| 2 | 그 부분을 맡은 사람이 무엇을 하는 코드인지 설명합니다 |
|---|
| 3 | 왜 그렇게 짰는지, 다른 방법은 없었는지 답합니다 |
|---|
| 4 | AI가 쓴 부분이면 어디를 고쳤는지 함께 말합니다 |
|---|
7주차에 "다음 8주에 하겠다"고 말한 곳을 우선으로 고릅니다.
AI가 쓴 부분이라도 상관없습니다. 즉, 누가 썼는지가 아니라 설명이 되는지를 봅니다. 설명할 수 있으면 그것으로 완성입니다.
사용성 테스트 리허설 (30분)
다음 주 서식이 실사용자 5명 테스트입니다. 옆 사람을 참가자로 세워 진행을 연습합니다.
| 시간 | 진행 |
|---|
| 5분 | 과업 2개와 진행 대본을 정리합니다 |
|---|
| 20분 | 옆 사람을 참가자로 세워 실제로 진행합니다 |
|---|
| 5분 | 무엇이 잘못됐는지 서로 말해 줍니다 |
|---|
진행에서 자주 나오는 실수
| 실수 | 왜 문제인가? |
|---|
| 참가자가 막혔을 때 바로 알려줌 | 막히는 지점이 데이터인데 그걸 지웁니다 |
|---|
| "이거 편하시죠?" 하고 물음 | 유도 질문입니다. 그냥 하게 두고 지켜봅니다 |
|---|
| 시간을 안 잼 | 소요 시간이 유일한 정량 지표입니다 |
|---|
| 과업을 설명으로 대신함 | 조작하게 해야 합니다 |
|---|
핵심내 프로젝트를 잘 아는 사람과 하면 다 성공합니다. 처음 보는 사람이라야 진짜 막히는 지점이 보입니다.
정리 (20분)
| 유형 | 무슨 뜻인가? |
|---|
| 데모가 로컬에서만 됨 | 배포되지 않은 것은 아직 만들어진 것이 아닙니다 |
|---|
| 코드 설명 실패 | 설명하지 못하는 코드는 내 것이 아닙니다. 남은 2주에 정리하세요 |
|---|
| 예외 화면 없음 | 정상 경로만 되는 것은 데모용입니다. 빈 상태와 에러를 만드세요 |
|---|
| AI 사용 로그의 반려 칸이 «없음» | 받은 것을 검수하지 않았다는 뜻이고, 그 주 로그는 인정되지 않습니다. 15주차 과정 확인에서 그대로 드러납니다 |
|---|
남은 2주의 구조는 이렇습니다.
- 14주차: 사용자 검증 (5명 테스트 결과를 가지고 오는 주)
- 15주차: 최종 발표
다음 주 서식
[14주차 모임 전까지]
1. ★ 실사용자 5명 사용성 테스트 (이번 주의 핵심)
- 실제 타깃 사용자. 수강자·가족 제외
- 12주차와 같은 과업 3개를 '목표'로 제시할 것. 방법을 알려주면 안 됩니다
❌ "우측 상단 + 버튼을 눌러 시간을 추가해 보세요"
✅ "상대와 만날 수 있는 시간 3개를 골라 보세요"
- 진행 중 힌트 금지. 물어보면 "어떻게 하시면 좋을 것 같으세요?"
- 기록: 참가자 표에 한 줄씩 — 과업별 성공/실패/포기, 막힌 곳, 사용자 발언
2. 사용 로그·오류 데이터 수집
- 서비스에서 수집 가능한 것이 있으면 함께 정리
3. 개인 작업 — AI 사용 로그
마감: 모임 전날 자정
※ 14주차 모임은 여러분이 가져온 데이터로 진행합니다.
데이터가 없으면 그 시간에 할 것이 없습니다.
제출 형식
서식 제출 페이지에서 «사용성 테스트» 선택 — 12주차에 낸 같은 문서를 열어, 본 테스트 참가자를 만날 때마다 «본»으로 한 줄씩 더해 다시 제출합니다(5명). 종합 분석은 14주차에 저장소 문서(docs/usability/summary.md)로 쓰고 최종 보고서 4장에 요약합니다.
동네장터 — 참가자 표 (본 테스트 줄 발췌)
| 간이/본 | ID | 프로필 | 과업1 | 과업2 | 과업3 | 막힌 곳 · 사용자 발언 |
|---|
| 간이 | U1 | 3학년, 최근 한 달 직거래 2회 | 성공 | 실패 | 성공 | 1:40 수락 전에는 장소 변경이 막힘 — "어? 아까 보냈는데 왜 못 바꾸죠" |
|---|
| 간이 | U2 | 4학년, 중고 물건을 파는 사람 | 성공 | 포기 | 성공 | 시간 고르기에서 같은 절차 반복 |
|---|
| 본 | U3 | 2학년, 직거래 처음 | 성공 | 실패 | 성공 | 3:05 모바일에서 날짜 선택기가 잘림 (화면을 계속 확대·축소) |
|---|
관찰 노트: U3 — 화면을 두 번 새로고침함. 저장이 됐는지 확신하지 못함
진행 중 힌트를 주면 그 세션의 데이터는 못 씁니다. 물어보면 "어떻게 하시면 좋을 것 같으세요?"로 되돌립니다.
발표 진행 규칙
- URL 확인: 배포 URL은 발표 전날 저녁에 확인합니다. 접속되지 않으면 발표 전에 알려드립니다
- 무작위 선택: 설명을 청할 코드는 발표 중에 무작위로 고릅니다. 미리 정해두지 않습니다
- 채점 시점: 채점은 발표 직후 진행하며, 프로세스 항목은 저장소를 그 자리에서 열어 확인합니다
- 에러 대응: 데모 도중 에러가 나도 감점하지 않습니다. 어떻게 대응하는지를 봅니다
이번 주에 남길 것 하나 — 남은 1주에 할 수 있는 것만 골라내는 것.
검증 결과 전부를 고치려 들면 아무것도 못 고칩니다.
| 시간 | 활동 |
|---|
| 10분 | 지난주 제출물 확인 |
|---|
| 30분 | 강의 — 사용성 데이터 읽는 법, 우선순위 판단 |
|---|
| 80분 | 실습 — 데이터 분석 워크샵 |
|---|
| 60분 | 최종 개선 백로그 확정 + 코칭 |
|---|
강의 파트 (30분)
다룰 내용
- 정량과 정성을 함께 읽기: 성공률·시간 + 막힌 지점
- 심각도 판정 기준: 상/중/하
- 남은 1주에 할 수 있는 것 고르기
- 못 고친 것을 어떻게 발표할 것인가?
핵심
① 심각도 기준을 명확히.
| 심각도 | 기준 |
|---|
| 상 | 과업 완료 실패 / 데이터 손실 / 3명 이상이 겪음 |
|---|
| 중 | 완료했으나 크게 헤맴 / 2명이 겪음 |
|---|
| 하 | 사소한 불편 / 1명만 겪음 |
|---|
② 우선순위는 심각도 × 수정 난이도입니다.
심각도 '상' + 난이도 S/M 인 것이 최우선. 심각도 '상'인데 난이도 L인 것은 고치지 말고 한계로 밝히게 합니다.
③ 못 고친 것을 정직하게 밝히는 것이 감점보다 낫습니다.
최종 발표 루브릭에서 "한계를 정직하게 밝힘"은 가점 요인입니다. 숨겼다가 질의에서 드러나는 쪽이 훨씬 큰 감점입니다.
④ 5명이면 충분합니다. 사용성 문제의 대부분은 5명 안에서 드러납니다. 인원을 못 채웠더라도 분석을 소홀히 하지 않습니다.
이번 주 AI 함정 — 데이터 없이 결론 만들기
일단 빈약한 데이터를 주고 사용성 테스트 요약을 시키면, AI는 데이터에 없는 결론까지 그럴듯하게 만들어냅니다.
"이 결론의 근거가 된 발언을 인용해줘" 라고 되물으세요. 근거가 없다는 것이 그 자리에서 드러납니다.
실습 파트 (80분)
진행 순서
- (20분) 정량 집계: 과업별 성공률, 평균 소요 시간, 목표 대비
- (25분) 문제 목록화: 5명 기록에서 막힌 지점을 전부 카드로. AI로 유사 항목 묶기 → 사람이 검증
- (20분) 심각도·난이도 판정: 2축 매트릭스에 배치
- (15분) 개선 백로그 확정: 1주 안에 할 수 있는 것만
사용성 테스트 템플릿 5절(종합 분석)을 저장소의 docs/usability/summary.md로 쓰고,
최종 보고서 4장 1절(사용자 테스트 결과)·4장 2절(향후 개발 방향)에 요약합니다. (서식 제출 페이지의 «사용성 테스트» 서식은 과업·참가자 표·관찰 노트만 받습니다)
점검 항목
- 묶음 검증: AI가 서로 다른 원인의 문제를 하나로 묶지 않았는가? (사람이 반드시 검증)
- 백로그 크기: 개선 백로그가 5개를 넘지 않는가? (넘으면 1주 안에 불가능)
- 안 고칠 것 기록: "고치지 않기로 한 것"이 기록되고 있는가?
최종 개선 백로그 확정 (60분)
1인당 6~7분 코칭. 아래 네 질문으로 확정합니다.
- 이 중 안 고치면 최종 데모가 실패하는 것은 무엇인가요?
- 1주 안에 정말 끝낼 수 있나요?
- 안 고치기로 한 것은 발표에서 어떻게 말할 건가요?
- 개선하다가 지금 되는 것을 깨뜨릴 위험은 없나요?
주의4번이 특히 중요합니다. 마지막 주에 리팩터링을 시작했다가 동작하던 데모를 깨뜨리는 일이 나옵니다.
좀 아쉬우시겠지만, 지금은 고치는 것보다 지키는 쪽이 낫습니다.
발표 48시간 전에 코드를 얼립니다. 그 뒤로는 고치지 않습니다.
다음 주 서식
[15주차 최종 발표 준비]
1. 최종 개선 반영 + 최종 배포
★ 발표 48시간 전 코드 동결. 이후에는 수정 금지
2. 발표자료 (15분 구성)
- 문제와 사용자 (2분)
- 해결 접근과 핵심 설계 결정 (2분)
- 라이브 데모 (5분)
- 사용자 검증 결과 5명 — 지표와 발견 (3분)
- 한계와 향후 계획 (2분) ← 생략하지 마세요. 배점이 큽니다
- 회고: 15주간 무엇을 배웠는가 (1분)
※ «발표 구성서»는 내지 않습니다. «자동으로 만들기 → 발표 자료»의 「최종 발표」에서 순서가 자동으로 잡히고,
시연(보여줄 것·조작 순서)·시연이 실패하면 두 칸만 적으면 PPT에 들어갑니다
3. 최종 보고서 + 시연 영상
4. 개인 제출
- 기여 명세서 — «내가 담당한 것»·반려 사례 2건은 매주 AI 로그에서 자동으로 채워짐. 근거를 확인하고 «내가 내린 판단» 2건 이상을 쓸 것 (ADR 결정·거부한 피드백에서 후보가 미리 채워짐 — 확인·수정)
- 상호 평가지 (비공개)
마감: 모임 전날 자정
※ 발표 중 코드 무작위 선택 설명이 있습니다.
제출 형식
- 최종 보고서는 교수자가 나눠 주는 한글·워드 템플릿으로 작성합니다. 서식 제출 페이지의 «최종 보고서 자료» 에 15주 동안 낸 서식이 보고서 목차대로 정리되어 있으니, 절마다 «복사»를 눌러 템플릿에 붙여 넣고 내 말로 다듬으세요. 회색 [직접 작성] 부분(배포 URL, 못 한 것과 이유 등)은 직접 채웁니다.
- 기여 명세서는 서식 제출 페이지에서 «기여 명세서» 서식으로 제출합니다. 처음 열면 «내가 담당한 것»과 «AI 제안을 반려한 사례»가 매주 낸 AI 사용 로그에서 채워져 있으니, 근거를 확인·수정합니다. «내가 내린 판단»도 ADR 결정과 거부한 피드백에서 후보가 미리 채워지니, 내 말로 고치고 빠진 판단을 더해 냅니다.
동네장터 — 기여 명세서 (개인 제출)
# 기여 명세서 — 김서연
## 내가 담당한 것
| 주차 | 무엇을 | 근거 |
|---|---|---|
| 5 | 목업 3사이클, 기술 리스크 2개 선정 | 제출함 «리스크 리포트» 5주차 |
| 10 | US-03 조회 API + 테스트 4건 | 이슈 #14, 커밋 a1b2c3d |
| 11 | 상태 값 불일치 버그 원인 추적 | AI 사용 로그 11주차 «막혔을 때» |
## 내가 내린 판단 (코딩이 아니라 결정)
1. 약속판 응답 구조를 서버에서 지연 판정까지 해서 내려주기로 결정.
프론트에서 계산하면 시간대 처리가 두 곳으로 갈라지기 때문.
2. AI가 제안한 join 방식 최적화를 반려. 우리 스키마에서는 데이터 중복이 커짐.
## AI 제안을 반려한 사례 2건
- 위 2번 — join 방식 최적화 (우리 스키마에서 데이터 중복)
- UTC 기준 마감 판정 (경계값에서 하루 오차)
«내가 내린 판단»이 핵심입니다. "코딩을 많이 했다"가 아니라 "무엇을 왜 그렇게 정했다"가 개인 평가의 근거입니다.
여러분은 팀장이고 AI는 팀원입니다. AI가 많이 만든 것은 감점이 아닙니다 —
«내가 내린 판단»이 비어 있는 것이 감점입니다.
매주 쓴 AI 사용 로그와 대조하므로, 로그에 없는 기여는 근거가 없습니다.
이번 주에 남길 것 하나 — "AI가 준 것을 언제 믿고 언제 의심해야 하는가?"에 대한 감각을 가지고 나가는 것.
참고발표 자료 — 서식 제출 페이지 «발표 자료»의 «최종 발표»에 권장 시간(2·2·5·3·2·1분)과 함께 슬라이드 재료가 모여 있습니다. 최종 보고서는 «최종 보고서 자료»를 쓰세요.
결과물보다 그 감각이 이 강의의 진짜 산출물입니다.
| 시간 | 활동 |
|---|
| 10분 | 진행 안내 |
|---|
| 120분 | 1인당 발표 15분 + 질의 5분 |
|---|
| 30분 | 팀장 라운드 — 1인 5분씩 |
|---|
| 20분 | 상호 총평과 과정 마무리 |
|---|
진행 방법
발표 구성 (15분)
| 시간 | 내용 |
|---|
| 3분 | 문제와 사용자 — 우리가 만난 사람들 |
|---|
| 4분 | 해결 접근과 핵심 설계 결정 |
|---|
| 8분 | 라이브 데모 |
|---|
| 5분 | 사용자 검증 결과 (5명) — 지표와 발견 |
|---|
| 3분 | 한계와 향후 계획 |
|---|
| 2분 | 회고 — 15주간 무엇을 배웠는가? |
|---|
마지막 두 항목을 생략하기 쉽습니다. 배점이 가장 큰 구간입니다.
코드 설명 확인
- 진행 횟수: 발표 직후에는 1인당 1건. 나머지는 팀장 라운드(30분) 에서 6명 전원에게 진행합니다
- 감점: 담당자에게 설명 요청 → 실패 시 1건당 -5점
- 로그 대조: 15주차에는 AI 로그와 대조해서 묻습니다: "로그에 이 부분을 반려했다고 썼는데, 대신 어떻게 했나요?"
평가
- 루브릭: 최종 발표 루브릭으로 채점합니다
- 교차 확인: 15주 내내 남은 기록(작업 이력·AI 로그·리뷰)과 교차 확인합니다
미리 알아두는 감점
| 항목 | 감점 |
|---|
| 최종 보고서·시연 영상·기여 명세서 미제출 | -15 |
|---|
| 코드 설명 실패 (1건당) | -5 |
|---|
| 발표 시간 3분 이상 초과 | -5 |
|---|
| 확인되지 않은 인용·통계 | 해당 항목 0점 |
|---|
질의응답
| # | 질문 | 확인하려는 것 |
|---|
| 1 | (코드 한 부분을 골라) 이 부분을 설명해 주세요. 누가 작성했나요? | 설명할 수 있는가? |
|---|
| 2 | 15주 전으로 돌아간다면 무엇을 다르게 하시겠어요? | 프로세스 학습 |
|---|
| 3 | 사용성 테스트에서 가장 뼈아팠던 발견은? | 사용자 검증의 실재 |
|---|
| 4 | 실제 사용자에게 내놓으면 무엇이 먼저 문제가 될까요? | 자기 시스템 이해 |
|---|
| 5 | ADR 중 하나를 골라, 지금도 그 결정이 옳았다고 보나요? | 설계 판단의 성숙 |
|---|
| 6 | AI에게 시켰다가 되돌린 것 중 가장 잘 되돌린 건 무엇인가요? | 팀장으로서의 판정 |
|---|
| 7 | 이번 과정에 못 한 것은 무엇이고 왜 못 했나요? | 정직성 |
|---|
| 8 | 시작 무렵과 지금, 본인의 지시는 어떻게 달라졌나요? | 팀장 역량의 변화 |
|---|
8번은 「AI를 판단에 썼는가」의 근거로 쓰입니다. "코딩을 많이 했어요"가 아니라 판단을 묻는 질문이라는 점이 중요합니다.
과정 확인
발표 점수에 아래 근거를 교차 확인합니다.
| 근거 | 확인 방법 |
|---|
| 작업 이력 | 저장소 (커밋·변경요청) — 시간에 걸쳐 분포했는가? |
|---|
| AI 사용 로그 | 매주 작성 시점 + «무엇을 왜 반려했나»가 매주 있는가? («없음»인 주는 미인정) |
|---|
| 기여 명세서 | «내가 내린 판단» 2건 이상 — 미리 채워진 후보를 내 말로 확인·수정했는가? 근거가 로그와 맞는가? |
|---|
| 리뷰 짝 평가 | 남의 코드를 성실히 봐 줬는가? |
|---|
| 코드 설명 확인 | 발표 중 |
|---|
| 조정 | 기준 |
|---|
| +5점 | 리뷰를 성실히 해 다른 수강자의 결과를 실제로 바꿈 |
|---|
| 0 | 정상 |
|---|
| −10점 | 작업이 막판에 몰림, AI 사용 로그 부실 |
|---|
| −20점 이하 | 본인 코드 설명 불가, 리뷰 요청 무응답 |
|---|
주의한 가지 근거만으로 감점하지 않습니다. 여러 근거가 일치할 때만 조정합니다.
팀장 라운드 (30분)
6명 각자 5분씩 말하고 질의를 받습니다.
이 강의는 수강자를 팀장, AI를 팀원으로 놓았습니다. 즉, 마지막 확인은 무엇을 만들었는가가 아니라 팀장으로서 무엇을 했는가입니다.
| 말할 것 | |
|---|
| 1 | 15주 동안 내가 판단한 것 — 기여 명세서의 «내가 내린 판단»을 짚으며 |
|---|
| 2 | 내가 AI에게 맡긴 것과 반려한 것 각 1건 |
|---|
| 3 | 시작 무렵과 지금, 내 지시가 어떻게 달라졌는가? |
|---|
참고2번은 AI 사용 로그와 대조해 묻습니다. 로그에 적은 반려 사례를 직접 설명합니다.
3번이 이 강의의 학습 성과입니다 — "약속판 만들어줘"에서 "이 인수조건 3개를 만족하는"까지 왔는가?
마무리 (20분)
상호 총평 (10분)
옆 사람에게 한마디씩 합니다. 15주 내내 서로를 본 유일한 외부 시선이었지요.
점수와 무관합니다 — 옆 사람에게서 배운 것 1가지, 가장 크게 달라진 지점.
과정 마무리 (10분)
정리하는 내용
- 잘한 사람의 공통점: 대개 "일찍 통합한 사람"과 "정직하게 보고한 사람"입니다
- AI 활용의 차이: 같은 도구를 썼는데 결과가 갈린 이유
- 한계를 밝힌 사람에 대한 평가: 정직하게 밝힌 사람이 숨긴 사람보다 높은 점수를 받습니다
마지막 메시지
이 강의가 끝나고 여러분에게 남기를 바라는 것은 프롬프트 모음집이 아닙니다.
"AI가 준 것을 언제 믿고 언제 의심해야 하는가?" 에 대한 감각.
그것만 남으면 이 강의는 성공이라고 생각됩니다. 도구는 내년에 또 바뀝니다.
사용 주차: 1주차 (모임 중 작성)
제출: 서식 제출 페이지에서 «프로젝트 계획서» 선택 → 채우고 제출
혼자 하는 프로젝트가 무너지는 이유는 실력보다는 스스로 정하지 않은 기준 때문인 경우가 많습니다.
즉, 지금 30분을 들여 기준을 정해 두면 12주차에 3시간을 아낄 수 있습니다.
1기본 정보
| 항목 | 내용 |
|---|
| 프로젝트명 | (가칭이어도 됩니다) |
|---|
| 이름 · 학번 | |
|---|
| 리뷰 짝 | (매주 서로 코드를 봐 줄 다른 수강자) |
|---|
저장소 주소는 3. 저장소에 적습니다.
혼자 한다고 혼자 판단하지는 않습니다. 이 강의는 «변경이 다른 사람의 눈을 거친 흔적»을 요구합니다.
9주차부터 수강자끼리 리뷰 짝을 이뤄 서로의 변경 요청을 봐 주고, 짝은 격주로 바꿉니다.
2탐색 영역
1주차 마지막 워크샵에서 정합니다. 여기에 적는 것은 만들 것이 아니라 살펴볼 영역이고, 무엇을 만들지는 4주차에 정합니다.
| ❌ 이건 이미 해결책입니다 | ✅ 이게 영역입니다 |
|---|
| 중고거래 앱을 만들자 | 직거래 약속을 잡다가 서로 눈치만 보다 흐지부지되는 과정 |
|---|
| 자취생 식단 서비스 | 자취 3개월 차가 저녁을 정하는 데 쓰는 시간 |
|---|
| 항목 | 내용 |
|---|
| 살펴볼 영역 | (해결책이 아니라 상황으로 1~2줄) |
|---|
| 왜 이 영역인가? | (내가 이 영역에 관심 있는 이유) |
|---|
주의다음 주까지 이 영역에서 3명(수강자·가족 제외)을 실제로 만나 인터뷰해야 합니다. 떠오르는 사람이 없으면 그 영역은 진행하기 어렵습니다.
즉, 막연히 "대학생"이 아니라 실제로 연락할 수 있는 사람이어야 합니다.
핵심영역은 3주차까지 바뀔 수 있습니다. 인터뷰에서 전혀 다른 것이 나오면 그쪽으로 옮기면 됩니다.
3저장소
저장소 운영 방식 선택 가이드를 읽고 본인 상황에 맞는 곳에 저장소를 만드시기 바랍니다.
| 항목 | 내용 |
|---|
| 저장소 주소 | (GitHub 저장소 URL, 또는 Google Drive 공유 폴더 링크) — 리뷰 짝이 오늘 열어볼 수 있어야 합니다 |
|---|
계정을 만들 수 없어도 평가에서 불이익이 없습니다. Drive 공유 폴더 링크를 적으면 됩니다.
4AI 사용 기준
이 프로젝트에서 여러분은 팀장이고, AI가 팀원입니다.
팀장이 하는 일은 코딩이 아니라 지시 · 검수 · 반려이고, 그 기준을 여기에 미리 정해 둡니다.
| 질문 | 내 답 |
|---|
| 지시 — 무엇을 붙여서 시킬 것인가? | (예: 인수조건 + 스키마 + "테스트 먼저") |
|---|
| 검수 — 병합 전 최소 조건은? | (예: 테스트 통과 + 내가 5줄로 설명 가능) |
|---|
| 반려 — 어떤 경우에 되돌릴 것인가? | (예: ① 틀렸다 ② 우리 것이 아니다 ③ 내가 설명 못 한다) |
|---|
주의③ 「내가 설명 못 한다」를 반드시 넣으세요. 이 강의의 기준은 15주 내내 같습니다 —
맞는 코드라도 설명하지 못하면 없는 것으로 칩니다. → AI 활용 가이드북
매주 AI 사용 로그에 반려 최소 1건을 적고, 그 기록이 곧 여러분이 판단했다는 흔적이 됩니다.
5서명
나는 위 기준을 따르며, 바꿔야 할 일이 생기면 이 문서를 고쳐 다시 제출한다.
작성 예시
동네장터 — 중고 직거래 약속 도우미
기본 정보
| 항목 | 내용 |
|---|
| 프로젝트명 | 동네장터 (가칭) |
|---|
| 이름 · 학번 | 김서연 · 2021XXXXX |
|---|
| 리뷰 짝 | 박지훈 |
|---|
저장소 주소: https://github.com/seoyeon-k/donne-jangteo
AI 사용 기준
| 질문 | 내 답 |
|---|
| 지시 | 인수조건 전문 + 스키마를 붙이고, "테스트 먼저"를 항상 붙인다 |
|---|
| 검수 | 테스트 통과 + 내가 5줄로 설명 가능. 둘 다 안 되면 병합하지 않는다 |
|---|
| 반려 | ① 틀렸다 ② 우리 스키마에 안 맞는다 ③ 내가 설명 못 한다 |
|---|
제출 체크리스트
- 탐색 영역을 해결책이 아니라 상황으로 적었는가?
- 저장소 주소를 적었는가?
- 리뷰 짝이 그 저장소를 볼 수 있는가?
- AI 사용 기준에 지시 · 검수 · 반려가 각각 적혔는가?
사용 주차: 1주차 작성 → 1~2주차 사이 실시 → 2주차 전사록 제출
제출: 서식 제출 페이지에서 «인터뷰 스크립트» 와 «인터뷰 전사록»(대상자별)
인터뷰의 제1원칙
해결책을 묻지 마세요. 경험을 물으세요.
사용자는 자기가 무엇을 원하는지 잘 모르지만, 자기가 어제 무엇을 했는지는 정확히 압니다.
그래서 "이런 앱 있으면 쓰시겠어요?"라는 질문으로는 쓸 만한 답을 거의 얻지 못합니다.
| ❌ 나쁜 질문 | ✅ 좋은 질문 |
|---|
| 이런 서비스 있으면 쓰시겠어요? | 마지막으로 그 문제를 겪은 게 언제였나요? 그때 어떻게 하셨어요? |
|---|
| 무엇이 불편하신가요? | 그 일을 할 때 순서대로 하나씩 알려주시겠어요? |
|---|
| 이 기능 필요하시죠? | 지금은 그 문제를 어떻게 해결하고 계세요? |
|---|
| 얼마면 쓰실 건가요? | 그 문제 때문에 돈이나 시간을 쓴 적 있으세요? 얼마나요? |
|---|
1인터뷰 설계
참고탐색 영역이 먼저입니다. 프로젝트 계획서의 「2. 탐색 영역」을 정한 뒤에 이 표를 채웁니다.
영역 없이 "알아내려는 것"을 쓰면 질문이 막연해지기 쉽습니다.
📌 질문지는 한 사람에 하나입니다. 리뷰 짝이 각자 다른 사람을 만나더라도 같은 질문지를 씁니다.
질문이 서로 다르면 2주차에 답을 비교할 수 없습니다.
📌 아래 예시는 «중고거래»를 탐색 영역으로 고른 내 것입니다.
여러분이 1주차에 정한 영역으로 바꿔 쓰시고, 형식만 참고하시기 바랍니다.
| 항목 | 내용 |
|---|
| 우리가 알아내려는 것 | (질문 형태로 1~2개. "○○ 사용자는 왜 △△를 계속 하는가?") |
|---|
| 인터뷰 대상 조건 | (예: 최근 3개월 내 ○○를 해 본 20대) |
|---|
| 소요 시간 | 1인당 30~40분 |
|---|
2질문지
도입 (5분) — 긴장 풀기
- 간단히 자기소개 부탁드립니다. 요즘 어떤 하루를 보내시나요?
- (주제 영역)과 관련해서 평소 어떤 일을 하시나요?
경험 캐기 (20분) — 핵심
- 가장 최근에 (주제 상황)을 겪었던 게 언제인가요?
- 그때 있었던 일을 처음부터 순서대로 말씀해 주시겠어요?
- 그 중 가장 짜증났던/힘들었던 순간은 언제였나요? 왜요?
- 그때 어떻게 해결하셨나요? (해결 못 했다면) 왜 못 하셨나요?
- 그 문제 때문에 시간이나 돈을 따로 쓴 적이 있나요?
- 주변 사람들은 이 상황을 어떻게 하던가요?
심화 (10분) — 주제에 맞게 직접 작성
9.
10.
11.
마무리 (5분)
- 오늘 이야기 중에 제가 놓친, 꼭 하고 싶은 말씀이 있으신가요?
- 비슷한 경험이 있는 분을 한 분 소개해 주실 수 있나요?
"왜요?"를 최소 5번 쓰세요. 표면적인 대답 아래에 진짜 이유가 있는 경우가 많습니다.
침묵이 흘러도 먼저 말을 채우지 않는 편이 좋은데, 3초 정도 기다리면 대개 사용자가 그 침묵을 채웁니다.
3인터뷰 실시 기록
| # | 대상자(익명 ID) | 장소/방식 | 녹음 동의 |
|---|
| P1 | | | ☐ |
|---|
| P2 | | | ☐ |
|---|
| P3 | | | ☐ |
|---|
대상자 실명은 기록하지 않습니다. P1, P2 같은 익명 ID를 쓰세요.
녹음 전 반드시 구두 동의를 받고, 그 동의 발언 자체를 녹음에 포함하세요.
4전사록 작성 규칙
전사(transcription)는 AI를 써도 됩니다. 단, 반드시 원본 음성과 대조하며 검수하세요.
전사는 AI 도구로 합니다. 손으로 받아 적지 마세요.
다만 AI 전사는 고유명사·숫자·말끝을 자주 틀리는 편이라, 위에서 말한 원본 대조 검수가 꼭 필요합니다.
전사록 파일 형식 (docs/interviews/P1.md):
# 인터뷰 P1
- 대상자 프로필(익명) / 녹음 동의
## 전사
[00:02:14] 진행자: ...
[00:02:31] P1: ...
## 관찰 노트 (말이 아닌 것)
- 표정/망설임/한숨이 나온 지점
- 말과 행동이 어긋난 지점 ← 여기에 인사이트가 있습니다
- 인터뷰 후 떠오른 생각
## 인상적인 발언 3개 (그대로 인용)
1. "..."
2. "..."
3. "..."
작성 예시
동네장터 — 인터뷰 설계와 전사록 발췌
인터뷰 설계
| 항목 | 내용 |
|---|
| 알아내려는 것 | 중고 물건을 파는 사람은 왜 만날 장소를 먼저 제안하지 못하는가? |
|---|
| 대상 조건 | 최근 1년 내 4인 이상 중고 직거래에서 판매자를 맡아본 수강자 |
|---|
심화 질문 (본인이 직접 작성한 부분)
- 판매자를 맡고 나서 가장 후회했던 순간이 언제였나요?
- 상대에게 장소를 먼저 제안해 보신 적이 있나요? 그때 어떻게 말을 꺼내셨어요?
- (물어본 적 없다면) 왜 안 물어보셨어요?
- 상대가 답이 없다는 걸 언제 알게 되셨어요? 그때 어떻게 하셨죠?
전사록 발췌 (P1)
[00:04:14] 진행자: 그때 기분이 어떠셨어요?
[00:04:17] P1: 음... (3초) 좀 막막했어요. 편하다는데 뭐가 편한지를 모르니까.
[00:04:28] 진행자: 그래서 어떻게 하셨어요?
[00:04:31] P1: 제가 정해서 말했어야 하는데... 사실 거의 못 했어요.
[00:04:38] 진행자: 왜요?
[00:04:40] P1: 제가 재촉하는 사람처럼 보일까 봐요. "내일 3시에 어디로 오세요"
이렇게 말하면 좀 그렇잖아요. 물건 파는 사람이 갑질하는 것 같고.
관찰 노트
- 04:17에서 3초 망설임 → 이 지점이 핵심. 장소를 모르는 게 아니라 먼저 말하지 못하는 것
- 05:44의 "(웃음)"은 즐거움이 아니라 체념. 말과 표정이 어긋난 지점
- 인터뷰 후: 좋은 장소를 추천하는 기능이 아니라, 먼저 말하지 않아도 되게 만드는 것이 문제였음
인상적인 발언 3개
- "제가 재촉하는 사람처럼 보일까 봐요." (04:40)
- "제가 정한 데가 그쪽한테 멀면 어떡하지." (05:06)
- "사흘 동안 그러다가 그쪽이 그냥 안 읽더라고요." (05:27)
세 문장이 그대로 문제 정의서의 근거가 됩니다.
인용을 확보하지 못한 인터뷰는 3주차에 쓸 재료가 없습니다.
이 대상자의 전사록 전문은 2주차 시연 자료에 있습니다.
제출 체크리스트
- 실제 사람 3명 이상 (리뷰 짝·수강자·가족 제외)
- 해결책이 아니라 과거 경험을 물었는가?
- 전사록에 타임스탬프가 있고 원본과 대조 검수했는가?
- 관찰 노트(말이 아닌 것)가 각 인터뷰마다 있는가?
- 인용 가능한 실제 발언이 인터뷰당 3개 이상 확보되었는가?
사용 주차: 2주차 (모임 중 워크샵)
제출: 서식 제출 페이지에서 «공감지도» 선택
인터뷰 데이터를 해석하는 단계이고, 단순히 요약하는 단계가 아닙니다.
참고채우는 과정 전체를 보고 싶다면 2주차 시연 — 인사이트 뽑기를 보시기 바랍니다.
전사록에서 카드를 자르고 묶어 이 표를 채우기까지가 실제 문장으로 나와 있습니다.
1페르소나 (인터뷰에서 도출)
AI로 만들어낸 가상 인물이 아니라, 실제 인터뷰 대상자를 합성한 것이어야 합니다.
모든 항목 옆에 근거가 된 대상자 ID(P1, P2…)를 적으세요.
| 항목 | 내용 | 근거 |
|---|
| 이름(가칭)·나이·상황 (한 줄) | | P? |
|---|
2공감지도
각 칸에 인용문 또는 관찰 사실을 넣고, 내 추측은 넣지 않습니다.
👂 SAYS — 실제로 한 말 (그대로 인용)
"..." (P1)
"..." (P2)
🤔 THINKS — 말하지 않았지만 생각하는 것 (근거 필수)
- (내용) ← 근거: P1이 ○○ 질문에서 3초 망설임
🏃 DOES — 실제로 하는 행동
-
❤️ FEELS — 감정
- (감정) ← 근거: P2 "..." 발언 시 한숨
3인사이트
인사이트 ≠ 요약.
요약: "사용자는 앱이 복잡해서 불편해한다." → 누구나 아는 말이라 쓸모가 없습니다.
인사이트: "사용자는 앱이 복잡해서가 아니라, 실수했을 때 되돌릴 방법이 없어서 신중해지고 결국 포기한다."
좋은 인사이트에는 긴장(tension) 이 있습니다. 즉, "A를 원하면서 동시에 B를 한다" 같은 모순이 들어 있습니다.
3개 이상을 아래 형식으로 씁니다. 표로 써도 되지만, 목록 쪽이 쓰기 편할 것 같습니다.
서식 사이트의 «인사이트 찾기»는 전사록에서 AI 후보를 뽑고(근거 인용이 실제 전사에 있는지 대조), 내가 찾은 것을 더하고, 교수자가 정한 개수만큼 골라 이 칸에 넣어 줍니다. 최종 선택에는 내가 찾았거나 크게 고친 것이 1개 이상 있어야 합니다.
**1.** (인사이트 한 문장)
- 근거: "..." (P1)
1.
2. ~ 3. (같은 형식)
4AI 활용 기록 (이 주차)
| 무엇을 시켰나? | AI 결과 | 사람이 검증/수정한 것 |
|---|
| (예: 전사록 3건 발언 클러스터링) | (예: 5개 그룹 제시) | (예: 그룹 2·4가 사실상 동일 → 병합. AI가 P3의 반어법을 긍정으로 오해 → 수정) |
|---|
AI가 놓친 것을 반드시 1개 이상 적으세요. AI는 문장은 잘 묶지만 침묵·망설임·모순처럼 전사록에 안 적힌 것을 못 보는데, 인사이트는 바로 거기에 있는 경우가 많습니다.
작성 예시
동네장터 — 중고 물건을 파는 사람 3인 인터뷰
페르소나
| 항목 | 내용 | 근거 |
|---|
| 이름·상황 | 정민(22, 3학년). 중고 직거래에서 처음 판매자를 맡음 | P1, P3 |
|---|
| 재료 | P1·P2·P3 전사록 3건 — 전문은 2주차 시연 자료 | |
|---|
공감지도
👂 SAYS
"제가 재촉하는 사람처럼 보일까 봐요." (P1 04:40)
"'아무 데나 괜찮아요'라고 해요. 근데 사실 아무 데나 괜찮진 않아요." (P3 05:06)
🤔 THINKS
- 먼저 제안하면 상대가 나를 재촉하는 사람으로 볼 것이다
← 근거: P1이 04:17에서 3초 망설인 뒤 "좀 막막했어요"
- 내가 고른 데가 상대에게 멀면 거래가 깨질 것이다
← 근거: P1 05:06 "제가 정한 데가 그쪽한테 멀면 어떡하지"
- 까다로운 사람으로 보이면 안 된다
← 근거: P3 05:21 "그걸 말하면 까다로워 보이니까"
🏃 DOES
- "언제 편하세요?"라고 되물어 공을 상대에게 넘김 (P1 03:56)
- 답이 없어도 재차 묻지 않고 그냥 기다림 (P1 05:27)
- 멀어도 "괜찮아요"라고 하고 왕복 두 시간을 감 (P3 05:40)
❤️ FEELS
- 막막함 ← P1 04:17 "편하다는데 뭐가 편한지를 모르니까"
- 허무함 ← P1 05:44 "팔릴 뻔했는데"
- 안도 ← P3 04:29 "편했어요. 진짜로. 저는 정하는 게 제일 싫거든요"
인사이트
| # | 인사이트 | 근거 |
|---|
| 1 | 판매자는 장소를 몰라서 못 정하는 게 아니라, 먼저 제안하는 행위의 사회적 비용 때문에 조율을 포기한다 | P1, P3 |
|---|
| 2 | 판매자는 귀찮아서 미루는 게 아니라, 상대를 배려하려고 미룬다 | P3 |
|---|
| 3 | "협상"하게 만들면 오히려 부담이 커진다. 판매자가 원하는 건 협상이 아니라 이미 좁혀진 선택지 | P2 "겹치는 시간만 보여도 마음이 편해요" |
|---|
3번 인사이트가 이 내 방향을 결정했습니다. "채팅 기능"이 아니라
"이미 하고 있는 작업이 자연스럽게 드러나는 방식"으로 문제를 다시 봤습니다.
AI 활용 기록
| 무엇을 시켰나 | AI 결과 | 사람이 검증/수정한 것 |
|---|
| 전사록 3건 발언 클러스터링 | 5개 그룹 제시 | 그룹 2·4가 사실상 동일 → 병합 |
|---|
| 감정 분류 | P3의 "괜찮아요 뭐, 제가 하면 되니까"를 긍정으로 분류 | 실제로는 체념. 녹음에서 한숨이 먼저 나왔음 → 부정으로 수정 |
|---|
AI가 놓친 것: 침묵과 한숨. 전사록에 안 적힌 것은 AI가 볼 수 없습니다.
제출 체크리스트
- 공감지도의 모든 칸에 근거(인용/관찰) 가 붙어 있는가?
- 페르소나가 실제 인터뷰 기반인가? (상상 금지)
- 인사이트가 3개 이상이고, 각각 근거가 붙어 있는가?
- AI가 놓친 것을 1개 이상 찾아 기록했는가?
사용 주차: 3주차 (개인 후보 3개 사전 제출 → 모임 중 확정)
제출: 서식 제출 페이지에서 «문제 정의서» 선택 → 채우고 제출
왜 이 문서가 가장 중요한가?
캡스톤이 실패하는 1순위 원인은 기술력 부족이 아니라 문제를 잘못 정의한 것입니다.
즉, 문제가 틀리면 그 위에 쌓은 15주치 코드는 전부 낭비가 됩니다.
좋은 문제의 3가지 조건
- 구체적인 사람이 있다: "대학생"은 사람이 아니고, "이번 과정에 처음 중고 물건을 팔아본 3학년"이 사람입니다.
- 이미 대가를 치르고 있다: 그 사람이 지금 시간·돈·감정을 쓰고 있다는 근거가 있어야 합니다.
- 아직 안 풀렸다: 이미 좋은 해결책이 있다면, 그건 문제가 아니라 시장입니다.
1POV (Point of View) 문장
[ 사용자 ] 는 [ 니즈 ] 가 필요하다.
왜냐하면 [ 인사이트 ] 이기 때문이다.
작성 예시:
[이번 과정에 처음 중고 물건을 팔아본 3학년 학생]은
[리뷰 짝이 실제로 일을 하고 있는지 눈치 보지 않고 확인할 방법]이 필요하다.
왜냐하면 [진행 상황을 물어보는 행위 자체가 리뷰 짝을 불신하는 것처럼 보일까 봐,
판매자는 먼저 제안하지 못한 채 눈치만 보다가 결국 거래가 흐지부지되기] 때문이다.
내 프로젝트의 POV:
여기에 적습니다
| 검증 질문 | 답 |
|---|
| 인사이트의 근거가 된 인용문은? | |
|---|
| 이 문장에 "앱", "플랫폼", "AI" 같은 해결책 단어가 들어갔는가? | ☐ 없음 (있으면 다시 쓰세요) |
|---|
2HMW (How Might We) 질문
POV를 3~5개의 실행 가능한 질문으로 쪼갭니다.
너무 넓으면: "어떻게 하면 중고거래를 잘 되게 할까?" → 아무것도 못 함
너무 좁으면: "어떻게 하면 진행률 바를 넣을까?" → 이미 해결책임
적당하면: "어떻게 하면 서로 묻지 않아도 만날 장소와 시간이 자연스럽게 좁혀질까?"
| # | HMW 질문 | 범위 (넓음/적당/좁음) |
|---|
| 1 | 어떻게 하면 ... 할 수 있을까? | |
|---|
| 2 | | |
|---|
| 3 | | |
|---|
| 4 | | |
|---|
| 5 | | |
|---|
4주차 Ideate에서 집중할 HMW 1~2개:
3문제 정의 요약
| 항목 | 내용 |
|---|
| 한 문장 정의 | (이 프로젝트는 ○○인 사람의 △△ 문제를 해결한다) |
|---|
| 타깃 사용자 | (구체적으로. 상황·시점·역할까지) |
|---|
| 현재 해결 방식 | (지금은 어떻게 버티고 있는가?) |
|---|
| 현재 방식의 한계 | (근거와 함께) |
|---|
| 우리가 다르게 할 지점 | (한 가지만. 여러 개면 초점이 없는 것) |
|---|
4문제의 근거 (Evidence)
주장이 아니라 데이터를 적으세요.
| 근거 유형 | 내용 | 출처 |
|---|
| 인터뷰 인용 | "..." | P1 |
|---|
| 인터뷰 인용 | "..." | P2 |
|---|
| 관찰 사실 | | |
|---|
| 정량 데이터 (선택) | | (반드시 원 출처 URL. AI가 말한 통계는 직접 확인 전까지 사용 금지) |
|---|
5성공의 정의
15주 뒤, 무엇이 관찰되면 우리는 성공했다고 말할 수 있는가??
| 구분 | 지표 | 목표치 | 측정 방법 |
|---|
| 사용자 관점 | (예: 과업 완료 시간) | | (14주차 사용성 테스트) |
|---|
| 기술 관점 | (예: 핵심 기능 응답 시간) | | |
|---|
"많은 사람이 좋아한다" 같은 건 지표가 아니므로, 14주차에 실제로 측정할 수 있는 것만 적으세요.
참고이번 프로젝트에서 하지 않는 것(스코프 경계)은 PRD의 «비목표»에 적습니다. 문제 정의서에는 따로 쓰지 않습니다.
작성 예시
동네장터 — 중고 직거래 약속 도우미
POV
[이번 과정에 처음 중고 물건을 팔아본 3학년 학생]은
[상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법]이 필요하다.
왜냐하면 [먼저 장소를 제안하는 행위가 상대를 재촉하는 것처럼 보일까 봐
서로 미루다가 대화가 끊기고 거래가 흐지부지되기] 때문이다.
| 검증 질문 | 답 |
|---|
| 인사이트 근거 인용 | P1 04:40 "제가 재촉하는 사람처럼 보일까 봐요" · P3 04:29 "저는 정하는 게 제일 싫거든요" |
|---|
| 해결책 단어가 들어갔는가 | 없음 (앱·플랫폼·자동화 단어 없음) |
|---|
HMW
| # | HMW 질문 | 범위 |
|---|
| 1 | 어떻게 하면 서로 묻지 않아도 만날 장소와 시간이 자연스럽게 좁혀질까? | 적당 ✅ |
|---|
| 2 | 어떻게 하면 "보고"가 아니라 "흔적"으로 상황이 보이게 할까? | 적당 ✅ |
|---|
| 3 | 어떻게 하면 먼저 제안한 쪽이 갑질처럼 보이지 않게 할까? | 적당 |
|---|
| 4 | 어떻게 하면 중고거래를 잘 되게 할까? | 너무 넓음 ❌ |
|---|
→ 4주차에 집중할 HMW: 1번, 2번
문제 정의 요약
| 항목 | 내용 |
|---|
| 한 문장 정의 | 처음 물건을 파는 수강자가 상대에게 묻지 않고도 만날 장소와 시간을 정하게 한다 |
|---|
| 타깃 사용자 | 직거래 경험이 적은 3~4학년. 중고 앱에서 1:1로 만나 거래하는 판매자·구매자 |
|---|
| 현재 해결 방식 | "언제 편하세요?"라고 되물어 공을 넘기거나, 아예 장소를 하나로 고정해 버림 |
|---|
| 현재 방식의 한계 | 서로 미루다 사흘이 가고(P1 05:27), 멀어도 "괜찮다"고 답한다(P3 05:40) |
|---|
| 우리가 다르게 할 지점 | 협상을 요구하지 않고, 양쪽이 미리 고른 시간에서 겹치는 것만 보여준다 |
|---|
성공의 정의
| 구분 | 지표 | 목표치 | 측정 방법 |
|---|
| 사용자 | 판매자가 만날 후보를 정하는 데 걸리는 시간 | 30초 이내 | 14주차 사용성 테스트 T1 |
|---|
| 사용자 | "묻지 않고 알 수 있었다"에 동의 | 5명 중 4명 | 테스트 후 인터뷰 |
|---|
| 기술 | 약속판 첫 로딩 | 2초 이내 | 배포 환경 측정 |
|---|
캠퍼스 캡션 — 청각장애 수강자 강의 자막 서비스 (POV만 발췌)
[전공 강의에서 실시간 자막 없이 강의를 듣는 청각장애 수강자]는
[교수자의 발화를 놓쳤을 때 강의 흐름을 잃지 않고 따라잡을 방법]이 필요하다.
왜냐하면 [속기 지원은 신청 절차가 길고 모든 강의에 배정되지 않으며,
녹음을 나중에 듣는 방식은 그 모임 시간 안에서 질문할 기회를 이미 놓치기] 때문이다.
| 항목 | 내용 |
|---|
| 타깃 사용자 | 지원 인력이 배정되지 않은 강의를 수강하는 청각장애 수강자 |
|---|
| 현재 방식 | 친구의 필기 공유, 녹음 후 복습, 교수자에게 개별 요청 |
|---|
| 한계 | 전부 강의가 끝난 뒤의 해결책이라 실시간 참여를 회복하지 못함 |
|---|
두 예제의 차이를 보세요. '동네장터'은 기술 난이도가 낮고 사용자 심리가 핵심이며,
'캠퍼스 캡션'은 문제가 명확한 대신 기술 리스크(인식 정확도·지연)가 프로젝트의 성패를 가릅니다.
6주차 PoC에서 무엇을 검증해야 하는지가 완전히 달라집니다.
제출 체크리스트
- POV 문장에 해결책 단어가 없는가?
- 타깃 사용자가 "상황"까지 구체적인가?
- 모든 주장에 인터뷰 근거가 붙어 있는가?
- 성공 지표가 14주차에 실제 측정 가능한가?
사용 주차: 3주차 초안 작성 → 이후 계속 갱신
제출: 서식 제출 페이지에서 «PRD» 선택 → 채우고 제출 (갱신할 때마다 다시 제출)
0이 문서를 쓰는 법
PRD는 "무엇을 왜 만드는가" 를 적는 문서이고, "어떻게 만드는가"는 여기 쓰지 않습니다(그건 8주차 아키텍처 문서).
주의AI로 PRD 초안을 만드는 것은 허용됩니다. 그대로 제출하는 것은 금지입니다.
AI는 그럴듯하지만 일반적인 PRD를 씁니다. 여러분의 인터뷰 데이터가 안 들어간 PRD는 어느 것이든 상관없는 문서이며, 0점입니다. 초안 생성 후 반드시 아래 「3. 사용자 시나리오」 절을 직접 다시 쓰세요.
1개요
| 항목 | 내용 |
|---|
| 제품명 | |
|---|
| 한 줄 설명 | (엘리베이터에서 15초 안에 설명한다면) |
|---|
| 타깃 사용자 | (문제 정의서와 일치해야 함) |
|---|
| 핵심 가치 제안 | (경쟁 대안 대비 우리만의 것 한 가지) |
|---|
2목표와 비목표
목표 (Goals)
1.
2.
3.
비목표 (Non-Goals) — 이번 프로젝트에서 하지 않는 것
1.
2.
3.
비목표를 적어두면 12주차에 "이것도 넣을까?" 하는 유혹을 이길 수 있습니다.
3사용자 시나리오
기능 목록보다 시나리오가 먼저이므로, 사용자가 어떤 상황에서 이걸 꺼내드는지 서술하시기 바랍니다.
시나리오 1 (핵심):
(누가) ○○는 (언제/어디서) △△한 상황에서
(무엇을 하려고) □□하려 한다.
(현재) 지금은 ~~하게 하고 있어서 ~~한 문제가 있다.
(우리 제품으로) 우리 제품에서는 ~~ → ~~ → ~~ 순서로 진행하고,
(결과) 결과적으로 ~~를 얻는다.
시나리오 2:
여기에 적습니다
4기능 요구사항
| ID | 기능명 | 설명 | 우선순위 | 관련 시나리오 |
|---|
| FR-01 | | | Must | 1 |
|---|
| FR-02 | | | Must | |
|---|
| FR-03 | | | Should | |
|---|
| FR-04 | | | Could | |
|---|
| FR-05 | | | Won't (이번 과정) | |
|---|
MoSCoW 기준
- Must: 이게 없으면 제품이 아님. 혼자 하는 프로젝트는 2~3개를 넘기지 마세요.
- Should: 있으면 확실히 좋음. 시간 남으면.
- Could: 여유가 있을 때만.
- Won't: 이번 과정엔 안 함 (비목표와 연결).
주의Must가 4개 이상이면 반드시 미완성으로 끝납니다. 지금 줄이세요. (혼자 6주 기준)
5비기능 요구사항
| 구분 | 요구사항 | 측정 방법 |
|---|
| 성능 | (예: 핵심 화면 로딩 2초 이내) | |
|---|
| 보안 | (예: 비밀번호 해시 저장, API 키 서버 보관) | |
|---|
| 사용성 | (예: 첫 사용자가 도움말 없이 핵심 과업 완료) | 14주차 사용성 테스트 |
|---|
| 안정성 | (예: 잘못된 입력에 서버가 죽지 않음) | |
|---|
| 확장성/기타 | | |
|---|
비기능 요구사항을 빈칸으로 두면 12주차에 "돌아가긴 하는데 쓸 수 없는 것"이 나오기 쉽습니다.
6화면 및 흐름 (요약)
사용자 플로우:
(예: 진입 → 로그인 → 거래 열기 → 가능 시간 선택 → 약속판 → 확정 알림)
7데이터 (개요)
개인정보가 하나라도 있으면 8주차 설계에서 별도로 다룹니다. 지금은 목록만.
8오픈 이슈
작성 예시
동네장터 — PRD 발췌
1. 개요
| 항목 | 내용 |
|---|
| 제품명 | 동네장터 |
|---|
| 한 줄 설명 | 묻지 않아도 만날 장소와 시간이 좁혀지는 직거래 약속 도우미 |
|---|
| 타깃 사용자 | 판매자 경험이 없는 3~4학년, 4~6인 중고 직거래 |
|---|
| 핵심 가치 제안 | 입력을 요구하지 않는다. 이미 남는 흔적으로 상태를 보여준다 |
|---|
2. 목표와 비목표
목표
- 판매자가 30초 안에 만날 후보를 정한다
- 거래 등록에 드는 시간이 30초 이내다
- 겹치는 시간이 없을 때 다음에 무엇을 할지가 화면에 보인다
비목표 (이번 과정 제외)
- 채팅·파일 공유 — 카카오톡을 대체하지 않는다
- 모바일 네이티브 앱 — 반응형 웹으로 충분
- 알림 푸시 — 4주차 인터뷰에서 "알림이 더 부담"이라는 답이 나옴
4. 기능 요구사항
| ID | 기능명 | 우선순위 | 관련 시나리오 |
|---|
| FR-01 | 거래 열기·참여 (링크 공유) | Must | 1 |
|---|
| FR-02 | 가능 시간 선택 (요일·시간대) | Must | 1 |
|---|
| FR-03 | 약속판 — 상대·상태·겹치는 시간 한 화면 | Must | 1 |
|---|
| FR-04 | 답 없는 거래 시각 구분 | Must | 2 |
|---|
| FR-05 | 거래 상태 변경 (한 번의 조작으로) | Should | 1 |
|---|
| FR-06 | 주간 요약 보기 | Could | — |
|---|
| FR-07 | 알림 푸시 | Won't | 비목표 3 |
|---|
Must가 4개입니다. 처음에는 9개였고, 3주차 코칭에서 잘라냈습니다.
5. 비기능 요구사항
| 구분 | 요구사항 | 측정 방법 |
|---|
| 성능 | 약속판 첫 로딩 2초 이내 (20개 작업 기준) | 배포 환경 개발자도구 |
|---|
| 보안 | 링크가 없으면 거래 정보에 접근 불가 | 12주차 교차 QA |
|---|
| 사용성 | 첫 사용자가 도움말 없이 거래 등록 완료 | 14주차 테스트 T2 |
|---|
| 안정성 | 겹치는 시간 0건 / 상대 미참여 상태에서도 화면이 깨지지 않음 | 테스트 코드 |
|---|
캠퍼스 캡션 — 비기능 요구사항만 발췌
프로젝트 성격에 따라 비기능 요구사항의 무게가 완전히 달라지는 예입니다.
여기서는 성능과 접근성이 핵심 기능만큼 중요합니다.
| 구분 | 요구사항 | 측정 방법 |
|---|
| 성능 | 발화 종료 후 자막 표시까지 1.5초 이내 | 6주차 PoC에서 측정, 20회 평균 |
|---|
| 정확도 | 전공 용어 제외 일반 발화 인식률 85% 이상 | 실제 강의 녹음 10분 샘플로 측정 |
|---|
| 접근성 | 자막 글자 크기·대비를 사용자가 조절 가능 | 14주차 당사자 테스트 |
|---|
| 안정성 | 네트워크 끊김 시 마지막 자막 유지 + 복구 안내 | 테스트 코드 |
|---|
| 개인정보 | 강의 음성은 저장하지 않고 실시간 처리 후 폐기 | 8주차 설계에서 별도 ADR |
|---|
마지막 항목처럼 개인정보가 걸린 요구사항은 PRD에 적어두고 8주차에 ADR로 결정합니다.
제출 체크리스트
- 「3. 사용자 시나리오」에 내 프로젝트 인터뷰에서 나온 상황이 들어 있는가? (AI 문장 그대로 X)
- Must 기능이 6개 이하인가?
- 모든 기능이 시나리오나 인터뷰 근거로 연결되는가?
- 비기능 요구사항에 측정 방법이 적혀 있는가?
- 비목표(Non-Goals)가 3개 이상인가?
사용 주차: 3주차 작성 → 9주차에 이슈로 전환 → 10~12주차 구현
제출: 서식 제출 페이지에서 «사용자 스토리» — 스토리 1개당 한 건씩 제출 (9주차부터는 이슈 보드가 정본)
왜 사용자 스토리인가?
"로그인 기능 구현"은 할 일일 뿐이라, 왜 하는지, 언제 끝난 건지 알 수 없습니다.
반면 사용자 스토리는 누구를 위해, 왜, 무엇이 되면 끝인지를 한 줄에 담습니다.
그리고 이 강의에서는 이보다 더 중요한 이유가 하나 있습니다.
인수조건이 명확한 스토리는 AI에게 시킬 수 있는 단위입니다.
"쇼핑몰 만들어줘"는 AI가 실패하기 쉽지만, 인수조건 3줄짜리 스토리는 대개 성공합니다.
즉, 스토리를 잘 쪼개는 능력이 곧 AI를 잘 쓰는 능력입니다.
스토리 작성 형식
As a [사용자 유형],
I want [무엇을 하기],
So that [어떤 가치를 얻기 위해]
인수조건 (Acceptance Criteria) — Given/When/Then
Given [사전 상태]
When [사용자 행동]
Then [관찰 가능한 결과]
작성 예시
동네장터 — US-03
### US-03 · 상대와 겹치는 시간 확인
**As a** 중고 물건을 파는 사람,
**I want** 상대에게 직접 묻지 않고 서로 가능한 시간이 겹치는 구간 보기,
**So that** 재촉하는 것처럼 보이지 않으면서 만날 시간을 정할 수 있다.
**인수조건**
- [ ] Given 양쪽이 가능 시간을 3개씩 골랐고, When 판매자가 약속판에 진입하면,
Then 겹치는 시간이 이른 순서로 한 화면에 보인다.
- [ ] Given 겹치는 시간이 하나도 없고, When 약속판에 진입하면,
Then 해당 작업이 시각적으로 구분되어 표시된다.
- [ ] Given 작업이 하나도 없고, When 약속판에 진입하면,
Then 빈 상태 안내와 작업 추가 버튼이 보인다.
**관련 FR:** FR-02
마지막 인수조건(빈 상태)을 주목하세요. 예외·빈 상태·에러 상태를 안 적으면 AI는 정상 경로만 만들어줍니다. 그래서 빈 상태 · 에러 인수조건을 꼭 적습니다.
이 스토리를 쪼개기 전에는 이랬습니다
| 처음 | 문제 |
|---|
| US-03 약속판 만들기 (추정 L) | 너무 큼. AI에게 시키면 매번 다른 것이 나오고, 인수 판정이 불가능 |
|---|
→ 조회 / 표시 / 지연 강조 / 빈 상태로 나눠 4개 스토리(S·M)로 분할했습니다.
이 분할이 10주차 구현 속도를 결정했습니다.
백로그
참고우선순위는 PRD 기능 요구사항(FR)에서 정합니다. 스토리는 관련 FR의 우선순위를 따라갑니다.
스토리 크기: S (반나절) / M (1~2일) / L (3일 이상 → 더 쪼개세요). 추정은 스프린트 계획에 적습니다.
L짜리 스토리는 AI에게도 사람에게도 실패합니다. 반드시 분할하세요.
📌 아래 백로그 표는 스프레드시트로 대체해도 됩니다 (파일을 저장소에 넣고 링크).
다만 그 아래 스토리 상세와 인수조건은 반드시 마크다운으로 씁니다. 이슈 본문과 AI 프롬프트에 그대로 쓰이기 때문입니다.
Must (핵심 — 없으면 제품이 아님)
| ID | 스토리 요약 | 관련 FR | 스프린트 |
|---|
| US-01 | | | 1 |
|---|
| US-02 | | | 1 |
|---|
| US-03 | | | 1 |
|---|
| US-04 | | | 2 |
|---|
Should
| ID | 스토리 요약 | 관련 FR | 스프린트 |
|---|
| US-05 | | | 2 |
|---|
| US-06 | | | 3 |
|---|
Could / Won't
| ID | 스토리 요약 | 관련 FR | 비고 |
|---|
| US-07 | | | Could |
|---|
| US-08 | | | Won't — 이번 과정 제외 사유: |
|---|
스토리 상세
위 표의 각 항목을 아래 형식으로 상세 기술합니다. (Must 스토리는 전부 필수)
US-01 · (제목)
As a ,
I want ,
So that .
인수조건
- Given , When , Then .
- Given , When , Then .
- (예외/빈 상태/에러 상태 최소 1개)
관련 FR:
US-02 · (제목)
As a ,
I want ,
So that .
인수조건
관련 FR:
INVEST 자가 점검
각 스토리가 아래를 만족하는지 확인하세요.
| 기준 | 질문 |
|---|
| Independent | 다른 스토리 없이도 단독으로 개발/테스트 가능한가? |
|---|
| Negotiable | 구현 방법을 못 박지 않았는가? (스토리는 "무엇", 코드는 "어떻게") |
|---|
| Valuable | 사용자에게 가치가 있는가? ("DB 테이블 생성"은 스토리가 아님) |
|---|
| Estimable | 얼마나 걸릴지 감이 오는가? 안 오면 조사가 더 필요하다는 뜻 |
|---|
| Small | S 또는 M인가? L이면 쪼개세요 |
|---|
| Testable | 인수조건만 보고 다른 사람이 합격/불합격을 판정할 수 있는가? |
|---|
9주차: 이슈로 전환
- 단위: 스토리 1개 = 이슈 1개
- 이슈 제목:
[US-03] 리뷰 짝 진행 상황 확인 - 이슈 본문: 스토리 + 인수조건을 체크박스로
- 라벨/분류:
must / should / sprint-1 / 담당 영역 - 연결: 변경 요청 본문에 이슈 번호를 적어 이슈와 코드를 연결
이슈 트래커를 제공하는 호스팅을 쓸 수 없으면 스프레드시트 칸반(할 일 / 진행 / 리뷰 / 완료)으로 대체합니다. 열 구성과 기록 항목은 동일하게 유지하세요.
자세한 내용은 저장소 운영 방식 선택 가이드를 참고하시기 바랍니다.
제출 체크리스트
- 모든 Must 스토리에 인수조건이 3개 이상 있는가?
- 각 스토리에 예외/빈 상태/에러 인수조건이 최소 1개 있는가?
- L 크기(3일 이상) 스토리가 남아 있지 않은가?
- 인수조건이 "잘 동작한다" 같은 판정 불가 문장이 아닌가?
- 스토리와 PRD의 FR이 서로 연결되는가?
사용 주차: 8주차 ADR-0001 한 건 필수 → 더 쓰는 것은 선택 (중요한 결정마다 추가)
ADR-0001(아키텍처·데이터 결정) 에는 7주차에 조사해 온 대안·제약·데이터 항목을 담습니다. «아키텍처 대안 조사»는 2026-10부터 따로 내지 않습니다.
미리 채워짐: «저장할 데이터 항목» 후보는 PRD 기능·플로우에서 뽑아 «확인 필요» 표시로 들어가 있습니다. 확인하고 고쳐서 냅니다.
제출: 서식 제출 페이지에서 «ADR» 선택 → 결정 1건마다 따로 제출 (번호를 다르게)
왜 ADR을 쓰는가?
15주차 발표에서 반드시 이 질문을 받습니다.
"왜 그 기술을 선택했나요?"
이때 "인터넷에서 많이 쓴다고 해서요" 또는 "AI가 추천해서요"라고 답한다면, 그 사람은 설계를 했다고 보기 어렵습니다.
ADR은 결정의 순간에 그 이유를 남기는 문서인데, 나중에 쓰면 그 이유가 미화되고 왜곡되기 쉽습니다.
주의이 강의에서 ADR이 특히 중요한 이유:
AI는 대안을 나열하고 장단점을 정리하는 데 매우 뛰어나니, 그건 AI에게 시키세요.
하지만 "내 프로젝트의 상황에서 무엇을 포기할 것인가" 는 AI가 대신 결정할 수 없습니다.
ADR은 "AI가 정리하고 사람이 결정한다"는 이 강의의 원칙이 문서로 드러나는 자리입니다.
파일명 규칙
docs/adr/0001-architecture-data.md
docs/adr/0002-auth-oauth-vs-session.md
템플릿 (이 아래를 복사해서 사용)
# ADR-0001: (결정 내용을 한 줄로)
- **날짜:** 2026-XX-XX
## 배경 (Context)
무엇을 결정해야 하는가? 왜 지금 결정해야 하는가?
## 검토한 대안 (Options)
### 대안 A: (이름)
- 장점:
- 단점:
- 내 프로젝트 기준 적합도:
### 대안 B: (이름)
- 장점:
- 단점:
- 내 프로젝트 기준 적합도:
### 대안 C: (이름)
- 장점:
- 단점:
- 내 프로젝트 기준 적합도:
## 결정 (Decision)
우리는 **(대안 X)** 를 선택한다.
**결정적인 이유 (한 가지):**
**이 결정으로 우리가 포기하는 것:**
> 포기하는 것이 없다면, 그건 결정이 아니라 그냥 유일한 선택지였던 것입니다.
> 진짜 결정에는 반드시 대가가 따릅니다.
<!-- 아래 두 절은 ADR-0001(아키텍처·데이터 결정)에만 씁니다 -->
## 내 제약
- 역량: (예: 백엔드는 실습에서만 해 봄)
- 기간: (예: 남은 개발 기간 6주)
- 예산·환경: (예: 무료 범위, GPU 없음)
## 저장할 데이터 항목
| 항목 | 설명 | 개인정보(O) | 어느 화면에서 |
|---|---|---|---|
| | | | |
«내 제약» 은 위 «검토한 대안»의 적합도를 판단하는 기준입니다. 일반적인 좋고 나쁨이 아니라 이 제약에 비추어 적합도를 적습니다.
«저장할 데이터 항목» 은 화면 목록에서 거꾸로 따져 3개 이상 빠짐없이 적습니다. 개인정보(O)가 있으면 그 처리도 결정에 넣습니다.
작성 예시
캠퍼스 캡션 — ADR-0002 음성 인식 방식 선택
ADR-0002: 음성 인식을 외부 STT API로 처리한다
배경
강의 음성을 텍스트로 바꾸는 방식을 정해야 한다. 이것이 프로젝트의 성패를 가르는 핵심 기술이며, 6주차 PoC에서 "가능하긴 한데 지연이 문제"라는 결과가 나온 상태다.
검토한 대안
대안 A: 오픈소스 STT 모델을 직접 서버에 올려 구동
- 장점: 비용이 들지 않고, 음성이 외부로 나가지 않아 개인정보 측면에서 유리
- 단점: GPU 없는 환경에서 실시간 처리가 어려움. PoC에서 30초 음성에 40초 소요
- 적합도: 낮음. 6주 안에 성능 문제를 해결할 역량이 없음
대안 B: 상용 STT API 실시간 스트리밍 사용
- 장점: PoC에서 지연 1.2초 확인. 별도 튜닝 없이 목표 달성
- 단점: 무료 한도를 넘으면 비용 발생. 음성이 외부 서비스로 전송됨
- 적합도: 높음. 단 개인정보 처리 방침을 명시해야 함
대안 C: 녹음 후 후처리 (비실시간)
- 장점: 구현이 가장 쉽고 정확도가 높음
- 단점: 문제 정의를 포기하는 것. 우리가 풀려는 건 "모임 시간 안에서의 참여"였음
- 적합도: 없음. 문제 정의와 충돌
결정
우리는 대안 B(상용 STT API 실시간 스트리밍) 를 선택한다.
결정적인 이유: 1.5초 이내라는 비기능 요구사항은 타협할 수 없는데, 내 역량과 남은 기간으로 대안 A가 그 수치에 도달할 가능성이 낮다.
이 결정으로 우리가 포기하는 것
- 음성이 외부로 나가지 않는다는 개인정보 이점 → 대신 저장하지 않고 즉시 폐기하고, 사용 전 고지·동의 화면을 넣는다
- 무료 한도 초과 시 서비스 중단 위험 → 데모용 사용량 상한을 코드에 넣는다
8주차 필수 ADR 1건 (2026-10부터 · 2건 → 1건)
1번(ADR-0001)만 필수입니다. 2번은 더 쓰고 싶을 때 고르는 선택 영역입니다.
| # | 영역 | 예시 |
|---|
| 1 | 아키텍처·데이터 결정 (ADR-0001) | 모놀리식 vs 분리 / 클라이언트-서버 경계 / 어떤 DB, 왜. «내 제약»·«저장할 데이터 항목» 포함 |
|---|
| 2 (선택) | 가장 불확실한 것 | 인증 방식 / 외부 API 선택 / 배포 환경 / 실시간 처리 방식 |
|---|
2번을 쓴다면 사람마다 다르니, 6주차 리스크 리포트에서 "미해결"로 남은 항목을 고르시면 됩니다.
작성 시 흔한 실수
| ❌ 이렇게 쓰면 안 됩니다 | ✅ 이렇게 쓰세요 |
|---|
| "React가 가장 인기 있어서" | "리뷰 짝 4명 중 3명이 React 경험이 있어 학습 비용을 8주차 이후 구현 기간에서 뺄 수 있다" |
|---|
| 대안이 1개만 적혀 있음 | 진지하게 검토한 대안 최소 2개, 각각의 단점까지 |
|---|
| "포기하는 것: 없음" | 반드시 있습니다. 찾아서 쓰세요 |
|---|
| 12주차에 몰아서 작성 | 결정한 그 주에 작성 (작성 시점을 확인합니다) |
|---|
제출 체크리스트
- 결정 1건 = 파일 1개로 분리되어 있는가?
- 각 ADR에 대안이 2개 이상 검토되었는가?
- 결정적인 이유 한 가지가 적혀 있는가?
- 포기한 것이 명시되어 있는가?
- ADR-0001에 내 제약과 저장할 데이터 항목(3개 이상)이 있는가? («확인 필요» 표시를 모두 확인했는가?)
사용 주차: 9주차 3개 스프린트 계획 수립 → 10·11·12주차 실행
제출: 서식 제출 페이지에서 «스프린트 계획» — 한 건만 냅니다. 지금 스프린트를 자세히 쓰고 «Sprint 2·3 목표»를 한 줄씩 적어 두며, 스프린트가 바뀌면 같은 문서를 고쳐 다시 제출합니다 (작업 목록은 이슈 보드가 정본)
미리 채워짐: 이슈는 사용자 스토리에서, DoD는 프로젝트 계획서의 검수 기준에서 가져와 채워져 있습니다. 확인하고 고쳐서 냅니다.
1차 발표 피드백 반영도 이 문서 안에 씁니다 — «피드백 반영 계획서»는 2026-10부터 따로 내지 않습니다(이미 냈다면 자동으로 옮겨집니다).
이슈 트래커를 쓸 수 없으면 저장소 운영 방식 선택 가이드의 대체 수단을 사용하세요.
이 강의의 스프린트 구조
| 스프린트 | 기간 | 목표 | 종료 조건 |
|---|
| Sprint 1 | 9주차 모임 뒤 ~ 10주차 | 핵심 기능 1개를 끝에서 끝까지 | 사용자가 화면에서 시작해 결과를 볼 수 있는 경로 1개 완성 |
|---|
| Sprint 2 | 10주차 후 ~ 11주차 | 모듈 통합 | 각자 만든 것들이 하나의 앱으로 연결됨 |
|---|
| Sprint 3 | 11주차 후 ~ 12주차 | 품질·배포 | 배포된 URL에서 외부인이 사용 가능 |
|---|
주의Sprint 1에서 "화면만" 또는 "API만" 만들면 실패입니다.
얇더라도 끝에서 끝까지(end-to-end) 관통하는 경로 하나를 먼저 뚫어 두어야 11주차 통합이 수월합니다.
Definition of Done (DoD)
전체가 합의한 "끝났다"의 기준으로, 이 기준을 통과하지 못한 것은 진행 중입니다.
프로젝트 계획서의 검수 기준으로 미리 채워져 있으니, 9주차 모임에서 본인이 직접 확인하고 고치시기 바랍니다.
- 인수조건이 전부 충족됨
- 테스트 코드 작성 및 통과
- 자동 검증 통과 (CI 또는 로컬 검증 스크립트 — 린트 + 테스트)
- 리뷰 짝 1명 이상의 리뷰 승인 (변경 요청 승인 또는 리뷰 기록지)
- 통합본에 반영됨 (A는 변경 요청 병합, B는 커밋 묶음 반영)
- 작성자가 코드 동작을 설명할 수 있음 (AI 생성분 포함)
- (추가 규칙: )
CI를 쓸 수 없으면 3번을 "병합 전 scripts/check 실행 + 결과를 리뷰 기록지에 첨부" 로 바꿔 적습니다.
이 실행은 사람이 잊기 쉬우니 DoD에 명시해 두는 것이 특히 중요합니다. → 저장소 운영 방식 선택 가이드
참고아래 스프린트별 이슈 표는 이슈 보드나 스프레드시트로 대체해도 됩니다.
다만 스프린트 목표 한 문장과 DoD는 마크다운으로 씁니다.
Sprint 1 — 핵심 기능 관통
| 항목 | 내용 |
|---|
| 스프린트 목표 (한 문장) | |
|---|
| 데모할 것 (10주차) | |
|---|
| 이슈 | 스토리 | 담당 | 추정 | 상태 |
|---|
| # | US-01 | | S/M | ☐ |
|---|
| # | US-02 | | | ☐ |
|---|
| # | US-03 | | | ☐ |
|---|
Sprint 2·3 목표 (한 줄씩):
회고: 10주차 모임 중에 함께 이야기하며, 따로 제출하지는 않습니다.
Sprint 2 — 통합
Sprint 2가 시작되면 위 문서를 고쳐(어느 스프린트 · 목표 · 이슈) 다시 제출합니다. 새 건을 만들지 않습니다.
| 항목 | 내용 |
|---|
| 스프린트 목표 (한 문장) | |
|---|
| 데모할 것 (11주차) | |
|---|
통합 계획 — 11주차 이전에 반드시
| 연결할 모듈 A | 연결할 모듈 B | 인터페이스 (API/함수 시그니처) | 담당 |
|---|
| | | |
|---|
통합은 마지막에 하는 일이 아닙니다. 좀 억지스럽더라도 이번 스프린트 중반에 한 번 붙여 보시기 바랍니다.
일단 붙여 봐야 무엇이 안 맞는지 알 수 있고, 그걸 알아야 남은 기간에 고칠 수 있습니다.
Sprint 3 — 품질·배포
| 항목 | 내용 |
|---|
| 스프린트 목표 (한 문장) | |
|---|
| 데모할 것 (12주차) | |
|---|
| 이슈 | 작업 | 담당 | 추정 | 상태 |
|---|
| # | 예외 처리 / 에러 화면 | | | ☐ |
|---|
| # | 성능 개선 | | | ☐ |
|---|
| # | 보안 점검 (키 노출, 입력 검증) | | | ☐ |
|---|
| # | 배포 | | | ☐ |
|---|
| # | README (설치·실행법) | | | ☐ |
|---|
작업 분배 원칙
| 원칙 | 이유 |
|---|
| 1인당 동시에 진행 중인 이슈는 최대 2개 | 3개 이상이면 전부 미완성으로 끝납니다 |
|---|
| 스프린트마다 역할 순환 | "나는 프론트만" = 캡스톤의 학습 목적 상실 |
|---|
| 이슈에 담당자 없이 두지 않기 | 주인 없는 작업은 아무도 안 합니다 |
|---|
| 마감 48시간 전 미착수 이슈는 스코프에서 뺀다 | 늦게 시작한 작업은 통합을 망칩니다 |
|---|
진행 관리
| 항목 | 규칙 |
|---|
| 데일리 체크 | (예: 매일 저녁 Discord에 한 줄 — 한 것 / 할 것 / 막힌 것) |
|---|
| 이슈 상태 갱신 | 작업 시작 시 In Progress, 리뷰 요청 시 In Review |
|---|
| 막혔을 때 | 2시간 이상 막히면 반드시 강의 채널에 공유. 혼자 붙잡고 있는 것이 가장 큰 손실입니다 |
|---|
1차 발표 피드백 반영
7주차 발표·교차 리뷰에서 받은 지적을 무엇은 받아들이고 무엇은 거부할지 정합니다. 거부 항목이 하나도 없으면 반려합니다.
| # | 받은 지적 | 출처 | 수용/거부 | 이유 | 반영 시점 |
|---|
| 1 | | 교수자 / 동료 | 수용 / 거부 | | |
|---|
| 2 | | | | | |
|---|
동네장터 — 1차 발표 피드백 반영
| # | 받은 지적 | 출처 | 수용/거부 | 이유 | 반영 시점 |
|---|
| 1 | 거래 등록 자체가 부담이라 아무도 안 쓸 것 | 교수자 | 수용 | 5명 중 3명이 같은 반응. 등록 단계를 2개로 줄인다 | Sprint 1 |
|---|
| 2 | 알림 기능이 있어야 실효성이 있다 | 동료 | 거부 | 인터뷰에서 "알림이 더 부담"이라는 답이 나옴. 비목표로 유지 | — |
|---|
AI 활용 계획 (스프린트별)
| 스프린트 | AI에게 맡길 것 | 사람이 반드시 할 것 |
|---|
| 1 | (예: 보일러플레이트, 테스트 케이스 초안) | (예: 인터페이스 설계, 인수조건 판정) |
|---|
| 2 | (예: 통합 시 타입 정합성 점검, 에러 로그 분석) | (예: 모듈 경계 결정, 통합 순서) |
|---|
| 3 | (예: 리팩터링 제안, 보안 체크리스트 점검) | (예: 배포 결정, 성능 목표 판정) |
|---|
작성 예시
동네장터 — Sprint 1
| 항목 | 내용 |
|---|
| 스프린트 목표 | 판매자가 거래를 열고 가능 시간을 골라 약속판에서 확인하는 경로 하나를 끝까지 뚫는다 |
|---|
| 데모할 것 (10주차) | 빈 화면에서 시작해 양쪽이 고른 시간이 약속판에 겹쳐 보이는 것까지 |
|---|
Sprint 2·3 목표
- Sprint 2 — 약속판·장소 고르기 통합
- Sprint 3 — 배포와 빈 상태·오류 화면
| 이슈 | 스토리 | 추정 | 상태 |
|---|
| #12 | US-01 거래 열기 + 링크 공유 | M | ☑ |
|---|
| #13 | US-02 가능 시간 선택 (요일·시간대) | M | ☑ |
|---|
| #14 | US-03 약속판 조회 | M | ☐ |
|---|
| #15 | US-03 약속판 화면 | S | ☐ |
|---|
❌ 이렇게 쪼개면 안 됩니다
| 잘못된 쪼개기 | 왜 |
|---|
| #14 를 «조회 API 전부» 한 덩이로 | AI에게 넘길 크기가 아닙니다. 인수조건 하나가 이슈 하나입니다 |
|---|
| 화면을 마지막 주에 몰아서 | 10주차 데모 때 화면과 API가 안 붙습니다. 스토리 하나를 API+화면까지 끝내고 다음으로 |
|---|
Definition of Done (이 본인이 합의한 것)
- 인수조건 전부 충족 (예외·빈 상태 포함)
- 테스트 작성 및 통과
- CI 초록불
- 리뷰 짝 1명 리뷰 승인
main 머지- 작성자가 5줄로 설명 가능 (AI 생성분 포함)
- 추가 규칙: 화면 작업은 빈 상태 스크린샷을 변경 요청(또는 리뷰 기록지)에 첨부한다
AI 활용 계획
| 스프린트 | AI에게 맡길 것 | 사람이 반드시 할 것 |
|---|
| 1 | 인수조건 → 테스트 초안, 보일러플레이트 | 응답 JSON 형식 결정, 인수 판정 |
|---|
| 2 | 타입 정합성 점검, 에러 로그 분석 | 모듈 통합 순서, 무엇을 자를지 결정 |
|---|
| 3 | 리팩터링 제안, 보안 체크리스트 | 배포 결정, 성능 목표 판정 |
|---|
제출 체크리스트
- 지금 스프린트 목표가 한 문장이고, «Sprint 2·3 목표»가 한 줄씩 있는가?
- Sprint 1이 end-to-end 관통을 목표로 하는가? (레이어별 분업 X)
- 모든 이슈에 담당자와 추정이 있는가?
- DoD에 본인이 실제로 합의했는가? (미리 채워진 것을 그대로 두지 않았는가?)
- «1차 발표 피드백 반영»에 거부 항목과 이유가 있는가?
- 백로그가 이슈(또는 본인이 정한 대체 보드)로 전부 등록되었는가?
참고이 서식은 더 이상 제출하지 않습니다 (선택). 주간 회고 제출은 없어졌고, 매주 내는 AI 사용 로그가 그 역할을 대신합니다.
이번 주에 막힌 것과 교수자에게 필요한 도움은 모임 중 회고 시간에 꺼내거나, 통합·디버깅 문제라면 AI 사용 로그의 «막혔을 때만 — 통합·디버깅» 칸에 적으시면 되고(2026-10부터 «통합 시도 기록»은 따로 내지 않습니다), 이 템플릿은 스스로 한 주를 돌아보고 싶을 때 참고하시라고 남겨 둡니다.
쓴다면 15분이면 충분하니 길게 쓰지 않으셔도 됩니다.
회고를 하는 이유
캡스톤에서 가장 흔한 실패는 같은 문제를 4주 연속 반복하는 것입니다. 그래서 회고는 반성문이 아니라 다음 주에 무엇을 다르게 할지 정하는 회의이고, 즉 "열심히 하겠습니다"로 끝나는 회고는 안 한 것과 같습니다.
템플릿 (아래를 복사)
# 주간 회고 — Week XX (2026-XX-XX)
**참석:** (전원 참석 원칙. 불참자와 사유 명시)
**스프린트:** Sprint X, 진행률 X/X 이슈 완료
---
## 1. 사실 확인 (숫자로)
| 항목 | 계획 | 실제 |
|---|---|---|
| 완료 이슈 수 | | |
| 완료된 변경 수 | | |
| CI 실패 횟수 | | |
| 전체 투입 시간(대략) | | |
**계획과 실제가 다르다면, 어디서 벌어졌는가:**
---
## 2. Keep — 계속할 것
-
-
## 3. Problem — 문제였던 것
> 사람이 아니라 **상황과 절차**를 지적하세요.
> ❌ "○○가 늦게 냈다" → ✅ "마감 하루 전까지 진행 상황이 공유되지 않아 대응할 시간이 없었다"
-
-
## 4. Try — 다음 주에 다르게 할 것
> **구체적인 행동 1~2개만.** 담당자와 기한이 없으면 그건 Try가 아니라 소망입니다.
| 무엇을 | 누가 | 언제까지 |
|---|---|---|
| | | |
| | | |
**지난주 Try는 실행되었는가?**
| 지난주 Try | 실행 여부 | 안 됐다면 이유 |
|---|---|---|
| | ☐ | |
---
> **AI 활용 회고는 회고에서 따로 쓰지 않습니다.** 매주 내는 [AI 사용 로그](11-ai-usage-log.md)의
> «무엇을 왜 반려했나»에 씁니다. «AI 때문에 시간을 잃은 순간»도 그 칸에 남기세요.
---
## 5. 다음 주 위험 신호
| 위험 | 심각도 | 대응 |
|---|---|---|
| | 상/중/하 | |
**교수자에게 도움이 필요한 것:** (→ 교수자에게 전달하려면 모임 중 회고 시간에 꺼내거나 AI 사용 로그 «막혔을 때» 칸에 적습니다)
회고 진행 방법 (15분 타이머)
| 시간 | 활동 |
|---|
| 3분 | 각자 조용히 Keep/Problem을 개인 메모에 작성 (동시에, 말하지 않고) |
|---|
| 5분 | 돌아가며 공유. 이 단계에서는 반박 금지, 듣기만 |
|---|
| 5분 | 가장 중요한 Problem 1~2개 선정 후 Try 결정 |
|---|
| 2분 | 담당자·기한 확정 |
|---|
3분간 먼저 각자 쓰는 것이 핵심인데, 바로 말로 시작하면 목소리 큰 사람의 의견만 남기 쉽기 때문입니다.
작성 예시
동네장터 — Week 11 회고
리뷰 짝과 본 날: 2026-XX-XX (박지훈)
스프린트: Sprint 2, 진행률 4/7 이슈 완료
1. 사실 확인
| 항목 | 계획 | 실제 |
|---|
| 완료 이슈 수 | 7 | 4 |
|---|
| 병합된 변경 수 | 7 | 5 |
|---|
| CI 실패 횟수 | — | 11 |
|---|
| 전체 투입 시간 | 40h | 34h |
|---|
계획과 실제가 다른 지점:
#18(거래 상태 변경)에서 3일이 갈렸다. 화면에서 보내는 상태 값과
API가 기대하는 값이 달랐는데, AI가 양쪽을 따로 만들어 주는 동안
나는 둘 다 맞다고 보고 있었다. 로그를 찍어보고서야 원인을 찾았다.
2. Keep
- 수요일 인터페이스 확정 규칙 — Sprint 1에서 효과 있었음
- 이도현이 이번 주부터 단독 이슈를 맡았고 완료함
3. Problem
- 상태 값 형식을 이슈에 적어두지 않아 양쪽이 다르게 구현했다
- CI가 11번 실패했는데, 아무도 원인을 확인하지 않고 재실행만 눌렀다
- 통합 시도를 수요일에 하기로 했는데 금요일에 했다
4. Try
| 무엇을 | 누가 | 언제까지 |
|---|
| API 응답 예시(JSON 실물)를 이슈 본문에 붙이기 — 새 이슈부터 전부 | 박지훈 | 이번 주 이슈 생성 시 |
|---|
| CI 실패 시 재실행 금지. 로그를 읽고 원인을 이슈에 코멘트 | 전원 | 즉시 |
|---|
지난주 Try 점검:
| 지난주 Try | 실행 | 안 됐다면 이유 |
|---|
| 매일 22시 약속 상황 한 줄 공유 | ☑ | 5일 중 4일 실행 |
|---|
| 수요일 통합 시도 | ☐ | 각자 자기 이슈를 끝내는 데 몰두. 이번 주 Try로 다시 올림 |
|---|
5. 다음 주 위험 신호
| 위험 | 심각도 | 대응 |
|---|
| 배포를 아직 한 번도 안 해봄 | 상 | 12주차 전에 한 번 시도. 목요일 저녁으로 막아 둠 |
|---|
| 통합을 매번 뒤로 미룸 | 중 | Sprint 3은 수요일에 통합부터 하고 그다음 기능을 빼다 |
|---|
교수자에게 도움이 필요한 것: 배포 환경 선택 조언 (무료 범위 안에서)
흔한 실패
| ❌ | ✅ |
|---|
| Problem이 "시간이 부족했다" 한 줄 | 어느 작업에서 얼마나 초과됐고 왜인지 |
|---|
| Try가 "더 열심히 하겠다" | "매일 22시에 진행 상황 한 줄 공유 — 전원, 이번 주부터" |
|---|
| 지난주 Try를 확인 안 함 | 매주 첫 순서로 지난주 Try 실행 여부 점검 |
|---|
| 3주 몰아서 작성 | 몰아쓴 회고는 다음 주 행동을 바꾸지 못합니다. 그 주에 15분만 씁니다 |
|---|
사용 주차: 12주차 계획·간이 테스트(2명) → 13~14주차 본 테스트(5명) → 14주차 분석
제출: 서식 제출 페이지에서 «사용성 테스트» — 한 건만 냅니다. 과업 3개와 참가자 표(아래 4절)로, 참가자를 만날 때마다 한 줄씩 더해 다시 제출합니다.
종합 분석(아래 5절)은 14주차에 저장소 문서로 쓰고, 최종 보고서 4장 1절(사용자 테스트 결과)·4장 2절(향후 개발 방향)에 요약합니다.
원칙
"어떠세요? 괜찮나요?"라고 묻지 마세요. 과업을 주고 입 다물고 지켜보세요.
사용자는 예의상 "좋네요"라고 말하기 쉬운데, 그 말은 데이터가 아닙니다.
- 데이터: 데이터는 사용자가 막힌 지점, 잘못 누른 곳, 3초 이상 멈춘 순간입니다.
- 인원: 5명이면 충분합니다. 사용성 문제의 약 80%는 5명 안에서 드러나기 때문입니다.
- 즉, 10명을 대충 하는 것보다 5명을 제대로 관찰하는 것이 낫습니다.
1테스트 계획
| 항목 | 내용 |
|---|
| 테스트 목적 | (무엇을 확인하려는가. 문제 정의서의 성공 지표와 연결) |
|---|
| 대상자 조건 | (실제 타깃 사용자. 리뷰 짝·수강자 제외) |
|---|
| 인원 | 5명 |
|---|
| 방식 | 대면 / 화면 공유 |
|---|
| 소요 시간 | 1인당 20~30분 |
|---|
| 준비물 | 배포된 서비스, 초기화된 테스트 계정, 기록지, 타이머 |
|---|
2과업 (Task) 설계
미리 채워짐: 서식을 처음 열면 과업 3개가 플로우의 핵심 경로에서 채워져 있습니다. 아래 기준으로 확인하고 고칩니다.
과업은 목표로 주고, 방법을 알려주지 마세요.
❌ "우측 상단 + 버튼을 눌러 시간을 추가해 보세요" (답을 알려준 것)
✅ "이번 주에 만날 수 있는 시간 3개를 골라 보세요" (목표만 준 것)
| # | 과업 | 성공 기준 | 예상 시간 |
|---|
| T1 | | (관찰 가능한 상태로) | 초 |
|---|
| T2 | | | 초 |
|---|
| T3 | | | 초 |
|---|
과업은 3개로 하고 참가자 모두에게 같은 과업을 줍니다(그래야 과업별 성공률을 셀 수 있습니다). 첫 과업은 반드시 핵심 기능으로 둡니다.
뒤로 갈수록 사용자가 지쳐서 데이터의 질이 떨어지기 때문입니다.
3진행 스크립트
[도입]
"오늘은 저희가 만든 서비스를 테스트합니다.
테스트하는 건 여러분이 아니라 저희 서비스입니다.
못 하셔도 전혀 문제되지 않고, 오히려 그게 저희에게 가장 필요한 정보입니다.
진행하시면서 머릿속 생각을 소리 내어 말씀해 주세요.
'이걸 누르면 될 것 같은데', '이게 뭐지?' 같은 것 전부요.
제가 중간에 도와드리지 못하는 점 양해 부탁드립니다.
화면 녹화를 해도 괜찮을까요?"
[과업 진행]
- 과업을 하나씩 제시하고 타이머 시작
- 사용자가 물어봐도 답하지 않기: "어떻게 하시면 좋을 것 같으세요?"
- 침묵이 길어지면: "지금 무슨 생각 하고 계세요?"
- ⚠️ 절대 힌트 주지 않기 (여기서 대부분의 본인이 데이터를 망칩니다)
[마무리 인터뷰]
1. 가장 헷갈렸던 부분은 어디였나요?
2. 이 서비스를 한 문장으로 설명한다면?
3. 실제로 쓰신다면 언제 쓰실 것 같나요? 안 쓰신다면 왜인가요?
4. 하나만 바꿀 수 있다면 무엇을 바꾸시겠어요?
4참가자 기록 (한 문서 — docs/usability/usability-test.md)
참가자마다 파일을 따로 만들지 않습니다. 참가자를 만날 때마다 표에 한 줄을 더하고 다시 제출합니다(같은 문서가 갱신됩니다).
12주차 간이 2명은 «간이», 13~14주차 본 테스트 5명은 «본»으로 적습니다.
# 사용성 테스트
## 과업 (참가자 모두 같은 과업)
1. T1
2. T2
3. T3
## 참가자별 결과
| 간이/본 | ID | 프로필(익명) | 과업1 | 과업2 | 과업3 | 막힌 곳 · 사용자 발언 |
|---|---|---|---|---|---|---|
| 간이 | U1 | | 성공/실패/포기 | | | "..." |
## 관찰 노트 (말이 아닌 것)
- (한숨, 뒤로가기 반복, 화면 위아래 스크롤, 3초 이상 정지 등 — 앞에 참가자 ID)
막힌 곳 칸이 이 표의 전부입니다. 성공한 과업보다 막힌 지점이 중요하고, 그 순간 사용자가 한 말을 따옴표째 적습니다.
5종합 분석 (14주차 모임 중)
이 절은 서식 제출 페이지의 «사용성 테스트» 서식에 쓰지 않고 docs/usability/summary.md로 저장소에 둡니다.
그리고 결과를 최종 보고서 4장 1절 «사용자 테스트 결과»(발견·개선)와 4장 2절 «향후 개발 방향»(고치지 않기로 한 것)에 요약합니다.
참고이 절의 집계 표와 문제 목록은 스프레드시트로 만들어도 됩니다. 이때는 파일을 저장소에 넣고 링크를 겁니다.
다만 최종 개선 백로그와 "고치지 않기로 한 것"은 마크다운으로 씁니다. 판단이 담긴 부분이라 평가에서 이 글을 보기 때문입니다.
정량 결과
| 과업 | 성공률 | 평균 소요 시간 | 목표 대비 |
|---|
| T1 | /5 | | |
|---|
| T2 | /5 | | |
|---|
| T3 | /5 | | |
|---|
문제 목록 (심각도순)
심각도 기준
상 — 과업을 완료하지 못함 / 데이터 손실 / 3명 이상이 겪음
중 — 완료는 했으나 크게 헤맴 / 2명이 겪음
하 — 사소한 불편 / 1명만 겪음
| # | 문제 | 발생 인원 | 심각도 | 원인 추정 | 수정 난이도 |
|---|
| 1 | | /5 | 상 | | S/M/L |
|---|
| 2 | | | | | |
|---|
| 3 | | | | | |
|---|
최종 개선 백로그 (15주차까지 할 것)
남은 1주에 할 수 있는 것만 고르세요.
심각도 상이면서 수정 난이도 S/M인 것이 최우선입니다.
고치지 않기로 한 문제는 최종 발표에서 "한계"로 정직하게 밝히세요. 그편이 감점보다 낫습니다.
이번 과정에 고치지 않기로 한 문제와 그 이유:
6AI 활용 기록
| 무엇을 시켰나? | AI 결과 | 사람이 검증/수정한 것 |
|---|
| (예: 참가자 표에서 공통 문제 추출) | | (예: AI가 U2·U4를 같은 문제로 묶었으나 실제 원인이 달라 분리) |
|---|
주의사용자 피드백 자체를 AI로 생성하는 것은 금지입니다.
AI는 수집한 데이터를 정리하는 데만 사용합니다.
작성 예시
동네장터 — 사용성 테스트 5명
과업 설계
| # | 과업 | 성공 기준 | 예상 시간 |
|---|
| T1 | 팔 물건 하나를 등록하고 상대에게 링크를 보내 보세요 | 링크를 복사해 전달까지 완료 | 90초 |
|---|
| T2 | 만날 수 있는 시간 3개를 골라 보세요 | 가능 시간 3건이 약속판에 표시됨 | 150초 |
|---|
| T3 | 지금 늦어지고 있는 작업이 있는지 확인해 보세요 | 답 없는 거래을 말로 짚어냄 | 30초 |
|---|
T2를 "우측 상단 + 버튼을 눌러 시간을 추가해 보세요"라고 쓰면 안 됩니다.
답을 알려준 것이라 아무 데이터도 나오지 않습니다.
정량 결과
| 과업 | 성공률 | 평균 소요 | 목표 대비 |
|---|
| T1 | 5/5 | 71초 | 달성 |
|---|
| T2 | 3/5 | 214초 | 미달 (목표 150초) |
|---|
| T3 | 5/5 | 12초 | 달성 |
|---|
참가자 표 발췌
| 간이/본 | ID | 프로필 | 과업1 | 과업2 | 과업3 | 막힌 곳 · 사용자 발언 |
|---|
| 본 | U3 | 2학년, 직거래 처음 | 성공 | 실패 | 성공 | 1:40 수락 전에는 장소 변경이 막힘 — "어? 아까 보냈는데 왜 못 바꾸죠" · 3:05 모바일에서 날짜 선택기가 잘림 (화면을 계속 확대·축소) |
|---|
관찰 노트: U3 — 2분 지점부터 한숨. 작업 1개를 등록한 뒤 "나머지도 이걸 다 해야 되나요?"라고 물음.
문제 목록 (심각도순)
| # | 문제 | 발생 | 심각도 | 원인 추정 | 난이도 |
|---|
| 1 | 상대가 수락하기 전에는 장소를 바꿀 수 없음 | 4/5 | 상 | 수락 전에도 변경 가능하게 | M |
|---|
| 2 | 모바일에서 날짜 선택기가 화면 밖으로 잘림 | 3/5 | 상 | 반응형 미검증 | S |
|---|
| 3 | 시간 3개 고르는 데 매번 같은 절차 반복 | 3/5 | 중 | 연속 선택 흐름 없음 | M |
|---|
| 4 | '지연' 표시 색상이 무슨 뜻인지 모름 | 2/5 | 중 | 범례 없음 | S |
|---|
| 5 | 링크 복사 버튼 피드백 없음 | 1/5 | 하 | 토스트 없음 | S |
|---|
최종 개선 백로그 (남은 1주)
| # | 개선 항목 | 기한 | 근거 |
|---|
| 1 | 수락 전에도 장소를 바꿀 수 있게 | 목 | 문제 1 |
|---|
| 2 | 모바일 날짜 선택기 수정 | 화 | 문제 2 |
|---|
| 3 | 겹치는 시간 0건 화면에 다음 행동 붙이기 | 화 | 문제 4 |
|---|
고치지 않기로 한 것
| 문제 | 이유 | 향후 계획 |
|---|
| 3. 연속 등록 흐름 | 등록 화면 구조를 바꿔야 해서 1주 안에는 위험. 지금 되는 것을 깨뜨릴 수 있음 | 최종 발표에서 한계로 밝히고 향후 계획에 포함 |
|---|
| 5. 복사 버튼 피드백 | 심각도 하 | 시간이 남으면 |
|---|
고치지 않기로 한 것을 기록하고 발표에서 밝히는 것이 감점보다 낫습니다.
숨겼다가 질의에서 드러나는 쪽이 훨씬 큰 감점입니다.
AI 활용 기록
| 무엇을 시켰나 | AI 결과 | 사람이 검증/수정한 것 |
|---|
| 참가자 표(5명)에서 공통 문제 추출 | 7개 문제로 정리 | U2와 U4를 같은 문제로 묶었으나 원인이 달라(하나는 목록 구성, 하나는 화면 크기) 분리 |
|---|
| 심각도 판정 요청 | 전부 '중'으로 판정 | 발생 인원을 반영하지 않은 판정. 본인이 기준표로 다시 매김 |
|---|
제출 체크리스트
- 실제 타깃 사용자 5명 (리뷰 짝·수강자 제외)
- 과업이 방법이 아닌 목표로 제시되었는가?
- 진행 중 힌트를 주지 않았는가?
- 참가자 표의 모든 줄에 과업 결과와 막힌 곳이 있고, 관찰 노트가 기록되었는가?
- 문제에 심각도와 발생 인원이 표시되었는가?
- 고치지 않기로 한 문제와 그 이유가 명시되었는가?
사용 주차: 1주차부터 매주
제출: 서식 제출 페이지에서 «AI 사용 로그» 선택 → 주차를 바꿔 매주 따로 제출
제출로 대체할 수 없습니다. 이 로그가 개인 기여도 평가의 근거입니다.
왜 쓰는가?
이 강의에서 여러분은 팀장이고 AI는 팀원입니다. 그래서 이 로그는 감시 기록이 아니라 팀장의 작업 지시·검수 기록입니다.
| 단계 | 이 로그의 어느 칸 |
|---|
| ① 지시 | 「무엇을 시켰나」 |
|---|
| ② 검수 | 「무엇으로 검수했나」 |
|---|
| ③ 반려 | 「무엇을 왜 반려했나」 |
|---|
이 강의는 AI 사용을 전면 허용하는 대신 "무엇을 시켰고, 받은 것을 어떻게 판정했는가?" 를 기록하게 합니다. 즉, 이 기록이 여러분이 실제로 한 일이며 배운 것입니다.
물론 코드는 AI가 쓸 수 있습니다. 하지만 "받은 것을 왜 채택했고 왜 반려했는가?"는 오직 여러분만 쓸 수 있습니다. 그것이 바로 이 강의가 평가하는 것입니다.
작성 시간: 주당 5분. 세 칸만 씁니다. 길게 쓸 필요는 없고, 대신 거짓 없이 써야 합니다.
«무엇을 시켰나»는 지난 마감 뒤 «AI 구현 요청»에서 복사한 요청으로 미리 채워지므로, 확인하고 검수·반려만 쓰면 됩니다.
주간 기록 형식 (아래를 매주 아래에 이어 붙이기)
2026-10(7주차)부터 세 칸으로 줄였습니다. 1~6주차에 이미 낸 로그는 옛 모양 그대로 인정합니다.
## Week XX (2026-XX-XX) — 이름
### 무엇을 시켰나
- (한 줄에 하나 — 예: US-03 구현 요청, 로그인 오류 원인 가설 3개 요청)
### 무엇으로 검수했나
- (한 줄에 하나 — 예: 인수조건 3개를 직접 실행, 빠진 테스트를 추가해 통과 확인)
### 🔴 무엇을 왜 반려했나 (필수)
- (AI가 준 것 중 되돌린 것 — 그리고 왜)
### 막혔을 때만 — 통합·디버깅 (선택)
- 기대한 동작 / 실제 동작:
- 에러 메시지 전문:
- 무엇을 해 봤고 어떻게 됐나:
«막혔을 때만» 칸은 막힌 주에만 채웁니다. 이 내용이 «AI 구현 요청 → 막혔을 때» 디버깅 요청에 그대로 들어가고, 11주차 디버깅 클리닉의 재료가 됩니다. «통합 시도 기록»은 2026-10부터 따로 내지 않고 이 칸으로 옮겼습니다.
검수 방법 예시: 테스트 실행 / 직접 실행해 확인 / 경계값 넣어보기 /
공식 문서 대조 / 원 출처 URL 직접 열기 / 리뷰 짝 리뷰 / 다른 방식으로 재계산
반려는 AI가 틀렸을 때만 하는 것이 아닙니다. 세 가지 경우가 있습니다.
| 경우 | 예 |
|---|
| 틀렸다 | 시간대를 UTC로 처리해 자정 근처에서 하루 오차가 남 |
|---|
| 맞지만 우리 것이 아니다 | join 최적화 — 우리 스키마에서는 데이터 중복이 커짐 |
|---|
| 맞지만 내가 설명하지 못한다 | 동작은 하는데 왜 되는지 모르는 코드 |
|---|
반려 칸이 «없음»인 주는 그 주 로그를 인정하지 않습니다. 검수하지 않고 받아 쓴 것이기 때문입니다.
매주 최소 1건을 찾으세요. 반려할 것이 한 건도 없는 주는 없습니다.
작성 예시
동네장터 — 김서연, Week 10
## Week 10 (2026-XX-XX) — 김서연
### 무엇을 시켰나
- US-03 인수조건을 그대로 주고 테스트 코드 먼저 작성 요청
- 그 테스트를 통과하는 조회 API 구현 요청
- N+1 쿼리 최적화 제안 요청
### 무엇으로 검수했나
- 테스트 4개 중 빈 상태 케이스가 빠져 있어 1개 직접 추가 후 실행 — 3/4 통과, 실패 원인 직접 추적
- 밤 11시에 테스트 데이터를 넣어 경계값 확인
### 🔴 무엇을 왜 반려했나
- 겹치는 시간 판정 로직 — 시간대를 UTC로 처리해 자정~09시에 등록한 약속이 하루 일찍 '지난 약속'으로 표시됨 (틀렸다)
- join 방식 최적화 — 우리 스키마에서는 데이터 중복이 커짐. 별도 조회 후 메모리 병합으로 변경 (맞지만 우리 것이 아니다)
이 로그가 좋은 이유는 반려 칸에 이유까지 있기 때문입니다.
채택만 있는 로그는 "AI가 시키는 대로 했다"는 기록일 뿐입니다 — 팀장이 아니라 전달자였다는 뜻입니다.
15주차 과정 확인에서 근거로 쓰이는 것은 반려와 검수의 흔적입니다.
평가에 쓰이는 방식
| 확인 항목 | 무엇을 보는가? |
|---|
| 매주 작성 여부 | 작성 시점을 봅니다(커밋 날짜 또는 주차별 스냅샷). 몰아쓴 로그는 인정하지 않습니다 |
|---|
| 「무엇을 왜 반려했나」 | 검수 없이 받아 쓰고 있는지, 실제로 판정하고 있는지 («없음»이면 그 주 미인정) |
|---|
| 세 칸 전체 | 14주차 기여 명세서 «내가 담당한 것»·«반려한 사례»가 여기서 자동으로 채워집니다 |
|---|
| 지시문의 변화 | 주차가 갈수록 지시가 구체적이 되는가 — 팀장으로서 늘고 있는가? |
|---|
하면 안 되는 것
| ❌ | 왜 |
|---|
| 로그 자체를 AI에게 쓰게 하기 | 즉시 확인됩니다. 본인 판단이 없는 로그는 0점 |
|---|
| "AI가 다 해줌"만 반복 | 여러분이 한 일이 없다는 자백입니다 |
|---|
| 마지막 무렵에 몰아서 작성 | 작업 이력으로 확인합니다 |
|---|
| 다른 수강자의 로그 복사 | 전체 감점 |
|---|
서식 제출 서식
사용 시점: 매주 · 제출: 각 서식에 적힌 경로
주차별 서식을 어떤 형식으로 내는지 모아 둔 문서로, 해당 주차 서식을 복사해 채우면 됩니다.
공통 규칙
문서 산출물은 전부 서식 제출 페이지에서 제출합니다.
아래 서식들은 그 페이지에 그대로 들어 있고, 이 문서는 무엇을 어떻게 채우는지를 설명하는 참고 자료입니다.
| 항목 | 규칙 |
|---|
| 제출 | 서식 제출 페이지에서 해당 서식 선택 → 폼을 채우고 «제출» |
|---|
| 마감 | 해당 주차 모임 전날 자정 |
|---|
| 로그인 | Google 계정으로 로그인합니다. 작성자 이름은 계정에서 자동으로 채워집니다 |
|---|
| 수정 | 제출함에서 본인 제출물을 열어 고친 뒤 다시 제출 (덮어쓰기, 회차가 올라감) |
|---|
| 분량 | 서식에 적힌 항목만. 길게 쓰는 것은 가점 요인이 아닙니다 |
|---|
저장소에 직접 쓰는 것은 이 넷뿐입니다: 이슈 본문, 변경 요청 본문, README, 소스 코드.
모든 제출물 머리말
> 주차: 3주차 서식 · 작성일: 2026-XX-XX
> 작성: 김서연
> 관련 서식: 04-problem-definition
머리말의 작성일이 작업 시점 확인에 쓰이므로 실제로 쓴 날짜를 적습니다.
서식 제출 페이지
https://capstone.mayai.kr/forms-firebase.html
- 작성 안내: 표를 직접 정렬할 필요가 없고, 항목마다 작성 방법과 예시가 붙어 있습니다.
- 실시간 점검: 제출 전에 체크리스트가 실시간으로 표시됩니다 (예: "Must 기능이 3개를 넘었습니다").
- 로그인: Google 계정으로 로그인합니다. 내가 낸 것만 고치거나 지울 수 있습니다.
- 제출함: 제출한 것은 제출함에서 다시 열어 수정하거나 숨길 수 있습니다 (본인 것만).
표를 손으로 그리지 마세요
마크다운 표를 직접 정렬해 쓰는 것은 이 강의에서 배울 것이 아니니, 아래 세 가지 방법 중 편한 것을 쓰시면 됩니다.
| 방법 | 언제 |
|---|
| AI에게 정리시키기 | 내용을 불러주고 형식만 맡깁니다. 넣지 않은 내용이 들어갔는지만 확인하세요 |
|---|
| 목록으로 쓰기 | 서식이 표로 되어 있어도 목록으로 제출해도 됩니다 |
|---|
| 스프레드시트로 내기 | 집계가 필요한 표. 파일을 저장소에 넣고 마크다운에서 링크만 겁니다 |
|---|
| 스프레드시트를 써도 되는 것 | 반드시 마크다운으로 쓰는 것 |
|---|
| 선행사례 조사표, 화면 목록 | 문제 정의서, PRD, ADR |
|---|
| 사용성 테스트 집계·문제 목록 | 사용자 스토리와 인수조건 |
|---|
| 백로그·이슈 목록, 스프린트 표 | AI 사용 로그, 기여 명세서 |
|---|
| 정량 측정 결과 | 리스크 리포트, 스프린트 계획의 «1차 발표 피드백 반영» |
|---|
오른쪽이 마크다운인 이유는 판단과 근거가 담긴 글이기 때문이고, 평가에서 보는 것도 이 글입니다.
문법이 헷갈리면 마크다운 15분을 참고하시기 바랍니다.
1주차 → 인터뷰 전사록
제출: docs/interviews/P1.md, P2.md, P3.md (대상자 1명당 1파일)
> 주차: 1주차 서식 · 작성일: 2026-XX-XX
> 작성:
# 인터뷰 P1
| 항목 | 내용 |
|---|---|
| 대상자 프로필 | (익명. 학년·상황만. 실명 금지) |
| 녹음 동의 | ☑ 구두 동의 확보 |
## 전사
[00:02:14] 진행자:
[00:02:31] P1:
## 관찰 노트 (말이 아닌 것)
- 망설임·한숨이 나온 지점:
- 말과 행동이 어긋난 지점:
- 인터뷰 후 떠오른 생각:
## 인상적인 발언 3개 (그대로 인용)
1. "..."
2. "..."
3. "..."
2주차 → 문제 정의 후보 (개인)
제출: 개인 저장소 이슈로 각자 등록 · 제목 [문제후보] 홍길동 1
## 후보 1
**POV**
[구체적 사용자]는 [무엇]이 필요하다.
왜냐하면 [인사이트]이기 때문이다.
**근거 인용:** "..." (P?)
**해결책 단어 점검:** 앱·플랫폼·AI·자동화 포함 여부 ☐ 없음
후보 3개를 각각 위 형식으로. 아이디어가 아니라 문제를 씁니다.
3주차 → 선행사례 조사표
제출: docs/04-benchmark.md
> 주차: 3주차 서식 · 작성일: · 작성:
# 선행·경쟁 사례 조사
## 사례 1 — (이름)
- 무엇을 하는가:
- 어떻게 쓰이나:
- 왜 부족한가: (우리 인터뷰 근거와 함께)
- 출처 URL:
- 직접 확인: ☐
## 사례 2 ~ 3 — (같은 형식, 최소 3건)
## 직접 써 본 것 (최소 1건)
- 서비스명 / 사용 시간 / 좋았던 점 / 불편했던 점
## 우리가 다르게 할 지점
주의직접 확인 칸이 비어 있는 항목은 무효입니다. AI가 알려준 사례는 URL을 직접 열어 확인합니다.
이 조사표는 스프레드시트로 만들어 파일을 저장소에 넣고 링크만 걸어도 됩니다.
다만 "왜 부족한가"에는 일반적인 단점이 아니라 우리 인터뷰 근거가 들어가야 합니다.
4주차 → 사용자 플로우와 화면 목록
제출: docs/05-flow.md
# 사용자 플로우
## 핵심 경로 (1개만)
진입 → □□ → □□ → 목표 달성
## 화면 목록
| # | 화면 이름 | 이 화면의 목적 (한 줄) | 관련 FR |
|---|---|---|---|
| 1 | | | |
## 빈 상태·에러 화면
| 상황 | 무엇을 보여줄 것인가 |
|---|---|
| 데이터 0건 | |
| 로딩 중 | |
| 에러 | |
5주차 모임 중 → 화면 목업과 상호 시연
제출: docs/mockup.md — 서식 제출 페이지 «화면 목업»에서 냅니다 (2026-10 추가)
먼저 목업을 만든 도구를 고르고(Google Stitch · ChatGPT·Gemini·Claude 캔버스 · Figma · 그 밖의 도구 — 담당 교수자가 연 것만 보입니다) 그 도구의 공유 링크를 넣습니다.
Stitch는 담당 교수자 계정에 공유하면 화면 사진까지 교수자 화면에 저절로 모이고 6시간마다 새로 가져옵니다. 다른 도구는 로그인 없이 열리는 링크만 모입니다.
# 화면 목업과 상호 시연
## 목업 링크
| 도구 | 링크 |
|---|---|
| Google Stitch (또는 고른 도구) | https://… |
## 점검
| 항목 | 내용 |
|---|---|
| 핵심 경로 | 4화면 — □□ → □□ → □□ → □□ (3~5화면) |
| 빈 상태 · 에러 화면 | |
| 시나리오와 달라진 곳 | 없음 / 무엇을 고칠지 |
## 상호 시연 — 막힌 곳
| 화면 · 지점 | 무엇에서 막혔나 | 고칠 것 |
|---|---|---|
| | | |
5주차 → 리스크 리포트
제출: docs/06-risk.md
# 기술 리스크 리포트
## 상위 리스크 2개
### 리스크 1: (한 줄로)
- 이게 안 되면: (프로젝트에 미치는 영향)
- 확인 방법: (무엇이 되면 해결된 것인가)
- 검증 상태: ☐ 미검증 ☐ 검증됨 ☐ 불가 판정 → 대안:
### 리스크 2: (동일 형식)
개발 환경 세팅은 이 서식에 적지 않습니다. 6주차 모임 시작 때 실행 화면으로 확인합니다.
6·12·14주차 → 발표 구성서 (2026-10 폐지 — 따로 내지 않음)
슬라이드 순서는 서식 제출 페이지 «자동으로 만들기 → 발표 자료» 가 발표 차수별로 자동으로 잡습니다. 직접 적는 것은 두 칸뿐이고, 적으면 자동으로 저장되어 PPT에 들어갑니다.
| 옛 발표 구성서 | 지금 어디서 |
|---|
| 순서 · 내용 · 시간 | «발표 자료»가 자동으로 만듦 (발표 필수 항목은 각 발표 평가 기준 문서) |
|---|
| 데모 시나리오 (보여줄 것 · 조작 순서) | «발표 자료»의 «시연 — 보여줄 것·조작 순서» 칸 |
|---|
| 데모가 실패하면 | «발표 자료»의 «시연이 실패하면» 칸 |
|---|
| 리허설 기록 | 제출 없음 — 리허설 영상을 발표 모임에 가지고 옴 |
|---|
7주차 → 피드백 반영 계획서 (2026-10 폐지 — 따로 내지 않음)
받은 지적의 수용·거부는 정리만 해 와서 9주차 스프린트 계획의 «1차 발표 피드백 반영» 표(받은 지적 · 출처 · 수용/거부 · 이유 · 반영 시점)에 담습니다. 옛 서식으로 이미 낸 것은 스프린트 계획에 자동으로 옮겨집니다.
거부한 항목이 하나도 없으면 반려합니다. 전부 수용했다는 것은 판단하지 않았다는 뜻입니다.
7주차 → 아키텍처 대안 조사 (2026-10 폐지 — 따로 내지 않음)
대안 3개와 저장할 데이터 항목은 조사만 해 와서 8주차에 첫 ADR(ADR-0001 — 아키텍처·데이터 결정)에 담습니다.
| 조사한 것 | ADR-0001의 어느 칸 |
|---|
| 내 프로젝트의 제약 (역량·기간·예산) | «내 제약» |
|---|
| 대안 A / B / C — 장점·단점·적합도 | «검토한 대안» |
|---|
| 저장할 데이터 항목 전수 목록 | «저장할 데이터 항목» (항목 · 설명 · 개인정보(O) · 어느 화면에서) |
|---|
8주차 → 이슈 등록
제출: 이슈 트래커 (또는 칸반 보드)
제목: [US-03] 리뷰 짝 진행 상황 확인
**As a** 중고 물건을 파는 사람,
**I want** ...,
**So that** ...
## 인수조건
- [ ] Given , When , Then .
- [ ] Given , When , Then .
- [ ] (예외·빈 상태·에러 중 최소 1개)
우선순위는 PRD 기능 요구사항(FR)에서 정하고, 추정은 스프린트 계획에 적습니다. 이슈에는 라벨(must / should / sprint-1)만 붙입니다.
9주차 → 변경 요청 본문
제출: 변경 요청 (또는 리뷰 기록지)
## 무엇을
관련 이슈: #12
## 인수조건 충족 여부
- [x] 조건 1
- [x] 조건 2
- [ ] 조건 3 → 다음 변경에서
## 검증
- 테스트: 4/4 통과
- 자동 검증: 통과 (또는 `scripts/check` 실행 결과 첨부)
## 리뷰어가 봐줬으면 하는 곳
10주차 → 통합 시도 기록 (2026-10 폐지 — 따로 내지 않음)
막힌 주에만 AI 사용 로그의 «막혔을 때만 — 통합·디버깅» 칸에 적습니다. 이 내용이 «AI 구현 요청 → 막혔을 때» 디버깅 요청에 들어가고, 11주차 디버깅 클리닉의 재료가 됩니다.
| 옛 통합 시도 기록 | AI 사용 로그 «막혔을 때» 칸 |
|---|
| 기대한 동작 / 실제 동작 | «기대한 동작/실제 동작» |
|---|
| 실패 로그 (전문) | «에러 메시지 전문» |
|---|
| 시도 표 · 이미 시도해본 것 | «무엇을 해 봤고 어떻게 됐나» |
|---|
성공한 통합보다 실패 로그가 더 중요한 기록입니다. 11주차 모임은 이 로그로 진행합니다.
11주차 → README
제출: 개인 저장소 루트 README.md
# (프로젝트명)
한 줄 설명
## 무엇을 해결하나
## 스크린샷 또는 데모 URL
## 설치
```bash
```
## 실행
```bash
```
## 환경변수
| 이름 | 설명 | 예시 |
## 프로젝트
12주차 교차 QA에서 다른 수강자가 이 README만 보고 여러분 서비스를 실행합니다. 질문은 받지 않습니다.
12주차 → 간이 사용성 테스트 (2명)
제출: 서식 제출 페이지 «사용성 테스트» 한 건 — 과업 3개(참가자 모두 같은 과업)를 정하고, 참가자 표에 «간이»로 한 줄씩 더해 다시 제출 (사용성 테스트 템플릿 4절)
13주차 → 사용성 테스트 5명
제출: 12주차에 낸 «사용성 테스트» 같은 문서에 참가자를 만날 때마다 «본»으로 한 줄씩 더해 다시 제출(5명) · 종합 분석은 저장소 docs/usability/summary.md → 최종 보고서 4장 1절 «사용자 테스트 결과»에 요약 (사용성 테스트 템플릿 5절)
14주차 → 최종 제출물
제출: 교수자가 나눠 주는 한글·워드 템플릿으로 작성 — 서식 제출 페이지 «최종 보고서 자료»에서 아래 목차대로 정리된 내용을 복사해 옮겨 씁니다
표지 — SW 종합설계 프로젝트 <최종 보고서> · 주제명 · <서비스명> · 이름 · 교수자 · 소속
요약문 (■ 개조식, 한 쪽)
1. 제목
2. 개발 목적 및 필요성
3. 제안 시스템 요약 — 1) 제안 시스템 2) 기능 설명
4. 향후 개발 방향 및 기대효과 — 1) 개발 결과 2) 기대효과 및 향후 계획
1장. 서론
1절. 연구개발의 배경 — 분야 상황 → 사용자가 겪는 문제(인터뷰 근거) → 기존 방식의 한계
2절. 연구개발의 목적 — 최종 목적 + 첫째·둘째·셋째 개발 목표
2장. 기존 시스템 분석
1절. 핵심 기술 분석 — 쓰는 기술(라이브러리·API·DB)과 역할
2절. 기존 서비스 및 기술 분석 — 가·나·다 + [표 1] 비교표
3장. 제안 시스템
1절. 제안 시스템 — 목표 · 사용 흐름 · [그림] 기능 구성도
2절. 주요 기능 — 가. ○○ 기능(이하 기능 1) …
3절. 시스템 설계 — [그림] 시스템 아키텍처 · 구성요소와 선택 이유(ADR)
4장. 연구개발 결과
1절. 최종 연구개발 결과 — 화면별 [그림] · 주요 알고리즘 [코드] · 사용자 테스트 결과(5명)
2절. 향후 개발 방향 및 기대효과 — 1) 향후 추가 개발 방향(못 한 것과 이유) 2) 적용 분야 및 기대 효과
참고문헌
개인 제출: logs/contribution-홍길동.md
# 기여 명세서 — 홍길동
## 내가 담당한 것
| 주차 | 무엇을 | 근거 (이슈·작업 이력·문서) |
|---|---|---|
| 10 | US-03 조회 API + 테스트 | #14, 커밋 a1b2c3d |
## 내가 내린 판단 (코딩이 아니라 결정)
1.
2.
## AI 제안을 반려한 사례 2건
1.
2.
«내가 담당한 것»과 «AI 제안을 반려한 사례»는 서식을 처음 열면 매주 낸 AI 사용 로그에서 자동으로 채워집니다. 맞는지 확인하고 근거(이슈·커밋·문서)를 고쳐 적으면 됩니다.
«내가 내린 판단»(2건 이상)은 ADR 결정과 거부한 피드백에서 후보가 미리 채워집니다. 확인하고 내 말로 고쳐 냅니다 — 이 칸이 이 문서의 핵심입니다. 이 강의는 여러분을 팀장으로, AI를 팀원으로 놓습니다.
팀장의 성과는 팀원이 만든 결과물이 아니라 무엇을 어떤 조건으로 시켰고 무엇을 되돌렸는가입니다. 이 칸이 비어 있는 것이 감점 사유입니다.
기여 명세서는 매주 쓴 AI 사용 로그와 대조합니다. 로그에 없는 기여는 근거가 없습니다.
시점: 7주차 · 형식: 개인 발표 10분 + 질의응답 5분
배점: 100점 만점 (강의계획서 평가항목 배점으로 환산)
참고1주차에 공개합니다. 평가 기준을 모른 채 준비하는 일이 없도록 합니다.
발표에 반드시 포함할 것
- 우리가 만난 실제 사용자와 거기서 나온 인사이트
- 문제 정의 (POV) — 왜 이 문제인가?
- 아이디어 선정 과정과 탈락시킨 대안
- 프로토타입 시연 (슬라이드 설명 아님)
- 기술 리스크 — 무엇이 검증됐고 무엇이 아직 불확실한가?
평가 항목
1. 사용자 근거 (25점)
| 점수 | 기준 |
|---|
| 23~25 | 실사용자 3명 이상 인터뷰. 인용과 관찰이 발표에 직접 등장하며, 예상하지 못했던 발견이 명확히 제시됨 |
|---|
| 18~22 | 인터뷰를 수행했고 근거로 제시하나, 대부분 예상 가능한 내용에 머무름 |
|---|
| 12~17 | 인터뷰는 했으나 발표에서 근거로 활용되지 않음. 주장과 데이터가 연결되지 않음 |
|---|
| 0~11 | 인터뷰 부족·부재. 또는 지인 위주. AI 생성 사용자 데이터 사용 시 0점 |
|---|
2. 문제 정의 (25점)
| 점수 | 기준 |
|---|
| 23~25 | 타깃 사용자가 상황·시점까지 구체적. POV에 해결책이 섞이지 않음. 스코프 경계(PRD 비목표 — 하지 않는 것)가 명확 |
|---|
| 18~22 | 문제가 이해되나 사용자가 다소 광범위하거나 스코프 경계가 흐림 |
|---|
| 12~17 | 문제보다 해결책부터 시작함. "○○ 앱을 만들겠다"가 문제 정의를 대신함 |
|---|
| 0~11 | 문제가 무엇인지 불명확. 사용자가 특정되지 않음 |
|---|
3. 아이디어 수렴 과정 (20점)
| 점수 | 기준 |
|---|
| 18~20 | 충분한 발산 후 명시적 기준으로 수렴. 탈락 대안과 탈락 이유를 설명할 수 있음. 선행 사례를 실제로 확인함 |
|---|
| 14~17 | 여러 대안을 검토했으나 선정 기준이 다소 주관적 |
|---|
| 9~13 | 사실상 첫 아이디어를 그대로 진행. 대안 검토가 형식적 |
|---|
| 0~8 | 대안 검토 없음. 또는 선행 조사에 확인되지 않은 인용이 포함됨 |
|---|
4. 프로토타입 (20점)
| 점수 | 기준 |
|---|
| 18~20 | 핵심 사용자 흐름을 시연 가능. 기술 리스크 PoC로 불확실성이 실제로 줄어듦. 미해결 리스크를 정직하게 밝힘 |
|---|
| 14~17 | 화면 프로토타입은 있으나 기술 검증이 얕음 |
|---|
| 9~13 | 정적 화면만 존재. 흐름 시연 불가 |
|---|
| 0~8 | 프로토타입 없음 또는 시연 실패 |
|---|
5. 발표 및 질의응답 (10점)
| 점수 | 기준 |
|---|
| 9~10 | 시간 준수, 논리적 흐름, 질문에 근거를 들어 답변. 모르는 것은 모른다고 답함 |
|---|
| 6~8 | 전달은 되나 시간 초과 또는 답변이 추측에 의존 |
|---|
| 3~5 | 흐름이 산만하거나 질문에 답하지 못함 |
|---|
| 0~2 | 준비 부족이 명백함 |
|---|
미리 알아두는 감점
참고모두 미리 공개하므로 발표 당일에 처음 듣는 감점은 없습니다.
즉, 아래 항목만 피하면 감점은 발생하지 않습니다.
| 항목 | 감점 |
|---|
| 사전 제출물(발표자료·리허설 영상) 미제출 | -10 |
|---|
| 발표 시간 2분 이상 초과 | -5 |
|---|
| 확인되지 않은 인용·통계 사용 | 해당 항목 0점 |
|---|
| AI로 생성한 사용자 데이터 사용 | 항목 1 = 0점 |
|---|
질의응답
준비된 발표만으로는 실제 이해도가 드러나지 않습니다. 아래에서 골라 묻습니다.
- 인터뷰 대상자 중 여러분의 예상을 가장 많이 깬 사람은 누구였고, 무엇 때문이었나요?
- 이 문제를 겪지 않는 사람은 누구인가요? 왜 안 겪나요?
- 탈락시킨 아이디어 중 가장 아까웠던 것은? 왜 탈락시켰나요?
- 지금 이 문제를 사용자들은 어떻게 버티고 있나요? 그 방법의 무엇이 부족한가요?
- 여러분 프로토타입에서 가장 확신이 없는 부분은 어디인가요?
- 15주차에 무엇이 관찰되면 성공한 건가요?
- (AI 활용) AI가 준 것 중 반려한 것이 있나요? 왜 반려했나요?
평가지 (개인별)
발표자: ______________ 평가자: ______________
| 항목 | 배점 | 점수 | 메모 |
|---|
| 1. 사용자 근거 | 25 | | |
|---|
| 2. 문제 정의 | 25 | | |
|---|
| 3. 아이디어 수렴 | 20 | | |
|---|
| 4. 프로토타입 | 20 | | |
|---|
| 5. 발표·질의응답 | 10 | | |
|---|
| 감점 | | | |
|---|
| 합계 | 100 | | |
|---|
다음 단계로 가기 전 반드시 고쳐야 할 것 (1~2개):
여기에 적습니다
시점: 13주차 · 형식: 개인 발표 10분 + 질의응답 5분
배점: 100점 만점
주의이번 발표는 슬라이드가 아니라 라이브 데모가 중심입니다.
녹화 영상 대체는 감점입니다(네트워크 등 불가피한 사유는 사전 허가 필요).
발표에 반드시 포함할 것
- 1차 발표 피드백을 어떻게 반영했는지
- 아키텍처와 주요 설계 결정 (ADR 중 1건 이상 설명)
- 라이브 데모 — 실제로 동작하는 것
- 간이 사용성 테스트(2명) 결과
- 남은 2주 계획과 리스크
평가 항목
1. 구현 완성도 (30점)
| 점수 | 기준 |
|---|
| 27~30 | 핵심 기능(Must)이 end-to-end로 동작. 배포된 환경에서 시연됨. 예외 상황도 처리됨 |
|---|
| 21~26 | 핵심 기능이 동작하나 일부 미완성이거나 로컬 환경에서만 시연 |
|---|
| 14~20 | 부분 기능만 동작. 모듈이 아직 통합되지 않음 |
|---|
| 0~13 | 시연 실패 또는 화면만 존재 |
|---|
2. 설계와 근거 (20점)
| 점수 | 기준 |
|---|
| 18~20 | 아키텍처가 요구사항과 연결되어 설명됨. ADR에 대안·포기한 것·근거가 있고 발표자가 설명 가능 |
|---|
| 14~17 | 설계 문서는 있으나 "왜"에 대한 설명이 약함 |
|---|
| 9~13 | 기술 스택 나열 수준. 결정 근거가 "많이 쓰여서" 또는 "AI 추천" |
|---|
| 0~8 | 설계 문서 부재 |
|---|
3. 개발 프로세스 (20점)
| 점수 | 기준 |
|---|
| 18~20 | 이슈 → 작업 → 리뷰 → 검증이 실제로 돌아감. 테스트가 존재하고 통과. 작업이 전체에 고르게 분포 |
|---|
| 14~17 | 프로세스는 있으나 리뷰가 형식적이거나 테스트가 얕음 |
|---|
| 9~13 | 이슈 관리가 형해화됨. 작업이 특정 인원에 심하게 편중 |
|---|
| 0~8 | 프로세스 부재. 리뷰 없이 곧바로 반영하는 방식 위주 |
|---|
참고이 항목은 제출함과 저장소를 직접 확인해 채점합니다. 즉, 발표 내용보다 실제 작업 이력이 우선합니다.
문서 제출물은 서식 제출 페이지의 제출 시각으로, 코드 작업은 저장소 이력으로 확인합니다.
확인 대상은 택한 저장소 운영 경로에 따라 달라지며,
이슈·변경요청·CI 이력이 없으면 칸반 보드 + 리뷰 기록지 + 검증 스크립트 로그를 동등하게 인정합니다.
4. AI 활용의 질 (15점)
| 점수 | 기준 |
|---|
| 14~15 | AI를 프로세스에 통합(스펙→테스트→구현, AI 리뷰 등). AI 제안을 반려한 사례와 근거를 제시. 매주 로그를 성실히 작성 |
|---|
| 11~13 | AI를 잘 쓰고 있으나 검증 절차가 다소 느슨 |
|---|
| 7~10 | AI에 의존적. 생성된 코드를 설명하지 못하는 부분이 있음 |
|---|
| 0~6 | 로그 미작성 또는 부실. 코드 설명 불가 |
|---|
핵심발표 중 코드 설명 확인을 합니다.
교수자가 저장소에서 한 부분을 고르면, 해당 담당자가 동작을 설명해야 합니다.
5. 사용자 검증 및 발표 (15점)
| 점수 | 기준 |
|---|
| 14~15 | 실사용자 테스트를 수행하고, 발견한 문제를 정직하게 제시. 1차 피드백 반영이 명확 |
|---|
| 11~13 | 테스트는 했으나 분석이 얕음 |
|---|
| 7~10 | 본인 확인만 수행 |
|---|
| 0~6 | 사용자 검증 없음 |
|---|
미리 알아두는 감점
참고모두 미리 공개하므로 발표 당일에 처음 듣는 감점은 없습니다.
즉, 아래 항목만 피하면 감점은 발생하지 않습니다.
| 항목 | 감점 |
|---|
| 라이브 데모 없이 영상·슬라이드로 대체 (사전 허가 없이) | -10 |
|---|
| 사전 제출물 미제출 | -10 |
|---|
| 코드 설명을 하지 못한 경우 (1건당) | -5 |
|---|
| 발표 시간 2분 이상 초과 | -5 |
|---|
질의응답
- 저장소의 이 부분(무작위 선택)은 무엇을 하는 코드인가요? 왜 이렇게 짰나요?
- 이 기능을 AI에게 어떻게 시켰나요? 한 번에 됐나요, 몇 번 만에 됐나요?
- AI가 준 코드 중 버린 것이 있나요? 왜 버렸나요?
- 지금 이 시스템에서 가장 먼저 문제가 생길 것 같은 곳은 어디인가요?
- 테스트가 없는 부분은 어디이고, 왜 없나요?
- 통합할 때 가장 오래 걸린 문제는 무엇이었나요?
- 남은 2주에 못 할 것 같은 것은 무엇인가요? (정직하게 답하면 가점)
평가지 (개인별)
발표자: ______________ 평가자: ______________
| 항목 | 배점 | 점수 | 메모 |
|---|
| 1. 구현 완성도 | 30 | | |
|---|
| 2. 설계와 근거 | 20 | | |
|---|
| 3. 개발 프로세스 | 20 | | |
|---|
| 4. AI 활용의 질 | 15 | | |
|---|
| 5. 사용자 검증·발표 | 15 | | |
|---|
| 감점 | | | |
|---|
| 합계 | 100 | | |
|---|
코드 설명 확인 기록
최종 발표 전 반드시 해결할 것:
여기에 적습니다
시점: 15주차 · 형식: 개인 발표 15분 + 질의응답 5분
배점: 100점 만점 (개인 점수)
발표 구성 (권장 15분)
| 시간 | 내용 |
|---|
| 2분 | 문제와 사용자 — 우리가 만난 사람들 |
|---|
| 2분 | 해결 접근과 핵심 설계 결정 |
|---|
| 5분 | 라이브 데모 |
|---|
| 3분 | 사용자 검증 결과 (5명 테스트) — 지표와 발견 |
|---|
| 2분 | 한계와 향후 계획 — 정직하게 |
|---|
| 1분 | 회고 — 15주간 무엇을 배웠는가? |
|---|
마지막 2개 항목은 생략하기 쉽지만, 가장 점수가 높은 구간입니다.
평가 항목
1. 문제-해결 정합성 (20점)
| 점수 | 기준 |
|---|
| 18~20 | 만든 것이 정의한 문제를 실제로 해결함. 사용자 근거 → 문제 정의 → 기능 → 검증까지 하나의 선으로 연결됨 |
|---|
| 14~17 | 대체로 연결되나 일부 기능이 문제와 무관하게 추가됨 |
|---|
| 9~13 | 초기 문제 정의와 최종 결과물의 방향이 다름 (변경 이유 설명 없이) |
|---|
| 0~8 | 문제와 결과물이 따로 놂 |
|---|
2. 구현 완성도 (25점)
| 점수 | 기준 |
|---|
| 23~25 | Must 기능 전부 동작. 배포되어 외부인이 사용 가능. 예외·빈 상태·에러 처리됨. README만 보고 재현 가능 |
|---|
| 18~22 | Must 기능 대부분 동작하나 일부 예외 처리 미흡 |
|---|
| 12~17 | 핵심 흐름은 되나 미완성 기능이 다수 |
|---|
| 0~11 | 시연 실패 또는 로컬에서만 겨우 동작 |
|---|
3. 사용자 검증 (20점)
| 점수 | 기준 |
|---|
| 18~20 | 실사용자 5명 테스트 수행. 정량 지표 제시. 발견한 문제를 개선에 반영. 못 고친 것을 한계로 정직하게 밝힘 |
|---|
| 14~17 | 테스트 수행 및 분석은 되었으나 개선 반영이 부분적 |
|---|
| 9~13 | 테스트 인원 부족 또는 분석이 인상 수준 |
|---|
| 0~8 | 검증 없음. 또는 본인 확인만 |
|---|
4. 공학적 프로세스 (20점)
| 점수 | 기준 |
|---|
| 18~20 | 요구사항→설계(ADR)→스토리→구현→테스트→검증이 문서와 저장소에 실제로 남아 있음. 매주 작성된 AI 사용 로그와 작업 이력이 일관됨 |
|---|
| 14~17 | 문서는 갖춰졌으나 일부가 사후 작성된 흔적 |
|---|
| 9~13 | 문서와 실제 개발이 따로 감. 대부분 마지막 무렵 작성 |
|---|
| 0~8 | 프로세스 산출물 부재 |
|---|
참고작업 시점을 확인합니다. 15주차에 몰아서 만든 문서는 이 항목에서 인정하지 않습니다.
확인 방법은 택한 저장소 운영 경로를 따릅니다 —
커밋 날짜, 또는 주차별 스냅샷과 변경기록의 날짜.
5. AI 활용 역량 (10점)
| 점수 | 기준 |
|---|
| 9~10 | 지시·검수·반려가 전 단계에 작동. 반려 사례가 풍부하고 근거가 명확. 과정 중 지시가 눈에 띄게 정교해짐 |
|---|
| 7~8 | 잘 활용하나 검수 절차가 일부 느슨 |
|---|
| 4~6 | 코드 생성 위주. 지시만 있고 반려가 거의 없음. 설명 못 하는 부분 존재 |
|---|
| 0~3 | 로그 부실. 받은 것을 검수 없이 사용한 정황 |
|---|
참고이 강의는 수강자를 팀장, AI를 팀원으로 놓습니다.
AI가 만든 분량은 감점 요소가 아닙니다. 되돌린 기록이 없는 것이 감점 요소입니다.
6. 발표 및 질의응답 (5점)
| 점수 | 기준 |
|---|
| 5 | 시간 준수, 서사가 명확, 질문에 근거로 답변. 모르는 것은 모른다고 함 |
|---|
| 3~4 | 전달되나 시간 초과 또는 답변이 부실 |
|---|
| 0~2 | 준비 부족 |
|---|
미리 알아두는 감점
참고모두 미리 공개하므로 발표 당일에 처음 듣는 감점은 없습니다.
즉, 아래 항목만 피하면 감점은 발생하지 않습니다.
| 항목 | 감점 |
|---|
| 사전 제출물(최종 보고서·시연 영상·기여 명세서) 미제출 | -15 |
|---|
| 코드 설명을 하지 못한 경우 (1건당) | -5 |
|---|
| 확인되지 않은 인용·통계 | 해당 항목 0점 |
|---|
| 발표 시간 3분 이상 초과 | -5 |
|---|
과정 확인 (감점·가점의 근거)
발표 점수만으로 판단하지 않습니다. 15주 내내 남은 기록과 교차 확인합니다.
| 근거 자료 | 확인 내용 |
|---|
| 작업 이력 (커밋·변경요청 또는 변경기록) | 작업이 시간에 걸쳐 분포했는가? |
|---|
| 서식 제출 페이지 제출 이력 | 문서 제출 시점과 회차 |
|---|
| AI 사용 로그 (매주) | «무엇을 왜 반려했나»가 매주 있는가 — 판정의 흔적 («없음»인 주는 미인정) |
|---|
| 기여 명세서 | «내가 내린 판단» 2건 이상 · 근거가 AI 사용 로그와 맞는가 (위 항목과 대조) |
|---|
| 리뷰 짝 평가 | 남의 코드를 성실히 봐 줬는가? |
|---|
| 코드 설명 확인 | 본인 코드를 설명할 수 있는가? |
|---|
| 팀 회의 기록 (팀으로 진행한 경우) | 약속한 회의가 실제로 열렸고, 논의·결정·다음 할 일이 남아 있는가? |
|---|
| 조정 | 기준 |
|---|
| +5점 (최대) | 리뷰를 성실히 해 다른 수강자의 결과를 실제로 바꿈 |
|---|
| 0 | 정상 |
|---|
| −10점 | 작업이 마지막 2~3주에 몰림. AI 사용 로그 부실 |
|---|
| −20점 이하 | 본인 코드를 설명하지 못함. 리뷰 요청에 응답하지 않음 |
|---|
주의한 가지 근거만으로 감점하지 않습니다. 여러 근거가 서로 일치할 때만 조정합니다.
참고계정을 만들 수 없어 경로 B(Drive + 로컬 Git)로 진행한 수강자도 동등하게 평가합니다.
커밋 이력이 남는 것은 같습니다. → 저장소 운영 방식 선택 가이드
질의응답
- (코드 한 부분을 골라) 이 부분을 설명해 주세요. 누가 작성했나요?
- 15주 전으로 돌아간다면 무엇을 다르게 하시겠어요?
- 사용성 테스트에서 가장 뼈아팠던 발견은 무엇이었나요?
- 지금 이 제품을 실제 사용자에게 내놓으면 무엇이 가장 먼저 문제가 될까요?
- ADR 중 하나를 골라, 지금 시점에서도 그 결정이 옳았다고 보나요?
- AI에게 시켰다가 되돌린 것 중 가장 잘 되돌린 건 무엇인가요?
- 이번 과정에 못 한 것은 무엇이고, 왜 못 했나요?
- 시작 무렵과 지금, 본인이 AI에게 주는 지시는 어떻게 달라졌나요?
평가지 (개인별)
발표자: ______________ 평가자: ______________
| 항목 | 배점 | 점수 | 메모 |
|---|
| 1. 문제-해결 정합성 | 20 | | |
|---|
| 2. 구현 완성도 | 25 | | |
|---|
| 3. 사용자 검증 | 20 | | |
|---|
| 4. 공학적 프로세스 | 20 | | |
|---|
| 5. AI 활용 역량 | 10 | | |
|---|
| 6. 발표·질의응답 | 5 | | |
|---|
| 감점 | | | |
|---|
| 합계 | 100 | | |
|---|
과정 확인 조정
용도 2가지: ① 발표 평가 ② 매주 리뷰 짝 평가
개인 프로젝트이므로 기여도 배분은 없습니다. 대신 서로를 얼마나 잘 봐 줬는가를 봅니다.
A. 발표 평가 (7·13·15주차)
발표를 들으며 실시간으로 작성하고, 발표가 끝나면 즉시 제출합니다.
모두가 모두를 평가합니다. 자기 발표는 평가하지 않습니다.
평가자: ______________ 평가 대상: ______________
| 항목 | 1 (아쉬움) | 2 | 3 (보통) | 4 | 5 (뛰어남) |
|---|
| 문제가 무엇인지 명확히 이해되었다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
| 문제의 근거(사용자 데이터)가 설득력 있었다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
| 해결 방법이 문제와 잘 연결되었다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
| 시연/결과물이 실제로 동작함을 보여주었다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
| 질문에 근거를 들어 답변했다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
👍 배우고 싶은 점 (1개, 구체적으로)
(예: 인터뷰 인용을 슬라이드마다 붙여서, 주장마다 근거가 보였습니다.)
🤔 내가 이 프로젝트를 한다면 걱정될 것 (1개, 예의 있게)
(예: Must 기능이 4개인데 남은 기간이 4주입니다. 하나를 줄이면 어떨까요?)
❓ 시간이 없어 못 한 질문
여기에 적습니다
주의"수고하셨습니다", "좋았습니다" 만 적은 평가지는 미제출과 같습니다.
B. 리뷰 짝 평가 (9주차부터 격주)
혼자 하는 프로젝트에서 유일하게 남을 위해 쓰는 시간입니다.
이 강의는 「변경이 다른 사람의 눈을 거친 흔적」을 요구합니다. 그 흔적을 만드는 사람이 리뷰 짝입니다.
평가자: ______________ 내 리뷰 짝: ______________ 기간: ____주차 ~ ____주차
1리뷰를 받은 경험
| 항목 | 1 | 2 | 3 | 4 | 5 |
|---|
| 약속한 기한 안에 리뷰해 주었다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
| 코드를 실제로 읽고 지적했다 (형식적이지 않았다) | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
| 인수조건과 대조해 확인해 주었다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
| 내가 설명하지 못한 부분을 짚어 주었다 | ☐ | ☐ | ☐ | ☐ | ☐ |
|---|
가장 도움이 된 지적 1개 (그대로 인용)
(예: "겹치는 시간이 0건일 때 [0]에 접근해서 오류 날 것 같습니다" — 실제로 그랬습니다.)
형식적이었던 지적이 있었다면
(예: "LGTM"만 세 번. 실제로 본 것 같지 않았습니다.)
2내가 한 리뷰
내가 남긴 리뷰 중 가장 쓸모 있었다고 생각하는 것
여기에 적습니다
내가 놓쳤다고 생각하는 것
여기에 적습니다
3본인 회고
이번 기간에 가장 잘한 것
여기에 적습니다
다음 기간에 다르게 할 것 하나
여기에 적습니다
막혔을 때 2시간 규칙을 지켰는가?
(예: 두 번 중 한 번만. 화요일에 시간대 버그를 4시간 붙들고 있었습니다.)
4교수자에게만 전하고 싶은 것 (선택)
(리뷰 짝이 응답하지 않아 진행이 막혔다면 여기에 적으세요. 짝을 바꿔 드립니다.)
이 평가가 점수에 쓰이는 방식
| 무엇 | 어디에 |
|---|
| A. 발표 평가 | 발표자에게 전달 (평가자 이름은 지웁니다). 점수에는 직접 반영하지 않습니다 |
|---|
| B. 리뷰 짝 평가 | 「협업·리뷰」 항목의 근거. 리뷰를 성실히 한 사람이 점수를 받습니다 |
|---|
주의리뷰를 받기만 하고 해 주지 않으면 점수가 깎입니다. 짝이 남긴 평가가 그 근거입니다.
개인 프로젝트라도 남의 코드를 읽는 일은 평가 대상인데, 그것이 이 강의가 가르치려는 것 중 하나이기 때문입니다.
핵심평가 하나만으로 감점하지 않습니다. 저장소의 리뷰 기록과 함께 봅니다.
SW/AI 캡스톤 디자인 (1215-4003-02) · 2026-2
15주 내내 곁에 두고 참조하는 문서입니다. 주차별 슬라이드는 이 문서를 요약할 뿐입니다.
참고리뷰 짝과 협업하며 AI를 쓰는 방법은 GitHub 협업 × AI 사용 가이드에 따로 있습니다.
이 문서는 개인이 AI를 다루는 법, 그 문서는 여러 사람이 함께 쓸 때 생기는 문제를 다룹니다.
목차
- 이 강의가 AI에 대해 취하는 입장
- 사용 규칙 (허용·금지·의무)
- 프롬프트 패턴 카탈로그 8종
- 검증 절차 — AI를 믿는 유일한 방법
- AI가 반드시 틀리는 지점 10가지
- 주차별 AI 활용 지도
- 자주 하는 질문
- 부록 — 인터뷰 전사에 AI 쓰기
1이 강의가 AI에 대해 취하는 입장
금지하지 않습니다
AI 사용을 금지하는 프로젝트 강의는 2026년에 의미가 없다고 생각합니다. 여러분이 졸업 후 들어갈 모든 개발 조직이 AI를 쓰기 때문에, 못 쓰게 하는 것은 교육이 아니라 회피입니다.
여러분이 팀장이고, AI가 팀원입니다
이 강의는 개인 프로젝트이지만, 그렇다고 혼자 하는 것은 아닙니다.
| 역할 | 누구 | 하는 일 |
|---|
| 팀장 | 여러분 | 지시 · 검수 · 반려 |
|---|
| 팀원 | AI | 생산 |
|---|
| 단계 | 무엇을 하나? | 어디에 남나? |
|---|
| ① 지시 | 무엇을 어떤 조건으로 만들지 정해서 넘긴다 | AI 사용 로그 「무엇을 시켰나」 |
|---|
| ② 검수 | 받은 것이 그 조건을 만족하는지 확인한다 | 「무엇으로 검수했나」 |
|---|
| ③ 반려 | 아니면 되돌려 보내고 이유를 남긴다 | 「무엇을 왜 반려했나」 · 기여 명세서 |
|---|
AI 사용 로그는 이 세 칸이 전부입니다(2026-10부터 · 5분). 「무엇을 시켰나」는 «AI 구현 요청»에서 복사한 요청으로 미리 채워지므로 검수·반려만 쓰면 됩니다. 반려 칸이 «없음»인 주는 로그가 인정되지 않습니다.
막힌 주에만 «막혔을 때만 — 통합·디버깅» 칸(기대한 동작/실제 동작 · 에러 메시지 전문 · 무엇을 해 봤고 어떻게 됐나)을 더 채웁니다. 이 내용이 «AI 구현 요청 → 막혔을 때» 디버깅 요청에 들어갑니다.
주의세 번째가 없으면 팀장이 아니라 전달자입니다.
아래는 AI 팀원이 사람 팀원과 다른 세 가지이고, 이 빈자리는 팀장이 메워야 합니다.
| 차이 | 그래서 해야 할 일 |
|---|
| 반대하지 않는다 | 반대 의견을 직접 시켜서 받는다 → 「패턴 3. 반박 요청」 |
|---|
| 모른다고 말하지 않는다 | 모르는 영역일수록 출처를 직접 연다 → 「4. 검증 절차」 |
|---|
| 어제 내린 결정을 기억하지 못한다 | 결정은 사람이 문서에 남긴다 → ADR · 프로젝트 계획서 |
|---|
대신 이것을 평가합니다
AI는 답을 만듭니다. 여러분은 그 답을 받아들일지 말지를 결정합니다.
이 강의가 평가하는 것은 결정입니다.
AI가 코드를 100줄 써줬을 때, 그것을 그대로 머지한 수강자와, 3줄을 고치고 왜 고쳤는지 설명할 수 있는 수강자는 완전히 다른 것을 배운 것입니다.
그래서 이런 구조가 됩니다
| 단계 | AI가 잘하는 것 | 사람이 해야 하는 것 |
|---|
| 사용자 조사 | 전사, 발언 분류, 요약 | 인터뷰 자체, 침묵·모순 읽기 |
|---|
| 문제 정의 | 문장 다듬기, 반박 제시 | 무엇이 진짜 문제인지 결정 |
|---|
| 아이디어 | 대안 대량 생성 | 무엇을 버릴지 선택 |
|---|
| 설계 | 대안 비교표, 트레이드오프 정리 | 내 프로젝트 제약에서 무엇을 포기할지 판단 |
|---|
| 구현 | 코드 생성, 보일러플레이트, 리팩터링 | 인터페이스 설계, 작업 분할, 인수 판정 |
|---|
| 검증 | 데이터 정리, 패턴 추출 | 사용자 관찰, 심각도 판단 |
|---|
공통점이 보이나요? 오른쪽 열은 전부 판단이고, 왼쪽은 전부 생산입니다.
즉, AI는 생산을 대신하고 여러분의 가치는 판단으로 이동합니다.
주의혼자 + AI의 가장 큰 위험은 「이해하지 않은 채 진도가 나가는 것」입니다.
사람 팀원에게는 설명을 해야 하니 억지로라도 이해하게 되지만, AI는 설명을 요구하지 않습니다.
그래서 이 강의는 발표마다 코드를 무작위로 골라 설명을 청합니다.
맞는 코드라도 설명하지 못하면 그 자리에서 반려 대상입니다. → 「패턴 8. 설명 요구」
2사용 규칙
✅ 허용
- 코드 생성, 리팩터링, 디버깅, 테스트 작성
- 문서 초안 생성 (PRD, 보고서, 발표자료)
- 낯선 기술·API 학습, 예제 코드 요청
- 아이디어 발산, 대안 비교, 반박 요청
- 인터뷰 녹취 전사, 데이터 분류·요약
- 코드 리뷰 보조
❌ 금지
| 금지 행위 | 왜 |
|---|
| 사용자 데이터 생성 — 인터뷰 응답, 페르소나, 사용성 테스트 결과를 AI로 만들기 | 이 강의의 근간이 무너집니다. 확인되면 해당 항목 0점 |
|---|
| 검증 없는 인용 — AI가 말한 통계·논문·서비스 사례를 확인 없이 쓰기 | AI는 존재하지 않는 출처를 매우 자연스럽게 만들어냅니다 |
|---|
| 설명 못 하는 코드 머지 | 전체의 부채가 됩니다 |
|---|
| AI 사용 로그를 AI에게 쓰게 하기 | 즉시 드러납니다. 본인 판단이 없는 로그는 0점 |
|---|
| 타인 작업을 본인 기여로 기재 | AI에게 시킨 것도 본인이 판단했으면 기여입니다. 하지만 리뷰 짝이 한 것은 아닙니다 |
|---|
📌 의무
- 매주 AI 사용 로그 제출: 한 번에 몰아 낼 수 없습니다
- 매주 "AI가 틀린 것" 최소 1건 기록
- 발표에서 코드 한 부분을 골라 설명: 설명할 수 있으면 그것으로 완성입니다
3프롬프트 패턴 카탈로그
프롬프트를 외울 필요는 없습니다. 패턴 8개의 "언제 쓰는가?" 만 기억하시면 됩니다.
패턴 1. 맥락 먼저 (Context First)
언제: 거의 모든 요청에 씁니다. AI 결과가 엉뚱하다면 90%는 맥락을 주지 않았기 때문입니다.
❌ "로그인 기능 만들어줘"
✅ "우리는 중고 직거래 약속을 잡아주는 웹서비스를 만들고 있어.
- 스택: (사용 중인 기술)
- 사용자: 중고 물건을 파는 사람, 모바일 브라우저에서 주로 접속
- 제약: 혼자 하는 15주 프로젝트라 3주 안에 끝내야 하고, 백엔드는 처음
이 상황에서 로그인을 구현하려고 해. 먼저 구현하지 말고,
선택지 2~3개와 각각이 우리 제약에 어떻게 맞는지 알려줘."
- 핵심: 프로젝트 배경 / 기술 제약 / 내 역량 / 기간, 이 4가지를 매번 앞에 붙이세요.
- 저장소 README나 PRD를 통째로 붙여넣는 것이 가장 빠릅니다.
패턴 2. 인수조건 주입 (Spec-Driven)
언제: 기능 구현. 이 강의에서 가장 중요한 패턴입니다.
✅ "아래 사용자 스토리를 구현해줘.
## US-03 상대와 겹치는 시간 확인
As a 중고 물건을 파는 사람, I want ..., So that ...
인수조건:
- Given 양쪽이 가능 시간을 3개씩 골랐고, When 약속판에 진입하면,
Then 겹치는 시간이 이른 순서로 한 화면에 보인다.
- Given 마감일이 지난 작업이 있으면, Then 시각적으로 구분된다.
- Given 작업이 0개면, Then 빈 상태 안내와 추가 버튼이 보인다.
구현 전에 먼저 이 인수조건을 검증하는 테스트를 작성해줘."
왜 이게 결정적인가?
"약속판 만들어줘"라고만 하면 매번 다른 결과가 나오지만, 인수조건이 있으면 합격/불합격을 판정할 수 있고, 판정할 수 있으면 AI에게 반복 수정을 시킬 수 있습니다.
핵심스토리를 잘 쪼개는 능력 = AI를 잘 쓰는 능력. 이 둘은 같은 것입니다.
패턴 3. 반박 요청 (Devil's Advocate)
언제: 문제 정의, 설계 결정, 계획 수립. 3주차·8주차 필수 실습.
✅ "다음은 내 문제 정의야. [내용]
이 정의의 약점을 3가지 지적해줘.
특히 '우리가 근거 없이 가정하고 있는 것'을 찾아줘.
좋게 말하지 말고 냉정하게 평가해줘."
✅ "이 설계를 다음 강의에 후배가 이어받는다고 하자.
가장 먼저 욕할 부분이 어디일까?"
AI는 기본적으로 사용자에게 동조하는 경향이 있어서, 명시적으로 반대를 요청해야 비판이 나옵니다. 그리고 그렇게 받은 비판 중 절반은 맞습니다.
로그에 기록할 것: 반박 중 수용한 것 1개와 반려한 것 1개 + 각각의 이유.
패턴 4. 대안 강제 (Force Alternatives)
언제: 기술 선택, 아키텍처 결정, 아이디어 발산.
✅ "이 요구사항을 만족하는 방법을 서로 다른 접근으로 3가지 제시해줘.
각각에 대해: 장점 / 단점 / 내 상황(혼자, 3주, 백엔드 처음)에서의 적합도.
그리고 마지막에, 네가 추천하지 않는 것과 그 이유도 알려줘."
첫 번째 답을 그대로 쓰는 것이 가장 흔한 실수인데, AI의 첫 답은 "가장 일반적인 답"이지 "우리에게 맞는 답"이 아니기 때문입니다.
결정은 반드시 사람이. 그리고 그 결정을 ADR에 남기세요.
패턴 5. 작게 쪼개기 (Chunking)
언제: AI가 만든 코드가 계속 안 돌아갈 때. 원인은 대개 요청이 너무 컸던 것입니다.
❌ "회원가입부터 약속판까지 전체 만들어줘"
✅ 1단계: "이 데이터 모델에 맞는 스키마와 마이그레이션만 작성해줘"
2단계: "이 스키마로 작업 목록을 조회하는 함수 하나만. 테스트 포함"
3단계: "이 함수를 호출하는 API 엔드포인트 하나만"
4단계: "이 API를 호출해 목록을 그리는 컴포넌트만"
- 기준: 한 번의 요청은 변경 요청 하나 분량(반나절 이내)이고, 그보다 크면 쪼개세요.
- 큰 덩어리는 어디가 틀렸는지 찾을 수 없어서 결국 통째로 버리게 됩니다.
패턴 6. 디버깅 3단 (Reproduce → Minimize → Hypothesize)
언제: 에러가 났을 때. 11주차 디버깅 클리닉 핵심.
✅ "다음 에러가 발생해.
[에러 메시지 전문 — 잘라내지 말고 전부]
[관련 코드]
[내가 기대한 동작 / 실제 동작]
[이미 시도해본 것: A, B — 둘 다 실패]
바로 코드를 고치지 말고, 먼저 이 에러가 발생할 수 있는 원인을
가능성 높은 순서로 3가지 알려줘. 그리고 각 가설을 확인하는 방법도."
"고쳐줘"라고 하면 AI는 추측으로 코드를 바꿉니다. 그러면 원인을 모른 채 넘어가게 되고, 같은 버그가 형태만 바꿔 다시 찾아옵니다. 그러니 가설 → 확인 → 수정 순서를 지키시기 바랍니다.
2시간 규칙: 같은 버그로 2시간 이상 AI와 씨름했다면, 멈추고 강의 채널에 공유하세요.
그 시점부터는 AI가 아니라 접근 방식이 틀린 것입니다.
패턴 7. 리뷰어로 쓰기 (AI as Reviewer)
언제: 변경을 올리기 전. 9주차부터 습관화.
✅ "이 코드를 리뷰해줘. 다음 관점으로 나눠서:
1) 인수조건을 충족하는가 [인수조건 붙여넣기]
2) 예외 상황(빈 값, null, 네트워크 실패)이 처리되는가
3) 보안 문제 (키 노출, 입력 검증, 권한 확인)
4) 이 코드를 처음 보는 리뷰 짝이 이해하기 어려운 곳
각 지적에 심각도(상/중/하)를 붙여줘."
AI 리뷰는 사람 리뷰를 대체하지 않습니다. 사람 리뷰어의 시간을 사소한 것에 쓰지 않게 해주는 1차 필터입니다.
패턴 8. 설명 요구 (Explain Back)
언제: AI가 만든 코드를 머지하기 전. 매번.
✅ "방금 만든 코드를, 이 부분을 처음 보는 리뷰 짝에게 설명한다고 생각하고
한 문단으로 설명해줘. 그리고 이 코드가 깨질 수 있는 상황 2가지도 알려줘."
그 설명을 읽고 여러분이 이해되지 않으면, 그 코드는 머지하면 안 됩니다. 발표에서 설명을 청할 코드가 바로 그런 코드이기 때문입니다.
4검증 절차
AI 결과를 받았을 때 반드시 거치는 3단계. 이걸 건너뛰는 순간 AI는 도구가 아니라 위험이 됩니다.
코드의 경우
| 단계 | 무엇을 | 어떻게 |
|---|
| 1 | 돌려본다 | 실제로 실행. "될 것 같다"는 검증이 아님 |
|---|
| 2 | 경계를 시험한다 | 빈 값, 0, 음수, 매우 긴 입력, 네트워크 끊김. AI는 정상 경로만 만듭니다 |
|---|
| 3 | 설명해본다 | 패턴 8. 설명 못 하면 머지 금지 |
|---|
사실·정보의 경우
| 단계 | 무엇을 | 어떻게 |
|---|
| 1 | 출처를 묻는다 | "이 내용의 출처 URL을 알려줘" |
|---|
| 2 | 직접 연다 | 링크를 실제로 클릭. 존재하지 않는 URL이 자주 나옵니다 |
|---|
| 3 | 원문을 확인한다 | 링크가 열려도 AI 요약과 원문 내용이 다른 경우가 흔합니다 |
|---|
주의이 3단계를 거치지 않은 인용은 해당 항목 0점으로 봅니다. 링크 하나 여는 데 30초면 됩니다.
특히 4주차 선행사례 조사에서 매년 사고가 납니다.
설계·판단의 경우
| 단계 | 무엇을 |
|---|
| 1 | 다른 프롬프트로 다시 물어본다 — 같은 답이 나오는가? |
|---|
| 2 | 우리 제약을 대입한다 — 내 역량·기간·기존 결정과 충돌하지 않는가? |
|---|
| 3 | 리뷰 짝과 논의한다 — AI 답을 근거로 쓰되, 결정은 사람이 |
|---|
5AI가 반드시 틀리는 지점
매주 강의에서 하나씩 실물로 보여드릴 항목들이니, 미리 알아두시기 바랍니다.
| # | 실패 유형 | 언제 나타나나? | 대응 |
|---|
| 1 | 없는 출처를 만들어냄 | 논문·통계·사례 인용 시 | URL 직접 열기 |
|---|
| 2 | 없는 함수/API를 만들어냄 | 라이브러리 사용 시 | 공식 문서 대조 |
|---|
| 3 | 예외 경로를 안 만듦 | 코드 생성 시 항상 | 빈 상태·에러 케이스 명시 요구 |
|---|
| 4 | 오래된 방식으로 작성 | 빠르게 변하는 프레임워크 | 버전 명시 후 요청 |
|---|
| 5 | 시간대·타임존 오류 | 날짜 로직 | 경계값 테스트 필수 |
|---|
| 6 | 동조 편향 | 여러분 아이디어를 평가할 때 | 패턴 3 (반박 요청) |
|---|
| 7 | 맥락 유실 | 대화가 길어졌을 때 | 새 대화 시작 + 맥락 재투입 |
|---|
| 8 | 한국어 뉘앙스 오독 | 인터뷰 전사록 분석 | 반어·완곡·침묵을 사람이 확인 |
|---|
| 9 | 일반론으로 도피 | 문서 초안 생성 시 | 우리 데이터를 강제 주입 |
|---|
| 10 | 자신 있게 틀림 | 항상 | 확신의 강도는 정확도와 무관 |
|---|
10번이 가장 위험합니다. AI는 모를 때도 아는 것처럼 말합니다.
"확실하지 않으면 확실하지 않다고 말해줘"를 붙여도 완전히 해결되지 않습니다.
6주차별 AI 활용 지도
| 주차 | 이번 주 배울 AI 스킬 | 사용 패턴 | 이번 주 "AI 함정" |
|---|
| 1 | 도구 설치, 맥락 주입 기초 | 1 | 자신 있게 틀리기 |
|---|
| 2 | 전사·발언 분류 보조 | 1 | 한국어 뉘앙스 오독 |
|---|
| 3 | PRD 초안 + 반박 요청 | 1, 3 | 일반론으로 도피 |
|---|
| 4 | 대안 대량 생성 + 출처 검증 | 4 | 없는 출처 만들기 |
|---|
| 5 | 목업 생성·반복 개선 | 1, 5 | 맥락 유실 |
|---|
| 6 | 낯선 API 학습, 에러 디버깅 | 5, 6 | 없는 함수 만들기 |
|---|
| 7 | (발표) | — | — |
|---|
| 8 | 아키텍처 대안 비교 + ADR | 3, 4 | 동조 편향 |
|---|
| 9 | AI 코드 리뷰, CI 연동 | 7 | 리뷰의 형식화 |
|---|
| 10 | 스펙 → 테스트 → 구현 | 2, 8 | 예외 경로 누락 |
|---|
| 11 | 디버깅 3단, 통합 문제 추적 | 6 | 원인 모른 채 넘어가기 |
|---|
| 12 | 리팩터링·보안 점검 | 7 | 오래된 방식 |
|---|
| 13 | (발표) | — | — |
|---|
| 14 | 피드백·로그 데이터 분석 | 1 | 데이터 없이 결론 만들기 |
|---|
| 15 | (발표) | — | — |
|---|
7자주 하는 질문
Q. AI가 짠 코드도 제 기여로 인정되나요?
네, 여러분이 판단했다면 인정됩니다. 요구사항을 정의하고, 결과를 검증하고, 수정하고, 설명할 수 있다면 그것은 여러분의 작업입니다. 반대로 붙여넣기만 했다면 아니고, 그 차이는 발표 때 3분이면 드러납니다.
Q. 로그에 "AI가 틀린 것"을 매주 찾기가 어렵습니다.
좀 냉정하게 들리시겠지만, 못 찾는 것이 아니라 안 찾는 것일 가능성이 큽니다. 예를 들어 빈 배열, null, 아주 긴 문자열, 자정 직전 시각 같은 경계값을 넣어 보시면 5분 안에 하나는 나옵니다. 그리고 그 5분이 13주차의 3시간을 아껴 줍니다.
Q. 리뷰 짝이 AI로만 작업하고 이해를 못 합니다.
모임의 회고 시간에 상황을 꺼내고, 짝과 "머지 전 설명하기"를 규칙으로 정하세요.
그래도 안 되면 교수자 면담을 요청하시기 바랍니다. 리뷰 짝을 바꿔 드립니다.
Q. 문서를 AI로 쓰면 감점인가요?
초안은 괜찮습니다. 다만 AI가 쓴 일반론은 채점자가 즉시 알아봅니다.
즉, 여러분의 인터뷰 인용과 본인 제약이 들어가 있지 않은 문서는 누구 것이어도 상관없는 문서이고, 그런 문서는 점수를 받지 못합니다. 그러니 초안을 만든 뒤에도 근거 부분은 반드시 직접 쓰세요.
Q. 어떤 도구를 써야 하나요?
도구 간 차이보다 사용 방식의 차이가 결과에 훨씬 크게 작용하는 것 같습니다. 그래서 이 문서의 패턴 8개도 어떤 도구에서든 똑같이 적용됩니다.
Q. AI 없이 하면 손해인가요?
평가에서 불리하지는 않습니다. 다만 AI 사용 로그는 시킨 것·검수한 것·반려한 것 세 칸이라 AI 없이 한 일은 기여 명세서의 «내가 내린 판단»으로 충실히 보여 줘야 하고, 15주 분량을 감당할 수 있어야 하기 때문에, 현실적으로는 권장하지 않습니다.
부록. 인터뷰 전사에 AI 쓰기
전사록 3건을 손으로 받아 적으면 한 사람당 서너 시간이 걸리는데, 그 시간은 배우는 시간이 아닙니다. 그러니 전사는 도구에 맡기고, 사람은 도구가 못 하는 일에 시간을 쓰시기 바랍니다.
순서
① 녹음 30~40분. 시작 전 구두 동의를 받고 그 발언도 녹음에 포함
↓
② AI 전사 음성 파일을 넣고 텍스트를 받습니다 (몇 분이면 끝납니다)
↓
③ 부분 검수 인용할 구간만 원본 음성과 대조
↓
④ 관찰 노트 ← 여기가 사람의 일입니다
② 전사 — 무엇을 쓰든 상관없습니다
음성을 텍스트로 바꿔 주는 도구면 무엇이든 됩니다. 예를 들어 스마트폰 녹음 앱에 내장된 것, 회의록 서비스, 대화형 AI에 파일을 올리는 방식 모두 허용합니다.
요청할 때 이렇게 덧붙이면 결과가 훨씬 쓸 만해집니다.
이 녹음을 전사해 줘. 조건:
- 타임스탬프를 [00:00:00] 형식으로, 말이 바뀔 때마다
- 화자를 「진행자」와 「P1」로 구분
- 말끝을 다듬지 말고 들린 그대로 ("음...", "그니까" 포함)
- 알아듣기 어려운 부분은 [불명확]으로 표시
핵심"자연스럽게 정리해 줘"라고 하면 안 됩니다. AI가 문장을 매끄럽게 고치면서 망설임과 반복을 지우는데, 그게 지워지면 인사이트도 함께 사라집니다.
③ 검수 — 전체를 볼 필요는 없습니다
전사 전체를 원본과 대조하면 다시 몇 시간이 걸리니, 인용할 구간만 확인하면 됩니다.
| 확인할 곳 | 왜 |
|---|
| 「인상적인 발언 3개」로 뽑을 문장 | 3주차 문제 정의의 근거가 되는 문장입니다 |
|---|
| 숫자가 나오는 부분 | AI가 가장 자주 틀리는 곳 (3만 원 ↔ 3000원) |
|---|
| 고유명사·서비스 이름 | 들어본 적 없는 단어를 비슷한 소리로 바꿔 놓습니다 |
|---|
주의인용문은 반드시 원본 음성으로 확인하세요. 인용은 문제 정의의 근거이고, 근거가 틀리면 그 위에 쌓은 15주가 전부 흔들립니다.
여기서만은 "AI가 그렇게 적어놨는데요"가 통하지 않습니다.
④ 관찰 노트 — AI가 대신할 수 없는 부분
전사 텍스트에는 소리만 남습니다. 다음은 아무리 좋은 도구를 써도 남지 않습니다.
| AI가 못 잡는 것 | 예 |
|---|
| 망설임의 길이 | 12:09에서 3초 침묵 |
|---|
| 웃음의 성격 | 즐거움인지 체념인지 |
|---|
| 표정·자세 | 화면을 계속 확대·축소하며 답함 |
|---|
| 말과 행동의 어긋남 | "괜찮아요"라고 하면서 앱을 지움 |
|---|
인터뷰가 끝나고 10분 안에 적으세요. 하루만 지나도 기억이 사라지기 때문입니다. 그리고 진행자와 기록자를 나누면 이 노트가 훨씬 잘 남습니다.
참고이 강의가 평가하는 것은 전사록의 분량이 아니라 관찰 노트와 인용입니다.
전사는 도구가 하는 일이고, 그 둘은 여러분이 하는 일입니다.
이건 하지 마세요
| ❌ | 왜 |
|---|
| AI에게 인터뷰 내용을 만들게 하기 | 이 강의의 근간이 무너집니다. 확인되면 해당 항목 0점 |
|---|
| 전사 없이 요약만 제출 | 요약에는 사용자의 말투가 남지 않습니다 |
|---|
| AI에게 "핵심만 정리해 줘" | 정리하는 순간 여러분의 해석 기회가 사라집니다 |
|---|
| 인용문을 검수 없이 쓰기 | 틀린 인용은 확인되면 해당 항목 0점 |
|---|
마지막으로
이 강의가 끝났을 때 여러분에게 남기를 바라는 것은 프롬프트 모음집이 아닙니다.
"AI가 준 것을 언제 믿고 언제 의심해야 하는가?"에 대한 감각.
도구는 내년에 또 바뀌겠지만, 그 감각만 남으면 이 강의는 성공입니다.
1주차에 각자 결정 · 프로젝트 계획서에는 저장소 주소(GitHub URL 또는 Drive 공유 폴더 링크)만 적습니다
이 강의의 두 경로
| 무엇을 쓰나? | 언제 고르나? |
|---|
| A. GitHub | 계정을 만들어 씁니다 | 기본 |
|---|
| B. Google Drive + 로컬 Git | 각자 PC에서 커밋하고, 커밋 묶음을 Drive로 주고받습니다 | 계정을 못 만들거나 학교에서 접속이 막힐 때 |
|---|
주의문서 서식은 저장소에 넣지 않습니다. 서식 15종은 서식 제출 페이지로 냅니다.
저장소에는 코드 · README · 작업 이력만 들어갑니다.
참고어느 경로를 골라도 Git은 씁니다. B는 GitHub을 안 쓸 뿐, 커밋은 각자 남깁니다.
커밋 작성자가 15주차 개인 점수 조정의 근거이기 때문입니다.
참고경로를 정한 뒤 실제로 어떻게 협업하는지는 GitHub 협업 × AI 사용 가이드에 있습니다.
먼저 — 무엇이 타협되지 않는가?
경로가 달라도 이 네 가지는 누구나 만들어야 하는데, 이것이 강의의 학습 목표이기 때문입니다.
| # | 요구 | 왜 |
|---|
| 1 | 작업이 시간에 걸쳐 분포한 기록 | 몰아서 한 작업은 프로세스를 배운 것이 아닙니다 |
|---|
| 2 | 누가 무엇을 했는지 식별 가능 | 개인 기여도 평가의 근거 |
|---|
| 3 | 변경이 다른 사람의 눈을 거친 흔적 | 리뷰 없는 코드는 내 부채가 됩니다 |
|---|
| 4 | 동작을 자동으로 확인하는 수단 | AI가 쓴 코드를 믿는 방법은 검증뿐입니다 |
|---|
어떤 도구로 이걸 만들지는 각자 정합니다. 아래에서 A 또는 B를 고르세요.
경로 A — GitHub (기본)
이 강의의 기본 경로입니다. GitHub 계정은 이메일만 있으면 만들 수 있고, 학생 인증 없이도 무료로 비공개 저장소를 쓸 수 있습니다.
학내 GitLab이나 다른 Git 호스팅이 있다면 그것도 경로 A로 봅니다. 즉, 서비스는 상관없습니다.
| 선택지 | 비고 |
|---|
| GitHub | 가장 널리 쓰임 |
|---|
| GitLab | 무료 CI 포함. 학내 GitLab이 있다면 1순위 |
|---|
| Bitbucket | |
|---|
| 학과·학교 자체 Git 서버 | 있다면 가장 안정적 |
|---|
| Gitea / Forgejo (직접 설치) | 학내 서버나 개인 서버를 쓸 수 있다면 |
|---|
용어는 서비스마다 다릅니다. 이 자료의 용어를 이렇게 읽으세요.
| 이 자료의 표현 | GitHub | GitLab |
|---|
| 변경 요청 | Pull Request | Merge Request |
|---|
| 이슈 | Issues | Issues |
|---|
| 자동 검증 | Actions | CI/CD |
|---|
네 가지 요구를 이렇게 충족합니다
| 요구 | 방법 |
|---|
| 시간 분포 | 커밋 이력 (날짜) |
|---|
| 개인 식별 | 커밋 작성자, 변경 요청 작성자 |
|---|
| 리뷰 흔적 | 변경 요청 승인 기록 |
|---|
| 자동 검증 | CI에서 린트 + 테스트 |
|---|
경로 B — Google Drive + 로컬 Git
GitHub 계정을 만들 수 없거나, 학교 네트워크에서 접근이 안 되거나, 개인정보 문제로 외부 서비스를 쓸 수 없는 경우를 위한 경로입니다.
- 작업 방식: Git은 그대로 씁니다. 각자 자기 PC에서
git commit을 하고, 그 결과를 Google Drive로 주고받습니다. - 기여 추적: 커밋 이력이 남기 때문에 개인 기여 추적이 경로 A와 동일하게 작동합니다.
B-1. 계정은 못 만들지만 다른 사람의 저장소를 쓸 수 있는 경우
가장 흔한 상황으로, 한 명이 저장소를 만들고 나머지는 로컬 Git으로 작업합니다.
- 커밋 전달: 로컬에서 커밋을 만들고, 커밋 묶음을 저장소를 가진 사람에게 전달합니다
# 계정이 없는 경우: 자기 브랜치를 파일 하나로 묶기
git bundle create 홍길동-week10.bundle main..feat/US-03
# 받은 사람: 그 파일을 저장소에 반영
git fetch 홍길동-week10.bundle feat/US-03:feat/US-03
- 전달 수단: 파일 전달은 학교 메일·공유 드라이브·USB 무엇이든 됩니다
주의다른 사람이 대신 커밋할 때는 반드시 실제 작성자를 남기세요.
이걸 빠뜨리면 그 수강자의 기여가 평가 근거에서 통째로 사라집니다.
git commit -m "feat: 약속판 조회 API
Co-authored-by: 홍길동 <hong@example.ac.kr>"
B-2. 아무도 GitHub을 못 쓰는 경우 — Drive를 원격 저장소로
공유 드라이브(구글 드라이브·원드라이브·학교 스토리지)를 원격 저장소 대신 씁니다.
# 최초 1회: 공유 드라이브 폴더에 원격 저장소 만들기
git init --bare "G:/공유드라이브/team-repo.git"
# 각자
git clone "G:/공유드라이브/team-repo.git"
git push origin feat/US-03
동기화 클라이언트가 설치되어 있으면 이것만으로 원격 저장소가 됩니다.
이슈와 리뷰는 이렇게 대체합니다
| 요구 | 대체 수단 |
|---|
| 이슈 보드 | 스프레드시트 칸반 (할 일 / 진행 / 리뷰 / 완료 열) 또는 Notion·Trello |
|---|
| 변경 요청 | 브랜치를 만들고, 병합 전에 리뷰 기록지를 작성 (아래 양식) |
|---|
| 자동 검증 | 로컬 검증 스크립트 (아래) |
|---|
리뷰 기록지 — docs/reviews/US-03.md
# 리뷰 기록 — US-03 약속판 조회
- 작성자: 김서연 / 리뷰어: 박지훈 / 날짜: 2026-XX-XX
- 대상 브랜치: feat/US-03 (커밋 a1b2c3d)
## 인수조건 확인
- [x] 양쪽이 고른 시간이 약속판에 겹쳐 표시된다
- [x] 지연 작업이 시각적으로 구분된다
- [ ] 고른 시간이 0건일 때 빈 상태 안내가 보인다 → 수정 요청
## 리뷰 코멘트
1. 빈 배열일 때 화면이 깨집니다. 처리 후 다시 요청해 주세요
2. 함수 이름이 하는 일과 다릅니다 (getList → getTeamTasks)
## 결과
☐ 승인 ☑ 수정 요청
## 재확인 (수정 후)
- 2026-XX-XX 수정 확인, 승인 — 박지훈
로컬 검증 스크립트 — scripts/check.sh (또는 check.ps1)
#!/usr/bin/env bash
set -e
echo "== 린트 =="
npm run lint
echo "== 테스트 =="
npm test
echo "== 통과 =="
병합 전에 이 스크립트를 실행하고, 결과를 리뷰 기록지에 붙여넣습니다. 즉, CI가 자동으로 하던 일을 사람이 규칙으로 대신하는 것입니다.
부록 — Git 자체를 쓸 수 없는 경우 (예외, 사전 승인 필요)
주의이 경로는 선택지가 아닙니다. 버전 관리는 이 강의의 학습 목표 중 하나이므로,
기술적으로 불가능한 사유가 있을 때만 교수자 승인을 받아 예외로 허용합니다. 1주차에 상담하세요.
승인을 받은 사람만 프로젝트 계획서의 저장소 주소 칸에 공유 드라이브 위치를 적습니다.
공유 드라이브에 주차별 스냅샷을 남기는 방식입니다.
project-<이름>/
├── docs/
├── src/
│ └── (현재 작업본)
├── snapshots/
│ ├── 2026-09-10-week02/ ← 주차 마감 시점의 복사본
│ ├── 2026-09-17-week03/
│ └── ...
└── 변경기록.md
변경기록.md — 매 작업마다 한 줄씩 추가합니다.
| 날짜 | 작성자 | 무엇을 | 파일 | 리뷰어 | 검증 |
|---|
| 09-24 | 김서연 | 약속판 조회 함수 추가 | src/board.js | 박지훈 | 테스트 4/4 통과 |
|---|
| 09-24 | 이도현 | 빈 상태 화면 | src/empty.js | 김서연 | 수동 확인 |
|---|
네 가지 요구를 이렇게 충족합니다
| 요구 | 방법 |
|---|
| 시간 분포 | 변경기록의 날짜 + 주차별 스냅샷 |
|---|
| 개인 식별 | 변경기록의 작성자 + 파일 상단 주석에 작성자 표기 |
|---|
| 리뷰 흔적 | 변경기록의 리뷰어 열 + 리뷰 기록지 |
|---|
| 자동 검증 | 테스트 실행 결과 스크린샷을 docs/test-runs/에 날짜별 저장 |
|---|
경로 C의 함정: 변경기록을 나중에 몰아 쓰면 아무 의미가 없습니다.
스냅샷 폴더의 파일 수정 시각과 변경기록의 날짜가 어긋나면 인정하지 않습니다.
경로별 평가 근거 대조표
이 강의가 채점에 쓰는 근거가 경로별로 무엇으로 대체되는지입니다.
| 채점 항목 | A. GitHub | B. Drive + 로컬 Git |
|---|
| 프로세스 (2차·최종 발표) | 이슈·변경요청·CI 이력 | 칸반 + 리뷰 기록지 + 검증 스크립트 로그 |
|---|
| 작업의 시간 분포 | 커밋 날짜 | 커밋 날짜 (동일) |
|---|
| 개인 기여도 | 커밋 작성자 | 커밋 작성자 + Co-authored-by |
|---|
| 문서 몰아쓰기 확인 | 커밋 날짜 | 커밋 날짜 (동일) |
|---|
경로를 바꿔도 점수에 유불리가 없습니다. 두 경로 모두 커밋 이력이 남기 때문입니다.
다만 B는 이슈·리뷰·자동 검증을 사람이 수동으로 해야 해서 손이 더 갑니다. 가능하면 A를 권합니다.
1주차에 결정할 것
아래를 1주차에 스스로 정해 두세요. 따로 제출하지는 않습니다 — 프로젝트 계획서에는 저장소 주소만 적습니다.
| 항목 | 내 프로젝트 |
|---|
| 선택한 경로 | A. GitHub / B. Drive + 로컬 Git |
|---|
| 사용하는 서비스·저장 위치 | |
|---|
| 리뷰 짝에게 열어줬는가? | 예 / 아직 |
|---|
| 이슈·작업 관리 도구 | |
|---|
| 리뷰 방식 | 변경 요청 승인 / 리뷰 기록지 |
|---|
| 검증 방법 | CI / 로컬 스크립트 / 수동 체크리스트 |
|---|
자주 묻는 것
Q. 계정을 못 만듭니다.
그렇다면 경로 B-1이고, 그 수강자도 로컬에서 Git을 씁니다. 커밋은 다른 팀원이 대신 반영하되 Co-authored-by를 반드시 넣으세요. 이것만 지키면 평가에서 불이익이 없습니다.
Q. 학교 네트워크에서 접속이 막힙니다.
집에서 동기화하고 밖에서는 로컬로 작업하면 됩니다. Git은 원래 오프라인에서도 동작하기 때문입니다. 그래도 어렵다면 경로 B-2를 쓰시기 바랍니다.
Q. 사람마다 다른 경로를 써도 되나요?
됩니다. 경로는 각자 결정하는 것이고, 다만 한 사람 안에서는 하나로 통일하세요.
Q. 중간에 경로를 바꿔도 되나요?
됩니다. 프로젝트 계획서의 저장소 주소를 고쳐 다시 제출하고, 이전 기록을 새 저장소로 옮기세요. 기록이 끊기면 그 기간의 기여가 사라지기 때문입니다.
Q. CI를 못 쓰면 9주차에 무엇을 하나요?
로컬 검증 스크립트를 만들고, 병합 전 실행을 내 규칙으로 만듭니다. 즉, CI가 강제하던 것을 규칙이 대신하는 것이라 배우는 내용은 같습니다.
적용 주차: 9주차부터 상시 · 경로 A(GitHub) 기준
경로 B(Drive + 로컬 Git)를 쓴다면 「변경 요청」을 「리뷰 기록지」로 바꿔 읽으시면 되고, 나머지는 같습니다.
왜 이 문서가 따로 있는가?
AI를 쓰면 코드가 빨리 나오고, 그래서 오히려 협업이 먼저 무너집니다.
혼자 쓸 때는 문제가 없지만, 셋이 각자 AI에게 시키면 이런 일이 생깁니다.
| 벌어지는 일 | 왜 |
|---|
| 같은 파일을 세 명이 다르게 고쳐 놓음 | AI가 파일을 통째로 다시 써 줌 |
|---|
| 병합할 때 충돌이 100줄씩 남 | 각자의 AI가 서로 다른 스타일로 정리함 |
|---|
| 누가 무엇을 했는지 알 수 없음 | 커밋이 "AI 코드 추가" 한 줄뿐 |
|---|
| 아무도 이해 못 하는 코드가 main에 들어감 | 리뷰를 AI에게 맡김 |
|---|
속도가 문제가 아니라 합류 지점이 문제입니다. 이 문서는 그 합류 지점을 다룹니다.
한 주의 흐름
① 이슈 고르기 → ② 브랜치 만들기 → ③ AI와 구현
↓ ↓
⑥ 병합 · 이슈 닫기 ← ⑤ 리뷰 ← ④ 변경 요청 올리기
각 단계에서 AI를 어디까지 쓰는지가 정해져 있습니다.
| 단계 | AI에게 맡기는 것 | 사람이 하는 것 |
|---|
| ① 이슈 고르기 | — | 무엇을 이번에 할지 판단 |
|---|
| ② 브랜치 | 이름 제안 정도 | — |
|---|
| ③ 구현 | 코드 초안, 테스트 초안 | 인수조건 작성, 받아들일지 결정 |
|---|
| ④ 변경 요청 | 설명 초안 | 무엇을 바꿨고 왜 바꿨는지 확인 |
|---|
| ⑤ 리뷰 | 1차 훑기 | 승인 판단 — 이건 위임 못 합니다 |
|---|
| ⑥ 병합 | — | 충돌 해결, 이슈 닫기 |
|---|
핵심규칙 하나로 줄이면 이렇습니다. AI는 초안을 만들고, 사람은 결정을 합니다.
① 이슈 — AI에게 시키기 전에 여기서 정합니다
이슈 본문에 인수조건이 있어야 AI에게 시킬 수 있고, 없으면 매번 다른 결과가 나옵니다.
제목: [US-03] 상대와 겹치는 시간 확인
**As a** 중고 물건을 파는 사람,
**I want** 상대에게 직접 묻지 않고 겹치는 시간 보기,
**So that** 재촉하는 것처럼 보이지 않으면서 만날 시간을 정할 수 있다.
## 인수조건
- [ ] Given 양쪽이 가능 시간을 3개씩 골랐고, When 약속판에 진입하면,
Then 겹치는 시간이 이른 순서로 보인다.
- [ ] Given 겹치는 시간이 하나도 없으면, Then 다시 고르기 안내가 보인다.
## 담당
@seoyeon
참고인수조건이 곧 AI 프롬프트입니다. 이 체크박스를 그대로 붙여넣으면 AI가 무엇을 만들어야 하는지 압니다.
자세한 패턴은 AI 활용 가이드북의 「패턴 2. 인수조건 주입」을 보세요.
② 브랜치 — 충돌을 미리 줄이는 단계
git switch main
git pull # 남이 병합한 것을 먼저 받습니다
git switch -c feat/US-03-overlap
| 규칙 | 왜 |
|---|
작업 시작 전에 항상 git pull | 옛 코드 위에서 AI에게 시키면 충돌이 커집니다 |
|---|
| 브랜치 하나 = 이슈 하나 | 여러 이슈를 한 브랜치에 담으면 리뷰가 불가능합니다 |
|---|
| 1인당 동시 브랜치 2개까지 | 3개 이상이면 전부 미완성으로 끝납니다 |
|---|
주의가장 흔한 사고 — 이틀 전에 만든 브랜치에서 AI에게 큰 수정을 시키고, 병합할 때 그 사이 바뀐 것과 전부 충돌합니다. 매일 아침 git pull 후 git merge main 한 번이면 막힙니다.
③ 구현 — AI에게 파일 통째로 시키지 않기
이것이 협업에서 가장 중요한 한 가지입니다.
| ❌ 이렇게 시키면 | ✅ 이렇게 시킵니다 |
|---|
| "board.js 전체를 다시 써 줘" | "board.js의 findOverlap 함수만 고쳐 줘. 나머지는 그대로 둬" |
|---|
| "약속판 화면 만들어 줘" | "이 인수조건 2개를 만족하는 함수 하나를 써 줘" |
|---|
| 결과를 통째로 붙여넣기 | 바뀐 줄만 골라 반영하기 |
|---|
AI는 요청하지 않은 부분까지 "정리"해 주는데, 그 정리가 남이 방금 고친 코드를 되돌립니다. 게다가 리뷰에서도 무엇이 진짜 변경인지 알 수 없게 됩니다.
커밋은 작게, 메시지는 본인이
git add src/board.js
git commit -m "feat: 가능 시간 겹치는 구간 계산 추가"
| 규칙 | 이유 |
|---|
| 커밋 메시지는 직접 씁니다 | 커밋 작성자와 메시지가 15주차 개인 기여의 근거입니다 |
|---|
| 한 커밋 = 한 가지 변경 | "AI 코드 반영" 한 줄짜리 커밋은 아무것도 설명하지 못합니다 |
|---|
| 페어로 작업했다면 함께 표기 | 아래 참고 |
|---|
feat: 겹치는 시간 계산 추가
Co-authored-by: 박지훈 <jihun@example.com>
핵심AI는 공동 작성자가 아닙니다. Co-authored-by에 AI를 적지 않습니다. AI 사용은 AI 사용 로그에 적습니다.
④ 변경 요청 — AI를 썼다면 밝힙니다
숨기라는 뜻이 아니라 리뷰어가 어디를 더 봐야 하는지 알려주는 것입니다.
.github/pull_request_template.md 에 이 서식을 넣어두면 매번 자동으로 뜹니다.
## 무엇을
(이 변경이 무엇을 하는지 한 줄)
## 왜
(어떤 이슈를 닫는가 — `closes #14`)
## AI 사용
- 사용함: ☐ 예 ☐ 아니오
- 어디에: (예: findOverlap 함수 초안)
- 무엇을 고쳤나: (예: 시간대 처리를 KST 기준으로 바꿈)
- 검증: (예: 테스트 4개 추가, 경계값 2건 직접 확인)
## 리뷰어가 봐 줬으면 하는 곳
(자신 없는 부분을 솔직히 적습니다)
참고「자신 없는 부분」 칸이 이 서식의 핵심입니다. 여기가 비어 있다면 본인도 아직 꼼꼼히 읽지 않았다는 신호일 수 있습니다.
⑤ 리뷰 — 위임할 수 없는 단계
AI를 1차 훑기에 쓰는 것은 허용합니다.
이 diff에서 (1) 예외 처리가 빠진 곳 (2) 빈 값일 때 깨질 곳
(3) 이름이 하는 일과 다른 곳 을 각각 지적해 줘. 코드는 고치지 말고 지적만 해.
하지만 승인은 사람이 합니다. 리뷰어가 볼 것은 이 넷입니다.
| # | 확인할 것 | 어떻게 |
|---|
| 1 | 인수조건을 정말 만족하는가? | 이슈의 체크박스를 하나씩 대조 |
|---|
| 2 | 작성자가 설명할 수 있는가? | 한 줄 골라 "이거 왜 이렇게 했어?" |
|---|
| 3 | 빈 값·예외 상황 | 목록이 0건일 때, 상대가 아직 안 골랐을 때 |
|---|
| 4 | 요청하지 않은 변경 | diff에 이번 이슈와 무관한 파일이 있는가? |
|---|
주의2번에서 막히면 승인하지 않습니다. 지금 승인해도 13주차 발표에서 같은 질문을 받게 되고,
그때는 점수가 걸립니다. 그러니 지금 물어보는 편이 서로에게 낫습니다.
리뷰 코멘트는 이렇게 씁니다.
| ❌ | ✅ |
|---|
| 이거 이상한데요 | 겹치는 시간이 0건일 때 [0]에 접근해서 오류 날 것 같습니다 |
|---|
| AI가 쓴 것 같은데요 | 이 부분 왜 for 대신 reduce를 썼는지 설명해 주실 수 있나요? |
|---|
⑥ 병합과 충돌 — AI에게 시켜도 되는 것과 아닌 것
git switch main && git pull
git merge feat/US-03-overlap
충돌이 났을 때:
| 상황 | AI 사용 |
|---|
충돌 표시(<<<<<<<)가 무슨 뜻인지 모르겠음 | ✅ 물어봐도 됩니다 |
|---|
| 두 코드가 각각 무엇을 하는지 설명 | ✅ 물어봐도 됩니다 |
|---|
| 어느 쪽을 남길지 결정 | ❌ 상대에게 물어보세요 |
|---|
주의충돌은 기술 문제가 아니라 소통 문제입니다. 두 사람이 같은 곳을 다르게 고쳤다는 뜻입니다.
AI에게 "합쳐 줘"라고 하면 둘 다 살린 이상한 코드가 나오고, 아무도 그걸 설명하지 못합니다.
혼자 하는 주간 운영 예시
| 요일 | 하는 일 |
|---|
| 목 (모임) | 이슈를 나눠 담당 지정, 인수조건 확인 |
|---|
| 금~일 | 각자 브랜치에서 구현. 매일 git pull |
|---|
| 월 | 변경 요청 올리기 (늦어도 이날까지) |
|---|
| 화 | 서로 리뷰 — 3명이면 각자 한 건씩 |
|---|
| 수 | 반영·병합, AI 사용 로그 작성 |
|---|
핵심리뷰를 화요일 하루로 몰아두면 목요일 모임 전에 병합이 끝납니다.
리뷰가 밀리는 것은 대부분 "언제 리뷰할지"를 정하지 않았기 때문입니다.
AI가 협업을 깨뜨리는 다섯 가지
| # | 이렇게 됩니다 | 이렇게 막습니다 |
|---|
| 1 | AI가 파일을 통째로 재작성 → 충돌 100줄 | 함수 단위로만 요청 |
|---|
| 2 | 요청 안 한 파일까지 "정리" | 변경 요청 전에 git diff로 본인이 먼저 확인 |
|---|
| 3 | 커밋 메시지가 전부 "AI 코드 반영" | 메시지는 본인이 작성 |
|---|
| 4 | 리뷰를 AI에게 맡겨 승인 | 승인 전에 작성자에게 한 줄 질문 |
|---|
| 5 | 셋이 같은 기능을 각자 AI로 만듦 | 이슈에 담당자를 반드시 지정 |
|---|
5번은 리뷰 짝과 같은 영역을 볼 때 생기는데, 이슈에 담당을 적어두면 겹치지 않습니다.
최소 명령 모음
15주 동안은 이것만 알아도 충분합니다.
git switch main && git pull # 최신 상태로
git switch -c feat/US-03-overlap # 브랜치 만들기
git add -p # 바뀐 부분을 골라서 담기
git commit -m "feat: ..." # 커밋
git push -u origin feat/US-03-overlap
# → GitHub에서 변경 요청 열기
git switch main && git pull # 병합된 것 받기
git branch -d feat/US-03-overlap # 끝난 브랜치 정리
핵심git add -p 는 바뀐 곳을 하나씩 보여주며 담을지 묻습니다.
AI가 만든 변경을 그대로 담지 않게 해 주는 가장 쉬운 장치입니다.
막히면 AI 활용 가이드북의 「패턴 6. 디버깅 3단」으로 물어보세요.
자주 하는 실수
Q. AI가 쓴 코드는 커밋에 어떻게 표시하나요?
따로 표시하지 않고, 변경 요청의 「AI 사용」 칸과 주간 AI 사용 로그에 적습니다.
즉, 커밋 작성자는 그 코드를 받아들이기로 결정한 사람입니다.
Q. 리뷰할 코드가 너무 많아서 못 보겠습니다.
문제는 변경 요청이 크다는 데 있습니다. 300줄이 넘으면 리뷰가 형식적으로 변하니, 이슈를 더 쪼개시기 바랍니다.
Q. 충돌이 무서워서 병합을 미루고 있습니다.
충돌은 미룰수록 커지는데, 하루 미루면 두 배가 됩니다. 그래서 매일 main을 받아오는 것이 유일한 해법입니다.
Q. 리뷰 짝이 AI로 만든 코드를 설명하지 못합니다.
그 변경 요청을 승인하지 않으면 되고, 이것은 리뷰어의 정당한 권한입니다.
다만 비난이 아니라 "같이 한 번 읽어보자" 로 접근하시기 바랍니다. 어차피 13주차에 같은 질문이 공개적으로 나오기 때문입니다.
시연 자료2주차
2주차 시연 — 인사이트 뽑기
쓰임: 2주차 강의 파트(30분)에서 이 자료로 한 번 시연한 뒤, 실습 파트(80분)에서 각자 자기 데이터로 같은 절차를 밟습니다.
여기 나오는 것은 탐색 영역을 「중고거래 직거래 약속」으로 정한 한 수강자의 작업입니다. 여러분의 영역은 다를 것입니다. 절차만 가져가세요.
이 자료가 보여주는 것
전사록 3건 → ① 발언 카드 24장 → ② 그룹 6개 → ③ 공감지도 → ④ 인사이트 10개
(재료) (자르기) (묶기) (사람 그리기) (해석하기)
대부분 ①에서 ④로 건너뜁니다. 전사록을 읽고 바로 "사용자는 약속 잡기가 불편하다"고 쓰는 식인데, 그건 인터뷰 전에도 알던 것입니다. 즉, ②와 ③이 없으면 새로운 것이 나오지 않습니다.
재료 — 3조가 제출한 전사록 3건
📄 «인터뷰 전사록» 서식 · 1주차 숙제로 이미 낸 것 · 대상자 1명당 한 건 (여기서는 3건)
오늘 쓸 재료는 새로 만드는 것이 아니라 지난주에 낸 것입니다. 인터뷰 대상자는 최근 3개월 안에 직거래를 두 번 이상 해 본 사람이고, 혼자서 세 명을 만났습니다.
P1 — 3학년, 최근 3개월 직거래 4회 (판매 위주)
[00:03:12] 진행자: 가장 최근에 중고거래하신 게 언제였나요?
[00:03:18] P1: 지난달에 아이패드 팔았어요. 아, 팔려고 했는데 결국 못 팔았어요.
[00:03:25] 진행자: 그날 있었던 일을 처음부터 순서대로 말씀해 주시겠어요?
[00:03:31] P1: 올리고 나서 한 시간 만에 연락이 왔어요. 사겠다고. 근데 거기서부터...
(한숨) 채팅으로 언제 어디서 볼지 정하는 게 시작인데.
[00:03:52] 진행자: 어떻게 정하셨어요?
[00:03:56] P1: 제가 "언제 편하세요?" 물어봤고, 그쪽이 "아무 때나 괜찮아요" 했어요.
그래서 제가 또 "어디가 편하세요?" 했더니 "아무 데나 괜찮아요" 하더라고요.
[00:04:14] 진행자: 그때 기분이 어떠셨어요?
[00:04:17] P1: 음... (3초) 좀 막막했어요. 편하다는데 뭐가 편한지를 모르니까.
[00:04:28] 진행자: 그래서 어떻게 하셨어요?
[00:04:31] P1: 제가 정해서 말했어야 하는데... 사실 거의 못 했어요.
[00:04:38] 진행자: 왜요?
[00:04:40] P1: 제가 재촉하는 사람처럼 보일까 봐요. "내일 3시에 어디로 오세요"
이렇게 말하면 좀 그렇잖아요. 물건 파는 사람이 갑질하는 것 같고.
[00:05:02] 진행자: 또 어떤 게 걱정되셨어요?
[00:05:06] P1: 제가 정한 데가 그쪽한테 멀면 어떡하지. 그럼 취소할 수도 있잖아요.
근데 어디 사는지는 못 물어보죠. 그건 좀 무례하니까.
[00:05:24] 진행자: 결국 어떻게 됐나요?
[00:05:27] P1: 사흘 동안 그러다가 그쪽이 그냥 안 읽더라고요. 그래서 저도 그냥 뒀어요.
[00:05:41] 진행자: 그때 어떠셨어요?
[00:05:44] P1: (웃음) 뭐 어쩔 수 없죠. 근데 좀 허무하긴 했어요. 팔릴 뻔했는데.
[00:06:02] 진행자: 그런 일이 또 있으셨어요?
[00:06:05] P1: 네 번 중에 두 번은 그랬던 것 같아요. 물건이 안 팔린 게 아니라
약속을 못 잡아서 흐지부지된 거요.
[00:06:24] 진행자: 좀 더 구체적으로 이야기해 주시겠어요?
[00:06:28] P1: 지금 생각하면 그냥 제가 먼저 "학교 정문 앞에서 화요일 6시"
이렇게 던졌으면 됐을 것 같은데. 근데 그 순간엔 그게 잘 안 돼요.
관찰 노트
- 03:31에서 한숨. "채팅으로 정하는 게 시작인데"에서 말을 흐림
- 04:17에서 3초 침묵 → 정보가 없는 게 아니라 먼저 말을 못 꺼내는 것
- 05:44 "(웃음)"이 즐거움이 아니라 체념으로 들림
- 06:28에서 본인도 해법을 알고 있음. "그 순간엔 안 된다"고 말함 — 지식의 문제가 아님
인상적인 발언 3개
제가 재촉하는 사람처럼 보일까 봐요.
어디 사는지는 못 물어보죠. 그건 좀 무례하니까.
물건이 안 팔린 게 아니라 약속을 못 잡아서 흐지부지된 거요.
P2 — 4학년, 최근 3개월 직거래 11회 (판매·구매 모두)
[00:02:41] 진행자: 최근에 하신 거래 하나만 순서대로 말씀해 주시겠어요?
[00:02:47] P2: 어제도 했어요. 키보드 팔았는데, 연락 오자마자 제가 바로 보냈어요.
"○○역 3번 출구 편의점 앞, 오늘 7시나 내일 8시 중에 골라주세요."
[00:03:09] 진행자: 처음부터 그렇게 하셨어요?
[00:03:12] P2: 아니요. 처음엔 저도 "언제 편하세요?" 이랬죠. 근데 그러면 안 끝나요.
[00:03:24] 진행자: 안 끝난다는 게 어떤 뜻이에요?
[00:03:27] P2: 서로 양보하다가 사흘 가요. 그러다 한쪽이 지쳐요.
제가 세어봤는데 그렇게 하면 열 번 중에 서너 번은 그냥 없어져요.
[00:03:48] 진행자: 그래서 방식을 바꾸신 거네요. 왜 바꾸셨어요?
[00:03:53] P2: 시간이 아까워서요. 만 원짜리 파는데 채팅을 스무 번 하면 손해잖아요.
[00:04:11] 진행자: 지금 방식으로 하면 상대가 기분 나빠하지 않나요?
[00:04:16] P2: 처음엔 그게 걱정이었죠. 근데 해보니까 아니더라고요.
오히려 고맙다고 해요. 자기도 정하기 싫었던 거예요.
[00:04:35] 진행자: 그 말씀이 인상적인데요, 좀 더 이야기해 주시겠어요?
[00:04:40] P2: 다들 정해주길 기다리고 있어요. 근데 아무도 먼저 안 해요.
서로 배려한다고 하는데 사실은 서로 미루는 거죠.
[00:05:02] 진행자: 또 바뀐 게 있으세요?
[00:05:05] P2: 장소를 아예 하나로 고정했어요. 저는 무조건 ○○역 3번 출구예요.
매번 정하는 게 일이라서.
[00:05:22] 진행자: 그러면 상대가 멀 수도 있잖아요.
[00:05:26] P2: 멀면 안 오죠. 그럼 그 사람은 안 사는 거고. 어쩔 수 없어요.
예전엔 그게 미안했는데 지금은... (잠깐 멈춤) 그냥 그런가 보다 해요.
[00:05:48] 진행자: 왜 그렇게 바뀌셨어요?
[00:05:51] P2: 다 맞춰주다가 아무것도 못 팔았거든요. 한 번 데어보면 알아요.
관찰 노트
- 02:47 시연하듯 문장을 그대로 읊음 → 여러 번 반복해 굳은 대본
- 03:27 "제가 세어봤는데" — 대상자가 문제를 정량적으로 인식하고 있음
- 05:26에서 잠깐 멈춤 후 "그냥 그런가 보다" → 포기가 아니라 학습된 절충
- 미안함을 말하면서도 방식을 바꾸지 않음. 말과 행동이 어긋남
인상적인 발언 3개
다들 정해주길 기다리고 있어요. 근데 아무도 먼저 안 해요.
서로 배려한다고 하는데 사실은 서로 미루는 거죠.
다 맞춰주다가 아무것도 못 팔았거든요.
P3 — 2학년, 최근 3개월 직거래 3회 (구매 위주)
[00:04:02] 진행자: 최근에 사신 거 있으세요?
[00:04:06] P3: 지난주에 자전거 샀어요.
[00:04:11] 진행자: 그때 어떻게 약속을 잡으셨어요?
[00:04:15] P3: 판매자분이 먼저 "이번 주 토요일 오후에 △△공원 어때요?" 하셨어요.
[00:04:26] 진행자: 그때 기분이 어떠셨어요?
[00:04:29] P3: 편했어요. 진짜로. 저는 정하는 게 제일 싫거든요.
[00:04:38] 진행자: 왜 싫으세요?
[00:04:41] P3: 제가 정하면 그게 맞는 건지 모르잖아요. 너무 먼 데 부르면 어떡하지,
너무 늦은 시간이면 어떡하지. 계속 생각하게 돼요.
[00:05:03] 진행자: 그러면 보통은 어떻게 하세요?
[00:05:06] P3: "아무 데나 괜찮아요"라고 해요. 근데 사실 아무 데나 괜찮진 않아요.
[00:05:18] 진행자: 아, 그러면 실제로는요?
[00:05:21] P3: 학교 근처 아니면 좀 곤란하죠. 근데 그걸 말하면 까다로워 보이니까.
[00:05:36] 진행자: 그렇게 해서 곤란했던 적 있으세요?
[00:05:40] P3: 있어요. 한 번은 진짜 멀리까지 갔어요. 왕복 두 시간.
2만 원짜리 사는데. (웃음) 근데 그때 이미 간다고 했으니까.
[00:06:04] 진행자: 안 간다고 하실 수는 없었어요?
[00:06:08] P3: 그러면 좀 이상한 사람 되잖아요. 이미 괜찮다고 했는데.
[00:06:20] 진행자: 또 다른 경험도 있으세요?
[00:06:24] P3: 반대로 아예 안 산 적도 있어요. 계속 "언제 편하세요" 주고받다가
그냥 안 사고 싶어졌어요. 물건은 좋았는데 지쳐서.
관찰 노트
- 04:29 "편했어요, 진짜로" — 강조 부사. 판매자가 정해주는 것을 선호함
- 05:06 "아무 데나 괜찮아요"라고 말하지만 05:21에서 곧바로 뒤집음 → 말과 실제가 다름
- 05:40 "(웃음)"이 자조. 2만 원에 왕복 두 시간을 쓴 것을 본인도 이상하게 여김
- 06:24 구매 포기 이유가 가격도 물건도 아닌 피로
① 발언 카드화 (15분)
전사록에서 발언을 그대로 잘라 한 장에 하나씩 옮기되, 요약하지 않습니다.
주의여기서 요약하면 뒤가 전부 무너집니다. "약속 잡기가 어렵다"로 줄이는 순간 원래 문장에 있던 이유가 사라집니다.
나중에 근거를 되찾아야 하므로 카드에는 발언 + 누구 + 타임스탬프 세 가지를 적습니다.
| # | 발언 | 누구 | 시각 |
|---|
| 1 | 제가 재촉하는 사람처럼 보일까 봐요 | P1 | 04:40 |
|---|
| 2 | 어디 사는지는 못 물어보죠. 그건 좀 무례하니까 | P1 | 05:06 |
|---|
| 3 | 아무 때나 괜찮아요 / 아무 데나 괜찮아요 (상대 답변) | P1 | 03:56 |
|---|
| 4 | 편하다는데 뭐가 편한지를 모르니까 | P1 | 04:17 |
|---|
| 5 | 제가 정한 데가 그쪽한테 멀면 어떡하지 | P1 | 05:06 |
|---|
| 6 | 사흘 동안 그러다가 그쪽이 그냥 안 읽더라고요 | P1 | 05:27 |
|---|
| 7 | 물건이 안 팔린 게 아니라 약속을 못 잡아서 흐지부지된 거요 | P1 | 06:05 |
|---|
| 8 | 그냥 제가 먼저 던졌으면 됐을 것 같은데, 그 순간엔 안 돼요 | P1 | 06:28 |
|---|
| 9 | 연락 오자마자 제가 바로 보냈어요 (장소·시간 2개 제시) | P2 | 02:47 |
|---|
| 10 | 처음엔 저도 "언제 편하세요?" 이랬죠. 근데 그러면 안 끝나요 | P2 | 03:12 |
|---|
| 11 | 서로 양보하다가 사흘 가요. 그러다 한쪽이 지쳐요 | P2 | 03:27 |
|---|
| 12 | 열 번 중에 서너 번은 그냥 없어져요 | P2 | 03:27 |
|---|
| 13 | 만 원짜리 파는데 채팅을 스무 번 하면 손해잖아요 | P2 | 03:53 |
|---|
| 14 | 오히려 고맙다고 해요. 자기도 정하기 싫었던 거예요 | P2 | 04:16 |
|---|
| 15 | 다들 정해주길 기다리고 있어요. 근데 아무도 먼저 안 해요 | P2 | 04:40 |
|---|
| 16 | 서로 배려한다고 하는데 사실은 서로 미루는 거죠 | P2 | 04:40 |
|---|
| 17 | 장소를 아예 하나로 고정했어요 | P2 | 05:05 |
|---|
| 18 | 멀면 안 오죠. 예전엔 미안했는데 지금은 그런가 보다 해요 | P2 | 05:26 |
|---|
| 19 | 다 맞춰주다가 아무것도 못 팔았거든요 | P2 | 05:51 |
|---|
| 20 | 판매자분이 먼저 정해주셨어요. 편했어요, 진짜로 | P3 | 04:15 |
|---|
| 21 | 제가 정하면 그게 맞는 건지 모르잖아요 | P3 | 04:41 |
|---|
| 22 | "아무 데나 괜찮아요"라고 해요. 근데 사실 아무 데나 괜찮진 않아요 | P3 | 05:06 |
|---|
| 23 | 그걸 말하면 까다로워 보이니까 | P3 | 05:21 |
|---|
| 24 | 2만 원짜리 사는데 왕복 두 시간. 이미 간다고 했으니까 | P3 | 05:40 |
|---|
| 25 | 이미 괜찮다고 했는데 안 간다고 하면 이상한 사람 되잖아요 | P3 | 06:08 |
|---|
| 26 | 물건은 좋았는데 지쳐서 그냥 안 사고 싶어졌어요 | P3 | 06:24 |
|---|
26장이 나왔습니다. 목표는 24장이었으니 충분합니다.
핵심관찰 노트에서도 카드를 만듭니다. 말이 아닌 것도 데이터입니다.
04:17에서 3초 침묵 (P1) · 05:26 잠깐 멈춤 후 "그런가 보다" (P2) · 05:40 자조하는 웃음 (P3)
② 그룹핑 (20분)
카드를 책상에 펼치고 비슷한 것끼리 모읍니다. 이름은 나중에 붙입니다.
참고순서가 중요합니다. 이름을 먼저 정하고 거기에 카드를 넣으면, 이미 알던 분류가 그대로 나옵니다. 카드가 먼저 모이고 이름이 따라와야 새로운 것이 보입니다.
3조가 만든 그룹 여섯 개입니다.
그룹 A — 먼저 말하지 못하게 만드는 것
1 2 5 21 23
제가 재촉하는 사람처럼 보일까 봐요 · 그건 좀 무례하니까 · 그쪽한테 멀면 어떡하지 · 그게 맞는 건지 모르잖아요 · 까다로워 보이니까
공통점: 전부 상대가 나를 어떻게 볼지에 대한 걱정입니다. 정보가 없어서가 아닙니다.
그룹 B — 배려처럼 보이는 회피
3 4 22 25
아무 데나 괜찮아요 · 편하다는데 뭐가 편한지를 모르니까 · 사실 아무 데나 괜찮진 않아요 · 이미 괜찮다고 했는데
공통점: "괜찮아요"가 실제로는 괜찮다는 뜻이 아닙니다. 그리고 그 말이 나중에 자기를 묶습니다.
그룹 C — 조율이 만들어내는 비용
6 11 12 13 24 26
사흘 동안 · 한쪽이 지쳐요 · 열 번 중 서너 번 · 채팅 스무 번이면 손해 · 왕복 두 시간 · 지쳐서 안 사고 싶어졌어요
공통점: 손실이 가격이 아니라 시간과 피로로 발생합니다.
그룹 D — 거래가 깨지는 진짜 지점
7 12 26
물건이 안 팔린 게 아니라 약속을 못 잡아서 · 서너 번은 그냥 없어져요 · 물건은 좋았는데 지쳐서
공통점: 실패 원인이 상품·가격이 아니라 조율 단계입니다.
그룹 E — 숙련자가 찾아낸 우회로
9 10 17 18 19
바로 보냈어요 · 그러면 안 끝나요 · 장소를 하나로 고정 · 예전엔 미안했는데 · 다 맞춰주다가 못 팔았거든요
공통점: 경험이 쌓이면 예의를 일부 포기하고 효율을 택합니다.
그룹 F — 정해주면 오히려 고맙다
14 15 16 20
오히려 고맙다고 해요 · 다들 정해주길 기다려요 · 서로 배려한다고 하는데 사실은 미루는 것 · 편했어요, 진짜로
공통점: 먼저 정해주는 것이 무례가 아니라 호의로 받아들여집니다. 걱정과 현실이 반대입니다.
AI에게도 같은 작업을 시켜보세요
같은 26장을 AI에게 주고 그룹핑을 요청한 뒤 차이를 봅니다.
아래 26개 발언을 비슷한 것끼리 묶고, 각 묶음에 이름을 붙여 줘.
이름은 내가 나중에 정할 테니 묶는 이유만 설명해 줘.
| 사람이 만든 그룹 | AI가 흔히 만드는 그룹 |
|---|
| 기준 | 감정과 동기 | 주제어(장소 / 시간 / 가격) |
|---|
| 그룹 F | 찾아냄 — 걱정과 현실이 반대 | 잘 못 찾음 (모순이라 한쪽으로 분류) |
|---|
| 카드 22 | 그룹 B (말과 실제가 다름) | "요구사항 없음"으로 분류 |
|---|
주의AI는 모순을 싫어합니다. 서로 어긋나는 두 발언을 만나면 하나를 버리거나 평평하게 정리합니다.
그런데 인사이트는 바로 그 모순에 있습니다. 이것이 이 작업을 사람이 하는 이유입니다.
③ 공감지도 (25분)
📄 «공감지도» 서식 · 오늘 모임 중 완성 · 서식 제출 페이지
그룹을 재료로 한 사람을 그립니다. 세 명의 평균이 아니라, 세 명에게서 공통으로 보이는 사람입니다.
페르소나: 정민(22, 3학년). 이번 과정에 처음 중고거래로 물건을 팔아봄
| 칸 | 내용 | 근거 |
|---|
SAYS 말한 것 | "언제 편하세요?" "아무 데나 괜찮아요" "뭐 어쩔 수 없죠" | P1 03:56 · P3 05:06 · P1 05:44 |
|---|
THINKS 말하지 않았지만 생각한 것 | 내가 정하면 재촉하는 사람처럼 보일 것이다 상대 사정을 모르는데 정할 수 없다 까다로운 사람으로 보이면 거래가 깨진다 | P1 04:40 · P1 05:06 · P3 05:21 |
|---|
DOES 실제로 한 것 | 상대에게 결정을 넘긴다 사흘을 기다린다 답이 없으면 그냥 둔다 | P1 03:56 · P1 05:27 · P1 06:05 |
|---|
FEELS 느낀 것 | 막막함 ← "편하다는데 뭐가 편한지를 모르니까" 미안함 ← "그쪽한테 멀면 어떡하지" 체념 ← 05:44 자조하는 웃음 | P1 04:17 · P1 05:06 · 관찰 노트 |
|---|
PAINS 고통·장애물 | 먼저 제안하는 행위에 사회적 비용이 든다 (심각도 상) | P1, P3 |
|---|
GAINS 원하는 것 | 무례해 보이지 않으면서 빨리 끝나는 것 (심각도 상) | P2, P3 |
|---|
주의근거 없는 칸은 지웁니다. "정민은 앱 알림을 원할 것이다" 같은 문장은 인터뷰에 없습니다. 그건 내 추측이고, 추측 위에 세운 제품은 3주차에 무너집니다.
THINKS와 DOES가 어긋나는 지점을 표시하세요. 여기가 가장 중요합니다.
THINKS 빨리 만나서 끝내고 싶다
DOES 상대에게 결정을 넘기고 사흘을 기다린다
↑
이 어긋남이 인사이트가 됩니다
④ 인사이트 만들기 (20분)
📄 위 «공감지도» 서식 안의 「인사이트」 칸 · 오늘 모임 중 완성 · 따로 내는 서식이 아닙니다
먼저 — 요약과 인사이트를 가릅니다
| 문장 | 판정 |
|---|
| ❌ | 사용자는 약속 잡는 것을 불편해한다 | 요약. 인터뷰 전에도 알던 것 |
|---|
| ❌ | 사용자는 편한 장소에서 만나고 싶어한다 | 요약. 누구나 그렇습니다 |
|---|
| ✅ | 판매자는 장소를 몰라서 못 정하는 게 아니라, 먼저 제안하는 행위의 사회적 비용 때문에 조율을 포기한다 | 인사이트. 원인이 뒤집힘 |
|---|
판별 기준 두 개
- 인터뷰 전에도 예상했는가? → 예상했다면 요약입니다
- 모순이 있는가? → "A를 원하면서 동시에 B를 한다"가 있으면 인사이트입니다
3조가 뽑은 인사이트 10개
| # | 인사이트 | 근거 | 놀라운가? |
|---|
| 1 | 판매자는 장소를 몰라서 못 정하는 게 아니라, 먼저 제안하는 행위의 사회적 비용 때문에 조율을 포기한다 | P1 04:40, P3 04:41 | ☑ |
|---|
| 2 | 양쪽 다 상대가 정해주기를 기다린다. 배려가 아니라 대칭적 회피다 | P2 04:40, P3 04:29 | ☑ |
|---|
| 3 | 먼저 정해주는 것은 무례로 읽히지 않는다. 오히려 고맙게 받아들여진다 — 걱정과 현실이 반대다 | P2 04:16, P3 04:15 | ☑ |
|---|
| 4 | "아무 데나 괜찮아요"는 배려가 아니라 결정 회피이고, 그 말이 나중에 자기를 묶는다 | P3 05:06→05:21, 06:08 | ☑ |
|---|
| 5 | 거래가 깨지는 지점은 가격도 물건도 아닌 조율 단계다 | P1 06:05, P3 06:24 | ☑ |
|---|
| 6 | 숙련자는 예의를 일부 포기하고 효율을 택한다. 초보는 그 전환을 못 한다 | P2 03:12→05:51 | ☑ |
|---|
| 7 | 손실이 돈이 아니라 시간과 피로로 계산된다 (만 원 / 채팅 스무 번, 2만 원 / 왕복 두 시간) | P2 03:53, P3 05:40 | ☑ |
|---|
| 8 | 조율 실패는 명시적 거절이 아니라 읽씹과 침묵으로 나타난다 | P1 05:27 | ☐ |
|---|
| 9 | 상대의 위치를 묻는 것이 금기처럼 여겨진다 | P1 05:06 | ☑ |
|---|
| 10 | 한 번 "괜찮다"고 말하면 번복이 어렵다고 느낀다 | P3 06:08 | ☐ |
|---|
☑ 8개. 대부분이 인터뷰 전에는 예상 못 했던 것입니다 — 요약이 아니라 인사이트라는 뜻입니다. (제출할 때는 이 칸을 따로 적지 않습니다. 근거가 붙은 인사이트 3개 이상이면 됩니다)
핵심1·2·3번이 서로 이어집니다. 혼자서는 못 정하고(1), 상대도 마찬가지이며(2), 그런데 정해주면 반긴다(3).
모두가 원하는 것을 아무도 하지 않는 상태 — 이것이 3조가 발견한 구조입니다.
검증 — 넘어가기 전에 확인할 것
| 확인 | 3조의 경우 |
|---|
| 모든 인사이트에 근거 인용이 붙어 있는가? | ✅ 10개 전부 시각까지 |
|---|
| 공감지도에 추측이 섞이지 않았는가? | ✅ 근거 없는 칸 2개를 지움 |
|---|
| 인사이트가 3개 이상이고, 인터뷰 전에 예상 못 했던 것인가? | ✅ 10개 중 8개 |
|---|
| 인사이트에 해결책 단어가 들어가지 않았는가? | ✅ 앱·알림·자동화 없음 |
|---|
주의인사이트에 해결책을 쓰면 안 됩니다. "알림 기능이 필요하다"는 인사이트가 아니라 이미 답입니다.
무엇을 만들지는 4주차에 정합니다. 지금은 무엇이 일어나고 있는지만 씁니다.
여기서 3주차로 무엇이 넘어가는가?
인사이트 1·2·3이 다음 주 POV 문장의 재료가 됩니다.
[이번 과정에 처음 중고 물건을 팔아본 3학년 학생]은
[상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법]이 필요하다.
왜냐하면 [먼저 장소를 제안하는 행위가 상대를 재촉하는 것처럼 보일까 봐
서로 미루다가 대화가 끊기고 거래가 흐지부지되기] 때문이다.
「왜냐하면」 칸에 들어간 것이 인사이트입니다. 요약을 넣으면 3주차 문제 정의가 통과되지 않습니다.
참고이 POV를 어떻게 세 번 고쳐 썼는지는 3주차 시연 자료에 이어집니다.
자주 막히는 곳
Q. 카드가 24장이 안 나옵니다.
전사록이 짧거나 질문이 얕았던 것 같습니다. 「또 질문」과 「구체화 질문」을 쓰지 않으면 답이 한 겹에서 끝나기 때문입니다.
지금은 3주차 문제 정의의 재료가 부족한 상태이니, 2주차 안에 보완 인터뷰를 하시기 바랍니다.
Q. 그룹이 2~3개밖에 안 나옵니다.
카드를 요약해서 옮긴 경우인 것 같습니다. 원래 발언으로 돌아가 다시 잘라 보시기 바랍니다.
Q. ☑가 하나도 없습니다.
전사록을 읽고 이미 알던 것만 뽑은 것입니다. 이럴 때는 말과 행동이 어긋난 지점을 찾아보시기 바랍니다. 관찰 노트가 바로 그 단서입니다.
Q. 세 명의 이야기가 서로 다릅니다.
좋은 신호입니다. 서로 달라야 비교가 되기 때문인데, 예를 들어 P2(숙련자)와 P1(초보)의 차이에서 인사이트 6번이 나왔습니다.
평균을 내지 말고 차이가 어디서 오는지를 보시기 바랍니다.
쓰임: 3주차 강의 파트(40분)에서 이 자료로 한 번 시연한 뒤, 실습 파트(80분)에서 각자 자기 데이터로 같은 절차를 밟습니다.
2주차 시연 자료의 3조(중고거래 직거래 약속)가 그대로 이어집니다. 절차만 가져가세요.
이 자료가 보여주는 것
인사이트 10개 → ① 후보 좁히기 → ② POV → ③ HMW → ④ PRD → ⑤ 스토리
(2주차) (근거 강도로) (한 문장) (범위 조절) (요구사항) (인수조건)
여기서 결과가 갈립니다. POV에 해결책 단어가 하나라도 들어가면 나머지 12주가 그 단어에 끌려다닙니다.
들어올 때 가지고 있는 것
두 가지를 가지고 들어옵니다. 숫자가 둘 다 3이라 헷갈리기 쉬운데, 서로 다른 것입니다.
| 무엇 | 언제 만들었나? |
|---|
| ① 인사이트 3개 | 전사록에서 알아낸 것 | 2주차 모임 중 (공감지도에서) |
|---|
| ② 문제 정의 후보 3개 | 그래서 무슨 문제인가? | 2주차 숙제 (3주차 모임 전까지) |
|---|
②는 ①을 근거로 씁니다. 즉, 인사이트가 재료이고 후보가 결과물입니다.
① 2주차에 3조가 뽑은 인사이트 세 개
| # | 인사이트 | 근거 |
|---|
| 1 | 판매자는 장소를 몰라서 못 정하는 게 아니라, 먼저 제안하는 행위의 사회적 비용 때문에 조율을 포기한다 | P1 04:40, P3 04:41 |
|---|
| 2 | 양쪽 다 상대가 정해주기를 기다린다. 배려가 아니라 대칭적 회피다 | P2 04:40, P3 04:29 |
|---|
| 3 | 먼저 정해주는 것은 무례로 읽히지 않는다. 오히려 고맙게 받아들여진다 | P2 04:16, P3 04:15 |
|---|
② 그 인사이트로 써 온 후보 세 개
형식은 "[구체적 사용자]는 [무엇]이 필요하다. 왜냐하면 [인사이트]이기 때문이다." 입니다.
| # | 후보 | 어느 인사이트에서 |
|---|
| 1 | 처음 중고 물건을 팔아 본 3학년 학생은 먼저 장소를 제안할 방법이 필요하다. 왜냐하면 먼저 제안하는 행위가 재촉으로 읽힐까 봐 말을 못 꺼내기 때문이다 | 인사이트 1 |
|---|
| 2 | 중고로 물건을 사는 사람도 먼저 말할 방법이 필요하다. 왜냐하면 양쪽 다 상대가 정해주기를 기다리며 미루기 때문이다 | 인사이트 2 |
|---|
| 3 | 직거래를 하는 양쪽은 조율 단계에서 거래가 무산되지 않을 방법이 필요하다. 왜냐하면 서로 미루다 사흘이 가고 한쪽이 지쳐 접기 때문이다 | 인사이트 1 + 2 |
|---|
주의이 후보는 서식 제출 페이지에 없습니다. 2주차 「다음 주 서식」에 적힌 대로
개인 저장소 이슈로 냅니다 (제목 [문제후보] 홍길동 1). 서로 보고 토론해야 해서 보드에 올립니다.
① 후보 3개 → 1개 (20분)
위의 ② 후보 세 개를 나란히 놓고 근거 강도로 하나만 남기는데,
좋아 보이는 것이 아니라 근거가 있는 것을 남깁니다.
판정 기준 세 가지
| # | 기준 | 확인 방법 |
|---|
| 1 | 구체적인 사람이 있는가? | "대학생"은 사람이 아닙니다. 상황·시점·역할까지 |
|---|
| 2 | 이미 대가를 치르고 있는가? | 지금 시간·돈·감정을 쓰고 있다는 근거가 인터뷰에 있는가? |
|---|
| 3 | 해결책이 섞이지 않았는가? | 앱·플랫폼·자동화·추천 단어가 있으면 후보가 아니라 답 |
|---|
3조는 이렇게 3개를 골랐습니다
후보 3개를 처음부터 딱 3개 쓴 것이 아닙니다. 인사이트 셋을 앞에 놓고 «그래서 무슨 문제인가»를 떠오르는 대로 적었더니 아홉 개가 나왔습니다.
떠오르는 것이 전부 인사이트에서 나오지는 않고, 인터뷰 전부터 갖고 있던 생각이나 먼저 떠오른 해결책, 근거 없는 짐작이 섞입니다. 세 기준은 그것을 가려내는 일입니다.
| 후보 | 어디서 나왔나? | 판정 | 이유 |
|---|
| 중고거래 앱이 약속을 자동으로 잡아주면 좋겠다 | 먼저 떠오른 해결책 | ❌ | 해결책. 3번 기준 위반 |
|---|
| 사람들이 중고거래를 불편해한다 | 인터뷰 전부터 알던 것 | ❌ | 사람이 없고 근거도 없음 |
|---|
| 약속 장소를 정하는 데 오래 걸린다 | 인사이트 1의 겉모습만 | △ | 현상은 맞지만 왜가 없음 |
|---|
| 판매자가 먼저 장소를 제안하지 못한다 | 인사이트 1 | ✅ | 사람·행동·근거가 모두 있음 |
|---|
| 구매자도 먼저 제안하지 못한다 | 인사이트 2 | ✅ | 위와 짝. 합칠 수 있음 |
|---|
| 거래가 조율 단계에서 무산된다 | 인사이트 1 + 2 | ✅ | 결과. 위 둘의 귀결 |
|---|
| 안전한 장소를 모른다 | 근거 없는 짐작 | ❌ | 인터뷰에 없음. 내 추측 |
|---|
| 중고거래는 시간이 아깝다 | 인사이트로 뽑히지 않은 카드 | △ | 너무 넓음 |
|---|
| 채팅이 불편하다 | 도구를 탓한 것 | ❌ | 도구 탓. 인터뷰는 도구를 지적하지 않았음 |
|---|
핵심살아남은 셋은 «어디서 나왔나» 가 전부 인사이트입니다. 떨어진 여섯은 해결책·예상·짐작·도구에서 나왔습니다. 후보를 적을 때 어느 인사이트에서 나온 것인지 함께 적어 두면 이 판정을 스스로 할 수 있습니다.
걸러 남은 ✅ 세 개가 3조가 제출한 후보 3개입니다 — 수업의 20분은 여기서 시작합니다.
남은 셋을 하나로 합칩니다.
판매자와 구매자 양쪽 모두 먼저 제안하지 못해서, 거래가 조율 단계에서 무산된다
핵심후보를 합칠 때 「양쪽 모두」가 나왔다는 것이 중요합니다. 2주차 인사이트 2번(대칭적 회피)이 여기서 처음으로 문장이 됐습니다. 인사이트가 살아 있으면 이런 일이 생깁니다.
② POV 문장 (20분)
📄 «문제 정의서» 서식의 첫 칸 · 오늘 모임 중 완성 · 서식 제출 페이지
앞에서 셋으로 좁힌 후보를 한 문장으로 못 박는 자리입니다. 이 문장이 4주차 아이디어 발산의 과녁이 되고, 15주차 최종 보고서의 1장이 됩니다. 여기에 해결책 단어가 하나 들어가면 남은 12주가 그 단어에 끌려다닙니다.
[사용자]는 [니즈]가 필요하다. 왜냐하면 [인사이트]이기 때문이다.
세 번 고쳐 쓴 과정
1차 — 처음 쓴 것
[중고거래 사용자]는 [약속을 자동으로 잡아주는 앱]이 필요하다.
왜냐하면 [약속 잡기가 불편하기] 때문이다.
| 문제 | |
|---|
| 사용자 | "중고거래 사용자"는 상황이 없습니다 |
|---|
| 니즈 | "앱"은 해결책입니다 |
|---|
| 왜냐하면 | "불편하다"는 요약이지 인사이트가 아닙니다 |
|---|
2차 — 해결책 단어를 지운 뒤
[이번 과정에 처음 중고 물건을 팔아본 3학년 학생]은
[약속을 빨리 정할 방법]이 필요하다.
왜냐하면 [조율에 시간이 오래 걸리기] 때문이다.
사용자는 좋아졌지만 왜냐하면이 여전히 요약입니다. 즉, "오래 걸린다"는 인터뷰 전에도 알던 것입니다.
3차 — 인사이트를 넣은 뒤 ✅
[이번 과정에 처음 중고 물건을 팔아본 3학년 학생]은
[상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법]이 필요하다.
왜냐하면 [먼저 장소를 제안하는 행위가 상대를 재촉하는 것처럼 보일까 봐
서로 미루다가 대화가 끊기고 거래가 흐지부지되기] 때문이다.
검증
| 질문 | 답 |
|---|
| 해결책 단어가 있는가? | 없음 (앱·플랫폼·자동화 없음) |
|---|
| 「왜냐하면」이 인사이트인가? | ✅ 인사이트 1번 그대로 |
|---|
| 인용 근거 | P1 04:40 "제가 재촉하는 사람처럼 보일까 봐요" |
|---|
주의「왜냐하면」 칸이 이 문서의 전부입니다. 여기에 요약을 넣으면 4주차 주제 확정에서 통과되지 않습니다.
판별법은 하나입니다 — 인터뷰 전에도 쓸 수 있었던 문장인가?
③ HMW 질문 (②와 함께 20분)
📄 위 «문제 정의서» 서식 안의 「HMW」 칸 · 오늘 모임 중 완성 · 따로 내는 서식이 아닙니다
POV를 질문으로 바꾸는 단계이고, 여기서는 범위 조절이 전부입니다.
| # | HMW 질문 | 범위 | 왜 |
|---|
| 1 | 어떻게 하면 중고거래를 편하게 할까? | ❌ 너무 넓음 | 무엇부터 할지 알 수 없음 |
|---|
| 2 | 어떻게 하면 지도에 장소 핀을 찍게 할까? | ❌ 너무 좁음 | 이미 해결책 |
|---|
| 3 | 어떻게 하면 서로 묻지 않아도 만날 장소와 시간이 자연스럽게 좁혀질까? | ✅ 적당 | 방법은 열려 있고 방향은 분명 |
|---|
| 4 | 어떻게 하면 먼저 제안하는 일이 부담스럽지 않게 될까? | ✅ 적당 | 인사이트 1번을 정면으로 |
|---|
4주차 아이디어 발산은 3·4번 두 질문에 대해서만 합니다. 질문을 좁히지 않으면 아이디어가 사방으로 흩어집니다.
④ PRD 초안 (20분)
📄 «PRD» 서식 · 오늘 초안까지 (이후 계속 갱신) · 서식 제출 페이지
AI로 골격을 만들되, PRD 서식의 「3. 사용자 시나리오」 절은 직접 씁니다. 그 절이 이 문서를 여러분 것으로 만듭니다.
AI에게 시킬 때
아래 문제 정의로 PRD 목차와 기능 요구사항 초안을 만들어 줘.
- 문제: (POV 문장 그대로 붙여넣기)
- 사용자: 직거래 경험 3회 이하, 반경 2km 안에서 거래하는 20대
- 제약: 혼자, 개발 기간 6주, 지도 API 경험 없음
Must 기능은 5개를 넘기지 마.
주의여기에 «우리 서식의 목차» 를 안 줬습니다. 그래서 AI가 자기 목차로 씁니다.
아래 초안의 절 번호가 PRD 서식의 0~8 절과 다른 것이 그 때문입니다.
AI가 돌려준 초안 — 손대기 전 그대로
# PRD — 중고거래 약속 조율 서비스
## 1. 배경
중고거래 시장이 성장하면서 사용자 편의성에 대한 요구가 증가하고 있다.
효율적인 거래 프로세스를 제공하는 것이 중요하다.
## 2. 목표
- 사용자가 편리하게 거래 약속을 잡을 수 있도록 한다
- 거래 성사율을 높인다
## 3. 사용자 시나리오
(현재) 중고거래 시장이 성장하면서 사용자 편의성에 대한 요구가 증가하고 있다.
효율적인 거래 프로세스를 제공하는 것이 중요하다.
(개선) 앱이 자동으로 최적의 시간과 장소를 추천해 사용자 경험을 향상시킨다.
## 4. 기능 요구사항
| ID | 기능 | 우선순위 |
|---|---|---|
| FR-01 | 회원가입·로그인 | Must |
| FR-02 | 실시간 채팅 | Must |
| FR-03 | 일정 추천 알고리즘 | Must |
| FR-04 | 거래 후기·평점 | Must |
| FR-05 | 안전결제 연동 | Must |
## 5. 비목표
(해당 없음)
## 6. 성공 지표
- 사용자 만족도 80% 이상
- 거래 성사율 20% 향상
주의Must 다섯 개 중 최종 PRD에 남은 것이 하나도 없습니다.
아래 「비목표」 네 줄이 바로 AI가 Must로 올렸던 것들입니다.
무엇을 왜 반려했나?
AI가 못한 것이 아닙니다. 준 것이 POV 한 문장뿐이었기 때문에, 나머지 빈칸을 AI가 아는 「중고거래 앱」으로 채운 것입니다.
| AI가 쓴 것 | 무엇이 어긋났나? | 3조의 판단 |
|---|
| 목차 전체 (1 배경 / 2 목표 / …) | PRD 서식의 목차와 다르다. AI는 우리 서식을 모른다 | 서식의 0~8 절로 옮겨 담음 |
|---|
| 「1. 배경」 · 「3. 사용자 시나리오」의 현재 | 누구 것이어도 되는 문장. 인터뷰가 한 줄도 없다 | 「현재」를 인용으로 다시 씀 (아래) |
|---|
| 「3. 사용자 시나리오」의 개선 — 자동 추천 | 해결책을 문제 자리에 넣었다. 3주차 내내 피한 것 | 지움 |
|---|
| FR-01 회원가입·로그인 | 링크만으로 참여하기로 했는데 회원 개념을 만든다 | 비목표로 |
|---|
| FR-02 실시간 채팅 | 인터뷰에서 아무도 채팅을 지적하지 않았다 | 비목표로 |
|---|
| FR-03 일정 추천 알고리즘 | 「추천」은 해결책 단어. 쓸 데이터도 없다 | 비목표로 |
|---|
| FR-04 거래 후기·평점 | 문제 정의와 무관 | Won't |
|---|
| FR-05 안전결제 | 직거래는 현금·계좌이체로 끝난다 | 비목표로 |
|---|
| 「5. 비목표」 — (해당 없음) | 안 할 것을 안 적으면 다 하게 된다 | 네 줄을 직접 씀 |
|---|
| 「6. 성공 지표」 — 만족도 80% | 잴 방법이 없다 | 「30초 이내」·「왕복 2회 이하」로 |
|---|
핵심이 반려 기록이 그대로 AI 사용 로그의 「반려 기록」 칸이 됩니다.
받은 것을 그대로 붙여넣었다면 여기에 쓸 것이 없습니다 — 1주차에서 말한 「전달자」입니다.
「3. 사용자 시나리오」는 직접 다시 씁니다
위 초안의 「3. 사용자 시나리오」 중 「현재」 — AI가 쓴 것
중고거래 시장이 성장하면서 사용자 편의성에 대한 요구가 증가하고 있다.
효율적인 거래 프로세스를 제공하는 것이 중요하다.
같은 「현재」 — 직접 다시 쓴 것 ✅
판매자는 만날 장소를 모르는 게 아니다. 먼저 제안하는 행위가 재촉으로 읽힐까 봐
제안하지 못한다. 결과적으로 대화가 끊긴 뒤에야 알게 되고, 그때는 거래를 접는 것
말고 선택지가 없다. (P1 04:40, P3 05:21)
주의위 문장은 누구 것이어도 상관없습니다. 그런 문서는 점수를 받지 못합니다.
아래 문장은 3조만 쓸 수 있습니다. 인용이 붙어 있기 때문입니다.
기능 요구사항 — Must 5개
| ID | 기능 | 설명 | 우선순위 |
|---|
| FR-01 | 거래 열기·참여 | 링크 공유로 상대가 들어온다 | Must |
|---|
| FR-02 | 가능 시간 선택 | 요일·시간대를 각자 고른다 | Must |
|---|
| FR-03 | 약속판 | 상대·상태·겹치는 시간을 한 화면에 | Must |
|---|
| FR-04 | 약속 확정 | 겹치는 시간 중 하나를 고르면 양쪽에 알림 | Must |
|---|
| FR-05 | 장소 후보 제시 | 양쪽 위치에서 중간 지점 3곳 | Must |
|---|
| FR-06 | 거래 후기 | | Won't |
|---|
| FR-07 | 채팅 | | Won't |
|---|
비목표 — 하지 않는 것 (이 칸이 비면 12주차에 무너집니다)
로그인 — 링크만으로 참여. 회원 개념을 만들지 않는다
채팅 — 기존 앱에서 이미 한다. 우리가 다시 만들 이유가 없다
결제 — 직거래는 현금·계좌이체로 끝난다
추천 — 데이터가 없다. 3인 6주로 불가능
핵심「채팅」을 뺀 이유가 중요합니다. 인터뷰에서 아무도 채팅 기능 자체를 지적하지 않았습니다.
문제는 채팅이 불편한 것이 아니라 먼저 말을 못 꺼내는 것이었습니다.
성공 지표
| 관점 | 지표 | 목표 | 측정 |
|---|
| 사용자 | 판매자가 만날 후보를 정하는 데 걸리는 시간 | 30초 이내 | 14주차 사용성 테스트 T1 |
|---|
| 사용자 | 조율 왕복 횟수 | 2회 이하 | 사용성 테스트 관찰 |
|---|
⑤ 사용자 스토리와 인수조건
스토리가 PRD와 무엇이 다른가?
PRD는 무엇을 만드는가를 적습니다. 스토리는 그 기능 하나를 누가 · 왜 쓰는가로 다시 적은 것입니다.
| PRD의 기능(FR) | 사용자 스토리 |
|---|
| 적는 것 | 무엇을 만드는가? | 누가 왜 쓰는가? |
|---|
| 크기 | 제품 전체를 나눈 한 조각 | 한 번에 만들 수 있는 한 덩이 |
|---|
| 끝났는지 아는 법 | 알 수 없다 | 인수조건이 전부 체크되면 끝 |
|---|
세 번째 줄이 이 강의에서 제일 중요합니다. 인수조건이 있어야 AI에게 넘길 수 있고, 받은 것이 맞는지 검수할 수 있습니다. "약속판 만들어 줘"는 실패하고, 아래 인수조건 두 줄은 성공합니다.
3조가 쓴 것 — 위 PRD의 FR-03 약속판에서
FR-03 은 「상대·상태·겹치는 시간을 한 화면에」였습니다. 그 한 줄을 아래처럼 옮깁니다.
### US-03 · 상대와 겹치는 시간 확인
**As a** 중고 물건을 파는 사람,
**I want** 상대에게 직접 묻지 않고 서로 가능한 시간이 겹치는 구간 보기,
**So that** 재촉하는 것처럼 보이지 않으면서 만날 시간을 정할 수 있다.
**인수조건**
- [ ] Given 양쪽이 가능 시간을 3개씩 골랐고, When 약속판에 진입하면,
Then 겹치는 시간이 이른 순서로 한 화면에 보인다.
- [ ] Given 겹치는 시간이 하나도 없고, When 약속판에 진입하면,
Then 다시 고르기 안내가 보인다.
**관련 FR:** FR-03
인수조건은 최소 둘 — 잘 됐을 때와 비었을 때
| 무엇을 쓰나? | 위 예시에서 |
|---|
| 정상 | 제대로 됐을 때 화면이 어떻게 되는가? | 겹치는 시간이 이른 순서로 한 화면에 |
|---|
| 빈 상태 | 데이터가 0건일 때 무엇이 보이는가? | 다시 고르기 안내가 보인다 |
|---|
참고빈 상태(겹치는 시간 0건)를 반드시 넣으세요. AI는 정상 경로만 만들고 빈 화면을 잊습니다.
10주차 구현에서 가장 많이 깨지는 곳이 여기입니다.
언제 쓰고 어디에 내나?
스토리는 오늘 다 쓰는 것이 아닙니다. 세 번에 걸쳐 자랍니다.
| 언제 | 무엇을 |
|---|
| 3주차 (지금) | PRD의 Must 기능부터 스토리로 옮기기 시작합니다. 오늘 한 개를 함께 써 봅니다 |
|---|
| 9주차 | 스토리를 저장소 이슈로 옮깁니다. 그때부터는 이슈 보드가 정본입니다 |
|---|
| 10~12주차 | 그 이슈 본문을 그대로 AI에게 넘겨 구현합니다 |
|---|
- 제출: 서식 제출 페이지의 «사용자 스토리». 스토리 한 개가 한 건입니다 (FR 다섯 개면 다섯 건).
- 형식: 자세한 형식과 쪼개는 요령은 사용자 스토리 서식에 있습니다.
핵심8주차 예시를 미리 보면 왜 이렇게 쓰는지 알 수 있습니다. 같은 US-03이
8주차에서 이슈 #14가 되고, 그 본문이 그대로 AI 프롬프트가 됩니다.
AI 반박 실습 (20분 · 필수)
문제 정의를 AI에게 넣고 약점을 지적하게 합니다.
이 문제 정의의 약점을 3가지 지적해줘.
특히 '우리가 근거 없이 가정하고 있는 것'을 찾아줘.
좋게 말하지 말고 냉정하게 평가해줘.
AI가 지적한 것과 3조의 판단
| # | AI의 지적 | 판단 | 이유 |
|---|
| 1 | 5명은 표본이 너무 작다. 일반화할 수 없다 | 수용 | 맞습니다. 14주차 사용성 테스트로 다시 확인하기로 하고, PRD에 「검증되지 않은 가정」으로 명시 |
|---|
| 2 | 사용자가 위치 정보 제공을 꺼릴 수 있다 | 수용 | 인터뷰에서 "어디 사는지는 못 물어보죠"가 나왔습니다. 동 단위까지만 받는 것으로 설계 변경 |
|---|
| 3 | 이미 당근마켓이 있는데 왜 새로 만드나? | 반려 | 당근마켓은 채팅으로 조율합니다. 우리가 바꾸려는 것은 조율 자체를 없애는 것입니다. P1 05:27 이 "사흘 동안 그러다가 그쪽이 그냥 안 읽더라고요"라고 했습니다 |
|---|
주의반려한 이유를 말하지 못하면 아직 문제를 자기 것으로 만들지 못한 것입니다.
2번처럼 설계가 실제로 바뀐 수용이 하나라도 있어야 반박 실습을 한 것입니다.
📌 이 실습은 따로 제출하지 않습니다. 옆 사람에게 말로 설명하고, 반려한 것은 그 주 AI 사용 로그의 «반려 기록»에 적으면 됩니다.
코칭에서 나오는 네 질문
개인별 코칭(50분)에서 이 넷을 묻는데, 3조의 답을 함께 두었습니다.
| # | 질문 | 3조의 답 |
|---|
| 1 | 이 사용자를 몇 명이나 실제로 만났나요? | 5명. 판매 위주 2명, 구매 위주 2명, 양쪽 1명 |
|---|
| 2 | 이 문제를 겪지 않는 사람은 누구예요? | 거래 10회 이상 숙련자(P2). 예의를 포기하고 먼저 통보합니다 |
|---|
| 3 | 지금 사용자들은 이 문제를 어떻게 버티고 있나요? | 버티지 않습니다. 그냥 거래를 접습니다 (P1 4회 중 2회) |
|---|
| 4 | 15주차에 무엇이 관찰되면 성공인가요? | 조율 왕복 2회 이하로 약속이 잡히는 것 |
|---|
핵심2번 답이 특히 좋습니다. "겪지 않는 사람"을 찾으면 문제의 경계가 분명해집니다.
숙련자는 안 겪는다 → 우리 사용자는 초보자다 가 여기서 확정됐습니다.
자주 막히는 곳
Q. 후보를 하나로 못 좁히겠습니다.
근거 강도로 줄이시기 바랍니다. 즉, 인터뷰 인용을 붙이지 못하는 후보는 그 자리에서 지웁니다. 그래도 여럿이 남으면 같은 원인의 다른 증상인지 보시기 바랍니다. 3조도 그렇게 해서 셋을 하나로 합쳤습니다.
Q. POV에서 해결책 단어를 지우니 문장이 안 됩니다.
해결책을 문제로 착각한 것 같습니다. 예를 들어 "앱이 필요하다"를 지우고 "무엇을 할 수 있어야 하는가?"로 바꿔 보시기 바랍니다.
Q. AI가 쓴 PRD가 그럴듯한데 왜 다시 써야 하나요?
한번 읽어 보시기 바랍니다. 이름만 바꾸면 누구 것이어도 맞는 문서인데, 「3. 사용자 시나리오」에 인용이 하나도 없기 때문입니다.
Q. Must가 5개를 넘습니다.
혼자 6주에 만들 수 있는 양이 아닙니다. 지금 줄이지 않으면 12주차에 절반이 미완성으로 남으니, PRD 비목표(하지 않는 것)로 옮기세요.
1주차 실습 · 이 강의의 모든 문서 산출물은 마크다운(.md)으로 씁니다.
외울 것은 6개뿐입니다. 나머지는 필요할 때 이 문서를 다시 보면 됩니다.
왜 배우는가?
마크다운이 대단한 기술이라서가 아니고, 이유는 셋입니다.
- AI의 입출력 형식이 마크다운입니다. AI가 내놓는 답, 저장소 README, 이슈 본문, 코딩 도구에 넣는 프로젝트 규칙 파일 — 전부 마크다운이라서, 이 강의에서 안 배워도 매일 마주치게 됩니다.
- 구조가 있어야 AI 결과를 판정할 수 있습니다. 인수조건을 제목·체크박스로 구조화해서 넘기면 합격/불합격을 판정할 수 있고, 판정할 수 있어야 AI에게 다시 시킬 수 있습니다. 덩어리 글을 넘기면 결과도 덩어리로 옵니다.
- 변경 이력이 남습니다. 텍스트라서 언제 무엇을 썼는지가 저장소에 그대로 기록되고, 이것이 이 강의의 평가 근거가 됩니다.
이 강의에서 쓰는 6가지
1. 제목 — #
# 문서 제목 (문서당 1개)
## 큰 절
### 작은 절
# 뒤에 공백을 꼭 넣습니다. #제목은 제목이 되지 않습니다.
2. 목록 — - 와 1.
- 첫째
- 둘째
- 하위 항목 (앞에 공백 2칸)
1. 첫째
2. 둘째
3. 강조 — **
**중요한 부분**
4. 체크박스 — - [ ]
- [ ] 아직 안 한 것
- [x] 끝난 것
인수조건과 제출 체크리스트에 씁니다. -, 공백, [, 공백, ], 공백 순서입니다.
5. 코드 — 백틱 3개
```
npm install
```
```javascript
const x = 1;
```
에러 메시지·명령어·프롬프트를 붙여넣을 때 씁니다. 여는 줄과 닫는 줄이 짝이어야 합니다.
문장 안에서는 백틱 1개: `main` 브랜치 → main 브랜치
6. 링크 — []()
[문제 정의서](docs/04-problem-definition.md)
[참고 서비스](https://example.com)
미리보기
VS Code에서 .md 파일을 열고:
| 단축키 | 동작 |
|---|
Ctrl+Shift+V | 미리보기 탭으로 열기 |
|---|
Ctrl+K 누른 뒤 V | 원본 옆에 나란히 보기 |
|---|
쓰면서 오른쪽 미리보기를 켜두는 것이 가장 빠르게 익히는 방법인데, 틀리면 바로 보이기 때문입니다.
표는 손으로 그리지 마세요
마크다운에서 가장 귀찮은 것이 표인데, 이 강의에서 표를 손으로 그리는 연습은 배울 것이 아닙니다.
방법 0 — 서식 제출 페이지 쓰기 (가장 쉬움)
서식 15종 전부가 폼을 채우면 그대로 제출되므로, 마크다운을 직접 쓸 일이 거의 없습니다.
https://capstone.mayai.kr/forms-firebase.html
프로젝트 계획서 · 인터뷰 스크립트·전사록 · 공감지도 · 문제 정의서 · 선행사례 조사표 · PRD · 사용자 스토리 · 플로우·화면 목록 · 리스크 리포트 · ADR · 스프린트 계획 · 사용성 테스트 · 기여 명세서 · AI 사용 로그
저장소에 직접 쓰는 것은 README, 이슈 본문, 변경 요청 본문, 소스 코드뿐입니다.
방법 1 — AI에게 정리시키기
내용을 말로 불러주고 형식만 맡깁니다.
아래 내용을 마크다운 표로 정리해줘.
열은 이름 / 무엇을 하는가 / 왜 부족한가 / 출처 URL 이야.
장소를 하나로 고정하는 방법도 있는데 P2는 그렇게 하고
한 번 쓰기엔 무겁다고 2주 만에 그만뒀어. 주소는 ...
네이버 캘린더 공유는 일정을 맞출 때 쓰는데 모르는 사람과는 안 트지. 주소는 ...
내용은 여러분이 판단하고, 형식은 도구가 정리합니다. 이게 이 강의가 가르치는 분담 그대로입니다.
다만 AI가 만든 표에 여러분이 말하지 않은 내용이 들어갔는지 반드시 확인하세요.
방법 2 — 목록으로 쓰기
표가 꼭 필요한 게 아니라면 목록이 나은 것 같습니다. 서식이 표로 되어 있어도 목록으로 제출해도 됩니다.
**리스크 1: 실시간 자막 지연**
- 이게 안 되면: 문제 정의 자체가 무너짐
- 확인 방법: 20회 측정, 평균 1.5초 이하
방법 3 — 스프레드시트로 내기
집계가 필요한 표는 스프레드시트로 만들고 파일을 저장소에 넣은 뒤 링크만 겁니다.
선행사례 조사표: [benchmark.xlsx](benchmark.xlsx)
| 스프레드시트를 써도 되는 것 | 반드시 마크다운으로 쓰는 것 |
|---|
| 선행사례 조사표 | 문제 정의서, PRD, ADR |
|---|
| 사용성 테스트 집계 | 사용자 스토리와 인수조건 |
|---|
| 백로그·이슈 목록 | AI 사용 로그 |
|---|
| 정량 측정 결과 | 기여 명세서 |
|---|
오른쪽 항목이 마크다운인 이유는 판단과 근거가 담긴 글이기 때문입니다. 평가가 이 글을 봅니다.
자주 하는 실수 5가지
| 증상 | 원인 | 해결 |
|---|
| 목록이 한 줄로 붙어 나옴 | 목록 앞에 빈 줄이 없음 | 문단과 목록 사이에 빈 줄 하나 |
|---|
| 표가 표로 안 보임 | 두 번째 줄(|---|---|)이 없음 | 머리글 아래에 구분선 줄 추가 |
|---|
| 문서 절반이 회색 덩어리 | 코드 블록을 안 닫음 | 백틱 3개 짝 맞추기 |
|---|
| 줄을 나눴는데 붙어서 나옴 | 마크다운은 한 줄 띄움을 무시함 | 빈 줄을 넣거나 목록으로 |
|---|
| 별표가 그대로 보임 | *를 문자로 쓴 것 | 앞에 \ 붙이기 → \* |
|---|
15분 연습 (1주차 실습)
프로젝트 계획서를 채우는 것이 곧 연습입니다.
- VS Code에서
docs/01-team-charter.md 생성 Ctrl+K V로 미리보기를 옆에 켜기- 서식을 붙여넣고 기본 정보부터 채우기
- 제출 체크리스트 항목에 체크박스
- [x] 써보기 - AI 사용 기준(지시·검수·반려)을 목록으로 쓰기
- 서식 제출 페이지에서 «프로젝트 계획서»를 골라 채우고 제출
여기까지 하면 이 강의에서 필요한 마크다운은 다 쓴 것입니다.
한 장 요약
# 제목 ## 절 ### 작은 절
- 목록 1. 번호 목록
**굵게**
- [ ] 할 일 - [x] 완료
`인라인 코드`
```
코드 블록
```
[링크 이름](주소)
미리보기 Ctrl+Shift+V · 나란히 Ctrl+K V · 표는 AI에게
/* @theme capstone */
/*
* SW/AI 캡스톤 디자인 2026-2 강의 슬라이드 공통 테마 (Marp)
*
* 사용법:
* 슬라이드 md 파일 상단에
* ---
* marp: true
* theme: capstone
* paginate: true
* ---
*
* 빌드: npx @marp-team/marp-cli@latest --theme theme/capstone.css slides/week-01.md -o out/week-01.pdf
* 미리보기: VS Code 확장 "Marp for VS Code" 설치 후 md 파일에서 미리보기
*
* 커스텀 클래스:
* <!-- _class: title --> 표지
* <!-- _class: section --> 섹션 구분 슬라이드
* <!-- _class: quote --> 큰 인용/한 문장 강조
* <!-- _class: compare --> 좋은 예/나쁜 예 2단 비교
* <!-- _class: task --> 실습 지시 슬라이드
*/
@import 'default';
:root {
--c-ink: #16181d;
--c-muted: #6b7280;
--c-line: #e3e6ea;
--c-bg: #ffffff;
--c-accent: #1f5fa9; /* 주 강조 */
--c-warn: #c2410c; /* 경고·함정 */
--c-good: #15803d; /* 좋은 예 */
--c-bad: #b91c1c; /* 나쁜 예 */
--c-soft: #f5f7f9;
}
section {
width: 1280px;
height: 720px;
padding: 56px 64px;
font-family: 'Pretendard', 'Noto Sans KR', 'Malgun Gothic', -apple-system, sans-serif;
font-size: 24px;
line-height: 1.6;
color: var(--c-ink);
background: var(--c-bg);
letter-spacing: -0.01em;
}
/* ---------- 제목 ---------- */
section h1 {
font-size: 44px;
font-weight: 700;
color: var(--c-ink);
margin: 0 0 24px;
padding-bottom: 14px;
border-bottom: 3px solid var(--c-accent);
letter-spacing: -0.02em;
}
section h2 {
font-size: 32px;
font-weight: 700;
margin: 28px 0 12px;
color: var(--c-ink);
}
section h3 {
font-size: 26px;
font-weight: 600;
margin: 20px 0 8px;
color: var(--c-accent);
}
/* ---------- 본문 ---------- */
section ul, section ol { margin: 8px 0; padding-left: 1.2em; }
section li { margin: 6px 0; }
section li::marker { color: var(--c-accent); }
section strong { color: var(--c-accent); font-weight: 700; }
section em { font-style: normal; color: var(--c-warn); font-weight: 600; }
section blockquote {
border-left: 5px solid var(--c-accent);
background: var(--c-soft);
margin: 18px 0;
padding: 14px 22px;
color: var(--c-ink);
font-size: 22px;
}
section blockquote::before,
section blockquote::after { content: none; }
section code {
font-family: 'D2Coding', 'Cascadia Code', Consolas, monospace;
background: var(--c-soft);
border: 1px solid var(--c-line);
border-radius: 4px;
padding: 1px 6px;
font-size: 0.88em;
}
section pre {
background: #1e2229;
border-radius: 8px;
padding: 18px 22px;
font-size: 19px;
line-height: 1.5;
overflow: auto;
}
section pre code { background: none; border: none; color: #e6e9ef; padding: 0; }
/* ---------- 표 ---------- */
section table {
width: 100%;
border-collapse: collapse;
font-size: 21px;
margin: 14px 0;
}
section th {
background: var(--c-soft);
border-bottom: 2px solid var(--c-accent);
padding: 10px 14px;
text-align: left;
font-weight: 700;
}
section td {
border-bottom: 1px solid var(--c-line);
padding: 10px 14px;
vertical-align: top;
}
/* ---------- 표지 ---------- */
section.title {
background: linear-gradient(140deg, #14304f 0%, #1f5fa9 100%);
color: #fff;
display: flex;
flex-direction: column;
justify-content: center;
}
section.title h1 {
font-size: 60px;
color: #fff;
border: none;
margin-bottom: 12px;
}
section.title h2 { font-size: 30px; font-weight: 400; color: #cfe0f2; margin: 0; }
section.title p { font-size: 21px; color: #a8c3de; margin-top: 36px; }
section.title strong { color: #fff; }
/* ---------- 섹션 구분 ---------- */
section.section {
background: var(--c-soft);
display: flex;
flex-direction: column;
justify-content: center;
}
section.section h1 {
font-size: 52px;
border: none;
color: var(--c-accent);
}
section.section p { font-size: 26px; color: var(--c-muted); }
/* ---------- 한 문장 강조 ---------- */
section.quote {
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
}
section.quote blockquote {
border: none;
background: none;
font-size: 40px;
font-weight: 700;
line-height: 1.5;
color: var(--c-ink);
padding: 0 40px;
}
section.quote p { font-size: 22px; color: var(--c-muted); margin-top: 24px; }
/* ---------- 좋은 예 / 나쁜 예 2단 비교 ---------- */
/*
* 사용 예:
* <!-- _class: compare -->
* <div class="cols">
* <div class="bad"><h3>❌ 이렇게 쓰면</h3> ... </div>
* <div class="good"><h3>✅ 이렇게</h3> ... </div>
* </div>
*/
section .cols {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
margin-top: 12px;
}
section .cols > div {
border-radius: 10px;
padding: 20px 24px;
font-size: 21px;
border: 1px solid var(--c-line);
}
section .cols .bad { background: #fef4f4; border-color: #f3c9c9; }
section .cols .good { background: #f2faf5; border-color: #bfe3cd; }
section .cols .bad h3 { color: var(--c-bad); margin-top: 0; }
section .cols .good h3 { color: var(--c-good); margin-top: 0; }
/* ---------- 실습 지시 ---------- */
section.task {
background: #fffdf5;
border-left: 14px solid #d97706;
}
section.task h1 { border-bottom-color: #d97706; }
section.task h1::before { content: '🛠 '; }
section.task strong { color: #b45309; }
/* ---------- AI 함정 박스 ---------- */
/* 사용: <div class="trap"> ... </div> */
section .trap {
background: #fff6f1;
border: 1px solid #f0c3aa;
border-left: 6px solid var(--c-warn);
border-radius: 8px;
padding: 16px 22px;
margin: 16px 0;
font-size: 21px;
}
section .trap::before {
content: '⚠️ AI 함정';
display: block;
font-weight: 700;
color: var(--c-warn);
margin-bottom: 6px;
font-size: 19px;
}
/* ---------- 푸터·페이지 ---------- */
section footer {
font-size: 15px;
color: var(--c-muted);
left: 64px;
bottom: 24px;
}
section::after { /* 페이지 번호 */
font-size: 16px;
color: var(--c-muted);
right: 40px;
bottom: 24px;
}
/* 표지·섹션 슬라이드에는 페이지 번호 숨김 */
section.title::after, section.section::after { content: ''; }