1215-4003-02 · 2026-2

SW 캡스톤디자인
강의 운영 자료

Design Thinking 8단계 · 15주 · 발표 3회

과목 안내 과제 제출

개요

  • 과목 안내15주 지도

주차별 진행

  • 1주차 오리엔테이션강의
  • 2주차 Empathize워크샵
  • 3주차 Define강의
  • 4주차 Ideate · 주제확정워크샵
  • 5주차 Prototyping I워크샵
  • 6주차 Prototyping II코칭
  • 7주차 1차 발표발표
  • 8주차 아키텍처 설계강의
  • 9주차 개발 계획강의
  • 10주차 Implementation I워크샵
  • 11주차 Implementation II코칭
  • 12주차 Implementation III코칭
  • 13주차 2차 발표발표
  • 14주차 사용자 검증강의
  • 15주차 최종 발표발표

운영 노트

  • 1주차 오리엔테이션1주
  • 2주차 Empathize2주
  • 3주차 Define3주
  • 4주차 Ideate · 주제확정4주
  • 5주차 Prototyping I5주
  • 6주차 Prototyping II6주
  • 7주차 1차 발표7주
  • 8주차 아키텍처 설계8주
  • 9주차 개발 계획9주
  • 10주차 Implementation I10주
  • 11주차 Implementation II11주
  • 12주차 Implementation III12주
  • 13주차 2차 발표13주
  • 14주차 사용자 검증14주
  • 15주차 최종 발표15주

제출 서식

  • 팀 헌장1주
  • 인터뷰 스크립트1–2주
  • 공감지도2주
  • 문제 정의서3주
  • PRD3주~
  • 사용자 스토리3주~
  • ADR 설계 결정8주~
  • 스프린트 계획9주~
  • 주간 회고10주~
  • 사용성 테스트13–14주
  • AI 사용 로그매주 · 개인
  • 과제 제출 서식매주

평가 기준

  • 1차 발표7주
  • 2차 발표13주
  • 최종 발표15주
  • 동료 평가지7·13·15주

가이드 · 리소스

  • AI 활용 가이드북15주 상시
  • 저장소 운영 방식1주차 결정
  • GitHub 협업 × AI9주차~
  • 2주차 시연 — 인사이트 뽑기2주차
  • 3주차 시연 — 문제 정의3주차
  • 마크다운 15분1주차 실습
  • 슬라이드 테마 CSSMarp

개요15주 지도

과목 안내

Design Thinking 8단계 기반 캡스톤. 중간/기말고사 없음. 3회 발표로 평가.
수업: 19:00~22:00 (5404) · 3시간 블록 = 강의 40분 / 실습 80분 / 코칭·공유 60분


15주 지도

한 줄에 두 가지가 함께 있습니다. 수업 시간에 다루는 것과, 그 수업이 성립하기 위해 학생이 미리 만들어 와야 하는 것입니다.

주차수업에서 다루는 것학생이 미리 준비할 것수업 중 완성
1과목 구조, 실패 패턴, AI 정책, 인터뷰·관찰 설계법—프로젝트 계획서, 탐색 영역, 저장소, 리뷰 짝, 인터뷰 스크립트
2질적 코딩, 요약과 인사이트의 차이인터뷰 3건 전사록 + 관찰 노트공감지도, 인사이트 10개
3POV/HMW, 문제를 요구사항으로 번역개인별 문제 정의 후보 3개문제 정의서, PRD, 사용자 스토리
4발산·수렴 기준, 출처 검증 · 주제 확정 심사아이디어 30개, 선행사례 5건(URL 필수)최종 주제 + 선정 근거서
5충실도, 플로우, 빈 상태·에러 화면사용자 플로우, 화면 목록와이어프레임, 클릭 목업
6리스크 스파이크, AI 디버깅 3단사용자 피드백 3건, 개발환경 세팅 완료PoC 코드, 리스크 리포트
71차 발표 + 방향 교정발표자료, 리허설 영상평가, 피드백 정리
8아키텍처, 데이터 모델, API, ADR아키텍처 대안 3개, 데이터 항목 목록다이어그램, ERD, ADR 3건
9백로그, DoD, 리뷰 짝 코드리뷰, 자동 검증백로그 이슈 15개, 저장소 세팅스프린트 계획, 자동 검증 동작
10스펙 → 테스트 → 구현, 코드 워크스루Sprint 1 변경 1건 이상 반영핵심 기능 E2E, 테스트, 회고
11통합, 디버깅 클리닉통합 시도 결과 + 실패 로그통합 데모
12예외처리·보안·성능, 배포, 교차 QA배포 준비, README배포 URL, QA 리포트
132차 발표 + 코드 설명 확인발표자료, 간이 테스트 2명평가
14사용성 데이터 분석, 우선순위 판단사용성 테스트 5명 원자료검증 보고서, 개선 백로그
15최종 발표 + 과정 확인최종 보고서, 시연 영상, 기여 명세서(개인 회고 포함)평가

원칙: 수업 시간은 데이터를 가지고 판단하는 시간, 데이터 수집은 과제.
인터뷰·사용성 테스트·구현은 교실 밖에서만 가능하고, 코칭·의사결정·워크샵은 교실 안에서만 가능합니다.

운영 노트

위 표의 주차 문서는 수강생이 보는 자료입니다.
수업을 진행하는 데 필요한 것 — 수업 전 확인, 진행 대본, AI 함정 시연 방법, 개입 기준, 위험 신호, 기록해 둘 것 — 은 주차별 운영 노트에 따로 있습니다.

1주 · 2주 · 3주 · 4주 · 5주 · 6주 · 7주 · 8주 · 9주 · 10주 · 11주 · 12주 · 13주 · 14주 · 15주


제출 규칙

제출 경로는 두 가지입니다. 무엇을 어디에 내는지 헷갈리지 않게 아래 표를 기준으로 하세요.

무엇을어디에
문서 산출물 21종 전부 — 프로젝트 계획서, 인터뷰 스크립트·전사록, 공감지도, 문제 정의서, 선행사례 조사표, PRD, 사용자 스토리, 플로우·화면 목록, 리스크 리포트, 발표 구성서, 피드백 반영 계획서, 아키텍처 대안 조사, ADR, 스프린트 계획, 주간 회고, 통합 시도 기록, 사용성 테스트, 최종 보고서, 기여 명세서, AI 사용 로그과제 제출 페이지 — 폼을 채우고 제출
이슈 본문 · 변경 요청 본문이슈 트래커 / 변경 요청 (거기서 바로 쓰는 것)
README · 소스 코드개인 저장소

문서는 제출 페이지 하나로 모입니다. 저장소는 코드와 작업 이력을 담습니다.

항목규칙
마감해당 주차 수업 전날 자정
지각감점. 미제출 시 해당 주차 수업 활동 참여 불가
매주 제출AI 사용 로그는 매주 냅니다. 한 번에 몰아 낼 수 없습니다
로그인제출 페이지는 Google 계정 로그인이 필요합니다. 내가 낸 것만 고치거나 지울 수 있습니다

워크샵형 수업은 재료가 없으면 성립하지 않습니다. 사전 제출물이 없으면 수업 시간에 그 재료부터 만들어야 하며, 그만큼 코칭 시간을 잃습니다.


개인 저장소

이 과목은 특정 서비스를 요구하지 않습니다. GitHub·GitLab·학내 Git 서버 중 무엇이든 되고, 계정을 만들 수 없거나 네트워크가 막힌 경우를 위한 대체 경로도 있습니다. 1주차에 각자 결정하세요.
→ 저장소 운영 방식 선택 가이드
→ GitHub 협업 × AI 사용 가이드 — 9주차부터 매주 쓰는 흐름

경로가 달라도 아래 네 가지는 누구나 남겨야 합니다. 이것이 학습 목표이기 때문입니다.

  1. 작업이 시간에 걸쳐 분포한 기록
  2. 누가 무엇을 했는지 식별 가능
  3. 변경이 다른 사람의 눈을 거친 흔적
  4. 동작을 자동으로 확인하는 수단
project-<이름>/
├── README.md          # 프로젝트 소개, 설치/실행 방법
├── docs/              # 문서 산출물 (서식을 복사해 채움)
│   ├── 01-team-charter.md
│   ├── ...
│   ├── adr/           # ADR은 번호별 개별 파일
│   ├── interviews/    # 인터뷰 전사록
│   ├── retro/         # 주간 회고
│   ├── reviews/       # 리뷰 기록 (변경 요청을 쓸 수 없는 경우)
│   └── usability/     # 사용성 테스트 기록
├── logs/              # AI 사용 로그 (개인별 파일)
│   └── ai-log-홍길동.md
└── src/               # 소스 코드

이 저장소(강의 자료)는 weeks/ 학생용 · teaching/ 운영 노트 · templates/ 서식 · rubrics/ 평가 기준 · guides/ 가이드로 나뉩니다.


AI 사용 정책

AI 사용은 전면 허용합니다. 대신 3가지가 원칙입니다.

  1. 내가 설명할 수 있게 — 내가 낸 코드와 문장은 스스로 설명할 수 있으면 됩니다. 발표 때 한 부분을 골라 설명을 청합니다. 설명할 수 있으면 그것으로 완성입니다.
  2. 출처 검증 — AI가 알려준 사실·논문·서비스 사례는 원 출처를 직접 확인한 뒤에만 인용합니다. 확인되지 않은 인용이 발견되면 해당 산출물은 0점입니다.
  3. 과정을 남기기 — 매주 개인 AI 사용 로그를 제출합니다. 무엇을 시켰고, 무엇으로 검수했고, 무엇을 반려했는지 남깁니다. 이 로그가 내가 한 일을 대신 말해 줍니다.

이 과목에서 여러분은 팀장이고 AI는 팀원입니다. 팀장이 하는 일은 코딩이 아니라 지시 · 검수 · 반려입니다.

금지 사항

  • 인터뷰 대상자·사용자 피드백을 AI로 생성하는 행위 (실제 사람만 인정)
  • 검증하지 않은 AI 생성 코드를 통합본에 반영하는 행위
  • 리뷰 짝이 한 작업을 본인 기여로 기재하는 행위

자세한 내용은 AI 활용 가이드북에 있습니다.

저장소 운영 경로에 따라 "기록"의 형태가 달라집니다. 어떤 경로를 쓰든 동등한 근거로 인정하며, 경로 선택 때문에 점수에 유불리가 생기지 않습니다. → 저장소 운영 방식 선택 가이드


서식과 평가 기준

서식사용 시점
프로젝트 계획서1주차
인터뷰 스크립트1~2주차
공감지도2주차
문제 정의서3주차
PRD3주차~ (계속 갱신)
사용자 스토리3주차~
ADR8주차~
스프린트 계획9주차~
주간 회고10주차~ 매주
사용성 테스트13~14주차
AI 사용 로그매주 · 개인
과제 제출 서식매주 (주차별 과제 형식)

문서 산출물은 마크다운(.md)으로 씁니다. 외울 문법은 6개뿐이고 1주차에 15분 실습으로 다룹니다 → 마크다운 15분

✍️ 과제 제출 페이지 — 문서 산출물 21종 전부를 여기서 채워 바로 제출합니다.
항목마다 작성 방법과 예시가 붙어 있고, 제출 전에 체크리스트가 실시간으로 확인됩니다.
제출한 것은 제출함에서 다시 열어 수정할 수 있습니다(내가 낸 것만).
https://sw-project-839ae.web.app/forms-firebase.html

표는 손으로 그리지 않아도 됩니다. 목록으로 써도 되고, 집계용 표는 스프레드시트로 만들어 저장소에 넣고 링크만 걸어도 됩니다. AI에게 표 정리를 맡기는 것도 허용합니다 — 내용은 여러분이 판단하고 형식은 도구가 정리하는 것, 그 자체가 이 과목이 가르치는 분담입니다.

모든 서식에는 작성 예시가 함께 있습니다. 예시는 두 가지 프로젝트로 채워져 있습니다.

예제성격
동네장터 — 중고 직거래 약속 도우미기술 난이도는 낮고 사용자 심리가 핵심
캠퍼스 캡션 — 청각장애 학생 강의 자막 서비스문제는 명확하고 기술 리스크가 성패를 가름

평가 기준은 학기 시작 시점에 공개됩니다.
1차 발표 · 2차 발표 · 최종 발표 · 상호 평가지


이 자료의 원본과 빌드

문서 원본은 마크다운이며, 사이트는 다음 명령으로 다시 만듭니다.

node sw-capstone-2026/site/build.js

문서를 추가할 때는 site/build.js 상단의 GROUPS 배열에 한 줄을 넣으면 됩니다. 외부 라이브러리 의존성은 없습니다.
슬라이드는 Marp 테마를 사용합니다.

주차별 진행강의

1주차 오리엔테이션

이번 주에 남길 것 하나 — 이 과목이 아이디어 대회가 아니라 프로세스 훈련임을 이해하고, 다음 주 인터뷰를 실제로 나갈 수 있는 상태가 되는 것.

시간활동
25분강의 ① — 과목 구조, 실패 패턴, AI 사용 정책
20분강의 ② — AI를 팀원으로 다루는 법
15분실습 ① 마크다운 15분
30분실습 ② 프로젝트 계획서 작성
20분실습 ③ 제출 경로와 도구
70분탐색 영역 확정 + 인터뷰 설계 워크샵 (이번 주 핵심)

강의 ① 과목 구조와 기준 (25분)

다룰 내용

  1. 과목 구조 — Design Thinking 8단계, 시험 없음, 발표 3회, 매주 사전 과제
  2. 실패하는 캡스톤 4가지 패턴 - 주제가 너무 큼 → 12주차에 아무것도 완성 안 됨 - 사용자 없이 시작 → 만들고 나서 쓸 사람이 없음 - 막판 통합 → 11주차에 모듈이 안 붙음 - 문서를 학기 말에 몰아 씀 → 프로세스를 배우지 못함
  3. 평가 방식 — 루브릭 3종을 오늘 배포하고 함께 읽습니다
  4. AI 사용 정책 — 전면 허용, 대신 내가 설명할 수 있게·출처는 직접 확인·과정을 남기기

핵심

"AI 사용은 막지 않습니다. 대신 여러분이 설명하지 못하는 것은 없는 것으로 칩니다."

이 기준은 15주 내내 동일하게 적용됩니다. 세 번의 발표에서 저장소의 코드를 한 부분 골라 설명을 청합니다. 설명할 수 있으면 그것으로 완성입니다.

이번 주 AI 함정 시연 — 자신 있게 틀리기

수업 중에 AI에게 존재하지 않는 것을 함께 물어봅니다. 우리 학과 교과목 코드나 가상의 라이브러리 함수 같은 것이면 됩니다. AI가 망설임 없이 그럴듯한 답을 내놓는 장면을 함께 봅니다. 확신의 강도와 정확도는 아무 관계가 없습니다.


강의 ② AI를 팀원으로 다루는 법 (20분)

이 과목의 프로젝트 구조

개인 프로젝트입니다. 그런데 혼자 하는 것은 아닙니다.

역할누구
팀장여러분
팀원AI

팀장이 하는 일은 코딩이 아닙니다. 지시하고, 검수하고, 반려하는 것입니다.
이 과목이 평가하는 것도 코딩량이 아니라 이 세 가지입니다.

단계하는 일어디에 남나
① 지시무엇을 어떤 조건으로 만들지 정해서 넘긴다AI 사용 로그 「무엇을 시켰나」
② 검수받은 것이 그 조건을 만족하는지 확인한다「검수 방법」
③ 반려아니면 되돌려 보내고 이유를 남긴다「반려 기록」 · 기여 명세서
주의

세 번째가 없으면 팀장이 아니라 전달자입니다. 받은 것을 그대로 붙여넣는 일은 누구나 합니다.

또한 팀장이므로 모든 영역을 직접 맡습니다. "나는 프론트만"이 불가능한 구조이고, 그게 이 과목이 개인 프로젝트인 이유입니다.

① 지시 — 지시가 부실하면 결과도 부실합니다

❌ 이건 지시가 아닙니다✅ 이게 지시입니다
로그인 기능 만들어줘이 인수조건 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분)

프로젝트 계획서 서식을 채웁니다. 방금 배운 마크다운을 바로 쓰는 첫 문서입니다.

먼저 자신 있는 것 / 배우고 싶은 것을 한 줄씩 적게 합니다. 부풀리지 않는 편이 학기 내내 도움이 됩니다.
가장 중요한 항목은 목표 수준(A/B/C) 과 6. AI 사용 기준 입니다. 방금 배운 지시·검수·반려를 본인 기준으로 옮겨 적는 칸입니다.

「2. 탐색 영역」은 지금 비워둡니다. 오늘 마지막 워크샵에서 정한 뒤 채워서 제출합니다.

목표 수준은 솔직하게 고르게 합니다. 여기서 B를 고르고 주당 3시간만 쓰면, 손해를 보는 사람은 본인뿐입니다.
A를 고르는 것은 부끄러운 일이 아닙니다. 고르고 지키는 것이 이 과목이 보는 것입니다.

주의

「스스로에 대한 기준」을 반드시 채웁니다. 혼자 하면 진도가 밀려도 말려줄 사람이 없습니다. 무엇을 언제 줄일지 오늘 정해두지 않으면 12주차에 끌려갑니다.

③ 제출 경로와 도구 (20분)

제출 경로는 두 가지입니다. 오늘 둘 다 열어 확인합니다.

무엇을어디에
문서 산출물 21종 전부과제 제출 페이지
이슈·변경 요청 본문이슈 트래커 / 변경 요청
README · 소스 코드개인 저장소
주의

오늘 제출 페이지 로그인을 확인합니다. 제출하려면 Google 계정 로그인이 필요합니다.
로그인하면 작성자 이름이 계정에서 자동으로 채워지고, 내가 낸 것만 고치거나 지울 수 있습니다.
프로젝트 계획서 제출이 첫 실습이므로, 그 자리에서 전원 로그인이 되는지 확인합니다.

제출함은 같은 수업 구성원이 함께 보는 공간입니다. 남의 제출물은 열어보기만 한다는 것도 오늘 규칙으로 정합니다.

  • 저장소 운영 경로 결정 — 저장소 운영 방식 선택 가이드를 함께 읽고 개인별로 A/B/C 중 선택
  • 개인 저장소 생성 후, 리뷰 짝이 볼 수 있는지 확인
  • docs/ logs/ src/ 폴더 구조 생성
  • AI 코딩 도구 설치 — 학기 내내 쓸 것 하나를 정합니다 (도구를 옮겨 다니면 로그가 흩어집니다)
  • 첫 제출: 과제 제출 페이지에서 프로젝트 계획서를 제출하는 것까지 오늘 안에 끝내기

이 과목은 특정 서비스를 요구하지 않습니다. 계정을 만들 수 없거나 학교 네트워크에서 막히는 경우 1주차에 확인하고 경로 B로 정합니다. 그대로 두면 기여가 학기 내내 남지 않아, 15주차 개인 평가에 반영하기 어렵습니다.


탐색 영역 확정 + 인터뷰 설계 워크샵 (70분)

주의

이 워크샵을 2주차로 미루면 안 됩니다. 인터뷰 방법을 2주차에 다루면 인터뷰를 해 올 시간이 없고, 2주차 수업이 통째로 비게 됩니다.

시간내용
10분탐색 영역 확정 — 무엇에 대해 물을 것인가
12분강의 ① 질문을 만드는 다섯 가지 방식
8분강의 ② 어떻게 진행할 것인가
10분강의 ③ 말로 나오지 않는 것 보기 — 맥락 질의법
25분실습 — 개인 질문지 완성
5분점검 — 소리 내어 읽고 교정

탐색 영역 확정 (10분)

인터뷰를 설계하려면 무엇에 대해 물을지가 먼저 정해져야 합니다. 오늘 정하는 것은 만들 것이 아니라 살펴볼 영역입니다.

이 과목의 세 단계언제무엇을 정하나
탐색 영역1주차 (지금)어떤 사람들의 어떤 상황을 볼 것인가
문제 정의3주차그 중 무엇이 진짜 문제인가
주제4주차그 문제를 어떻게 풀 것인가
❌ 이건 이미 해결책입니다✅ 이게 영역입니다
중고거래 앱을 만들자직거래 약속을 잡다가 서로 눈치만 보다 흐지부지되는 과정
AI 학습 도우미혼자 공부하다 막혔을 때 물어볼 데가 없는 상황
자취생 식단 서비스자취 3개월 차가 저녁을 정하는 데 쓰는 시간

정하는 순서

  1. 후보를 3개 적습니다 - 관심 있는 영역 중에서 고르되, "내가 다음 주에 만날 사람이 한 명은 떠오르는가" 를 통과한 것만 적습니다
  2. 후보마다 그 사람을 이름이나 관계로 함께 적습니다 (예: "같은 과 선배 김○○") - 막연히 "대학생"은 안 됩니다. 연락처를 아는 사람이어야 합니다
  3. 사람이 안 떠오르는 후보는 지웁니다 — 인터뷰를 못 하면 그 영역은 진행할 수 없습니다
  4. 남은 것 중 가장 궁금한 하나를 고릅니다
  5. 고른 영역에서 만날 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. 알아내려는 것을 질문 형태로 1~2개 적습니다
  2. 심화 질문을 탐색 영역에 맞게 직접 만듭니다 (3개 이상)
  3. 만든 질문마다 다섯 유형 중 무엇인지 표시합니다 - 「이유」 유형이 하나도 없으면 그 질문지는 사실 목록만 모으게 됩니다 - 「또」와 「구체화」를 넣을 지점을 최소 2군데 미리 정해 둡니다
  4. 현장에서 볼 수 있는 주제라면 어디로 갈지를 정합니다 (맥락 질의법)
핵심

전사는 도구에 맡기세요. 다음 주 과제인 전사록 3건은 AI 전사 도구를 쓰면 됩니다.
손으로 받아 적으면 한 사람당 서너 시간이 걸리는데, 그 시간은 배우는 시간이 아닙니다.
여러분이 할 일은 관찰 노트와 인용 확인입니다. → AI 활용 가이드북

점검 (5분)

완성한 사람은 질문 2개를 소리 내어 읽습니다. 해결책을 묻는 질문이 섞여 있으면 그 자리에서 고칩니다.

점검 항목
순차적 경험을 묻는 질문이 있는가☐
감정을 묻는 질문이 있는가☐
이유를 묻는 질문이 있는가☐
「또」·「구체화」를 넣을 지점을 정했는가☐
해결책을 묻는 질문이 섞여 있지 않은가☐

다음 주 과제

[2주차 수업 전까지 · 제출]

1. 실제 사용자 3명 이상 인터뷰 (1인당 30~40분)
   - 리뷰 짝, 이 수업 수강생, 가족은 제외
   - 녹음 전 구두 동의를 받고, 그 동의 발언을 녹음에 포함할 것
   - 동의를 받을 때 «녹음 파일은 수업 담당 교수만 듣습니다»를 함께 알릴 것

2. 전사록 3건 → 과제 제출 페이지 «인터뷰 전사록» (대상자별 한 건씩)
   - 타임스탬프 포함
   - 녹음 파일도 함께 올립니다 (제출 페이지에서 바로 업로드)
   - 손으로 받아 적지 마세요. AI 전사 도구를 쓰고 결과를 붙여넣습니다
   - 검수는 «인상적인 발언 3개»로 뽑을 구간만 원본 음성과 대조하면 됩니다
   - 방법: AI 활용 가이드북 「부록 — 인터뷰 전사에 AI 쓰기」

3. 각 인터뷰마다 관찰 노트
   - 표정·망설임·한숨이 나온 지점
   - 말과 행동이 어긋난 지점
   - 인상적인 발언 3개 (그대로 인용)

마감: 수업 전날 자정 · 제출: 과제 제출 페이지
미제출자는 2주차 워크샵에 참여할 수 없습니다.

제출 형식

과제 제출 페이지에서 «인터뷰 전사록» 선택 — 대상자 1명당 한 건씩 제출합니다.

동네장터 — P1 전사록 (발췌)

> 주차: 1주차 과제 · 작성일: 2026-XX-XX
> 작성: 김서연

# 인터뷰 P1

| 항목 | 내용 |
|---|---|
| 일시 | 2026-XX-XX 14:00 (35분) |
| 대상자 프로필 | 3학년, 최근 학기에 전공 중고 물건을 파는 사람 |
| 녹음 동의 | ☑ 구두 동의 확보 |

## 전사
[00:12:04] 진행자: 장소를 먼저 제안해 보신 적이 있으세요?
[00:12:09] P1: 음... (3초) 사실 거의 못 물어봤어요.
[00:12:14] 진행자: 왜요?
[00:12:16] P1: 제가 재촉하는 사람처럼 보일까 봐요.

## 관찰 노트
- 12:09에서 3초 망설임 → 정보가 없는 게 아니라 묻지 못하는 것
- "(웃음)"이 즐거움이 아니라 체념으로 들림

## 인상적인 발언 3개
1. "제가 재촉하는 사람처럼 보일까 봐요."
2. "몰랐죠. 마감 이틀 전에 알았어요."
3. "그래서 제가 다 했어요."

관찰 노트와 인용 3개가 없으면 3주차에 쓸 재료가 남지 않습니다.

주차별 진행워크샵

2주차 Empathize

이번 주에 남길 것 하나 — 인터뷰 데이터에서 나도 예상 못 했던 것을 최소 3개 발견하는 것.

시간활동
10분지난주 제출물 확인
30분강의 — 질적 코딩, 인사이트란 무엇인가
80분실습 — 공감지도 워크샵
60분수강생 간 교차 리뷰 + 코칭

강의 파트 (30분)

참고

시연 자료가 따로 있습니다. 2주차 시연 — 인사이트 뽑기
전사록 3건 샘플부터 인사이트 10개까지 전 과정이 실제 문장으로 들어 있습니다. 강의 파트에서 이걸로 한 번 보여준 뒤 실습으로 넘어갑니다.

다룰 내용

  1. 질적 코딩 — 발언을 잘라 라벨을 붙이고, 라벨을 묶어 주제를 만드는 절차
  2. 요약과 인사이트의 차이 ← 이번 주 핵심

핵심 — 요약과 인사이트의 차이

문장
요약사용자는 앱이 복잡해서 불편해한다
인사이트사용자는 복잡해서가 아니라 실수를 되돌릴 방법이 없어서 신중해지고, 결국 포기한다

좋은 인사이트에는 긴장(tension)이 있습니다. "A를 원하면서 동시에 B를 한다" 같은 모순. 모순이 없으면 그건 그냥 누구나 아는 말입니다.

이번 주 AI 함정 — 한국어 뉘앙스 오독

전사록 한 대목을 AI에게 감정 분류시켜 봅니다. 반어법·완곡어법·체념이 섞인 대목에서 거의 반드시 틀립니다.

"괜찮아요 뭐, 그냥 제가 하면 되니까" — AI는 이걸 긍정으로 분류합니다.
공감지도의 감정 칸을 AI 결과 그대로 채우면 안 되는 이유입니다. 분류는 시키되 판정은 직접 합니다.


실습 파트 (80분)

진행 순서

각 단계의 결과물이 어떤 모습이어야 하는지는 시연 자료에서 확인하세요.

  1. (15분) 발언 카드화 — 전사록에서 인상적인 발언을 포스트잇 한 장에 하나씩. 최소 24장
  2. (20분) 그룹핑 — 비슷한 것끼리 묶고 이름 붙이기. AI에게 같은 작업을 요청해 결과를 비교합니다
  3. (25분) 공감지도 — 2번에서 내가 만든 분류를 그대로 칸으로 씁니다. 공감지도 서식에서 카드보드의 분류를 가져올 수 있습니다
  4. (20분) 인사이트 10개 — 각 인사이트에 근거 인용을 반드시 붙이기

점검 항목

  • 공감지도 칸에 내 추측이 들어가 있지 않은가 — 근거 없는 칸은 지웁니다
  • 감정·생각을 적은 칸에 어느 발언에서 나왔는지가 붙어 있는가
  • "놀라운가?" 체크가 3개 미만인 → 인터뷰를 겉핥기로 읽은 것입니다. 전사록을 다시 읽습니다

교차 리뷰 (60분)

둘씩 짝지어 공감지도를 서로 설명합니다. 듣는 사람은 딱 두 가지만 묻습니다.

  1. "그 인사이트의 근거가 어느 발언이에요?"
  2. "그건 인터뷰 전에도 예상했던 거 아니에요?"

두 번째 질문에 답하지 못한다면 그 인사이트는 요약입니다. 전사록으로 돌아가 다시 파고듭니다.


다음 주 과제

[3주차 수업 전까지]

1. 개인 과제 — 문제 정의 후보 3개씩 (각자 3개)
   - 인사이트에 근거해야 함. 아이디어가 아니라 '문제'를 쓸 것
   - 형식: "[구체적 사용자]는 [무엇]이 필요하다. 왜냐하면 [인사이트]이기 때문이다."
   - 제출: 개인 저장소 이슈로 각자 등록

2. 과제 — 부족한 인터뷰 2건 보완
   - 2주차에 새로 생긴 질문을 가지고 다시 만날 것

3. 개인 과제 — AI 사용 로그 1주치
   - 「반려 기록」 항목 필수 (최소 1건)

마감: 수업 전날 자정

제출 형식

이슈 트래커(또는 칸반 보드) — 제목 [문제후보] 홍길동 1. 후보를 서로 보고 토론해야 하므로 보드에 올립니다. 서식은 과제 제출 서식.

동네장터 — 문제 정의 후보 (개인 제출 1건)

## 후보 1

**POV**
이번 학기에 처음 중고 물건을 팔아본 3학년 학생은
상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법이 필요하다.
왜냐하면 먼저 장소를 제안하는 행위가 재촉처럼 보일까 봐
묻지 못한 채 혼자 불안해하다가 결국 혼자 다 떠안게 되기 때문이다.

**근거 인용:** "제가 재촉하는 사람처럼 보일까 봐요." (P1)
**이 문제를 겪지 않는 사람:** 이미 서로 아는 사이. 관계 비용이 낮아 그냥 물어봄
**해결책 단어 점검:** 앱·플랫폼·AI·자동화 포함 여부 ☑ 없음

마지막 점검 항목이 핵심입니다. 해결책 단어가 들어가면 문제가 아니라 아이디어입니다.

주차별 진행강의

3주차 Define

이번 주에 남길 것 하나 — 해결책 단어가 하나도 없는 문제 정의 문장을 갖는 것. 이 과목에서 결과가 갈리는 첫 번째 지점입니다.

시간활동
10분지난주 제출물 확인
40분강의 — POV/HMW, 문제 정의를 요구사항으로 번역하기
80분실습 — 문제 정의 확정 + PRD 초안 + AI 반박
50분개인별 코칭

강의 파트 (40분)

참고

시연 자료가 따로 있습니다. 3주차 시연 — 문제 정의
POV를 세 번 고쳐 쓰는 과정, AI가 쓴 PRD와 직접 다시 쓴 PRD 비교가 나란히 들어 있습니다.

다룰 내용

  1. POV 문장 — [사용자]는 [니즈]가 필요하다. 왜냐하면 [인사이트]이기 때문이다.
  2. HMW 질문 — 범위 조절이 전부입니다
  3. 문제 → 요구사항 번역 — 기능/비기능, 사용자 스토리와 인수조건
  4. 스코프 경계 — "하지 않는 것" 목록

핵심

① 타깃 사용자는 "상황"까지 써야 합니다.

❌✅
대학생이번 학기에 처음 중고 물건을 팔아본 3학년

② POV에 해결책 단어(앱·플랫폼·AI·자동화)가 들어가면 실패입니다. 내 문장에서 그 단어를 찾아 지우고, 지운 뒤에도 문장이 성립하는지 확인합니다.

③ HMW 범위 조절

범위예
너무 넓음어떻게 하면 중고거래를 잘 되게 할까? → 아무것도 못 함
너무 좁음어떻게 하면 진행률 바를 넣을까? → 이미 해결책임
적당함어떻게 하면 서로 묻지 않아도 만날 시간이 좁혀질까?

④ "하지 않는 것" 목록이 비어 있으면 12주차에 무너집니다. 로그인·결제·관리자 페이지·추천 알고리즘 — 이 중 정말 필요한 것이 몇 개인지 지금 따집니다.

이번 주 AI 함정 — 일반론으로 도피

인터뷰 데이터 없이 PRD를 시키면, 어느 프로젝트에 갖다 붙여도 되는 문서가 나옵니다.
인용을 넣기 전과 후를 나란히 놓고 봅니다.

지시에 내 인터뷰 인용이 들어가야 내 문서가 나옵니다. → 「패턴 1. 맥락 먼저」


실습 파트 (80분)

진행 순서

각 단계의 결과물이 어떤 모습이어야 하는지는 3주차 시연 자료에서 확인하세요.
2주차 시연의 3조가 그대로 이어집니다 — 인사이트에서 POV·HMW·PRD·스토리까지 실제 문장으로 들어 있습니다.

  1. (20분) 후보 3개 → 1개 — 내 후보를 나란히 놓고 근거 강도로 고릅니다. 인용이 몇 명에게서 나왔는지가 기준입니다
  2. (20분) POV·HMW 확정 — 문제 정의서 작성
  3. (20분) PRD 초안 — AI로 PRD 골격 생성 후, §2 배경과 §4 시나리오는 직접 다시 쓰기
  4. (20분) AI 반박 실습 ← 이번 주 필수

AI 반박 실습 (필수)

각자 자기 문제 정의를 AI에게 넣고 이렇게 요청합니다.

이 문제 정의의 약점을 3가지 지적해줘.
특히 '우리가 근거 없이 가정하고 있는 것'을 찾아줘.
좋게 말하지 말고 냉정하게 평가해줘.

그리고 수용한 것 1개 / 반려한 것 1개와 각각의 이유를 문서에 남깁니다.
반려한 이유를 쓰지 못하면 아직 그 문제를 자기 것으로 만들지 못한 것입니다.


개인별 코칭 (50분)

1인당 6~7분씩 아래 네 질문을 받습니다. 미리 답을 준비해 오세요.

  1. 이 사용자를 몇 명이나 실제로 만났나요?
  2. 이 문제를 겪지 않는 사람은 누구예요? 왜 안 겪죠?
  3. 지금 사용자들은 이 문제를 어떻게 버티고 있나요?
  4. 15주차에 무엇이 관찰되면 성공한 건가요?

4번에 "많은 사람이 좋아하면요"는 답이 아닙니다. 무엇이 몇 번 관찰되면 성공인지로 씁니다.


다음 주 과제

[4주차 수업 전까지]

1. 개인 과제 — 아이디어 30개
   - 3주차에 고른 HMW 질문에 대한 답
   - 실현 가능성은 아직 따지지 말 것. 발산 단계입니다

2. 과제 — 유사·경쟁 서비스 5건 조사표
   - 무엇이 있고 / 어떻게 쓰이고 / 왜 부족한가
   - AI가 알려준 사례는 반드시 원 출처 URL을 직접 열어 확인할 것
     확인하지 않은 사례를 쓰면 해당 항목은 0점으로 봅니다

3. 과제 — 필요 기술 리스트업 (모르는 것 위주로)

4. 개인 과제 — AI 사용 로그

※ 4주차 수업에서 주제 승인 심사가 있습니다. 통과해야 5주차로 넘어갑니다.

제출 형식

과제 제출 페이지에서 «선행사례 조사표» 선택 — 5건을 한 건으로 제출합니다.

동네장터 — 선행사례 조사표 (5건 중 2건)

#이름무엇을 하는가어떻게 쓰이나왜 부족한가출처 URL직접 확인
1Notion문서·보드·DB 통합일부 판매자가 거래 관리용으로 도입P2·P4가 2주 만에 중단. "3주짜리 중고거래에 쓰기엔 무겁다"(실제 URL)☑
2구글 시트표 공유역할 분담표로 사용최초 1회 작성 후 갱신되지 않음(실제 URL)☑

직접 써 본 것

  • Notion / 40분 / 좋았던 점: 자유도 / 불편했던 점: 처음 세팅에 시간이 다 감

우리가 다르게 할 지점

  • 세팅 없이 바로 쓰고, 입력을 최소화한다

"왜 부족한가"에 우리 인터뷰 근거를 넣은 것이 핵심입니다. 일반적인 단점 나열은 조사가 아닙니다.

주차별 진행워크샵

4주차 Ideate · 주제확정

이번 주에 남길 것 하나 — 탈락시킨 대안과 그 이유를 말할 수 있는 상태로 주제를 확정하는 것.
이번 주는 게이트입니다. 여기를 통과하지 못하면 5주차로 넘어가지 않습니다.

시간활동
10분지난주 제출물 확인
30분강의 — 발산 규칙, 수렴 기준, 출처 검증
60분실습 — 발산·수렴 워크샵
60분주제 확정 심사 (1인당 10분)
20분교차 검토 — 옆 사람 주제를 반박

강의 파트 (30분)

다룰 내용

  1. 발산 규칙 — 비판 금지, 양이 질을 만든다, 남의 아이디어에 올라타기
  2. 수렴 기준 — 임팩트 / 실현 가능성 / 우리만의 차별점
  3. 출처 검증 3단계 — 출처를 묻는다 → 직접 연다 → 원문을 확인한다

핵심

발산은 AI, 수렴은 사람.
AI는 30개를 5분에 만듭니다. 하지만 "내 프로젝트이 15주 안에 할 수 있는 것"은 AI가 모릅니다.

첫 번째 아이디어를 그대로 가져가기 쉽습니다. 탈락 대안을 설명하지 못하면 그것은 선택이 아니라 관성입니다.

이번 주 AI 함정 — 없는 출처 만들기

"이 분야 논문 3편과 링크"를 시키면 링크가 나옵니다. 그 링크를 실제로 클릭해 봅니다.
열리지 않는 링크가 나오는 순간이 이번 주의 요점입니다.

주의

URL은 직접 엽니다. 열어보지 않은 사례는 조사표에서 그 자리에 지웁니다.


실습 파트 (60분)

진행 순서

  1. (15분) 발산 추가 — AI로 대안을 더 뽑되 조건을 겁니다: "내가 생각 못 했을 접근으로 10개"
  2. (15분) 그룹핑 — 40~60개를 성격별로 묶기
  3. (20분) 수렴 — 임팩트/실현가능성 2×2 매트릭스에 배치 → 후보 3개
  4. (10분) 선정 근거서 — 왜 이것이고, 왜 나머지 둘이 아닌가

점검 항목

  • 후보 3개가 서로 다른 접근인가 (같은 것의 변형 3개면 발산 실패)
  • 선정 근거가 "이게 제일 재밌어서"가 아닌가
  • 15주 안에 만들 수 있는 크기인가

주제 확정 심사 (60분 · 1인당 10분)

각자 3분 발표하고 7분간 질의를 받습니다. 아래 질문 중 3~4개를 받습니다 — 어느 것이 나올지는 모릅니다.

발표 필수 항목

  1. 문제 정의 (POV 한 문장)
  2. 선정한 해결 방향
  3. 탈락시킨 대안 2개와 탈락 이유
  4. 15주차 성공 지표

심사 질문 (1인당 3~4개)

#질문확인하려는 것
1이 사용자를 몇 명 만났나요? 가장 예상을 깬 사람은?근거의 실재
2탈락시킨 것 중 가장 아까운 건 뭐고 왜 버렸나요?수렴이 판단이었는가
3이미 이걸 하고 있는 서비스는 왜 부족하죠?선행 조사의 깊이
4이 중 가장 만들기 어려운 부분은? 만들 수 있다고 보는 근거는?기술 리스크 인식
5이번 학기에 하지 않을 것 세 가지는?스코프 통제
615주차에 무엇이 측정되면 성공인가요?지표의 구체성

판정

판정기준조치
승인사용자 근거 있음 + 스코프 현실적 + 탈락 근거 설명 가능5주차 진행
조건부 승인방향은 맞으나 스코프 과대이번 주 안에 축소안 제출
보류근거 없음 또는 해결책부터 시작이번 주 내 재심사. 필요하면 3주차로 되돌립니다

보류는 벌이 아니라 보호입니다. 여기서 넘어간 문제는 13주차에 훨씬 큰 비용으로 돌아옵니다.


교차 검토 (20분)

혼자 하는 프로젝트일수록 외부 시선이 귀합니다. 옆 사람 주제를 반박하는 것이 과제입니다.

시간진행
5분옆 사람의 문제 정의서·선행사례 조사표를 읽습니다
5분반박 3개를 씁니다
8분서로 반박을 제시하고 답변합니다
2분각자 오늘 수정할 것 1가지를 말합니다

반박은 이렇게 씁니다

유형형태
근거이 인사이트는 몇 명에게서 나왔나요? 한 명 말이면 개인 사정 아닌가요?
스코프이걸 15주에 만들 수 있다고 보는 근거가 뭔가요?
대안이미 ○○가 하고 있는데 왜 부족하다고 보나요?
핵심

반박을 잘 받는 것도 훈련입니다. 방어하지 말고 받아 적으세요. 여기서 막은 반박은 7주차 발표에서 그대로 다시 나옵니다.


다음 주 과제

[5주차 수업 전까지]

1. 사용자 플로우 초안
   - 사용자가 진입해서 목표를 이루기까지의 화면 이동 순서

2. 필요 화면 목록
   - 화면 이름 + 그 화면의 목적 한 줄

3. 참고 서비스 UI 분석 3건
   - 실제로 써보고 캡처할 것. 좋았던 점/나빴던 점 각 1개

4. 개인 과제 — AI 사용 로그

마감: 수업 전날 자정

제출 형식

과제 제출 페이지에서 «플로우·화면 목록» 선택 — 핵심 경로·화면·빈 상태를 함께 제출합니다.

동네장터 — 화면 목록과 빈 상태

핵심 경로 (1개)

진입 → 거래 열기(링크 공유) → 약속판 → 거래 등록 → 약속판 확인
#화면 이름이 화면의 목적관련 FR
1거래 참여공유 링크로 거래에 들어온다FR-01
2약속판상대·상태·겹치는 시간을 한눈에 본다FR-03
3거래 등록30초 안에 작업 하나를 만든다FR-02

빈 상태·에러 화면

상황무엇을 보여줄 것인가
작업 0건"아직 등록된 작업이 없어요" + 작업 추가 버튼
로딩 중약속판 골격만 먼저 표시
공유 링크 만료만료 안내 + 판매자에게 재발급 안내

화면 3개짜리 목록이 정상입니다. 10개가 넘으면 스코프가 넓은 것입니다.
빈 상태 표를 비워두면 13주차 데모에서 정확히 그 지점이 터집니다.

주차별 진행워크샵

5주차 Prototyping I

이번 주에 남길 것 하나 — 화면으로 설명할 수 있는 상태가 되는 것. 말로 설명하던 것을 눈에 보이게 만드는 주입니다.

시간활동
10분지난주 제출물 확인
30분강의 — 충실도, 플로우, 정보구조
80분실습 — 목업 3사이클
60분수강생 간 상호 시연 + 코칭

강의 파트 (30분)

다룰 내용

  1. 저충실도 → 고충실도 — 왜 손그림부터 시작하는가
  2. 사용자 플로우 — 화면이 아니라 이동을 먼저
  3. 정보구조 — 한 화면에 하나의 목표
  4. 빈 상태·에러 상태 — 가장 자주 빠뜨리는 화면

핵심

싸게 만들고 빨리 버립니다. 공들여 만든 것은 못 버립니다. 그리고 못 버리면 사용자 피드백을 무시하게 됩니다.

빈 상태를 반드시 그립니다. 데이터가 하나도 없을 때, 로딩 중일 때, 에러일 때 — 가장 자주 빠뜨리는 이 세 화면이 13주차 라이브 데모에서 정확히 터집니다.

이번 주 AI 함정 — 맥락 유실

목업을 대화로 5~6턴 고치다 보면, 앞에서 정한 제약(사용자·화면 개수·톤)을 슬며시 잊고 다른 것을 만들어내는 지점이 옵니다.

대화가 길어지면 새 대화를 열고 맥락을 다시 넣습니다. 같은 대화에서 계속 고쳐 달라고 하는 편이 오히려 느립니다.


실습 파트 (80분)

진행 순서 — 3사이클 반복

사이클시간할 일
120분손그림 와이어프레임 (종이). 도구 금지
230분AI로 목업 생성 → 내 비평 → 수정
330분클릭 가능한 흐름으로 연결 (핵심 경로 1개만)

1사이클을 종이로 하는 이유는, 도구를 먼저 잡으면 화면을 예쁘게 만드느라 흐름을 안 보기 때문입니다.

점검 항목

  • 핵심 경로가 3~5화면 안에 끝나는가 (길면 문제 정의가 넓은 것)
  • 빈 상태 화면이 있는가
  • 목업이 3주차 사용자 시나리오와 일치하는가

상호 시연 (60분)

둘씩 짝지어, 아무 설명 없이 상대에게 목업을 조작합니다.

  • 만든 사람은 한 마디도 하지 않습니다
  • 조작하는 사람이 막히는 지점을 기록합니다
  • 3분 뒤 역할을 바꿉니다

이것이 사용성 테스트의 축소판입니다. 13~14주차에 할 일을 지금 미리 해보는 것입니다.
"설명하고 싶은데 설명할 수 없는" 경험이 이 시간의 핵심입니다. 실제 사용자 앞에서도 똑같습니다.


다음 주 과제

[6주차 수업 전까지]

1. 목업으로 실사용자 3명에게 피드백 받기
   - 설명하지 말고 조작하게 할 것
   - 막힌 지점을 기록할 것 (감상 아님)

2. 기술 리스크 상위 2개 선정
   - "이게 안 되면 프로젝트가 무너진다" 순으로
   - 왜 불확실한지 한 줄씩

3. ★ 개발 환경 세팅 완료 (필수)
   - 리스크 2개와 관련된 API 키 발급, 계정 생성, 라이브러리 설치
   - 'Hello World' 수준이라도 실행되는 상태까지
   - 완료 스크린샷을 이슈에 첨부

4. 개인 과제 — AI 사용 로그

※ 3번을 안 해오면 6주차 수업(집중 코딩)에 참여할 수 없습니다.
   세팅은 수업 시간에 하는 일이 아닙니다.

제출 형식

과제 제출 페이지에서 «리스크 리포트» 선택 — 리스크 2개·환경 세팅·목업 피드백을 함께 제출합니다. 6주차 수업에서 검증한 결과는 같은 서식을 열어 채운 뒤 다시 제출합니다.

캠퍼스 캡션 — 리스크 리포트

리스크 1: 실시간 자막 지연이 목표(1.5초) 안에 들어오는가

  • 왜 불확실한가: 음성 인식 경험이 없고, 지연을 실제로 재본 적이 없음
  • 이게 안 되면: 수업 중 참여라는 문제 정의 자체가 무너짐
  • 확인 방법: 3분 강의 녹음으로 발화→표시 지연을 20회 측정, 평균 1.5초 이하
  • 검증 상태: ☐ 미검증

리스크 2: 전공 용어 인식률

  • 왜 불확실한가: 일반 발화와 전공 용어의 정확도 차이를 모름
  • 확인 방법: 실제 강의 10분 샘플의 용어 오인식 비율
  • 검증 상태: ☐ 미검증

개발 환경 세팅

항목상태스크린샷
API 키 발급☑(첨부)
스트리밍 라이브러리 설치☑(첨부)
Hello World 실행☑(첨부)

"이게 안 되면" 칸이 핵심입니다. 프로젝트가 무너지지 않는 항목은 리스크가 아니라 그냥 할 일입니다.

주차별 진행코칭

6주차 Prototyping II

이번 주에 남길 것 하나 — "이건 된다"와 "이건 아직 모른다"를 구분할 수 있게 되는 것.
강의는 짧게, 코딩과 코칭에 시간을 쓰는 주입니다.

시간활동
15분사전 확인 + 오늘의 목표 선언
25분강의 — 리스크 스파이크와 타임박싱, AI 디버깅
100분집중 코딩 스파이크 (교수 순회 코칭)
40분결과 공유 + 리스크 리포트 작성

강의 파트 (25분)

다룰 내용

  1. 가장 불확실한 것부터 죽여라 — 쉬운 것부터 하면 어려운 것이 12주차에 남습니다
  2. 타임박싱 — 오늘 3시간 안에 답이 안 나오면, 그것 자체가 답(대안으로 전환)
  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분 안에 끝나는지 실제로 재보세요

마감: 수업 전날 자정
※ 발표 후 코드/문서 무작위 선택 설명이 있습니다.

제출 형식

과제 제출 페이지에서 «발표 구성서» 선택 → 「1차 발표」 — 구성·데모 시나리오·리허설 기록을 제출합니다.

동네장터 — 1차 발표 구성서

순서내용시간발표자
1우리가 만난 판매자 5명과 인사이트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개로 축약

리허설에서 시간을 재지 않은 대부분 초과합니다.

주차별 진행발표

7주차 1차 발표

이번 주에 남길 것 하나 — 각자 다음 8주를 어디에 쓸지 명확해진 상태로 나가는 것.
발표는 심사가 아니라 방향 교정입니다.

시간활동
10분진행 안내, 평가지 배포
90분1인당 발표 10분 + 질의 5분
60분교차 리뷰 — 서로의 산출물을 읽고 서면 리뷰 작성·교환
20분총평 + 다음 단계 안내

6명 개별 발표 기준입니다. 발표가 곧 개인 단위 확인이므로 별도 라운드를 두지 않습니다.


진행 방법

순서

  1. 발표 10분 (8분에 1차 알림, 10분에 종료)
  2. 동료 질문 2분 — 수강생이 먼저 묻습니다
  3. 교수 질문 3분

발표자를 제외한 5명은 질문 1개씩을 미리 준비해 옵니다.

평가

  • 1차 발표 루브릭으로 채점합니다
  • 모든 수강생은 상호 평가지 A파트를 발표를 들으며 작성합니다
  • 상호 평가는 평가자 이름을 지우고 발표자에게 전달됩니다

미리 알아두는 감점

항목감점
발표자료 미제출-10
리허설 영상 미제출-10
상호 평가지에 "수고하셨습니다"만 적은 경우미제출 처리

질의응답

#질문확인하려는 것
1인터뷰 대상자 중 예상을 가장 많이 깬 사람은 누구고 왜였나요?데이터를 실제로 읽었는가
2이 문제를 겪지 않는 사람은 누구예요?문제 경계의 이해
3탈락시킨 아이디어 중 가장 아까운 건? 왜 버렸죠?수렴이 판단이었는가
4지금 사용자들은 이 문제를 어떻게 버티고 있나요?대안 조사의 깊이
5프로토타입에서 가장 확신이 없는 부분은?리스크 인식
615주차에 무엇이 관찰되면 성공인가요?지표의 구체성
7AI가 준 것 중 반려한 것이 있나요? 왜요?팀장으로서의 판정

7번은 이 과목의 시그니처 질문입니다. 매 발표마다 최소 한 사람은 받습니다.
여러분은 팀장이고 AI는 팀원입니다. 무엇을 되돌렸는지가 팀장으로서 한 일입니다.


교차 리뷰 (60분)

시간진행
20분옆 사람의 문제 정의서·PRD·리스크 리포트를 읽습니다
25분서면 리뷰를 작성해 교환합니다
15분받은 리뷰에서 수용 2건 / 반려 1건을 정합니다

서면 리뷰에 담을 것은 셋입니다.

항목내용
가장 설득력 있었던 것왜 그렇게 느꼈는지 함께
가장 약한 근거어느 문장이 근거 없이 단정하는가
8주 안에 못 끝날 것 같은 것그렇게 보는 이유

여기서 정한 수용·거부가 그대로 발표 피드백 반영 계획의 재료가 됩니다.


정리 (20분)

오늘 발표 전체에서 자주 나온 유형을 이름 없이 짚습니다. 아래 넷이 매 학기 반복됩니다.

유형무슨 뜻인가
근거 없는 문제 정의사용자를 만났다는데 발표에 인용이 한 줄도 없음
스코프 과대8주 남았는데 발표한 기능 전부를 만들 계획
해결책부터 시작문제가 아니라 만들 것부터 정함 — 지금이 마지막 수정 기회
리스크 미인식"어려운 건 없다"고 답함. 가장 위험한 상태입니다

다음 8주는 설계 → 구현 → 검증입니다. 특히 8·9주차가 남은 기간의 개발 속도를 결정합니다.


다음 주 과제

[8주차 수업 전까지]

1. 피드백 반영 계획서
   - 오늘 받은 지적 중 무엇을 수용하고 무엇을 거부할지
   - 거부한 것은 이유를 쓸 것 (수용만 있는 계획서는 반려)

2. 아키텍처 대안 3개 조사
   - AI에게 "우리 요구사항에 맞는 접근 3가지와 트레이드오프"를 시키고
   - 각 대안의 장단점 + 내 프로젝트 상황에서의 적합도를 정리
   - ※ 결정은 하지 말 것. 8주차 수업에서 함께 결정합니다

3. 저장할 데이터 항목 전수 목록
   - 화면에 보이는 것부터 역산해서 뽑을 것
   - 개인정보 해당 여부 표시

4. 개인 과제 — AI 사용 로그

마감: 수업 전날 자정

제출 형식

과제 제출 페이지에서 «피드백 반영 계획서» 와 «아키텍처 대안 조사» 를 각각 제출합니다.

동네장터 — 피드백 반영 계획서

#받은 지적출처수용/거부이유반영 시점
1거래 등록 자체가 부담이라 아무도 안 쓸 것교수수용5명 중 3명이 같은 반응. 등록 단계를 2개로 줄인다8주차 설계
2알림 기능이 있어야 실효성이 있다동료거부인터뷰에서 "알림이 더 부담"이라는 답이 나옴. 비목표로 유지—
3타깃을 대학생 전체로 넓혀라동료거부넓히면 인터뷰 근거가 사라짐—

바꾸지 않기로 한 것과 그 이유: 위 2·3번. 근거가 우리 데이터와 충돌함

거부 항목이 하나도 없는 계획서는 반려합니다. 전부 수용했다는 것은 판단하지 않았다는 뜻입니다.


발표 진행 규칙

  • 타이머를 화면에 띄웁니다. 모두에게 같은 화면 기준으로 적용됩니다
  • 발표 순서는 추첨입니다. 순서에 따른 유불리를 없애기 위한 것입니다
  • 채점은 발표 직후 마무리됩니다

주차별 진행강의

8주차 아키텍처 설계

이번 주에 남길 것 하나 — "왜 그 기술을 선택했나요?"에 답할 수 있는 문서를 갖는 것.
15주차 발표에서 반드시 나오는 질문이고, 여기서 준비되지 않으면 그때는 늦습니다.

시간활동
10분지난주 제출물 확인
40분강의 — 아키텍처, 데이터 모델, API, ADR
80분실습 — 설계 결정 워크샵
50분개인별 설계 리뷰

강의 파트 (40분)

다룰 내용

  1. 아키텍처 = 결정의 묶음 — 그림이 아니라 결정입니다
  2. 데이터 모델링 — 화면에서 역산하기, ERD
  3. API 설계 — 경계를 먼저 정해야 병렬 작업이 됩니다
  4. ADR 쓰는 법 — 대안 / 결정 / 포기한 것 / 언제 틀렸다고 알 수 있는가

핵심

① 결정에는 반드시 대가가 있습니다.

ADR에 "포기하는 것: 없음"이라고 썼다면 결정을 한 게 아니라 유일한 선택지를 받아적은 것입니다.

② 내 역량은 가장 중요한 제약입니다.
"이 언어를 써 본 적이 없다"은 부끄러운 게 아니라 핵심 설계 입력값입니다. ADR 배경에 솔직하게 씁니다.

③ AI는 대안 정리에 탁월합니다. 결정은 못 합니다.

AI에게 시킬 것: 대안 나열, 장단점 정리, 트레이드오프 비교
사람이 할 것: 우리 제약에서 무엇을 포기할지 결정

이번 주 AI 함정 — 동조 편향

이미 정한 스택을 AI에게 "이 선택 어때?"라고 물으면 대개 칭찬합니다. 정반대 선택을 제시하고 똑같이 물어도 칭찬합니다.

주의

AI는 반대하지 않습니다. 반대는 명시적으로 시켜서 받아야 합니다. → 「패턴 3. 반박 요청」


실습 파트 (80분)

진행 순서

  1. (20분) 데이터 모델 — 화면 목록에서 역산해 ERD 초안
  2. (20분) 아키텍처 결정 — 대안 3개를 놓고 토론. AI에게 반박도 요청하기
  3. (25분) ADR 3건 작성 — ADR 서식
  4. (15분) API 명세 초안 — 모듈 경계와 시그니처

ADR 필수 3건

#영역비고
1아키텍처 구조클라이언트-서버 경계, 렌더링 방식 등
2데이터 저장어떤 DB를, 왜
3가장 불확실한 것6주차 리스크 리포트에서 "미해결"로 남은 항목을 고릅니다

점검 항목

  • ADR에 대안이 2개 이상 있는가 (1개면 결정이 아님)
  • "포기한 것"이 채워져 있는가
  • "이 결정이 틀렸다는 것을 언제 알 수 있는가"가 있는가 ← 가장 많이 비워둡니다

설계 리뷰 (50분)

1인당 6분. 화면에 다이어그램을 띄우고 아래 네 질문을 받습니다.

  1. 이 화면을 그리려면 어떤 데이터가 어디서 오나요?
  2. A 모듈과 B 모듈은 무엇을 주고받죠? 그 형식이 정해졌나요?
  3. 이 결정을 내리면서 무엇을 포기했나요?
  4. 이 설계에서 가장 먼저 터질 것 같은 곳은?

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 빈 상태 안내와 추가 버튼이 보인다.

우선순위: Must · 추정: M · 의존성: US-01, US-02

세 번째 인수조건(빈 상태)이 있고 없고가 10주차 구현 결과를 가릅니다.
이 이슈 본문을 그대로 AI 프롬프트로 쓸 수 있는지가 잘 쓴 이슈의 기준입니다.

주차별 진행강의

9주차 개발 계획

이번 주에 남길 것 하나 — CI가 실제로 돌아가는 저장소를 갖는 것.
이 주가 남은 6주의 개발 속도를 결정합니다.

시간활동
10분지난주 제출물 확인
40분강의 — 백로그, DoD, 코드리뷰, CI
80분실습 — 스프린트 계획 + CI 구축
50분실습 — 첫 리뷰 연습

강의 파트 (40분)

다룰 내용

  1. 백로그 분해 — L짜리는 쪼갠다
  2. Definition of Done — 내가 정하는 "끝났다"의 기준
  3. 브랜치·변경 요청·코드리뷰 — 리뷰가 형식이 되지 않으려면 → 이번 주부터 매주 쓰는 흐름입니다. GitHub 협업 × AI 사용 가이드를 함께 읽습니다
  4. CI — 린트와 테스트 자동 실행

핵심

AI가 쓴 코드를 믿는 방법은 자동화된 검증뿐입니다.

이 문장이 9주차의 전부입니다. 이미 AI로 코드는 빠르게 만들어집니다. 문제는 그게 맞는지 확인할 방법이 없다는 것이고, 그 방법이 테스트와 CI입니다.

스토리를 쪼개는 능력 = AI를 잘 쓰는 능력임도 여기서 연결합니다.

  • "쇼핑몰 만들어줘" → AI 실패
  • 인수조건 3줄짜리 스토리 → AI 성공
  • 즉, 9주차에 배우는 분해 능력이 10주차의 구현 속도를 결정합니다

이번 주 AI 함정 — 리뷰의 형식화

관점을 안 주고 코드 리뷰를 시키면 "좋습니다" 수준의 답이 옵니다.
인수조건 충족 / 예외 처리 / 보안 / 가독성 으로 관점을 나눠 시키면 실제 지적이 나옵니다.

리뷰도 지시입니다. 지시가 부실하면 리뷰도 부실합니다.


실습 파트 (80분)

① 스프린트 계획 (30분)

스프린트 계획 서식을 채웁니다.

스프린트목표
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분)

리뷰 짝끼리 작은 변경을 하나씩 만들어 서로 리뷰합니다.

  1. 한 사람이 사소한 기능을 변경 요청으로 올립니다 (일부러 예외 처리를 빼고) (변경 요청을 쓸 수 없으면 브랜치를 만들고 리뷰 기록지를 작성)
  2. 짝이 리뷰합니다 — 먼저 AI에게 관점별 리뷰를 시킨 뒤, 그 결과를 보고 직접 판단해 코멘트
  3. 올린 사람이 수정 → 병합
  4. 역할을 바꿔 한 번 더

여기서 짚을 것: 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분)

다룰 내용

  1. 스펙 → 테스트 → 구현 순서와 그 이유
  2. 작업을 AI가 소화 가능한 크기로 쪼개기
  3. 테스트가 있는 코드와 없는 코드의 수정 비용 차이

핵심

① 인수조건을 그대로 지시에 넣습니다.

아래 사용자 스토리를 구현해줘.
[스토리 + 인수조건 그대로 붙여넣기]
구현 전에 먼저 이 인수조건을 검증하는 테스트를 작성해줘.

② 한 번의 지시는 변경 요청 하나 분량(반나절 이내). 그보다 크면 어디가 틀렸는지 못 찾고 통째로 버리게 됩니다.

③ 예외 경로는 AI가 절대 알아서 안 만듭니다. 빈 상태·에러·경계값을 인수조건에 명시하지 않으면 정상 경로만 나오고, 그게 13주차 라이브 데모에서 터집니다.

이번 주 AI 함정 — 예외 경로 누락

간단한 목록 조회를 시킨 뒤 데이터가 0건일 때 실행해 봅니다. 빈 화면·에러·깨진 레이아웃 중 하나가 나옵니다.

예외 경로는 AI가 알아서 만들지 않습니다. 인수조건에 빈 상태를 쓰지 않으면 정상 경로만 나오고,
그게 13주차 라이브 데모에서 그대로 터집니다.


실습 파트 (90분)

진행

각자 구현하고, 그 사이 코드 워크스루가 1인당 10분씩 돌아갑니다.

코드 워크스루 (1인당 10분 · 전원)

저장소를 화면에 띄우고, 임의의 한 곳을 골라 아래 네 질문을 받습니다.

  1. 이 부분은 무엇을 하나요?
  2. 이거 AI에게 어떻게 시켰어요? 한 번에 됐나요?
  3. AI가 준 것 중에 고친 부분이 있어요? 왜 고쳤죠?
  4. 이 코드가 깨질 수 있는 상황은 뭘까요?

이것이 13주차·15주차 발표에서 할 코드 설명 확인의 예행연습입니다. 10주차에 한 번 겪어두면 남은 5주 동안 설명할 수 있는 코드를 만들게 됩니다.

점검 항목

  • 테스트가 실제로 존재하고 실행되는가
  • Sprint 1 목표가 관통 경로인가, 아니면 화면만·API만인가
  • 워크스루 질문 4개에 지금 답할 수 있는가

스프린트 1 회고 (50분 중 20분)

주간 회고 서식으로 15분 안에 씁니다. 아래 순서를 지킵니다.

시간활동
3분각자 조용히 Keep/Problem 작성 (말하지 않고)
5분돌아가며 공유, 반박 금지
5분Problem 1~2개 선정 → Try 결정
2분담당자·기한 확정, 커밋

3분간 각자 조용히 쓰는 것이 핵심입니다. 바로 말로 시작하면 목소리 큰 사람 의견만 남습니다.


다음 주 과제

[11주차 수업 전까지 · Sprint 2]

1. 모듈 통합을 반드시 '시도'할 것
   - 완성이 아니어도 됩니다. 붙여보는 것이 목적입니다
   - 붙이다가 실패한 로그와 에러 메시지를 그대로 저장해 오세요
     (11주차 디버깅 클리닉에서 그걸로 수업합니다)

2. Sprint 2 이슈 진행
   - 담당자·상태를 보드에 반영

3. 주간 회고 작성

4. 개인 과제 — AI 사용 로그

마감: 수업 전날 자정
※ "아직 붙일 게 없어요"는 사유가 되지 않습니다. 지금 있는 것끼리라도 붙여보세요.

제출 형식

과제 제출 페이지에서 «통합 시도 기록» 선택 — 11주차 디버깅 클리닉에서 이 기록으로 수업합니다.

동네장터 — 통합 시도 기록

시도연결한 모듈결과증상
1약속판 화면 ↔ 조회 API실패목록은 뜨는데 지연 표시가 전부 꺼져 있음
2상태 변경 ↔ 저장 API실패400 응답

실패 로그 (전문)

POST /api/tasks/12/status 400
{"error":"invalid status","received":"in_progress","expected":["INPROGRESS","DONE","TODO"]}

기대한 동작 / 실제 동작

  • 기대: 상태가 '진행 중'으로 바뀐다 / 실제: 400 응답 후 화면이 이전 상태로 되돌아감

이미 시도해본 것

  1. 프론트에서 값을 대문자로 변환 → 다른 화면이 깨짐
  2. AI에게 "고쳐줘" 3회 → 매번 다른 코드가 나왔고 원인은 그대로

실패 로그가 성공보다 중요한 제출물입니다. 11주차 수업은 이 기록으로 진행합니다.
2번처럼 "AI에게 시켰지만 해결되지 않은 과정"도 그대로 적습니다.

주차별 진행코칭

11주차 Implementation II

이번 주에 남길 것 하나 — 내 모듈들이 하나의 앱으로 연결된 상태.
강의는 최소로, 학생이 가져온 실제 버그를 공개 해부하는 데 시간을 쓰는 주입니다.

시간활동
10분지난주 제출물 확인
20분강의 — 통합이 늦어지는 이유, 디버깅 3단
60분디버깅 클리닉 (공개 해부)
70분통합 데이 (순회 코칭)
20분통합 데모 공유

강의 파트 (20분)

다룰 내용

  1. 통합은 마지막이 아니라 지금 — 왜 항상 늦어지는가
  2. 디버깅 3단 — 재현 → 최소화 → 가설 검증
  3. AI가 못 잡는 버그를 사람이 잡는 절차

핵심

"고쳐줘"는 원인을 모른 채 넘어가게 만듭니다. 그러면 같은 버그가 형태를 바꿔 다시 옵니다.

디버깅 프롬프트에 반드시 넣을 것:

  • 에러 메시지 전문 (잘라내지 말 것)
  • 관련 코드
  • 기대한 동작 / 실제 동작
  • 이미 시도해본 것

그리고 요청은 "고쳐줘"가 아니라 "원인 가설 3개와 각각의 확인 방법".

이번 주 AI 함정 — 원인 모른 채 넘어가기

버그를 "고쳐줘"로 시키면 코드가 바뀌고 증상이 사라집니다. 그런데 왜 사라졌는지 설명하지 못하는 상태가 됩니다.

주의

그 코드는 반려 대상입니다 — 맞아도 설명하지 못하면 없는 것으로 칩니다.
"원인 가설 3개와 각각의 확인 방법" 으로 다시 시킵니다.


디버깅 클리닉 (60분)

각자 가져온 통합 실패 로그 중 3~4개를 골라 전체 앞에서 함께 해부합니다.

진행 방법

  1. (2분) 버그를 가져온 사람이 증상을 설명합니다 — 무엇을 기대했고 무엇이 일어났는지
  2. (3분) 나머지 전원이 가설을 냅니다 (이 단계에서는 검증하지 않습니다)
  3. (5분) 가설을 확인 가능한 순서로 정렬 → 가장 싼 것부터 확인
  4. (5분) 원인 확정 후, 이 버그를 다음에 미리 잡으려면 무엇이 있어야 했는지 정리

4번이 클리닉의 핵심입니다. "테스트가 있었으면" / "인터페이스를 먼저 정했으면" / "타임존을 명시했으면" 같은 답이 나오면, 그것이 남은 4주의 개선 항목이 됩니다.

자주 나오는 통합 실패 유형

유형흔한 원인
데이터 형식 불일치8주차에 API 시그니처를 안 정함
시간대·날짜 오류AI 생성 코드의 단골 실패 지점
인증·권한각자 로컬에서만 테스트함
빈 값·null인수조건에 예외 케이스가 없었음
환경 차이환경변수·설정을 문서화 안 함

통합 데이 (70분)

점검 항목

  • 오늘 안에 붙는가. 안 붙으면 무엇을 잘라야 붙는지 결정합니다
  • 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_URLDB 접속 문자열postgres://...

12주차 교차 QA에서 다른 수강생이 이 README만 보고 실행합니다. 질문은 받지 않습니다.
테스트 계정을 안 적어두면 옆 사람이 첫 화면에서 막힙니다.

주차별 진행코칭

12주차 Implementation III

이번 주에 남길 것 하나 — 외부인이 접속해서 쓸 수 있는 주소가 생기는 것.
"돌아가는 것"과 "쓸 수 있는 것"의 차이를 배우는 주입니다.

시간활동
10분지난주 제출물 확인
25분강의 — 예외처리·보안·성능 체크리스트
65분실습 — 배포
60분수강생 간 교차 QA
20분결과 공유

강의 파트 (25분)

다룰 내용

  1. 예외 처리 — 빈 상태 / 로딩 / 에러 / 권한 없음
  2. 보안 기본 — 키 노출, 입력 검증, 권한 확인
  3. 성능 — 무엇을 재고 무엇을 무시할지
  4. 배포와 환경 분리

핵심

① 저장소에 키가 올라가 있는지 지금 확인합니다.
저장소에 .env가 커밋되는 일은 드물지 않습니다. 커밋 이력에 한 번이라도 올라갔으면 키를 재발급해야 한다는 것까지 다룹니다.

② 성능은 목표치가 있어야 개선입니다.
"빠르게 만들었어요"는 측정이 아닙니다. PRD 비기능 요구사항에 적은 수치와 대조합니다.

③ AI에게 보안 점검을 요청하되, 결과를 그대로 믿지 않습니다.
AI 점검은 놓치는 것이 많고, 반대로 문제없는 것을 지적하기도 합니다. 지적 하나하나를 직접 판정합니다 — 채택인지 반려인지.

이번 주 AI 함정 — 오래된 방식

배포·보안 설정을 물어보면 몇 년 전 방식을 알려주는 경우가 흔합니다. 그 시점에는 맞았던 답입니다.

프롬프트에 버전을 명시하면 달라집니다. 그래도 마지막에는 공식 문서와 대조합니다.


배포 실습 (65분)

진행

  1. (15분) 환경변수 분리, 시크릿 설정
  2. (30분) 실제 배포 — 막히면 그 자리에서 코칭을 받습니다
  3. (20분) 배포 환경에서 핵심 경로 동작 확인

로컬에서만 되던 것이 배포하면 깨집니다. 그 경험이 이번 주의 학습 목표입니다. 미리 걱정할 필요는 없습니다. 깨진 뒤에 원인을 함께 찾습니다.

점검 항목

  • 키가 코드에 하드코딩되어 있지 않은가
  • 배포 URL에 외부 기기(휴대폰)로 접속되는가
  • 첫 화면이 뜨는 데 얼마나 걸리는가

교차 QA (60분)

둘씩 짝지어, 상대 서비스를 부숩니다.

규칙

  1. README만 보고 접속/실행 (질문 금지)
  2. 30분간 자유롭게 사용하며 문제를 찾음
  3. 발견한 것을 상대 개인 저장소에 이슈로 등록

이슈 양식

[QA] 무엇을 하려다 / 어떻게 막혔나

재현 절차:
1.
2.

기대한 동작:
실제 동작:
심각도: 상 / 중 / 하

부수는 방법 힌트

  • 빈 값, 아주 긴 문자열, 특수문자 입력
  • 로그인 없이 내부 주소 직접 접근
  • 뒤로가기·새로고침 반복
  • 데이터가 0건인 상태로 진입
  • 느린 네트워크 (개발자 도구에서 조절)

교차 QA는 13주차 발표 전에 자기 서비스의 구멍을 남의 눈으로 보는 마지막 기회입니다. 여기서 나온 이슈가 14주차 개선 백로그의 절반을 채웁니다.


다음 주 과제

[13주차 2차 발표 준비]

1. 발표자료 (10분) — 슬라이드보다 라이브 데모가 중심입니다
   필수 포함:
   - 1차 발표 피드백을 어떻게 반영했는지
   - 아키텍처와 주요 설계 결정 (ADR 1건 이상 설명)
   - 라이브 데모 (배포 환경에서)
   - 간이 사용성 테스트 결과
   - 남은 2주 계획과 리스크

2. 간이 사용성 테스트 2명
   - 실제 타깃 사용자
   - 과업을 주고 관찰만 할 것. 힌트 금지

3. 교차 QA 이슈 처리
   - 심각도 '상'은 발표 전까지 수정
   - 못 고친 것은 발표에서 정직하게 밝힐 것

4. 개인 과제 — AI 사용 로그

※ 발표 중 저장소 코드를 한 부분을 골라 설명을 요청합니다.
   설명하지 못하면 1건당 -5점입니다.

제출 형식

과제 제출 페이지에서 «사용성 테스트» 선택 — 참가자 1명당 한 건씩, 과업 2~3개로 축소해 제출합니다.

동네장터 — 간이 테스트 U1

과업완료소요도움 필요
T1 팔 물건을 등록하고 상대에게 링크를 보내 보세요성공71초☐
T2 만날 수 있는 시간 3개를 골라 보세요실패—☑

막힌 지점

시점무엇을 하려다어떻게 막혔나발언
1:40장소를 바꾸려다수락 전에는 변경이 막힘"어? 아까 보냈는데 왜 못 바꾸죠"

관찰 노트: 2분 지점부터 한숨. 작업 1개 등록 후 "나머지도 이걸 다 해야 되나요?"

과업을 목표로 줬는지 확인하세요. "+ 버튼을 누르세요"라고 하면 데이터가 나오지 않습니다.

주차별 진행발표

13주차 2차 발표

이번 주에 남길 것 하나 — 각자 남은 2주에 무엇을 해야 하는지 확정하고 나가는 것.
이번 발표는 슬라이드가 아니라 라이브 데모가 중심입니다.

시간활동
10분진행 안내, 평가지 배포
90분1인당 발표 10분 + 질의 5분 (코드 설명 포함)
60분사용성 테스트 리허설 — 다른 수강생을 참가자로
20분총평 + 최종 2주 안내

진행 방법

라이브 데모 원칙

녹화 영상 대체는 -10점입니다. 네트워크 등 불가피한 사유는 사전 허가를 받아야 합니다.

  • 배포 환경에서 시연 (로컬 시연은 감점)
  • 데모 전에 각자 노트북을 미리 연결해 화면을 확인해 둡니다
  • 데모 도중 에러가 나도 감점하지 않습니다. 어떻게 대응하는지를 봅니다

코드 설명 확인

발표가 끝나면 저장소에서 임의의 파일 한 곳을 열어 설명을 청합니다.

질문
1이 부분은 무엇을 하는 코드인가요?
2왜 이렇게 짰나요?
3AI에게 어떻게 시켰고, 무엇을 고쳤나요?
  • 발표 직후에는 1인당 1건. 나머지는 코드 설명 라운드(30분) 에서 전원에게 진행합니다
  • 설명하지 못하면 1건당 -5점

평가

  • 2차 발표 루브릭으로 교수 채점
  • 개발 프로세스 항목(20점)은 저장소를 직접 열어 채점합니다. 발표 내용보다 실제 작업 이력이 우선입니다. 택한 저장소 경로에 따라 확인 대상이 달라집니다 (커밋·변경요청·CI 또는 칸반·리뷰 기록지·검증 로그)
  • 모든 수강생은 상호 평가지 A파트를 발표를 들으며 작성합니다

미리 알아두는 감점

항목감점
발표자료 미제출-10
라이브 데모를 녹화 영상으로 대체 (사전 허가 없이)-10
코드 설명 실패 (1건당)-5
간이 사용성 테스트 2명 미실시사용자 검증 항목 감점

질의응답

#질문확인하려는 것
1이 기능을 AI에게 어떻게 시켰나요? 한 번에 됐나요?작업 분해 능력
2AI가 준 코드 중 버린 것이 있나요? 왜 버렸죠?판단의 존재
3지금 이 시스템에서 가장 먼저 터질 것 같은 곳은?자기 코드에 대한 이해
4테스트가 없는 부분은 어디이고 왜 없나요?정직성
5통합할 때 가장 오래 걸린 문제는?실제 경험
6ADR 중 하나를 골라 설명해 주세요설계 근거
7남은 2주에 못 할 것 같은 것은 무엇인가요?현실 인식

7번에 정직하게 답하면 가점을 줍니다. "다 할 수 있습니다"라고 답하는 사람이 15주차에 가장 크게 무너집니다.


코드 설명 라운드 (30분)

전원이 각자 5분씩 진행합니다.

순서진행
1저장소에서 한 부분을 무작위로 고릅니다
2그 부분을 맡은 사람이 무엇을 하는 코드인지 설명합니다
3왜 그렇게 짰는지, 다른 방법은 없었는지 답합니다
4AI가 쓴 부분이면 어디를 고쳤는지 함께 말합니다

7주차에 "다음 8주에 하겠다"고 말한 곳을 우선으로 고릅니다.
AI가 쓴 부분이라도 상관없습니다. 설명할 수 있으면 그것으로 완성입니다.


사용성 테스트 리허설 (30분)

다음 주 과제가 실사용자 5명 테스트입니다. 옆 사람을 참가자로 세워 진행을 연습합니다.

시간진행
5분과업 2개와 진행 대본을 정리합니다
20분옆 사람을 참가자로 세워 실제로 진행합니다
5분무엇이 잘못됐는지 서로 말해 줍니다

진행에서 자주 나오는 실수

실수왜 문제인가
참가자가 막혔을 때 바로 알려줌막히는 지점이 데이터인데 그걸 지웁니다
"이거 편하시죠?" 하고 물음유도 질문입니다. 그냥 하게 두고 지켜봅니다
시간을 안 잼소요 시간이 유일한 정량 지표입니다
과업을 설명으로 대신함조작하게 해야 합니다
핵심

내 프로젝트를 잘 아는 사람과 하면 다 성공합니다. 처음 보는 사람이라야 진짜 막히는 지점이 보입니다.


정리 (20분)

유형무슨 뜻인가
데모가 로컬에서만 됨배포되지 않은 것은 아직 만들어진 것이 아닙니다
코드 설명 실패설명하지 못하는 코드는 내 것이 아닙니다. 남은 2주에 정리하세요
예외 화면 없음정상 경로만 되는 것은 데모용입니다. 빈 상태와 에러를 만드세요
반려 기록이 비어 있음받은 것을 검수하지 않았다는 뜻입니다. 15주차 과정 확인에서 그대로 드러납니다

남은 2주의 구조는 이렇습니다.

  • 14주차 — 사용자 검증 (5명 테스트 결과를 가지고 오는 주)
  • 15주차 — 최종 발표

다음 주 과제

[14주차 수업 전까지]

1. ★ 실사용자 5명 사용성 테스트 (이번 주의 핵심)
   - 실제 타깃 사용자. 수강생·가족 제외
   - 과업 3~5개를 '목표'로 제시할 것. 방법을 알려주면 안 됩니다
     ❌ "우측 상단 + 버튼을 눌러 작업을 추가해 보세요"
     ✅ "상대와 만날 수 있는 시간 3개를 골라 보세요"
   - 진행 중 힌트 금지. 물어보면 "어떻게 하시면 좋을 것 같으세요?"
   - 기록: 과업별 성공/실패, 소요 시간, 막힌 지점, 사용자 발언

2. 사용 로그·오류 데이터 수집
   - 서비스에서 수집 가능한 것이 있으면 함께 정리

3. 개인 과제 — AI 사용 로그

마감: 수업 전날 자정
※ 14주차 수업은 여러분이 가져온 데이터로 진행합니다.
   데이터가 없으면 그 시간에 할 것이 없습니다.

제출 형식

과제 제출 페이지에서 «사용성 테스트» 선택 — 참가자 1명당 한 건씩 5건. 종합 분석은 14주차에 같은 서식의 아래 절에 채워 다시 제출합니다.

동네장터 — 세션 기록 U2

> 주차: 13주차 과제 · 작성일: 2026-XX-XX
> 작성: 김서연

# 사용성 테스트 U2
- 일시 / 프로필: 4학년, 이번 학기 중고 물건을 파는 사람 / 진행 방식: 대면

## 과업 결과
| 과업 | 완료 | 소요 시간 | 도움 필요 | 오류 |
|---|---|---|---|---|
| T1 거래 열기·링크 공유 | 성공 | 68초 | ☐ | 0 |
| T2 만날 시간 3개 고르기 | 실패 | — | ☑ | 2 |
| T3 답 없는 거래 확인 | 성공 | 9초 | ☐ | 0 |

## 막힌 지점
| 시점 | 무엇을 하려다 | 어떻게 막혔나 | 발언 |
|---|---|---|---|
| 3:05 | 날짜 선택 | 모바일에서 날짜 선택기가 잘림 | (화면을 계속 확대·축소) |

## 관찰 노트
- 화면을 두 번 새로고침함. 저장이 됐는지 확신하지 못함

진행 중 힌트를 주면 그 세션의 데이터는 못 씁니다. 물어보면 "어떻게 하시면 좋을 것 같으세요?"로 되돌립니다.


발표 진행 규칙

  • 배포 URL은 발표 전날 저녁에 확인합니다. 접속되지 않으면 발표 전에 알려드립니다
  • 설명을 청할 코드는 발표 중에 무작위로 고릅니다. 미리 정해두지 않습니다
  • 채점은 발표 직후 진행하며, 프로세스 항목은 저장소를 그 자리에서 열어 확인합니다
  • 데모 도중 에러가 나도 감점하지 않습니다. 어떻게 대응하는지를 봅니다
  • 데모 도중 에러가 나도 감점하지 않습니다. 어떻게 대응하는지를 봅니다

주차별 진행강의

14주차 사용자 검증

이번 주에 남길 것 하나 — 남은 1주에 할 수 있는 것만 골라내는 것.
검증 결과 전부를 고치려 들면 아무것도 못 고칩니다.

시간활동
10분지난주 제출물 확인
30분강의 — 사용성 데이터 읽는 법, 우선순위 판단
80분실습 — 데이터 분석 워크샵
60분최종 개선 백로그 확정 + 코칭

강의 파트 (30분)

다룰 내용

  1. 정량과 정성을 함께 읽기 — 성공률·시간 + 막힌 지점
  2. 심각도 판정 기준 — 상/중/하
  3. 남은 1주에 할 수 있는 것 고르기
  4. 못 고친 것을 어떻게 발표할 것인가

핵심

① 심각도 기준을 명확히.

심각도기준
상과업 완료 실패 / 데이터 손실 / 3명 이상이 겪음
중완료했으나 크게 헤맴 / 2명이 겪음
하사소한 불편 / 1명만 겪음

② 우선순위는 심각도 × 수정 난이도입니다.
심각도 '상' + 난이도 S/M 인 것이 최우선. 심각도 '상'인데 난이도 L인 것은 고치지 말고 한계로 밝히게 합니다.

③ 못 고친 것을 정직하게 밝히는 것이 감점보다 낫습니다.

최종 발표 루브릭에서 "한계를 정직하게 밝힘"은 가점 요인입니다. 숨겼다가 질의에서 드러나는 쪽이 훨씬 큰 감점입니다.

④ 5명이면 충분합니다. 사용성 문제의 대부분은 5명 안에서 드러납니다. 인원을 못 채웠더라도 분석을 소홀히 하지 않습니다.

이번 주 AI 함정 — 데이터 없이 결론 만들기

빈약한 데이터를 주고 사용성 테스트 요약을 시키면, AI는 데이터에 없는 결론까지 그럴듯하게 만들어냅니다.

"이 결론의 근거가 된 발언을 인용해줘" 라고 되물으세요. 근거가 없다는 것이 그 자리에서 드러납니다.


실습 파트 (80분)

진행 순서

  1. (20분) 정량 집계 — 과업별 성공률, 평균 소요 시간, 목표 대비
  2. (25분) 문제 목록화 — 5명 기록에서 막힌 지점을 전부 카드로. AI로 유사 항목 묶기 → 사람이 검증
  3. (20분) 심각도·난이도 판정 — 2축 매트릭스에 배치
  4. (15분) 개선 백로그 확정 — 1주 안에 할 수 있는 것만

사용성 테스트 서식의 종합 분석 부분을 채웁니다.

점검 항목

  • AI가 서로 다른 원인의 문제를 하나로 묶지 않았는가 (사람이 반드시 검증)
  • 개선 백로그가 5개를 넘지 않는가 (넘으면 1주 안에 불가능)
  • "고치지 않기로 한 것"이 기록되고 있는가

최종 개선 백로그 확정 (60분)

1인당 6~7분 코칭. 아래 네 질문으로 확정합니다.

  1. 이 중 안 고치면 최종 데모가 실패하는 것은 무엇인가요?
  2. 1주 안에 정말 끝낼 수 있나요?
  3. 안 고치기로 한 것은 발표에서 어떻게 말할 건가요?
  4. 개선하다가 지금 되는 것을 깨뜨릴 위험은 없나요?
주의

4번이 특히 중요합니다. 마지막 주에 리팩터링을 시작했다가 동작하던 데모를 깨뜨리는 일이 매 학기 나옵니다.
발표 48시간 전에 코드를 얼립니다. 그 뒤로는 고치지 않습니다.


다음 주 과제

[15주차 최종 발표 준비]

1. 최종 개선 반영 + 최종 배포
   ★ 발표 48시간 전 코드 동결. 이후에는 수정 금지
   
2. 발표자료 (15분 구성)
   - 문제와 사용자 (2분)
   - 해결 접근과 핵심 설계 결정 (2분)
   - 라이브 데모 (5분)
   - 사용자 검증 결과 5명 — 지표와 발견 (3분)
   - 한계와 향후 계획 (2분)   ← 생략하지 마세요. 배점이 큽니다
   - 회고: 15주간 무엇을 배웠는가 (1분)

3. 최종 보고서 + 시연 영상

4. 개인 제출
   - 기여 명세서 — 「내가 판단한 것 ↔ AI가 만든 것」 포함 (매주 AI 로그와 대조합니다)
   - 개인 회고
   - AI 사용 로그 전체 요약
   - 상호 평가지 (비공개)

마감: 수업 전날 자정
※ 발표 중 코드 무작위 선택 설명이 있습니다.

제출 형식

과제 제출 페이지에서 «최종 보고서» 와 «기여 명세서» 를 각각 제출합니다.

동네장터 — 기여 명세서 (개인 제출)

# 기여 명세서 — 김서연

## 내가 담당한 것
| 주차 | 무엇을 | 근거 |
|---|---|---|
| 5 | 목업 3사이클, 사용자 피드백 3명 수집 | 제출함 «리스크 리포트» 5주차 |
| 10 | US-03 조회 API + 테스트 4건 | 이슈 #14, 커밋 a1b2c3d |
| 11 | 상태 값 불일치 버그 원인 추적 | docs/integration-log.md |

## 내가 판단한 것 ↔ AI가 만든 것
| 무엇 | AI가 만든 것 | 내가 판단한 것 |
|---|---|---|
| 약속판 조회 API | 컨트롤러·쿼리·테스트 4건 초안 | 응답 구조를 서버에서 지연 판정까지 해서 내려주기로 결정. join 최적화 제안은 반려 |
| 공감지도 | 인용 분류 초안 | 「눈치」 축을 별도로 뺀 것. AI는 「불편」 하나로 묶었는데 인터뷰에서는 다른 감정이었음 |
| 시간대 버그 | 없음 (AI 제안이 원인) | 원인 추적과 경계값 테스트 설계 |

## 내가 내린 판단 (코딩이 아니라 결정)
1. 약속판 응답 구조를 서버에서 지연 판정까지 해서 내려주기로 결정.
   프론트에서 계산하면 시간대 처리가 두 곳으로 갈라지기 때문.
2. AI가 제안한 join 방식 최적화를 반려. 우리 스키마에서는 데이터 중복이 커짐.

## AI 사용 요약
- 대략 40시간 / 주로 테스트 초안과 보일러플레이트
- 반려 사례 2건: 위 2번, 그리고 UTC 기준 마감 판정(경계값에서 하루 오차)

## 개인 회고
- 가장 크게 성장한 것: 인수조건을 먼저 쓰면 AI 결과를 판정할 수 있다는 것
- 다시 한다면: 통합을 Sprint 1에서 한 번 해봤을 것

대조표와 판단 칸이 핵심입니다. "코딩을 많이 했다"가 아니라 "무엇을 왜 그렇게 정했다"가 개인 평가의 근거입니다.
여러분은 팀장이고 AI는 팀원입니다. 「AI가 만든 것」 칸이 넓은 것은 감점이 아닙니다 —
「내가 판단한 것」 칸이 비어 있는 것이 감점입니다.
매주 쓴 AI 사용 로그와 대조하므로, 로그에 없는 기여는 근거가 없습니다.

주차별 진행발표

15주차 최종 발표

이번 주에 남길 것 하나 — "AI가 준 것을 언제 믿고 언제 의심해야 하는가"에 대한 감각을 가지고 나가는 것.
결과물보다 그 감각이 이 과목의 진짜 산출물입니다.

시간활동
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 로그와 대조해서 묻습니다: "로그에 이 부분을 반려했다고 썼는데, 대신 어떻게 했나요?"

평가

  • 최종 발표 루브릭으로 채점합니다
  • 학기 내내 남은 기록(작업 이력·AI 로그·회고·리뷰)과 교차 확인합니다

미리 알아두는 감점

항목감점
최종 보고서·시연 영상·기여 명세서 미제출-15
코드 설명 실패 (1건당)-5
발표 시간 3분 이상 초과-5
확인되지 않은 인용·통계해당 항목 0점

질의응답

#질문확인하려는 것
1(코드 한 부분을 골라) 이 부분을 설명해 주세요. 누가 작성했나요?설명할 수 있는가
215주 전으로 돌아간다면 무엇을 다르게 하시겠어요?프로세스 학습
3사용성 테스트에서 가장 뼈아팠던 발견은?사용자 검증의 실재
4실제 사용자에게 내놓으면 무엇이 먼저 문제가 될까요?자기 시스템 이해
5ADR 중 하나를 골라, 지금도 그 결정이 옳았다고 보나요?설계 판단의 성숙
6AI에게 시켰다가 되돌린 것 중 가장 잘 되돌린 건 무엇인가요?팀장으로서의 판정
7이번 학기에 못 한 것은 무엇이고 왜 못 했나요?정직성
8학기 초와 지금, 본인의 지시는 어떻게 달라졌나요?팀장 역량의 변화

8번은 「AI를 판단에 썼는가」의 근거로 쓰입니다. "코딩을 많이 했어요"가 아니라 판단을 묻는 질문이라는 점이 중요합니다.


과정 확인

발표 점수에 아래 근거를 교차 확인합니다.

근거확인 방법
작업 이력저장소 (커밋·변경요청) — 시간에 걸쳐 분포했는가
AI 사용 로그매주 작성 시점 + 「반려 기록」이 매주 있는가
주간 회고매주 남겼는가
기여 명세서「내가 판단한 것 ↔ AI가 만든 것」 — 판단 칸이 비어 있지 않은가
리뷰 짝 평가남의 코드를 성실히 봐 줬는가
코드 설명 확인발표 중
조정기준
+5점리뷰를 성실히 해 다른 수강생의 결과를 실제로 바꿈
0정상
−10점작업이 막판에 몰림, 로그·회고 부실
−20점 이하본인 코드 설명 불가, 리뷰 요청 무응답
주의

한 가지 근거만으로 감점하지 않습니다. 여러 근거가 일치할 때만 조정합니다.


팀장 라운드 (30분)

6명 각자 5분씩 말하고 질의를 받습니다.
이 과목은 학생을 팀장, AI를 팀원으로 놓았습니다. 마지막 확인은 팀장으로서 무엇을 했는가입니다.

말할 것
115주 동안 내가 판단한 것 — 기여 명세서의 「내가 판단한 것 ↔ AI가 만든 것」 표를 짚으며
2내가 AI에게 맡긴 것과 반려한 것 각 1건
3학기 초와 지금, 내 지시가 어떻게 달라졌는가
참고

2번은 AI 사용 로그와 대조해 묻습니다. 로그에 적은 반려 사례를 직접 설명합니다.
3번이 이 과목의 학습 성과입니다 — "약속판 만들어줘"에서 "이 인수조건 3개를 만족하는"까지 왔는가.


마무리 (20분)

상호 총평 (10분)

옆 사람에게 한마디씩 합니다. 한 학기 내내 서로를 본 유일한 외부 시선입니다.
점수와 무관합니다 — 옆 사람에게서 배운 것 1가지, 가장 크게 달라진 지점.

학기 마무리 (10분)

정리하는 내용

  1. 잘한 사람의 공통점 — 대개 "일찍 통합한 사람"과 "정직하게 보고한 사람"입니다
  2. AI 활용의 차이 — 같은 도구를 썼는데 결과가 갈린 이유
  3. 한계를 밝힌 사람에 대한 평가 — 정직하게 밝힌 사람이 숨긴 사람보다 높은 점수를 받습니다

마지막 메시지

이 과목이 끝나고 여러분에게 남기를 바라는 것은 프롬프트 모음집이 아닙니다.

"AI가 준 것을 언제 믿고 언제 의심해야 하는가" 에 대한 감각.
그것만 남으면 이 과목은 성공입니다. 도구는 내년에 또 바뀝니다.

운영 노트1주

1주차 오리엔테이션

학생 자료: 1주차 · 오리엔테이션과 빌딩
진행에 필요한 것만 담습니다. 학생 자료와 겹치는 내용은 넣지 않습니다.


시간 운영

시간활동진행자가 할 일
25분강의 ① 과목 구조와 기준루브릭 3종을 함께 열어 읽습니다. 나눠주고 끝내면 아무도 안 봅니다
20분강의 ② AI를 팀원으로 다루는 법칠판을 지시 / 검수 / 반려 3칸으로 나눠 두고 진행
15분실습 ① 마크다운미리보기(Ctrl+K V)를 띄운 채 타이핑 시연
30분실습 ② 프로젝트 계획서순회하며 「만날 수 있는 사람」 칸만 집중 확인
20분실습 ③ 제출 경로와 도구전원 로그인 확인. 여기서 안 되면 다음 주 제출이 없습니다
70분탐색 영역 확정 + 인터뷰 설계아래 개입 기준 참조

수업 전 준비

항목비고
제출 페이지 로그인 테스트교수 계정으로 한 번. 관리자 UID가 반영돼 있는지 확인
프로젝터에서 AI 도구 로그인함정 시연을 라이브로 해야 효과가 있습니다
루브릭 3종 링크채팅/공지에 미리 올려둡니다
리뷰 짝 배정안6명 → 3쌍. 짝을 못 정한 학생이 나오면 그 자리에서 배정

진행 대본

강의 ① — 실패 4패턴을 먼저

과목 구조보다 실패 패턴을 먼저 말하는 편이 집중이 붙습니다.
지난 학기 사례가 있으면 익명화해서 한 문장씩 붙입니다.

"이 과목이 평가하는 건 아이디어가 아닙니다"를 여기서 한 번, 15주차에 한 번 더 말합니다.

AI 함정 시연 — 자신 있게 틀리기 (5분)

  1. 학과 교과목 코드나 가상의 라이브러리 함수를 하나 정해 둡니다 (실존하지 않는 것으로)
  2. 프로젝터에서 AI에게 물어봅니다
  3. 망설임 없이 그럴듯한 답이 나오는 장면을 함께 봅니다

여기서 꼭 말할 것: "확신의 강도와 정확도는 아무 관계가 없습니다."
이 문장이 15주 내내 반복되는 기준선입니다.

강의 ② — 3칸으로 진행

칠판을 세 칸으로 나누고, 학생 대답을 받아 채웁니다.

칸이렇게 유도합니다
지시"로그인 기능 만들어줘"를 먼저 적고, 무엇이 빠졌는지 학생에게 묻습니다
검수"이게 맞는지 어떻게 알죠?" — 대개 "돌려보면 안다"가 나옵니다. 거기서 경계값으로 밀어붙입니다
반려세 경우 중 ③ 설명 못 함이 이 과목의 기준임을 강조

학생들은 ①②는 쉽게 받아들이고 ③에서 멈칫합니다. 거기가 이 강의의 목적입니다.


탐색 영역 확정 — 개입 기준

상황개입
후보가 이미 해결책"그럼 그걸 쓰는 사람은 지금 뭘 하고 있죠?"로 되돌립니다
"대학생이요"연락처를 아는 사람 이름이 나올 때까지 밀어붙입니다
3명이 안 채워짐2순위로 즉시 전환. 여기서 봐주면 다음 주가 통째로 빕니다
두 학생이 같은 영역그대로 둡니다. 만나는 사람이 다르면 결과가 다릅니다
주의

이 워크샵을 2주차로 미루면 안 됩니다. 인터뷰를 해 올 시간이 없어져 2주차가 통째로 빕니다.


실습 중에 볼 것

  • 프로젝트 계획서 「만날 수 있는 사람」 — 여기만 보면 다음 주 진행 여부를 알 수 있습니다
  • 「AI 사용 기준」의 반려 칸 — 세 번째(설명 못 함)를 안 적은 학생에게 그 자리에서 묻습니다
  • 저장소 경로 A/B 선택 — 계정을 못 만드는 학생은 오늘 B로 확정합니다

이번 주 위험 신호

신호대응
리뷰 짝을 정하지 못한 경우교수가 배정합니다. 짝이 없으면 리뷰 흔적이 남지 않습니다
"주제부터 정하자"이번 주에는 주제를 정하지 않습니다. 지금 정하면 4주 뒤 인터뷰 데이터와 충돌합니다
저장소를 안 만든 경우수업 끝나기 전에 확인. 다음 주 제출 경로가 없습니다
목표 수준을 전원 B로 고름정상입니다. 다만 왜를 안 적었으면 그 자리에서 쓰게 합니다

기록해 둘 것

항목용도
학생별 탐색 영역3주차 문제 정의와 대조
저장소 경로 A/B13·15주차 프로세스 채점 시 확인 대상이 달라집니다
리뷰 짝 배정9주차부터 격주로 교체
녹음 동의 안내 여부인터뷰 과제 전에 반드시 공지했는지

운영 노트2주

2주차 Empathize

학생 자료: 2주차 · Empathize — 사용자 관찰
진행에 필요한 것만 담습니다. 학생 자료와 겹치는 내용은 넣지 않습니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인전사록 3건 + 관찰 노트. 아래 표대로 처리
30분강의2주차 시연 자료로 한 번 보여주고 넘어갑니다
80분공감지도 워크샵카드보드를 띄워두고 순회
60분교차 리뷰 + 코칭두 질문만 반복하게 합니다

수업 전 확인

확인 항목미달 시
전사록 3건이 제출됐는가수업 첫 30분 동안 그것부터 정리 (워크샵 참여 불가)
인터뷰 대상자가 실제 타깃인가친구·수강생 인터뷰라면 이번 주 안에 다시 실시
관찰 노트가 있는가없으면 전사록만으로 진행하되, 다음 인터뷰에서 필수임을 안내
녹음 파일이 함께 올라왔는가인상적인 발언 검수에 필요합니다

진행 대본

강의 — 칠판에 두 문장

요약     : 사용자는 앱이 복잡해서 불편해한다
인사이트 : 복잡해서가 아니라 실수를 되돌릴 방법이 없어서 신중해지고, 결국 포기한다

두 문장을 나란히 적어두고 차이를 학생에게 먼저 말하게 합니다.
"구체적이다" 정도가 나오면, 긴장(tension) 이라는 단어를 주고 다시 묻습니다.

시연 자료의 인사이트 10개 중 3~4개만 골라 보여줍니다. 전부 읽으면 30분을 넘깁니다.

AI 함정 시연 — 한국어 뉘앙스 오독 (5분)

  1. 제출된 전사록에서 반어법·완곡어법·체념이 섞인 대목을 미리 하나 골라 둡니다
  2. AI에게 그 대목의 감정 분류를 시킵니다
  3. "괜찮아요 뭐, 그냥 제가 하면 되니까" 류가 긍정으로 분류되는 장면을 보여줍니다

이어서 말할 것: 분류는 시켜도 되지만 감정 칸의 판정은 직접 해야 한다는 것.
이 시연이 공감지도 실습으로 바로 이어집니다.


실습 중에 볼 것

볼 것개입
카드가 24장이 안 나옴전사록을 겉핥기로 읽은 것입니다. 다시 읽게 합니다
그룹 이름이 "불편", "문제"라벨이 아니라 분류입니다. 동사가 들어간 이름으로 바꾸게 합니다
AI 그룹핑을 그대로 채택비교가 목적입니다. 다른 지점 하나는 반드시 찾게 합니다
"놀라운가?" 체크가 3개 미만인사이트가 아니라 요약을 쓰고 있습니다

카드보드는 제출 페이지 «공감지도» 화면에서 열립니다.
「내 제출물에서 카드 붙이기」를 쓰면 전사 작업을 다시 하지 않아도 됩니다 — 첫 5분에 안내하세요.


교차 리뷰 — 두 질문만

듣는 사람이 딴 얘기를 시작하면 바로 되돌립니다. 두 질문 외에는 하지 않습니다.

  1. "그 인사이트의 근거가 어느 발언이에요?"
  2. "그건 인터뷰 전에도 예상했던 거 아니에요?"

2번에서 막히는 학생이 절반 이상이면, 다음 주 강의 앞부분에 인사이트를 5분 더 붙입니다.


이번 주 위험 신호

신호대응
인사이트가 전부 "불편하다" 계열인터뷰 질문이 해결책을 물었을 가능성. 스크립트를 다시 봅니다
이미 만들 것을 정해놓음1주차에 정한 것은 탐색 영역이지 주제가 아닙니다. 주제는 4주차입니다
인터뷰 대상이 전부 지인3주차까지 실제 타깃 2명 추가
AI 전사 결과를 검수 없이 붙여넣음인용으로 쓸 구간만이라도 원본과 대조하게 합니다

운영 노트3주

3주차 Define

학생 자료: 3주차 · Define — 문제 정의와 요구사항
진행에 필요한 것만 담습니다. 학생 자료와 겹치는 내용은 넣지 않습니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인후보가 '문제'인지 '아이디어'인지만 봅니다
40분강의3주차 시연 자료의 POV 3회 수정 과정을 그대로 보여줍니다
80분실습AI 반박 실습(마지막 20분)을 반드시 남깁니다
50분개인별 코칭1인당 6~7분. 네 질문 고정

수업 전 확인

확인 항목미달 시
문제 정의 후보 3개가 등록됐는가미제출자는 수업 첫 20분에 작성. 그만큼 코칭 시간을 잃습니다
후보가 '문제'인가 '아이디어'인가아이디어면 첫 20분에 다시 씁니다
인터뷰 보완 2건안 했으면 근거가 3명뿐입니다. 4주차 심사에서 걸립니다

진행 대본

강의 — POV를 세 번 고쳐 씁니다

시연 자료의 POV 1차 → 2차 → 3차를 한 화면에 나란히 띄워두고 진행합니다.
무엇이 달라졌는지 학생에게 먼저 말하게 하는 편이 빠릅니다.

해결책 단어(앱·플랫폼·AI·자동화)를 지우는 시범을 실제 학생 후보 하나로 해봅니다.
지우고 나서 문장이 성립하지 않으면, 그건 문제가 아니라 아이디어였다는 뜻입니다.

AI 함정 시연 — 일반론으로 도피 (5분)

  1. 인터뷰 데이터 없이 PRD를 시킵니다 → 어느 프로젝트에 붙여도 되는 문서가 나옵니다
  2. 같은 지시에 학생 인터뷰 인용 3개를 붙여 다시 시킵니다
  3. 두 결과를 나란히 놓습니다

여기서 「패턴 1. 맥락 먼저」로 연결합니다. 지시가 결과를 결정한다는 1주차 강의의 재확인입니다.


실습 중에 볼 것

볼 것개입
후보 3개가 사실상 같은 것2주차 인사이트로 되돌립니다
POV의 사용자가 "대학생"인터뷰한 3명의 공통 상황으로 좁히게 합니다
PRD를 AI 초안 그대로§2 배경을 그 자리에서 지우고 다시 쓰게 합니다
AI 반박 실습을 건너뜀이번 주 필수 항목입니다. 시간이 없으면 PRD를 줄이고 이걸 합니다

반박 실습에서 반려한 것 1개를 못 적는 학생이 많으면, 다음 주에 「패턴 3. 반박 요청」을 5분 다시 다룹니다.


개인별 코칭 — 네 질문

학생 자료에 공개돼 있으므로 준비해 옵니다. 답의 질을 봅니다.

질문이런 답이면 통과이런 답이면 개입
몇 명 만났나이름·상황을 말함"여러 명이요"
이 문제를 안 겪는 사람은조건을 말함"없어요" ← 문제가 너무 넓음
지금은 어떻게 버티나구체적 우회 행동"그냥 참아요" ← 관찰이 부족
무엇이 관찰되면 성공인가수치나 횟수"많은 사람이 좋아하면"

마지막 답이 막연하면 그 자리에서 관찰 가능한 형태로 다시 쓰게 합니다.
여기를 넘기면 14주차 사용자 검증에서 잴 것이 없습니다.


이번 주 위험 신호

신호대응
POV에 해결책이 계속 들어감문제를 이미 정해놓고 역산 중입니다. 인사이트로 되돌립니다
사용자가 "전 국민" 급인터뷰한 3명의 공통점으로 좁힙니다
PRD를 AI 초안 그대로 제출그 자리에서 §2를 지우고 다시 쓰게 합니다
반박을 전부 수용판정하지 않은 것입니다. 반려할 것 하나를 찾게 합니다

운영 노트4주

4주차 Ideate · 주제확정

학생 자료: 4주차 · Ideate — 발산·수렴과 주제 확정
이번 주는 게이트입니다. 통과하지 못하면 5주차로 넘기지 않습니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인조사표 URL을 무작위로 몇 개 열어봅니다
30분강의함정 시연이 곧 출처 검증 교육입니다
60분발산·수렴 워크샵2×2 매트릭스를 칠판에 미리 그려둡니다
60분주제 확정 심사 (1인당 10분)판정을 그 자리에서 말합니다
20분교차 검토시간이 짧습니다. 타이머 필수

수업 전 확인

확인 항목미달 시
아이디어 30개가 모였는가부족하면 워크샵 시작 전 20분간 채웁니다
선행사례 조사표 5건에 URL이 있는가URL 없는 항목은 그 자리에서 삭제. 이것이 출처 검증 교육입니다
필요 기술 리스트업없으면 심사 4번 질문에 답을 못 합니다
참고

조사표 URL을 공개적으로 여는 것이 이번 주의 숨은 목적입니다.
열리지 않는 링크가 나오는 일은 드물지 않고, 한 번 겪으면 남은 학기 인용 사고가 크게 줄어듭니다.


진행 대본

AI 함정 시연 — 없는 출처 만들기 (5분)

  1. AI에게 "이 분야 관련 논문 3편과 링크"를 요청합니다
  2. 나온 링크를 강의 화면에서 실제로 클릭합니다
  3. 열리지 않는 링크가 나오는 순간을 함께 봅니다

학생 조사표에서 실제로 안 열린 링크가 나왔다면 그걸 쓰는 편이 훨씬 낫습니다.
남의 사례가 아니라 자기 제출물이기 때문입니다.

발산·수렴 — 흔한 실패

"발산은 AI, 수렴은 사람." 이 문장을 칠판에 남겨둡니다.

첫 아이디어를 그대로 가져가는 학생이 매 학기 나옵니다.
탈락 대안을 설명하지 못하면 선택이 아니라 관성이라는 말을 여기서 한 번 합니다.


주제 확정 심사 — 판정 기준

판정기준조치
승인사용자 근거 있음 + 스코프 현실적 + 탈락 근거 설명 가능5주차 진행
조건부 승인방향은 맞으나 스코프 과대이번 주 안에 축소안 제출
보류근거 없음 또는 해결책부터 시작이번 주 내 재심사. 필요하면 3주차로 되돌립니다

보류는 벌이 아니라 보호입니다. 여기서 넘긴 문제는 13주차에 훨씬 큰 비용으로 돌아옵니다.
판정을 미루지 마세요. 그 자리에서 말해야 이번 주 안에 고칩니다.

질문 고르는 요령

학생 자료에 6개가 공개돼 있습니다. 1인당 3~4개를 고릅니다.

이런 학생에게는이 질문
근거가 얇아 보임1 (몇 명 만났나) · 3 (선행 조사)
스코프가 커 보임4 (가장 어려운 부분) · 5 (하지 않을 것)
첫 아이디어로 직행한 듯2 (탈락시킨 것)
전반적으로 탄탄함6 (성공 지표) 하나로 충분

이번 주 위험 신호

신호대응
후보 3개가 사실상 같은 것발산이 부족합니다. 다른 축(사용자·시점·채널)으로 다시 뽑게 합니다
스코프가 스타트업 수준조건부 승인 후 축소안 제출
조사표 URL이 안 열림공개적으로 확인하고 해당 항목을 다시 조사
심사에서 전원 승인이 나옴기준이 느슨했을 가능성. 5번(하지 않을 것)을 다시 물어봅니다

기록해 둘 것

항목용도
학생별 판정 (승인/조건부/보류)조건부·보류는 이번 주 내 재확인
확정 주제 한 줄7·13·15주차 발표에서 초기 방향과 대조
「하지 않을 것」 3가지12주차에 스코프가 늘어나면 여기로 되돌립니다

운영 노트5주

5주차 Prototyping I

학생 자료: 5주차 · Prototyping I — UX 프로토타입
진행에 필요한 것만 담습니다. 학생 자료와 겹치는 내용은 넣지 않습니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인화면 목록 개수만 봐도 스코프가 보입니다
30분강의빈 상태 3종(0건·로딩·에러)을 반드시 강조
80분목업 3사이클1사이클은 종이. 도구를 꺼내면 바로 제지합니다
60분상호 시연만든 사람이 입을 열면 바로 끊습니다

수업 전 확인

확인 항목미달 시
사용자 플로우 초안없으면 목업을 만들 수 없습니다. 첫 30분에 그립니다
화면 목록화면이 10개를 넘으면 스코프 경고
참고 서비스 분석 3건캡처 없이 "좋았다"만 있으면 미제출 처리

진행 대본

강의 — 빈 상태를 걸고 넘어갑니다

"가장 자주 빠뜨리는 세 화면이 13주차 라이브 데모에서 정확히 터집니다."

이 문장을 5주차에 한 번, 10주차에 한 번, 12주차에 한 번 반복합니다.
매 학기 여기서 안 그린 학생이 13주차에 그 화면에서 막힙니다.

AI 함정 시연 — 맥락 유실 (5분)

  1. 목업을 AI와 5~6턴 이어서 고칩니다
  2. 앞에서 정한 제약(사용자·화면 개수·톤)을 슬며시 잊고 다른 것을 만들어내는 지점이 옵니다
  3. 새 대화를 열고 맥락을 다시 넣으면 회복되는 것을 보여줍니다

학생들은 "대화를 이어가는 게 이득"이라고 생각합니다. 그 반대라는 것이 이 시연의 요점입니다.


실습 중에 볼 것

볼 것개입
1사이클에 도구를 꺼냄바로 제지합니다. 도구를 잡으면 흐름을 안 보고 화면을 예쁘게 만듭니다
핵심 경로가 6화면 이상문제 정의가 넓은 것입니다. 3주차 POV로 되돌립니다
빈 상태 화면이 없음그 자리에서 3장을 더 그리게 합니다
목업이 3주차 시나리오와 다름어느 쪽이 맞는지 정하고 문서를 고치게 합니다

상호 시연 — 진행 규칙

이 시간의 학습은 "설명하고 싶은데 설명할 수 없는" 경험입니다. 그래서 규칙이 전부입니다.

  • 만든 사람이 한 마디라도 하면 즉시 끊습니다
  • 조작하는 사람이 막히면 도와주지 않습니다. 기록만 하게 합니다
  • 3분 뒤 역할 교대

13~14주차 사용성 테스트의 축소판입니다. 여기서 규칙을 느슨하게 하면 14주차 데이터도 느슨해집니다.


이번 주 위험 신호

신호대응
화면이 15개 넘음스코프 과대. Must 기능을 다시 줄입니다
목업이 예쁘기만 하고 흐름이 없음종이로 되돌립니다
기술 리스크를 "없다"고 함가장 위험한 학생입니다. 무엇을 아직 안 해봤는지 확인합니다

다음 주를 위해

주의

6주차 사전 과제의 「개발 환경 세팅」이 이번 주의 진짜 숙제입니다.
세팅을 안 해오면 6주차 집중 코딩 100분이 통째로 날아갑니다.
수업 마지막에 한 번 더 구두로 공지하고, 완료 스크린샷 제출을 확인하세요.

운영 노트6주

6주차 Prototyping II

학생 자료: 6주차 · Prototyping II — 기술 검증(PoC)
강의는 짧게, 순회 코칭에 시간을 쓰는 주입니다.


시간 운영

시간활동진행자가 할 일
15분사전 확인 + 목표 선언선언문이 없으면 3시간 뒤에 남는 게 없습니다
25분강의짧게 끝냅니다. 오늘의 자산은 코딩 시간입니다
100분집중 코딩1인당 10~12분씩 2회전 순회
40분결과 공유실패도 공유하게 합니다

수업 전 확인

확인 항목미달 시
개발 환경 세팅 완료미완료자는 수업 첫 30분간 세팅만. 코칭 시간을 그만큼 잃습니다
기술 리스크 2개 선정없으면 순회 첫 순서로 잡아 함께 찾습니다
목업 사용자 피드백 3건감상만 있고 막힌 지점이 없으면 되돌립니다

진행 대본

목표 선언 (5분)

각자 수업 채널에 한 줄씩 올리게 하고, 화면에 띄워둔 채로 수업을 진행합니다.

오늘 나는 [___]가 가능한지 확인한다.
성공 기준: [___]가 화면/로그에 나오면 성공.

선언이 모호한 학생은 그 자리에서 고치게 합니다.
"API 연동해본다"는 선언이 아닙니다. 무엇이 화면에 나오면 성공인지가 있어야 합니다.

AI 함정 시연 — 없는 함수 만들기 (5분)

  1. 학생들이 실제로 쓰는 라이브러리를 하나 고릅니다
  2. AI에게 구체적인 사용법(메서드명·옵션)을 묻습니다
  3. 공식 문서를 나란히 띄워 대조합니다

존재하지 않는 메서드를 자신 있게 알려주는 경우가 흔합니다. 처음 쓰는 라이브러리일수록 그렇습니다.


순회 코칭 — 2회전

1회전 (방향 점검) · 1인당 10분

묻는 것이런 답이면 개입
지금 만드는 게 리스크 검증인가, 편한 기능인가?CRUD를 만들고 있으면 즉시 전환
성공 기준이 관찰 가능한가?"잘 되면요" ← 선언문으로 되돌립니다

2회전 (막힘 해소) · 1인당 12분

볼 것개입
같은 화면을 계속 보고 있음2시간 규칙 위반 신호입니다. 먼저 말을 겁니다
프롬프트를 직접 보여달라고 합니다막히는 경우는 대개 맥락이 빠져 있습니다
"고쳐줘"만 반복「원인 가설 3개」 형태로 그 자리에서 다시 시키게 합니다

프롬프트를 보여달라는 요청이 이 시간의 핵심 도구입니다.
코드를 보면 결과만 보이지만, 프롬프트를 보면 지시의 질이 보입니다.


결과 공유 — 실패를 먼저

"안 된다는 것을 알아낸 것"도 성과입니다.

이것을 교수가 먼저 말해야 학생이 실패를 보고합니다.
여기서 실패 보고가 나오면 13주차까지 정직한 보고가 이어지고, 여기서 안 나오면 끝까지 안 나옵니다.

가능하면 실패한 스파이크를 먼저 발표시키세요. 순서가 분위기를 만듭니다.


이번 주 위험 신호

신호대응
리스크가 아니라 쉬운 CRUD를 만들고 있음즉시 방향 전환
PoC가 "돌아간다"는데 실행을 못 보여줌그 자리에서 실행해 봅니다
세팅이 아직 안 끝난 학생이번 주 안에 별도 확인. 다음 주 발표 준비가 밀립니다
2시간 규칙을 아무도 안 씀다음 주 공지에 다시 넣습니다

다음 주를 위해

7주차는 1차 발표입니다. 리허설 영상 제출을 강조하세요 —
영상을 안 낸 학생은 거의 예외 없이 시간을 초과합니다.

운영 노트7주

7주차 1차 발표

학생 자료: 7주차 · 1차 발표
발표는 심사가 아니라 방향 교정입니다. 이 톤을 유지하세요.


시간 운영

시간활동진행자가 할 일
10분진행 안내, 평가지 배포발표 순서를 그 자리에서 추첨
90분1인당 발표 10분 + 질의 5분타이머를 화면에 띄웁니다
60분교차 리뷰20 / 25 / 15분으로 끊어줍니다
20분총평 + 다음 단계이름 없이 유형으로만

6명 개별 발표이므로 별도 개인 라운드를 두지 않습니다. 발표 자체가 개인 단위 확인입니다.


수업 전 확인

확인 항목미달 시
발표자료 제출-10점
리허설 영상 제출-10점. 영상 없으면 대개 시간을 초과합니다
프로토타입이 열리는가발표 전에 미리 확인. 발표 중에 확인하면 시간을 다 씁니다

진행 규칙

질의 순서를 지킵니다

주의

동료 질문을 먼저. 교수가 먼저 물으면 그 뒤로는 아무도 손을 들지 않습니다.

  1. 발표 10분 (8분에 1차 알림)
  2. 동료 질문 2분
  3. 교수 질문 3분

발표자를 제외한 5명은 질문 1개씩을 준비해 옵니다. 준비를 안 해온 학생이 있으면 그 자리에서 지목합니다.

채점

  • 1차 발표 루브릭으로 채점 — 발표 직후 마무리합니다. 몰아서 하면 뒤 순서가 유리해집니다
  • 상호 평가지는 평가자 이름을 지우고 발표자에게 전달
  • "수고하셨습니다"만 적힌 평가지는 미제출 처리

질문 고르는 요령

학생 자료에 7개가 공개돼 있습니다. 1인당 2~3개.

이런 발표에는이 질문
인용이 한 줄도 없음1 (예상을 깬 사람)
문제 경계가 흐림2 (안 겪는 사람)
첫 아이디어로 직행3 (탈락시킨 것)
"어려운 건 없다"고 함5 (확신 없는 부분)
지표가 막연함6 (무엇이 관찰되면 성공)

7번(AI가 준 것 중 반려한 것)은 매 발표마다 최소 한 사람에게 묻습니다.
이 과목의 시그니처 질문이고, 답을 못 하는 학생이 많으면 다음 주에 「패턴 3. 반박 요청」을 5분 다시 다룹니다.


총평 — 이름 없이 유형으로

매 학기 반복되는 넷입니다. 해당 학생을 지목하지 않고 전체를 향해 말합니다.

유형이렇게 말합니다
근거 없는 문제 정의"사용자를 만났다고 했는데 발표에 인용이 한 줄도 없는 경우가 있었습니다"
스코프 과대"8주 남았습니다. 지금 발표한 기능 전부는 못 만듭니다"
해결책부터 시작"문제가 아니라 만들 것부터 정했다면, 지금이 마지막 수정 기회입니다"
리스크 미인식"'어려운 건 없다'고 답한 쪽이 가장 위험합니다"

기록해 둘 것

항목용도
7번 질문에 답한 내용13·15주차에 같은 질문을 다시 던져 변화를 봅니다
학생별 스코프 경고 여부9주차 Must 개수 조정의 근거
교차 리뷰에서 수용/반려한 것8주차 피드백 반영 계획서와 대조

운영 노트8주

8주차 아키텍처 설계

학생 자료: 8주차 · 아키텍처 설계
진행에 필요한 것만 담습니다. 학생 자료와 겹치는 내용은 넣지 않습니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인피드백 반영 계획서에 반려 항목이 있는지만 봅니다
40분강의함정 시연(동조 편향)이 이번 주 핵심
80분설계 결정 워크샵ADR 3건. 「포기한 것」 칸을 집중 확인
50분개인별 설계 리뷰1인당 6분. 2번 질문이 관건

수업 전 확인

확인 항목미달 시
아키텍처 대안 3개 조사없으면 워크샵 전반부를 조사로 소모합니다
데이터 항목 전수 목록ERD를 그릴 재료가 없습니다. 첫 20분에 뽑습니다
피드백 반영 계획서수용만 있고 반려가 없으면 되돌립니다

진행 대본

AI 함정 시연 — 동조 편향 (7분)

이번 주에서 가장 효과가 큰 시연입니다. 반드시 라이브로 하세요.

  1. 어떤 학생이 이미 정한 스택을 골라 AI에게 "이 선택 어때?"라고 묻습니다 → 칭찬합니다
  2. 같은 화면에서 정반대 선택을 제시하고 똑같이 묻습니다 → 그것도 칭찬합니다
  3. 마지막으로 "이 선택의 가장 큰 약점 3가지"를 시킵니다 → 이제야 쓸모 있는 답이 나옵니다

1주차 강의 ②의 「AI는 반대하지 않는다」가 여기서 증명됩니다.
반대는 명시적으로 시켜서 받아야 한다 — 「패턴 3. 반박 요청」으로 연결합니다.

강의 — 결정에는 대가가 있습니다

ADR에 "포기하는 것: 없음"이라고 썼다면, 결정을 한 게 아니라 유일한 선택지를 받아적은 것입니다.

내 역량이 제약이라는 점도 여기서 짚습니다.
"이 언어를 써 본 적이 없다"를 ADR 배경에 쓰는 것은 부끄러운 일이 아니라 설계 입력값입니다.


실습 중에 볼 것

볼 것개입
ADR에 대안이 1개결정이 아닙니다. 최소 2개를 만들게 합니다
「포기한 것」이 비어 있음가장 흔합니다. 그 자리에서 채우게 합니다
「언제 틀렸다고 알 수 있는가」가 비어 있음두 번째로 흔합니다. 관찰 가능한 신호로 쓰게 합니다
ADR 3번이 리스크와 무관6주차 리스크 리포트에서 "미해결"로 남은 항목을 고르게 합니다

개인별 설계 리뷰 — 2번이 관건

질문 4개는 학생 자료에 공개돼 있습니다. 그중 2번만 특별히 다룹니다.

"A 모듈과 B 모듈은 무엇을 주고받죠? 그 형식이 정해졌나요?"

여기서 막히면 11주차 통합에서 반드시 터집니다.
답이 막히는 학생은 그 자리에서 인터페이스를 종이에 적게 하고 넘어갑니다. 5분이면 됩니다.


이번 주 위험 신호

신호대응
"AI가 추천해서" 스택 결정내 제약에서 왜 맞는지 쓰게 합니다
다이어그램은 예쁜데 데이터 흐름을 설명 못 함그림이 아니라 결정을 쓰게 합니다
모듈 경계 없이 "일단 만들면서 맞추자"11주차 통합 실패의 표준 경로입니다. 지금 시그니처를 정하게 합니다
설계를 전부 AI에게 맡김「내가 판단한 것」이 무엇인지 그 자리에서 묻습니다

다음 주를 위해

9주차에 CI를 구축합니다. 저장소가 비어 있으면 진행할 수 없습니다.
백로그 이슈 등록(15개 내외)과 브랜치 보호 설정을 수업 마지막에 다시 공지하세요.

경로 B 학생에게는 저장소 운영 방식 가이드의 리뷰 기록지를 미리 안내합니다.

운영 노트9주

9주차 개발 계획

학생 자료: 9주차 · 개발 계획과 협업 체계
이 주가 남은 6주의 개발 속도를 결정합니다. 자동 검증을 오늘 안에 돌리는 것이 유일한 목표입니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인인수조건에 예외·빈 상태가 있는지만 봅니다
40분강의한 문장으로 끝냅니다 (아래)
80분스프린트 계획 + 자동 검증 구축35분을 검증 구축에 확보합니다
50분첫 리뷰 연습리뷰 짝끼리 양방향으로

수업 전 확인

확인 항목미달 시
이슈 15개 내외 등록이슈가 없으면 스프린트 계획을 세울 수 없습니다
인수조건에 예외·빈 상태가 있는가없으면 10주차 구현이 정상 경로만 나옵니다. 지금 채웁니다
통합 브랜치 보호(또는 직접 병합 금지 규칙)이번 주 안에 필수

진행 대본

강의 — 한 문장이 전부입니다

"AI가 쓴 코드를 믿는 방법은 자동화된 검증뿐입니다."

이 문장을 칠판에 적고 시작합니다. 나머지는 이 문장의 각주입니다.

이어서 1주차 프레임과 연결합니다 —
지시(스토리 분해) → 검수(테스트·CI) → 반려(리뷰) 가 이번 주에 도구로 구현되는 것입니다.

지시가 이렇게 되면결과
"쇼핑몰 만들어줘"실패
인수조건 3줄짜리 스토리성공

즉 9주차에 배우는 분해 능력이 10주차의 구현 속도를 결정합니다.

AI 함정 시연 — 리뷰의 형식화 (5분)

  1. 같은 코드에 대해 관점 없이 리뷰를 시킵니다 → "좋습니다" 수준
  2. 인수조건 충족 / 예외 처리 / 보안 / 가독성 으로 나눠 시킵니다 → 실제 지적이 나옵니다

요점: 리뷰도 지시다. 지시가 부실하면 리뷰도 부실합니다.


자동 검증 구축 — 오늘의 목표

주의

오늘 안에 초록불 한 번을 보게 하는 것이 목표입니다.
여기서 못 세우면 남은 6주 동안 아무도 안 씁니다.

경로오늘 끝내야 할 것
A (GitHub)린트+테스트 자동 실행, 실패 시 병합 불가 설정, 초록불 1회
B (Drive + 로컬 Git)scripts/check 작성, 병합 전 실행을 DoD에 명시, 결과를 리뷰 기록지에 붙이는 것까지 연습

경로 B는 CI가 강제하던 것을 규칙이 대신하는 것입니다. 배우는 내용은 같습니다.
다만 사람은 잊으므로 DoD 체크리스트에 반드시 들어가야 합니다.

Sprint 1 분업 함정

주의

화면을 다 만든 뒤 API를 붙이려는 계획이 나오면 즉시 교정합니다.
얇더라도 관통하는 경로 하나를 먼저 뚫어야 합니다. 이것이 통합 실패의 1순위 원인입니다.


리뷰 연습 — 진행

리뷰 짝끼리 양방향으로 한 번씩. 일부러 예외 처리를 빼고 올리게 하는 것이 핵심입니다.

여기서 반드시 짚을 것:

AI 리뷰는 사람 리뷰를 대체하지 않습니다.
사람 리뷰어가 사소한 것에 시간 쓰지 않게 해주는 1차 필터입니다.
같은 모델이 쓴 코드를 같은 모델이 리뷰하면 같은 오해가 두 번 통과합니다.


이번 주 위험 신호

신호대응
자동 검증이 없는 채로 수업 종료이번 주 안에 별도 확인. 방치하면 끝까지 안 씁니다
경로 B인데 리뷰 기록지를 안 씀리뷰 흔적이 없으면 프로세스 항목을 채점할 근거가 사라집니다
Sprint 1을 레이어별로 분업즉시 교정
Must 이슈가 8개 이상스코프 재조정. 12주차에 절반이 미완성으로 남습니다
DoD에 "설명할 수 있음"을 뺌이 과목의 평가 기준을 아직 이해 못 한 것입니다

기록해 둘 것

항목용도
학생별 자동 검증 구축 여부13·15주차 프로세스 채점의 출발점
Must 이슈 개수12주차 미완성 예측에 그대로 들어맞습니다
리뷰 짝 배정 (이번 주부터 격주 교체)상호 평가지 B파트의 근거

운영 노트10주

10주차 Implementation I

학생 자료: 10주차 · Implementation I — 스펙에서 테스트로
이번 주의 핵심 도구는 코드 워크스루입니다. 13·15주차 코드 설명 확인의 예행연습입니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인변경 요청 1건이 병합됐는지
30분강의함정 시연(예외 경로 누락)이 실습으로 바로 이어집니다
90분구현 + 코드 워크스루1인당 10분씩 6명 전원
50분막힘 해소 + 스프린트 1 회고회고는 20분. 순서를 지킵니다

수업 전 확인

확인 항목미달 시
변경 요청 1건 이상 병합미달자는 순회 1순위
자동 검증이 초록불인가빨간불 방치는 곧 검증을 안 보게 된다는 신호입니다
이슈 보드가 갱신됐는가상태가 2주 전 그대로면 작업이 멈춘 것입니다

진행 대본

AI 함정 시연 — 예외 경로 누락 (5분)

  1. 간단한 목록 조회 기능을 AI에게 만들게 합니다
  2. 데이터가 0건일 때 실행합니다 → 빈 화면·에러·깨진 레이아웃 중 하나가 나옵니다
  3. 인수조건에 빈 상태를 넣고 다시 시켜 차이를 보여줍니다

5주차에 했던 말을 여기서 반복합니다 — 13주차 라이브 데모에서 정확히 이 지점이 터집니다.


코드 워크스루 — 이번 주의 핵심

1인당 10분씩, 6명이면 90분 안에 전원을 한 번 봅니다.
저장소를 화면에 띄우고 임의의 한 곳을 골라 묻습니다. 질문 4개는 학생 자료에 공개돼 있습니다.

답을 듣고 볼 것판단
1번(무엇을 하나)에서 막힘설명 못 하는 코드입니다. 그 자리에서 AI에게 설명을 시켜 읽게 하고, 이해될 때까지 병합 금지
2번(어떻게 시켰나)에 프롬프트가 없음지시가 없었다는 뜻. 인수조건을 붙이는 법을 다시 보여줍니다
3번(무엇을 고쳤나)에 "그대로 썼어요"반려 기록이 비어 있을 가능성. AI 사용 로그를 함께 엽니다
4번(깨질 수 있는 상황)에 "없어요"경계값을 한 개 제시해 그 자리에서 깨뜨려 봅니다

10주차에 한 번 겪어두면 남은 5주 동안 설명할 수 있는 코드를 만들게 됩니다.
반대로 여기서 넘어가면 13주차에 -5점이 쌓입니다.


실습 중에 볼 것

  • 테스트가 실제로 실행되는가 (파일만 있고 안 돌아가는 경우가 흔합니다)
  • Sprint 1 목표가 관통 경로인가, 화면만·API만인가
  • 한 번의 지시가 너무 큰가 — 반나절 넘는 분량이면 쪼개게 합니다

스프린트 1 회고 — 순서를 지킵니다

시간활동
3분각자 조용히 Keep/Problem 작성 (말하지 않고)
5분돌아가며 공유, 반박 금지
5분Problem 1~2개 선정 → Try 결정
2분기한 확정, 기록

3분간 각자 쓰는 것이 핵심입니다. 바로 말로 시작하면 목소리 큰 사람 의견만 남습니다.
개인 프로젝트지만 회고는 전체가 함께 합니다 — 남의 Problem이 내 다음 주 문제인 경우가 많습니다.


이번 주 위험 신호

신호대응
테스트가 하나도 없음인수조건 1개짜리 테스트를 그 자리에서 함께 작성
코드 설명을 못 함AI에게 설명을 시켜 읽게 하고, 이해될 때까지 병합 금지
통합을 12주차로 미루려 함지금 막지 않으면 13주차 데모가 없습니다
AI 사용 로그의 판정이 전부 "채택"검수하지 않고 있다는 뜻입니다. 워크스루에서 확인합니다

다음 주를 위해

11주차는 학생이 가져온 실패 로그로 수업합니다.
"아직 붙일 게 없어요"는 사유가 되지 않는다는 점을 반드시 공지하세요 —
로그가 없으면 디버깅 클리닉 60분이 통째로 빕니다.

운영 노트11주

11주차 Implementation II

학생 자료: 11주차 · Implementation II — 통합과 디버깅 클리닉
강의는 최소로, 학생이 가져온 실제 버그를 공개 해부하는 데 시간을 씁니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인실패 로그가 없는 학생을 먼저 파악
20분강의짧게. 오늘의 자산은 클리닉과 통합 시간입니다
60분디버깅 클리닉3~4개를 미리 골라둡니다
70분통합 데이순회. 오늘 안에 붙이는 것이 목표
20분통합 데모 공유붙은 것을 실제로 돌려보게 합니다

수업 전 확인

확인 항목미달 시
통합 시도 결과 + 실패 로그없는 학생이 가장 위험합니다. 순회 1순위
Sprint 2 이슈 진행 상황미착수가 절반 이상이면 스코프 축소
주간 회고지난주 Try가 실행됐는지 확인
참고

클리닉에 쓸 로그 3~4개를 수업 전에 미리 골라둡니다.
즉석에서 고르면 20분이 날아갑니다. 서로 다른 유형으로 고르는 것이 좋습니다.


진행 대본

AI 함정 시연 — 원인 모른 채 넘어가기 (7분)

이번 주에서 가장 중요한 시연입니다. 학생 버그로 라이브로 하세요.

  1. 버그 하나를 골라 "고쳐줘"로 시킵니다
  2. 코드가 바뀌고 증상이 사라집니다
  3. "왜 사라졌죠?" 라고 묻습니다 → 아무도 설명하지 못합니다
  4. 같은 버그를 「원인 가설 3개와 각각의 확인 방법」으로 다시 접근합니다

여기서 1주차 프레임을 다시 꺼냅니다 —
맞는 코드라도 설명하지 못하면 반려 대상입니다. 이번 주가 그 규칙이 가장 잘 보이는 주입니다.


디버깅 클리닉 — 진행

시간진행진행자가 할 일
2분가져온 학생이 증상 설명기대/실제를 분리해 말하게 합니다
3분전원이 가설을 냅니다받아적기만 합니다. 여기서 답을 주면 클리닉이 끝납니다
5분가설을 확인 가능한 순서로 정렬 → 싼 것부터정렬 기준을 소리 내어 말해줍니다
5분원인 확정 후, 다음에 미리 잡으려면 무엇이 있어야 했는지← 클리닉의 핵심

4단계가 전부입니다. "테스트가 있었으면" / "인터페이스를 먼저 정했으면" / "타임존을 명시했으면" —
여기서 나온 답이 남은 4주의 개선 항목이 됩니다. 칠판에 남겨두고 통합 데이로 넘어갑니다.

자주 나오는 유형

유형흔한 원인
데이터 형식 불일치8주차에 API 시그니처를 안 정함
시간대·날짜 오류AI 생성 코드의 단골 실패 지점
인증·권한로컬에서만 테스트함
빈 값·null인수조건에 예외 케이스가 없었음
환경 차이환경변수·설정을 문서화 안 함

통합 데이 — 오늘의 판단 기준

주의

11주차에 안 붙으면 13주차 데모가 없습니다.

오늘 안 붙을 것 같으면 기능을 잘라서라도 붙이게 합니다.
미완성 기능 3개보다 동작하는 기능 1개가 낫습니다. 이 판단을 학생에게 맡기면 대개 미룹니다.

볼 것개입
같은 화면을 30분 넘게 보고 있음2시간 규칙 위반입니다. 먼저 말을 겁니다
"로컬에선 되는데요"환경 차이입니다. 오늘 안에 문서화하게 합니다
오늘도 통합 시도 안 함수업 전체를 통합에 씁니다. 다른 작업 중단

이번 주 위험 신호

신호대응
통합 시도조차 안 한 학생오늘 수업 전체를 통합에 씁니다
버그를 혼자 붙잡고 있음2시간 규칙을 다시 공지하고 리뷰 짝을 붙입니다
클리닉에서 아무도 가설을 안 냄교수가 틀린 가설을 하나 먼저 냅니다. 그러면 반박이 나옵니다

다음 주를 위해

12주차는 실제 배포와 교차 QA입니다.
README가 없으면 교차 QA를 받을 수 없다는 점을 공지하세요 — 남의 README로 실행하는 것이 이번 QA의 규칙입니다.

운영 노트12주

12주차 Implementation III

학생 자료: 12주차 · Implementation III — 품질과 배포
목표는 하나입니다 — 외부인이 접속해서 쓸 수 있는 주소가 오늘 안에 생기는 것.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인빌드 성공 여부부터
25분강의키 노출 확인을 그 자리에서 시킵니다
65분배포 실습깨지는 것이 정상입니다. 미리 안심시킵니다
60분교차 QA규칙 1번(질문 금지)이 전부입니다
20분결과 공유심각도 '상'만 추립니다

수업 전 확인

확인 항목미달 시
빌드가 성공하는가실패자는 배포 실습에 못 들어갑니다. 순회 1순위
README가 있는가없으면 교차 QA를 받을 수 없습니다
예외 화면이 있는가없으면 교차 QA에서 전부 드러납니다 (그것도 학습입니다)

진행 대본

강의 — 키 노출을 그 자리에서 확인

"지금 각자 저장소 커밋 이력에서 .env를 검색해 보세요."

30초면 됩니다. 매 학기 한두 명은 나옵니다.
나오면 키 재발급이 필요하다는 것까지 그 자리에서 다룹니다 — 파일을 지우는 것만으로는 안 됩니다.

AI 함정 시연 — 오래된 방식 (5분)

  1. AI에게 배포·보안 설정을 물어봅니다 → 몇 년 전 방식이 나오는 경우가 흔합니다
  2. 공식 문서와 나란히 놓고 차이를 봅니다
  3. 프롬프트에 버전을 명시하고 다시 시켜 달라지는 것을 보여줍니다

요점: AI의 답은 그 시점에는 맞았던 답입니다. 틀린 게 아니라 오래된 것입니다.
그래서 버전을 지시에 넣는 것이 검수의 일부가 됩니다.

배포 실습 — 미리 안심시킵니다

"로컬에서만 되던 것이 배포하면 깨집니다. 그 경험이 오늘의 학습 목표입니다."

이 말을 실습 시작 전에 해두면 학생들이 덜 당황하고 원인을 찾습니다.
말 안 해두면 깨진 순간에 얼어붙습니다.


교차 QA — 규칙이 전부

규칙왜
README만 보고 접속·실행. 질문 금지질문을 허용하면 README의 구멍이 안 드러납니다
30분간 자유롭게 사용하며 문제를 찾음
발견한 것을 상대 저장소에 이슈로 등록구두로 말하면 남지 않습니다

질문하려는 학생이 나오면 바로 끊으세요. 여기서 한 번 풀어주면 QA 전체가 무의미해집니다.

부수는 방법 힌트는 학생 자료에 있습니다. 시작 5분 뒤에도 이슈가 0건인 짝이 있으면 힌트를 소리 내어 읽어줍니다.

여기서 나온 이슈가 14주차 개선 백로그의 절반을 채웁니다.


이번 주 위험 신호

신호대응
배포 실패오늘 안에 해결. 13주차 라이브 데모가 불가능해집니다
키가 저장소에 노출즉시 재발급 + 이력 정리 안내
교차 QA 이슈가 20개 넘게 나옴13주차 전까지 '상'만 고르게 합니다. 전부 고치려다 아무것도 못 합니다
AI 보안 점검 결과를 그대로 반영지적 하나하나를 직접 판정하게 합니다 — 채택인지 반려인지

다음 주를 위해

13주차는 2차 발표입니다.

주의

배포 URL을 전날 저녁에 직접 확인합니다. 접속되지 않으면 발표 전에 알려줍니다.
발표 중에 확인하면 그 학생의 시간이 다 날아갑니다.

간이 사용성 테스트 2명도 미리 공지하세요 — 안 해오면 사용자 검증 항목에서 감점입니다.

운영 노트13주

13주차 2차 발표

학생 자료: 13주차 · 2차 발표
이번 발표는 슬라이드가 아니라 라이브 데모가 중심입니다.


시간 운영

시간활동진행자가 할 일
10분진행 안내, 평가지 배포발표 순서 추첨
90분1인당 발표 10분 + 질의 5분코드 설명 1건 포함
30분코드 설명 라운드전원 5분씩
30분사용성 테스트 리허설짝을 일부러 섞습니다
20분총평 + 최종 2주 안내

수업 전 확인

확인 항목미달 시
발표자료 제출-10점
간이 사용성 테스트 2명 결과사용자 검증 항목 감점
배포 URL이 살아 있는가🔴 전날 저녁에 직접 확인합니다. 발표 중에 확인하면 시간을 다 씁니다

진행 규칙

라이브 데모

  • 배포 환경에서 시연 (로컬 시연은 감점)
  • 녹화 영상 대체는 -10점. 네트워크 등 불가피한 사유는 사전 허가
  • 데모 전에 노트북을 미리 연결해 화면을 확인해 둡니다
  • 데모 도중 에러가 나도 감점하지 않습니다. 어떻게 대응하는지를 봅니다

마지막 항목을 발표 전에 소리 내어 말해주세요. 말 안 하면 에러가 난 학생이 남은 발표를 망칩니다.

채점

  • 2차 발표 루브릭으로 채점, 발표 직후 마무리
  • 개발 프로세스 항목(20점)은 저장소를 그 자리에서 열어 채점합니다. 발표 내용보다 실제 작업 이력이 우선입니다
  • 경로에 따라 확인 대상이 다릅니다 — A: 커밋·변경요청·CI / B: 칸반·리뷰 기록지·검증 로그

코드 설명 확인 — 고르는 요령

발표 직후 1건, 라운드에서 1인당 1건. 설명 실패는 1건당 -5점입니다.

이런 곳을 고릅니다왜
7주차에 "다음 8주에 하겠다"고 말한 부분본인이 책임지겠다고 한 곳입니다
커밋이 몰려 있는 파일짧은 시간에 많이 들어온 곳은 대개 AI 생성입니다
예외 처리 분기인수조건에 없던 것을 스스로 넣었는지 보입니다
시간대·경계값 처리AI 생성 코드의 단골 실패 지점

미리 정해두지 않고 무작위로 고른다는 점을 발표 전에 말해둡니다.
AI가 쓴 부분이어도 상관없다는 것도 함께 — 설명할 수 있으면 완성입니다.


질문 고르는 요령

학생 자료에 7개가 공개돼 있습니다. 1인당 2~3개.

이런 발표에는이 질문
기능이 많은데 얕음1 (어떻게 시켰나) · 4 (테스트 없는 곳)
설계 설명이 매끄러움2 (버린 것) · 6 (ADR)
"다 됩니다"로 일관3 (먼저 터질 곳) · 7 (못 할 것)

7번에 정직하게 답하면 가점을 줍니다. 그리고 그 자리에서 그렇게 말해주세요.
"다 할 수 있습니다"라고 답한 학생이 15주차에 가장 크게 무너집니다.


사용성 테스트 리허설 — 짝을 섞습니다

핵심

서로 프로젝트를 잘 아는 사이끼리 붙이면 다 성공합니다.
리뷰 짝이 아닌 사람, 그 프로젝트를 처음 보는 사람끼리 붙이세요.

진행에서 자주 나오는 실수 4개는 학생 자료에 있습니다. 순회하며 그중 무엇을 하고 있는지만 짚어줍니다.


총평 — 이름 없이 유형으로

유형이렇게 말합니다
데모가 로컬에서만 됨"배포되지 않은 것은 아직 만들어진 것이 아닙니다"
코드 설명 실패"설명하지 못하는 코드는 여러분 것이 아닙니다. 남은 2주에 정리하세요"
예외 화면 없음"정상 경로만 되는 것은 데모용입니다"
반려 기록이 비어 있음"받은 것을 검수하지 않았다는 뜻입니다. 15주차 과정 확인에서 그대로 드러납니다"

기록해 둘 것

항목용도
코드 설명 실패 건수15주차 과정 확인의 근거. 여기서 실패한 학생을 15주차에 먼저 봅니다
7번(못 할 것) 답변15주차 「한계와 향후 계획」과 대조
프로세스 항목 점수의 근거어느 저장소 화면을 봤는지 메모해 두면 15주차에 다시 찾지 않아도 됩니다

운영 노트14주

14주차 사용자 검증

학생 자료: 14주차 · 사용자 검증
이 수업은 학생이 가져온 데이터로 진행합니다. 데이터가 없으면 할 것이 없습니다.


시간 운영

시간활동진행자가 할 일
10분지난주 제출물 확인과업이 '목표'로 제시됐는지
30분강의심각도 기준을 칠판에 남겨둡니다
80분데이터 분석 워크샵AI 그룹핑 검증을 집중 확인
60분최종 개선 백로그 확정1인당 6~7분. 네 질문 고정

수업 전 확인

확인 항목미달 시
사용성 테스트 5명 원자료부족하면 이번 주 안에 보완. 최종 발표 배점 20점이 걸려 있습니다
과업이 '목표'로 제시됐는가방법을 알려준 테스트는 데이터가 오염된 것입니다. 그 점을 짚습니다
막힌 지점이 기록됐는가감상만 있으면 분석할 것이 없습니다

진행 대본

강의 — 정직성이 가점이라는 것을 먼저

"못 고친 것을 정직하게 밝히는 것이 감점보다 낫습니다."

이 말을 강의 앞부분에 배치합니다. 뒤에 두면 이미 숨길 계획을 세운 뒤입니다.
최종 발표 루브릭에서 「한계를 정직하게 밝힘」이 가점 요인이라는 것을 루브릭 화면으로 보여주세요.

AI 함정 시연 — 데이터 없이 결론 만들기 (5분)

  1. AI에게 사용성 테스트 요약을 시키되 일부러 빈약한 데이터를 줍니다
  2. 데이터에 없는 결론까지 그럴듯하게 나옵니다
  3. "이 결론의 근거가 된 발언을 인용해줘" 라고 되묻습니다 → 근거가 없다는 것이 드러납니다

이 되묻기 한 문장이 이번 주 실습의 검수 도구입니다. 칠판에 적어두세요.


실습 중에 볼 것

볼 것개입
AI가 서로 다른 원인의 문제를 하나로 묶음가장 흔한 실패입니다. 원본 발언으로 돌아가 확인하게 합니다
개선 백로그가 5개 초과1주 안에 불가능합니다. 3개로 줄이게 합니다
「고치지 않기로 한 것」이 비어 있음판단하지 않은 것입니다. 최소 2개는 나와야 정상입니다
심각도 '상' + 난이도 L을 고치려 함고치지 말고 한계로 밝히게 합니다

최종 개선 백로그 — 네 질문

질문은 학생 자료에 공개돼 있습니다. 4번이 특히 중요합니다.

주의

마지막 주에 리팩터링을 시작했다가 동작하던 데모를 깨뜨리는 일이 매 학기 나옵니다.

질문이런 답이면 개입
1. 안 고치면 데모가 실패하는 것은?"다 중요해요" ← 우선순위가 없다는 뜻
2. 1주 안에 정말 끝낼 수 있나?5개 이상을 말하면 줄이게 합니다
3. 안 고치기로 한 것은 어떻게 말할 건가?"말 안 하려고요" ← 루브릭을 다시 보여줍니다
4. 지금 되는 것을 깨뜨릴 위험은?"없어요" ← 가장 위험한 답입니다

코드 동결 공지

주의

발표 48시간 전에 코드를 얼립니다.

이것을 수업 마지막에 구두로 한 번 더 공지하세요.
문서에만 있으면 절반은 안 봅니다.


이번 주 위험 신호

신호대응
개선 항목이 10개 이상3개로 줄입니다. 나머지는 향후 계획으로
마지막 주에 새 기능 추가즉시 중단. 지금은 만드는 주가 아니라 다듬는 주입니다
테스트 대상이 수강생·가족최종 발표에서 감점됩니다. 이번 주 안에 실사용자를 확보하게 합니다
분석을 전부 AI에게 맡김「내가 판단한 것」이 무엇인지 그 자리에서 묻습니다

다음 주를 위해

15주차 사전 제출물은 셋입니다 — 최종 보고서 · 시연 영상 · 기여 명세서.
미제출은 -15점입니다.

기여 명세서의 「내가 판단한 것 ↔ AI가 만든 것」 표를 특히 안내하세요.
이 표가 15주차 팀장 라운드의 자료가 되고, 개인 평가의 거의 유일한 근거입니다.

운영 노트15주

15주차 최종 발표

학생 자료: 15주차 · 최종 발표
이 과목의 산출물은 결과물이 아니라 "AI가 준 것을 언제 믿고 언제 의심해야 하는가"에 대한 감각입니다.


시간 운영

시간활동진행자가 할 일
10분진행 안내발표 순서 추첨
120분1인당 발표 15분 + 질의 5분코드 설명 1건 포함
30분팀장 라운드전원 5분씩
20분상호 총평 + 학기 마무리10분 + 10분

수업 전 확인

확인 항목미달 시
최종 보고서·시연 영상·기여 명세서-15점
배포 URL 생존🔴 전날 저녁에 직접 확인합니다
기여 명세서의 「내가 판단한 것 ↔ AI가 만든 것」판단 칸이 비어 있으면 개인 평가 근거가 없어집니다
상호 평가지과정 확인의 근거

채점 순서

학기 내내 남은 기록과 교차 확인합니다. 발표 점수만으로 판단하지 않습니다.

순서무엇을어디서
1발표 채점최종 발표 루브릭 · 발표 직후 마무리
2작업 이력 분포저장소 (커밋·변경요청) — 시간에 걸쳐 분포했는가
3AI 사용 로그매주 작성 시점 + 「반려 기록」이 매주 있는가
4기여 명세서 대조로그에 없는 기여는 근거가 없습니다
5리뷰 짝 평가남의 코드를 성실히 봐 줬는가

과정 확인 조정

조정기준
+5점리뷰를 성실히 해 다른 수강생의 결과를 실제로 바꿈
0정상
−10점작업이 막판에 몰림, 로그·회고 부실
−20점 이하본인 코드 설명 불가, 리뷰 요청 무응답
주의

한 가지 근거만으로 감점하지 않습니다. 여러 근거가 일치할 때만 조정합니다.
13주차 코드 설명 실패 기록이 있는 학생을 먼저 확인하세요.


질문 고르는 요령

학생 자료에 8개가 공개돼 있습니다.

반드시질문
전원에게1 (코드 설명)
최소 절반에게6 (되돌린 것 중 가장 잘 되돌린 것)
13주차에 "다 할 수 있다"고 한 학생에게7 (못 한 것)

6번은 AI 로그와 대조해서 묻습니다. "로그에 이 부분을 반려했다고 썼는데, 어떻게 다르게 했나요?"
로그와 말이 다른 경우가 드물지 않고, 그게 가장 확실한 판별점입니다.


팀장 라운드 (30분)

이 과목은 학생을 팀장, AI를 팀원으로 놓았습니다. 마지막 확인은 팀장으로서 무엇을 했는가입니다.

말할 것 3가지는 학생 자료에 있습니다. 그중 3번이 이 과목의 학습 성과 측정입니다.

"학기 초와 지금, 내 지시가 어떻게 달라졌는가"

이런 답이 나오면판단
"약속판 만들어줘" → "이 인수조건 3개를 만족하는"이 과목이 성공한 경우입니다
"더 자세히 쓰게 됐어요"절반. 무엇을 자세히 쓰는지 되묻습니다
"똑같아요"1주차 강의가 닿지 않은 것입니다. 기록해 두세요

마무리 (20분)

상호 총평 (10분)

옆 사람에게 한마디씩. 점수와 무관하다는 것을 먼저 말해줍니다.
한 학기 내내 서로를 본 유일한 외부 시선입니다.

학기 마무리 (10분)

  1. 잘한 사람의 공통점 — 대개 "일찍 통합한 사람"과 "정직하게 보고한 사람"입니다
  2. AI 활용의 차이 — 같은 도구를 썼는데 결과가 갈린 이유
  3. 한계를 밝힌 사람에 대한 평가 — 정직하게 밝힌 쪽이 숨긴 쪽보다 높은 점수를 받았다는 것을 실제로 말해줍니다

마지막 메시지

이 과목이 끝나고 여러분에게 남기를 바라는 것은 프롬프트 모음집이 아닙니다.

"AI가 준 것을 언제 믿고 언제 의심해야 하는가" 에 대한 감각.
그것만 남으면 이 과목은 성공입니다. 도구는 내년에 또 바뀝니다.


학기 종료 후 정리

항목비고
우수 산출물 확보다음 학기 예시 자료로 활용 (작성자 동의 필요)
주차별 운영 메모무엇이 시간 초과였고 무엇이 남았는지 기록
과제 부하 점검특히 1→2주차, 5→6주차, 13→14주차 구간
루브릭 조정점수 분포를 보고 다음 학기 기준 보정
실패 사례 수집익명화해서 1주차 「실패하는 캡스톤 4가지 패턴」에 반영
AI 함정 시연 목록 갱신모델이 바뀌면 안 통하는 시연이 생깁니다. 통한 것/안 통한 것을 남겨두세요

템플릿 011주

팀 헌장

사용 주차: 1주차 (수업 중 작성)
제출: 과제 제출 페이지에서 «프로젝트 계획서» 선택 → 채우고 제출
혼자 하는 프로젝트가 무너지는 이유는 실력이 아니라 스스로 정하지 않은 기준 때문입니다.
지금 30분 쓰면 12주차에 3시간을 아낍니다.


1. 기본 정보

항목내용
프로젝트명(가칭이어도 됩니다)
이름 · 학번
자신 있는 것
이번 학기에 배우고 싶은 것
리뷰 짝(매주 서로 코드를 봐 줄 다른 수강생)

저장소 주소는 4. 저장소 운영 경로에 적습니다.

혼자 한다고 혼자 판단하지는 않습니다. 이 과목은 «변경이 다른 사람의 눈을 거친 흔적»을 요구합니다.
9주차부터 수강생끼리 리뷰 짝을 이뤄 서로의 변경 요청을 봐 줍니다. 짝은 격주로 바꿉니다.


2. 탐색 영역

1주차 마지막 워크샵에서 정합니다. 여기에 적는 것은 만들 것이 아니라 살펴볼 영역입니다.
무엇을 만들지는 4주차에 정합니다.

❌ 이건 이미 해결책입니다✅ 이게 영역입니다
중고거래 앱을 만들자직거래 약속을 잡다가 서로 눈치만 보다 흐지부지되는 과정
자취생 식단 서비스자취 3개월 차가 저녁을 정하는 데 쓰는 시간
항목내용
살펴볼 영역(해결책이 아니라 상황으로 1~2줄)
만날 수 있는 사람(다음 주까지 실제로 만날 3명. 수강생·가족 제외)
왜 이 영역인가(내가 이 영역에 관심 있는 이유)
주의

「만날 수 있는 사람」을 못 적으면 그 영역은 진행할 수 없습니다. 다음 주까지 3명을 실제로 만나야 합니다.
막연히 "대학생"이 아니라, 연락할 수 있는 사람이어야 합니다.

핵심

영역은 3주차까지 바뀔 수 있습니다. 인터뷰에서 전혀 다른 것이 나오면 그쪽으로 옮기면 됩니다.


3. 내 프로젝트의 목표 수준

하나만 고르세요. 솔직하게 적어야 나중에 스스로를 속이지 않습니다.

  • A. 학점만 무난하게 (주당 5시간 이내 투입)
  • B. 제대로 된 포트폴리오 하나 만들기 (주당 8~12시간)
  • C. 공모전 출품 / 창업 / 논문까지 (주당 15시간 이상)

그렇게 고른 이유:

(예: 전원 B에 합의. 단, ○○는 취업 준비로 10~12주차에 시간이 적음.
     해당 기간에는 문서·테스트 위주로 분담하고, 5~9주차에 더 투입하기로 함.)

4. 저장소 운영 경로

이것을 먼저 정합니다. 아래 작업 규칙의 형태가 여기서 결정됩니다.
저장소 운영 방식 선택 가이드를 읽고 본인 상황에 맞는 경로를 고르세요.

항목내 선택
선택한 경로☐ A. GitHub ☐ B. Google Drive + 로컬 Git
저장소 주소(A는 GitHub 저장소 URL, B는 Drive 공유 폴더 링크)
리뷰 짝에게 열어줬는가☐ 예 — 짝이 변경 요청을 볼 수 있어야 합니다

계정을 만들 수 없어도 평가에서 불이익이 없습니다. 경로 B로 진행하면 됩니다.


5. 작업 규칙

혼자 하더라도 규칙이 없으면 12주차에 무너집니다. 미래의 나를 위한 약속입니다.

항목내 규칙
작업 시간매주 언제, 몇 시간을 이 프로젝트에 쓸 것인가
막혔을 때몇 시간 이상 막히면 누구에게(짝·교수·수업 채널) 물을 것인가
브랜치 규칙이슈 하나 = 브랜치 하나. main에 직접 커밋하지 않는다
커밋 메시지 규칙무엇을 왜 바꿨는지 남기는 방법 (예: feat: fix: docs:)
리뷰 규칙리뷰 짝에게 언제까지 요청하고, 언제까지 답할 것인가
검증 방법병합 전에 무엇으로 동작을 확인하는가 (CI / 로컬 스크립트)
작업 관리 도구이슈 트래커 / 칸반 보드 / 스프레드시트
참고

1주차에 다 못 정해도 됩니다. 이 절은 선택 항목입니다.
다만 9주차 개발 계획 전까지는 채워야 합니다 — 그때부터 이 규칙대로 작업하게 됩니다.

주의

"열심히 하자" 같은 문장은 규칙이 아닙니다. 언제·무엇을 하는지가 적혀야 합니다.

주의

main에 직접 커밋하지 않는다 — 혼자일수록 지키기 어렵고, 지키면 가장 크게 남습니다.
브랜치와 변경 요청이 없으면 리뷰 짝이 볼 것도, 학기 말에 보여줄 이력도 남지 않습니다.


6. AI 사용 기준

이 프로젝트에서 여러분은 팀장이고, AI가 팀원입니다.
팀장이 하는 일은 코딩이 아니라 지시 · 검수 · 반려입니다. 그 기준을 여기에 미리 정합니다.

질문내 답
어떤 AI 도구를 주로 쓸 것인가(학기 내내 하나로. 옮겨 다니면 로그가 흩어집니다)
지시 — 무엇을 붙여서 시킬 것인가(예: 인수조건 + 스키마 + "테스트 먼저")
검수 — 병합 전 최소 조건은?(예: 테스트 통과 + 내가 5줄로 설명 가능)
반려 — 어떤 경우에 되돌릴 것인가(예: ① 틀렸다 ② 우리 것이 아니다 ③ 내가 설명 못 한다)
문서 초안을 AI로 만들어도 되는가(예: 초안 O, 근거·인용은 반드시 내가 직접)
주의

③ 「내가 설명 못 한다」를 반드시 넣으세요. 이 과목의 기준은 15주 내내 같습니다 —
맞는 코드라도 설명하지 못하면 없는 것으로 칩니다. → AI 활용 가이드북

매주 AI 사용 로그에 반려 최소 1건을 적습니다. 그 기록이 여러분이 판단했다는 흔적입니다.


7. 스스로에 대한 기준

혼자 하면 미루는 것을 말려줄 사람이 없습니다. 미리 정해 두세요.

진도가 밀렸다고 판단하는 기준:

(예: 2주 연속 스프린트 목표를 못 채우면, 그 주 안에 Must 기능을 하나 줄이고
     프로젝트 계획서를 고쳐 다시 제출한다.)

막혔을 때 도움을 청하는 기준:

(예: 같은 오류로 2시간을 넘기면 리뷰 짝에게 먼저 묻고,
     그래도 안 되면 다음 수업 코칭 시간에 가지고 온다.)
핵심

2시간 규칙은 이 과목이 매주 확인하는 것입니다. 혼자 붙들고 있는 시간은 배우는 시간이 아닙니다.


8. 서명

나는 위 기준을 따르며, 바꿔야 할 일이 생기면 이 문서를 고쳐 다시 제출한다.

이름날짜확인
☐
리뷰 짝 (읽었음)날짜확인
☐

작성 예시

동네장터 — 중고 직거래 약속 도우미

기본 정보

항목내용
프로젝트명동네장터 (가칭)
이름 · 학번김서연 · 2021XXXXX
자신 있는 것웹 프론트엔드, Figma
배우고 싶은 것서버 배포와 CI. 배포까지 혼자 해본 적이 없음
리뷰 짝박지훈

"해본 적이 없음"이 솔직한 답입니다. 부풀리지 않는 편이 학기 내내 도움이 됩니다.

목표 수준: ☑ B. 제대로 된 포트폴리오 하나 만들기 (주당 8~12시간)

선택 이유:

취업 포트폴리오로 쓸 것 하나가 필요하다. 다만 10~12주차에 인턴 지원이 겹친다.
→ 그 기간에는 새 기능을 늘리지 않고 테스트와 문서만 채운다.
→ 대신 5~9주차에 더 투입한다. 이걸 지금 적어두지 않으면 12주차에 Must를 못 줄인다.

저장소 운영 경로: ☑ A. GitHub
저장소 주소: https://github.com/seoyeon-k/donne-jangteo
리뷰 짝에게 열어줬는가: 예

작업 규칙

항목내 규칙
작업 시간화·목 저녁 3시간, 일요일 오전 3시간 (주 9시간)
막혔을 때2시간 넘기면 박지훈에게 먼저 묻고, 안 되면 다음 수업 코칭 시간에
브랜치 규칙main 보호. 이슈 하나 = feat/US-03 브랜치 하나. 직접 커밋 금지
커밋 메시지 규칙feat: fix: docs: test: 접두사
리뷰 규칙금요일까지 변경 요청 올리고, 짝은 일요일까지 답한다
검증 방법CI에서 린트 + 테스트. 실패하면 병합하지 않는다
작업 관리 도구GitHub 이슈 + 프로젝트 보드

AI 사용 기준

질문내 답
도구Claude Code 하나로. 학기 중에 바꾸지 않는다
지시인수조건 전문 + 스키마를 붙이고, "테스트 먼저"를 항상 붙인다
검수테스트 통과 + 내가 5줄로 설명 가능. 둘 다 안 되면 병합하지 않는다
반려① 틀렸다 ② 우리 스키마에 안 맞는다 ③ 내가 설명 못 한다
문서 초안초안 O. 단 인터뷰 인용과 근거는 반드시 내가 직접 넣는다

스스로에 대한 기준

2주 연속 스프린트 목표를 못 채우면, 그 주 안에 Must 기능을 하나 줄이고
이 계획서를 고쳐 다시 제출한다. 미루지 않기 위해 리뷰 짝에게 먼저 말한다.

제출 체크리스트

  • 자신 있는 것 / 배우고 싶은 것을 솔직하게 채웠는가
  • 목표 수준(A/B/C)을 고르고, 왜 그렇게 골랐는지 적었는가
  • 탐색 영역에 만날 수 있는 사람 3명이 이름이나 관계로 적혔는가
  • 저장소 운영 경로를 정하고 저장소 주소를 적었는가
  • 리뷰 짝이 그 저장소를 볼 수 있는가
  • AI 사용 기준에 지시 · 검수 · 반려가 각각 적혔는가
  • 「스스로에 대한 기준」이 구체적인가 ("열심히 하자" 같은 문장 금지)

템플릿 021–2주

인터뷰 스크립트

사용 주차: 1주차 작성 → 1~2주차 사이 실시 → 2주차 전사록 제출
제출: 과제 제출 페이지에서 «인터뷰 스크립트» 와 «인터뷰 전사록»(대상자별)


인터뷰의 제1원칙

해결책을 묻지 마세요. 경험을 물으세요.

사용자는 자기가 무엇을 원하는지 모릅니다. 하지만 자기가 어제 무엇을 했는지는 정확히 압니다.
"이런 앱 있으면 쓰시겠어요?"라는 질문에서는 아무것도 나오지 않습니다.

❌ 나쁜 질문✅ 좋은 질문
이런 서비스 있으면 쓰시겠어요?마지막으로 그 문제를 겪은 게 언제였나요? 그때 어떻게 하셨어요?
무엇이 불편하신가요?그 일을 할 때 순서대로 하나씩 알려주시겠어요?
이 기능 필요하시죠?지금은 그 문제를 어떻게 해결하고 계세요?
얼마면 쓰실 건가요?그 문제 때문에 돈이나 시간을 쓴 적 있으세요? 얼마나요?

1. 인터뷰 설계

참고

탐색 영역이 먼저입니다. 프로젝트 계획서의 「2. 탐색 영역」을 정한 뒤에 이 표를 채웁니다.
영역 없이 "알아내려는 것"을 쓰면 질문이 막연해집니다.

📌 질문지는 한 사람에 하나입니다. 리뷰 짝이 각자 다른 사람을 만나더라도 같은 질문지를 씁니다.
질문이 서로 다르면 2주차에 답을 비교할 수 없습니다.

📌 아래 예시는 «중고거래»를 탐색 영역으로 고른 내 것입니다.
여러분이 1주차에 정한 영역으로 바꿔 쓰세요. 형식만 참고하면 됩니다.

항목내용
우리가 알아내려는 것(질문 형태로 1~2개. "○○ 사용자는 왜 △△를 계속 하는가?")
인터뷰 대상 조건(예: 최근 3개월 내 ○○를 해 본 20대)
대상자 수최소 3명 (리뷰 짝·수강생 제외)
소요 시간1인당 30~40분
기록 방법녹음(동의 필수) + 관찰 노트

2. 질문지

도입 (5분) — 긴장 풀기

  1. 간단히 자기소개 부탁드립니다. 요즘 어떤 하루를 보내시나요?
  2. (주제 영역)과 관련해서 평소 어떤 일을 하시나요?

경험 캐기 (20분) — 핵심

  1. 가장 최근에 (주제 상황)을 겪었던 게 언제인가요?
  2. 그때 있었던 일을 처음부터 순서대로 말씀해 주시겠어요?
  3. 그 중 가장 짜증났던/힘들었던 순간은 언제였나요? 왜요?
  4. 그때 어떻게 해결하셨나요? (해결 못 했다면) 왜 못 하셨나요?
  5. 그 문제 때문에 시간이나 돈을 따로 쓴 적이 있나요?
  6. 주변 사람들은 이 상황을 어떻게 하던가요?

심화 (10분) — 주제에 맞게 직접 작성

9.
10.
11.

마무리 (5분)

  1. 오늘 이야기 중에 제가 놓친, 꼭 하고 싶은 말씀이 있으신가요?
  2. 비슷한 경험이 있는 분을 한 분 소개해 주실 수 있나요?

"왜요?"를 최소 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인 이상 중고 직거래에서 판매자를 맡아본 학생
대상자 수5명 (P1~P5)
기록녹음(동의) + 관찰 노트

심화 질문 (본인이 직접 작성한 부분)

  1. 판매자를 맡고 나서 가장 후회했던 순간이 언제였나요?
  2. 상대에게 장소를 먼저 제안해 보신 적이 있나요? 그때 어떻게 말을 꺼내셨어요?
  3. (물어본 적 없다면) 왜 안 물어보셨어요?
  4. 상대가 답이 없다는 걸 언제 알게 되셨어요? 그때 어떻게 하셨죠?

전사록 발췌 (P1)

[00:12:04] 진행자: 장소를 먼저 제안해 보신 적이 있으세요?
[00:12:09] P1: 음... (3초) 사실 거의 못 물어봤어요.
[00:12:14] 진행자: 왜요?
[00:12:16] P1: 제가 재촉하는 사람처럼 보일까 봐요. 아직 기한도 안 됐는데
           확인하면 좀 그렇잖아요. 못 믿는 것처럼.
[00:12:28] 진행자: 그러면 약속 상황은 어떻게 아셨어요?
[00:12:31] P1: 몰랐죠. (웃음) 마감 이틀 전에 알았어요. 그래서 제가 다 했어요.

관찰 노트

  • 12:09에서 3초 망설임 → 이 지점이 핵심. 정보가 없는 게 아니라 묻지 못하는 것
  • "(웃음)"은 즐거움이 아니라 체념. 말과 표정이 어긋난 지점
  • 인터뷰 후: 약속 상황을 알려주는 기능이 아니라, 묻지 않아도 되게 만드는 것이 문제였음

인상적인 발언 3개

  1. "제가 재촉하는 사람처럼 보일까 봐요."
  2. "몰랐죠. 마감 이틀 전에 알았어요."
  3. "그래서 제가 다 했어요."

세 문장이 그대로 문제 정의서의 근거가 됩니다.
인용을 확보하지 못한 인터뷰는 3주차에 쓸 재료가 없습니다.


제출 체크리스트

  • 실제 사람 3명 이상 (리뷰 짝·수강생·가족 제외)
  • 해결책이 아니라 과거 경험을 물었는가
  • 전사록에 타임스탬프가 있고 원본과 대조 검수했는가
  • 관찰 노트(말이 아닌 것)가 각 인터뷰마다 있는가
  • 인용 가능한 실제 발언이 인터뷰당 3개 이상 확보되었는가

템플릿 032주

공감지도

사용 주차: 2주차 (수업 중 워크샵)
제출: 과제 제출 페이지에서 «공감지도» 선택
인터뷰 데이터를 해석하는 단계입니다. 요약이 아닙니다.


참고

채우는 과정 전체를 보고 싶다면 2주차 시연 — 인사이트 뽑기를 보세요.
전사록에서 카드를 자르고 묶어 이 표를 채우기까지가 실제 문장으로 나와 있습니다.

1. 페르소나 (인터뷰에서 도출)

AI로 만들어낸 가상 인물이 아니라, 실제 인터뷰 대상자를 합성한 것이어야 합니다.
모든 항목 옆에 근거가 된 대상자 ID(P1, P2…)를 적으세요.

항목내용근거
이름(가칭)·나이·상황
목표 (이루려는 것)P?
현재 방식 (지금 어떻게 하고 있나)P?
가장 큰 장애물P?

2. 공감지도

각 칸에 인용문 또는 관찰 사실을 넣으세요. 내 추측을 넣으면 안 됩니다.

👂 SAYS — 실제로 한 말 (그대로 인용)

"..." (P1)
"..." (P2)

🤔 THINKS — 말하지 않았지만 생각하는 것 (근거 필수)

- (내용) ← 근거: P1이 ○○ 질문에서 3초 망설임

🏃 DOES — 실제로 하는 행동

-

❤️ FEELS — 감정

- (감정) ← 근거: P2 "..." 발언 시 한숨

3. PAINS & GAINS

😣 PAINS (고통·장애물·리스크)근거심각도 (상/중/하)
😊 GAINS (원하는 결과·기대)근거중요도

4. 인사이트 10개

인사이트 ≠ 요약.
요약: "사용자는 앱이 복잡해서 불편해한다." → 누구나 아는 말. 쓸모없음.
인사이트: "사용자는 앱이 복잡해서가 아니라, 실수했을 때 되돌릴 방법이 없어서 신중해지고 결국 포기한다."

좋은 인사이트에는 긴장(tension) 이 있습니다. "A를 원하면서 동시에 B를 한다" 같은 모순.

10개를 아래 형식으로 씁니다. 표로 써도 되지만, 목록이 쓰기 편합니다.

**1.** (인사이트 한 문장)
- 근거: "..." (P1)
- 놀라운가: ☐

1.

  • 인사이트:
  • 근거:
  • 놀라운가: ☐

2. ~ 10. (같은 형식)

놀라운가? = 인터뷰 전에 우리가 예상하지 못했던 내용인가.
체크된 것이 3개 미만이면, 인터뷰를 제대로 안 했거나 데이터를 겉핥기로 읽은 것입니다.


5. AI 활용 기록 (이 주차)

무엇을 시켰나AI 결과사람이 검증/수정한 것
(예: 전사록 3건 발언 클러스터링)(예: 5개 그룹 제시)(예: 그룹 2·4가 사실상 동일 → 병합. AI가 P3의 반어법을 긍정으로 오해 → 수정)

AI가 놓친 것을 반드시 1개 이상 적으세요. AI는 문장은 잘 묶지만 침묵·망설임·모순처럼 전사록에 안 적힌 것을 못 봅니다. 거기에 인사이트가 있습니다.


작성 예시

동네장터 — 중고 물건을 파는 사람 3인 인터뷰

페르소나

항목내용근거
이름·상황정민(22, 3학년). 중고 직거래에서 처음 판매자를 맡음P1, P3
목표물건을 무사히 팔고 약속 때문에 스트레스받지 않는 것P1
현재 방식카톡방에 "다들 어떻게 되어가?"를 며칠에 한 번 올림P1, P2
가장 큰 장애물물어보는 행위 자체가 불편해서 결국 안 물어봄P1, P3

공감지도

👂 SAYS

"제가 재촉하는 사람처럼 보일까 봐 못 물어보겠더라고요." (P1)
"그냥 제가 하는 게 마음이 편해요. 싸우는 것보단 낫잖아요." (P3)

🤔 THINKS

- 먼저 제안하면 상대가 나를 재촉하는 사람으로 볼 것이다
  ← 근거: P1이 "재촉" 질문에서 3초 망설인 뒤 웃으며 넘어감
- 사실 아무도 안 하고 있을까 봐 확인하기가 무섭다
  ← 근거: P3 "확인 안 하는 게 아니라 못 하는 거예요"

🏃 DOES

- 카톡방에 안부처럼 돌려 물어봄 ("다들 잘 되어가?")
- 답이 없으면 재차 묻지 않고 그냥 기다림 (P1, P3)
- 마감 2일 전에 혼자 밤을 새움 (P3)

❤️ FEELS

- 불안 ← P1이 "마감 전 일주일은 잠을 잘 못 자요"
- 미안함 ← P3 "제가 자꾸 물어보면 상대가 귀찮아할 것 같아서요"

PAINS

PAINS근거심각도
먼저 장소를 제안하는 행위에 사회적 비용이 든다P1, P3상
문제를 늦게 알아서 대응할 시간이 없다P1 "마감 이틀 전에 알았어요"상
혼자 떠안고 나서 관계까지 나빠진다P3중

인사이트 (10개 중 3개 발췌)

#인사이트근거놀라운가?
1판매자는 장소를 몰라서 못 정하는 게 아니라, 먼저 제안하는 행위의 사회적 비용 때문에 조율을 포기한다P1, P3☑
2판매자는 귀찮아서 미루는 게 아니라, 상대를 배려하려고 미룬다P3☑
3"협상"하게 만들면 오히려 부담이 커진다. 판매자가 원하는 건 협상이 아니라 이미 좁혀진 선택지P2 "겹치는 시간만 보여도 마음이 편해요"☑

3번 인사이트가 이 내 방향을 결정했습니다. "채팅 기능"이 아니라
"이미 하고 있는 작업이 자연스럽게 드러나는 방식"으로 문제를 다시 봤습니다.

AI 활용 기록

무엇을 시켰나AI 결과사람이 검증/수정한 것
전사록 3건 발언 클러스터링5개 그룹 제시그룹 2·4가 사실상 동일 → 병합
감정 분류P3의 "괜찮아요 뭐, 제가 하면 되니까"를 긍정으로 분류실제로는 체념. 녹음에서 한숨이 먼저 나왔음 → 부정으로 수정

AI가 놓친 것: 침묵과 한숨. 전사록에 안 적힌 것은 AI가 볼 수 없습니다.


제출 체크리스트

  • 공감지도의 모든 칸에 근거(인용/관찰) 가 붙어 있는가
  • 페르소나가 실제 인터뷰 기반인가 (상상 금지)
  • 인사이트 10개 중 "놀라운 것"이 3개 이상인가
  • AI가 놓친 것을 1개 이상 찾아 기록했는가

템플릿 043주

문제 정의서

사용 주차: 3주차 (개인 후보 3개 사전 제출 → 수업 중 확정)
제출: 과제 제출 페이지에서 «문제 정의서» 선택 → 채우고 제출


왜 이 문서가 가장 중요한가

캡스톤이 실패하는 1순위 원인은 기술력 부족이 아니라 문제를 잘못 정의한 것입니다.
문제가 틀리면, 그 위에 쌓은 15주치 코드는 전부 낭비입니다.

좋은 문제의 3가지 조건

  1. 구체적인 사람이 있다 — "대학생"은 사람이 아닙니다. "이번 학기에 처음 중고 물건을 팔아본 3학년"이 사람입니다.
  2. 이미 대가를 치르고 있다 — 그 사람이 지금 시간·돈·감정을 쓰고 있다는 근거가 있다.
  3. 아직 안 풀렸다 — 이미 좋은 해결책이 있다면, 그건 문제가 아니라 시장입니다.

1. POV (Point of View) 문장

[ 사용자 ] 는 [ 니즈 ] 가 필요하다.

왜냐하면 [ 인사이트 ] 이기 때문이다.

작성 예시:
[이번 학기에 처음 중고 물건을 팔아본 3학년 학생]은
[리뷰 짝이 실제로 일을 하고 있는지 눈치 보지 않고 확인할 방법]이 필요하다.
왜냐하면 [진행 상황을 물어보는 행위 자체가 리뷰 짝을 불신하는 것처럼 보일까 봐,
판매자는 먼저 제안하지 못한 채 눈치만 보다가 결국 거래가 흐지부지되기] 때문이다.

내 프로젝트의 POV:


검증 질문답
이 사용자를 몇 명 실제로 만났는가?
인사이트의 근거가 된 인용문은?
이 문장에 "앱", "플랫폼", "AI" 같은 해결책 단어가 들어갔는가?☐ 없음 (있으면 다시 쓰세요)

2. HMW (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주차에 실제로 측정할 수 있는 것만 적으세요.


6. 스코프 경계 (매우 중요)

✅ 우리가 하는 것❌ 우리가 하지 않는 것

"하지 않는 것" 목록이 비어 있으면 12주차에 무너집니다.
로그인·결제·관리자 페이지·추천 알고리즘·모바일 앱 — 이 중 정말 필요한 것이 몇 개입니까?


7. AI 활용 기록 (이 주차)

무엇을 시켰나AI 결과사람이 검증/수정한 것
(예: "이 POV 문장의 약점 3가지를 지적해줘")

3주차 필수 실습: AI에게 우리 문제 정의를 반박시키기.
반박 내용 중 수용한 것 1개와 반려한 것 1개를 반드시 기록하세요.

AI의 반박수용/반려이유

작성 예시

동네장터 — 중고 직거래 약속 도우미

POV

[이번 학기에 처음 중고 물건을 팔아본 3학년 학생]은
[상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법]이 필요하다.
왜냐하면 [먼저 장소를 제안하는 행위가 상대를 재촉하는 것처럼 보일까 봐
서로 미루다가 대화가 끊기고 거래가 흐지부지되기] 때문이다.
검증 질문답
이 사용자를 몇 명 만났는가5명 (P1~P5, 전원 직거래 경험자)
인사이트 근거 인용P1 "제가 재촉하는 사람처럼 보일까 봐 먼저 말을 못 꺼내겠더라고요"
해결책 단어가 들어갔는가없음 (앱·플랫폼·자동화 단어 없음)

HMW

#HMW 질문범위
1어떻게 하면 서로 묻지 않아도 만날 장소와 시간이 자연스럽게 좁혀질까?적당 ✅
2어떻게 하면 "보고"가 아니라 "흔적"으로 상황이 보이게 할까?적당 ✅
3어떻게 하면 지연을 마감 전에 미리 알 수 있을까?적당
4어떻게 하면 중고거래를 잘 되게 할까?너무 넓음 ❌

→ 4주차에 집중할 HMW: 1번, 2번

문제 정의 요약

항목내용
한 문장 정의처음 물건을 파는 학생이 상대에게 묻지 않고도 만날 장소와 시간을 정하게 한다
타깃 사용자판매자 경험이 없는 3~4학년, 4~6인 중고 직거래, 기간 3~4주
현재 해결 방식카톡방에 안부처럼 돌려 묻거나, 아예 묻지 않고 본인이 미리 만들어 둠
현재 방식의 한계문제를 마감 임박에야 알게 되고(P1), 판매자만 계속 눈치를 본다(P3)
우리가 다르게 할 지점협상을 요구하지 않고, 양쪽이 미리 고른 시간에서 겹치는 것만 보여준다

성공의 정의

구분지표목표치측정 방법
사용자판매자가 만날 후보를 정하는 데 걸리는 시간30초 이내14주차 사용성 테스트 T1
사용자"묻지 않고 알 수 있었다"에 동의5명 중 4명테스트 후 인터뷰
기술약속판 첫 로딩2초 이내배포 환경 측정

스코프 경계

✅ 하는 것❌ 하지 않는 것
거래 등록·상태 표시채팅 기능 (카톡을 대체하지 않음)
답 없는 거래 시각 구분파일 공유·문서 편집
약속판 한 화면모바일 네이티브 앱 (반응형 웹만)
성적·평가 기능
알림 푸시 (이번 학기 제외)

AI 반박 기록

AI의 반박수용/반려이유
"작업을 등록하는 것 자체가 부담이라 아무도 안 쓸 것"수용맞는 지적. 등록 부담을 줄이는 것을 핵심 설계 과제로 옮김
"노션·지라 같은 기존 도구로 충분하지 않나"반려P2·P4가 실제로 써봤고 "중고거래에는 무겁다"고 답함. 우리는 3주짜리 중고거래에 특화
"타깃을 대학생 전체로 넓혀야 시장성이 있다"반려캡스톤은 시장 검증이 목적이 아님. 넓히면 근거가 사라짐

캠퍼스 캡션 — 청각장애 학생 강의 자막 서비스 (POV만 발췌)

[전공 강의에서 실시간 자막 없이 수업을 듣는 청각장애 학생]은
[교수의 발화를 놓쳤을 때 강의 흐름을 잃지 않고 따라잡을 방법]이 필요하다.
왜냐하면 [속기 지원은 신청 절차가 길고 모든 수업에 배정되지 않으며,
녹음을 나중에 듣는 방식은 그 수업 시간 안에서 질문할 기회를 이미 놓치기] 때문이다.
항목내용
타깃 사용자지원 인력이 배정되지 않은 강의를 수강하는 청각장애 학생
현재 방식친구의 필기 공유, 녹음 후 복습, 교수에게 개별 요청
한계전부 수업이 끝난 뒤의 해결책이라 실시간 참여를 회복하지 못함
하지 않는 것완벽한 자막 정확도 / 모든 강의실 지원 / 수어 번역

두 예제의 차이를 보세요. '동네장터'은 기술 난이도가 낮고 사용자 심리가 핵심이며,
'캠퍼스 캡션'은 문제가 명확한 대신 기술 리스크(인식 정확도·지연)가 프로젝트의 성패를 가릅니다.
6주차 PoC에서 무엇을 검증해야 하는지가 완전히 달라집니다.


제출 체크리스트

  • POV 문장에 해결책 단어가 없는가
  • 타깃 사용자가 "상황"까지 구체적인가
  • 모든 주장에 인터뷰 근거가 붙어 있는가
  • 성공 지표가 14주차에 실제 측정 가능한가
  • "하지 않는 것" 목록이 3개 이상인가
  • AI 반박 중 반려한 것과 그 이유가 적혀 있는가

템플릿 053주~

PRD

사용 주차: 3주차 v0.1 작성 → 이후 계속 갱신 (버전 기록 필수)
제출: 과제 제출 페이지에서 «PRD» 선택 → 채우고 제출 (갱신할 때마다 다시 제출)

버전날짜작성자주요 변경
v0.1최초 작성

0. 이 문서를 쓰는 법

PRD는 "무엇을 왜 만드는가" 를 적는 문서입니다. "어떻게 만드는가"는 여기 쓰지 않습니다(그건 8주차 아키텍처 문서).

주의

AI로 PRD 초안을 만드는 것은 허용됩니다. 그대로 제출하는 것은 금지입니다.
AI는 그럴듯하지만 일반적인 PRD를 씁니다. 여러분의 인터뷰 데이터가 안 들어간 PRD는 어느 것이든 상관없는 문서이며, 0점입니다. 초안 생성 후 반드시 §2·§4를 직접 다시 쓰세요.


1. 개요

항목내용
제품명
한 줄 설명(엘리베이터에서 15초 안에 설명한다면)
타깃 사용자(문제 정의서와 일치해야 함)
해결하는 문제
핵심 가치 제안(경쟁 대안 대비 우리만의 것 한 가지)

2. 배경 및 근거

여기가 여러분의 PRD를 여러분 것으로 만드는 부분입니다. 인터뷰 데이터를 직접 인용하세요.

문제 상황:

사용자 근거:

인용/관찰출처
"..."P1
"..."P2

기존 대안과 그 한계:

기존 대안어떻게 쓰이나왜 부족한가출처
(실제 확인한 URL)

3. 목표와 비목표

목표 (Goals)

1.
2.
3.

비목표 (Non-Goals) — 이번 학기에 하지 않는 것

1.
2.
3.

비목표를 적어두면 12주차에 "이것도 넣을까?" 하는 유혹을 이길 수 있습니다.


4. 사용자 시나리오

기능 목록보다 시나리오가 먼저입니다. 사용자가 어떤 상황에서 이걸 꺼내드는지 서술하세요.

시나리오 1 (핵심):

(누가) ○○는 (언제/어디서) △△한 상황에서
(무엇을 하려고) □□하려 한다.
(현재) 지금은 ~~하게 하고 있어서 ~~한 문제가 있다.
(우리 제품으로) 우리 제품에서는 ~~ → ~~ → ~~ 순서로 진행하고,
(결과) 결과적으로 ~~를 얻는다.

시나리오 2:


5. 기능 요구사항

ID기능명설명우선순위관련 시나리오
FR-01Must1
FR-02Must
FR-03Should
FR-04Could
FR-05Won't (이번 학기)

MoSCoW 기준

  • Must — 이게 없으면 제품이 아님. 혼자 하는 프로젝트는 2~3개를 넘기지 마세요.
  • Should — 있으면 확실히 좋음. 시간 남으면.
  • Could — 여유가 있을 때만.
  • Won't — 이번 학기엔 안 함 (비목표와 연결).
주의

Must가 4개 이상이면 반드시 미완성으로 끝납니다. 지금 줄이세요. (혼자 6주 기준)


6. 비기능 요구사항

구분요구사항측정 방법
성능(예: 핵심 화면 로딩 2초 이내)
보안(예: 비밀번호 해시 저장, API 키 서버 보관)
사용성(예: 첫 사용자가 도움말 없이 핵심 과업 완료)14주차 사용성 테스트
안정성(예: 잘못된 입력에 서버가 죽지 않음)
확장성/기타

비기능 요구사항을 빈칸으로 두면 12주차에 "돌아가긴 하는데 쓸 수 없는 것"이 나옵니다.


7. 화면 및 흐름 (요약)

화면목적주요 요소관련 FR

사용자 플로우:

(예: 진입 → 로그인 → 거래 열기 → 가능 시간 선택 → 약속판 → 확정 알림)

8. 데이터 (개요)

데이터 항목설명개인정보 여부보관 기간
☐
☐

개인정보가 하나라도 있으면 8주차 설계에서 별도로 다룹니다. 지금은 목록만.


9. 오픈 이슈

#미해결 질문언제까지 결정담당
1
2

10. AI 활용 기록

무엇을 시켰나AI 결과사람이 검증/수정한 것
(예: PRD 초안 생성)(예: 전체 골격 + 기능 12개 제안)(예: 기능 12개 중 7개가 인터뷰 근거 없음 → 삭제. §2·§4 전면 재작성)
(예: "이 PRD에서 빠진 비기능 요구사항은?")

작성 예시

동네장터 — PRD v0.2 발췌

1. 개요

항목내용
제품명동네장터
한 줄 설명묻지 않아도 만날 장소와 시간이 좁혀지는 직거래 약속 도우미
타깃 사용자판매자 경험이 없는 3~4학년, 4~6인 중고 직거래
해결하는 문제먼저 장소를 제안하는 사회적 부담 때문에 판매자가 조율을 미룬다
핵심 가치 제안입력을 요구하지 않는다. 이미 남는 흔적으로 상태를 보여준다

2. 배경 및 근거

문제 상황:

판매자는 만날 장소를 모르는 게 아니다. 제안할 방법이 없어서가 아니라,
먼저 제안하는 행위가 재촉으로 읽힐까 봐 제안하지 못한다. 결과적으로 대화가 끊긴 뒤에야
알게 되고, 그때는 거래를 접는 것 말고 선택지가 없다.
인용/관찰출처
"제가 재촉하는 사람처럼 보일까 봐 못 물어보겠더라고요."P1
"커밋만 보여도 안심돼요. 보고까진 필요 없어요."P2
"그냥 제가 하는 게 마음이 편해요." (한숨 뒤)P3

기존 대안과 한계:

기존 대안어떻게 쓰이나왜 부족한가
카카오톡안부처럼 돌려 물음답이 없으면 재차 못 물음. 기록이 흘러감
Notion일부 본인이 도입 시도P2·P4: "3주짜리 중고거래에 쓰기엔 무겁다"며 2주 만에 중단
구글 시트역할 분담표로 사용최초 1회 작성 후 갱신되지 않음

3. 목표와 비목표

목표

  1. 판매자가 30초 안에 만날 후보를 정한다
  2. 거래 등록에 드는 시간이 30초 이내다
  3. 지연이 마감 전에 눈에 띈다

비목표 (이번 학기 제외)

  1. 채팅·파일 공유 — 카카오톡을 대체하지 않는다
  2. 모바일 네이티브 앱 — 반응형 웹으로 충분
  3. 알림 푸시 — 4주차 인터뷰에서 "알림이 더 부담"이라는 답이 나옴

5. 기능 요구사항

ID기능명우선순위관련 시나리오
FR-01거래 열기·참여 (링크 공유)Must1
FR-02가능 시간 선택 (요일·시간대)Must1
FR-03약속판 — 상대·상태·겹치는 시간 한 화면Must1
FR-04답 없는 거래 시각 구분Must2
FR-05작업 상태 변경 (한 번의 조작으로)Should1
FR-06주간 요약 보기Could—
FR-07알림 푸시Won't비목표 3

Must가 4개입니다. 처음에는 9개였고, 3주차 코칭에서 잘라냈습니다.

6. 비기능 요구사항

구분요구사항측정 방법
성능약속판 첫 로딩 2초 이내 (20개 작업 기준)배포 환경 개발자도구
보안링크가 없으면 거래 정보에 접근 불가12주차 교차 QA
사용성첫 사용자가 도움말 없이 거래 등록 완료14주차 테스트 T2
안정성겹치는 시간 0건 / 상대 미참여 상태에서도 화면이 깨지지 않음테스트 코드

캠퍼스 캡션 — 비기능 요구사항만 발췌

프로젝트 성격에 따라 비기능 요구사항의 무게가 완전히 달라지는 예입니다.
여기서는 성능과 접근성이 핵심 기능만큼 중요합니다.

구분요구사항측정 방법
성능발화 종료 후 자막 표시까지 1.5초 이내6주차 PoC에서 측정, 20회 평균
정확도전공 용어 제외 일반 발화 인식률 85% 이상실제 강의 녹음 10분 샘플로 측정
접근성자막 글자 크기·대비를 사용자가 조절 가능14주차 당사자 테스트
안정성네트워크 끊김 시 마지막 자막 유지 + 복구 안내테스트 코드
개인정보강의 음성은 저장하지 않고 실시간 처리 후 폐기8주차 설계에서 별도 ADR

마지막 항목처럼 개인정보가 걸린 요구사항은 PRD에 적어두고 8주차에 ADR로 결정합니다.


제출 체크리스트

  • §2 배경에 내 프로젝트 인터뷰 인용이 들어 있는가 (AI 문장 그대로 X)
  • Must 기능이 6개 이하인가
  • 모든 기능이 시나리오나 인터뷰 근거로 연결되는가
  • 비기능 요구사항에 측정 방법이 적혀 있는가
  • 비목표(Non-Goals)가 3개 이상인가
  • 인용한 외부 사례의 URL을 직접 열어서 확인했는가

템플릿 063주~

사용자 스토리

사용 주차: 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 · **우선순위:** Must · **추정:** M
**의존성:** US-01(로그인), US-02(거래 열기)

마지막 인수조건(빈 상태)을 주목하세요. 예외·빈 상태·에러 상태를 안 적으면 AI는 정상 경로만 만들어줍니다. 그리고 그게 13주차 데모에서 터집니다.

이 스토리를 쪼개기 전에는 이랬습니다

처음문제
US-03 약속판 만들기 (추정 L)너무 큼. AI에게 시키면 매번 다른 것이 나오고, 인수 판정이 불가능

→ 조회 / 표시 / 지연 강조 / 빈 상태로 나눠 4개 스토리(S·M)로 분할했습니다.
이 분할이 10주차 구현 속도를 결정했습니다.


백로그

추정 단위: S (반나절) / M (1~2일) / L (3일 이상 → 더 쪼개세요)
L짜리 스토리는 AI에게도 사람에게도 실패합니다. 반드시 분할하십시오.

📌 아래 백로그 표는 스프레드시트로 대체해도 됩니다 (파일을 저장소에 넣고 링크).
다만 그 아래 스토리 상세와 인수조건은 반드시 마크다운으로 씁니다. 이슈 본문과 AI 프롬프트에 그대로 쓰이기 때문입니다.

Must (핵심 — 없으면 제품이 아님)

ID스토리 요약우선순위추정의존성스프린트
US-01Must1
US-02Must1
US-03Must1
US-04Must2

Should

ID스토리 요약우선순위추정의존성스프린트
US-05Should2
US-06Should3

Could / Won't

ID스토리 요약우선순위비고
US-07Could
US-08Won'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 .

인수조건

  • Given , When , Then .

관련 FR: · 우선순위: · 추정: · 의존성:


INVEST 자가 점검

각 스토리가 아래를 만족하는지 확인하세요.

기준질문
Independent다른 스토리 없이도 단독으로 개발/테스트 가능한가?
Negotiable구현 방법을 못 박지 않았는가? (스토리는 "무엇", 코드는 "어떻게")
Valuable사용자에게 가치가 있는가? ("DB 테이블 생성"은 스토리가 아님)
Estimable얼마나 걸릴지 감이 오는가? 안 오면 조사가 더 필요하다는 뜻
SmallS 또는 M인가? L이면 쪼개세요
Testable인수조건만 보고 다른 사람이 합격/불합격을 판정할 수 있는가?

9주차: 이슈로 전환

  • 스토리 1개 = 이슈 1개
  • 이슈 제목: [US-03] 리뷰 짝 진행 상황 확인
  • 이슈 본문: 스토리 + 인수조건을 체크박스로
  • 라벨/분류: must / should / sprint-1 / 담당 영역
  • 변경 요청 본문에 이슈 번호를 적어 이슈와 코드를 연결

이슈 트래커를 제공하는 호스팅을 쓸 수 없으면 스프레드시트 칸반(할 일 / 진행 / 리뷰 / 완료)으로 대체합니다. 열 구성과 기록 항목은 동일하게 유지하세요.
자세한 내용은 저장소 운영 방식 선택 가이드.


제출 체크리스트

  • 모든 Must 스토리에 인수조건이 3개 이상 있는가
  • 각 스토리에 예외/빈 상태/에러 인수조건이 최소 1개 있는가
  • L 추정 스토리가 남아 있지 않은가
  • 인수조건이 "잘 동작한다" 같은 판정 불가 문장이 아닌가
  • 스토리와 PRD의 FR이 서로 연결되는가

템플릿 078주~

ADR 설계 결정

사용 주차: 8주차 최초 3건 작성 → 이후 중요한 결정마다 추가
제출: 과제 제출 페이지에서 «ADR» 선택 → 결정 1건마다 따로 제출 (번호를 다르게)


왜 ADR을 쓰는가

15주차 발표에서 반드시 이 질문을 받습니다.

"왜 그 기술을 선택했나요?"

이때 "인터넷에서 많이 쓴다고 해서요" 또는 "AI가 추천해서요"라고 답하면 그 사람은 설계를 한 게 아닙니다.
ADR은 결정의 순간에 그 이유를 남기는 문서입니다. 나중에 쓰면 반드시 미화되고 왜곡됩니다.

주의

이 과목에서 ADR이 특히 중요한 이유:
AI는 대안을 나열하고 장단점을 정리하는 데 매우 뛰어납니다. 그건 AI에게 시키세요.
하지만 "내 프로젝트의 상황에서 무엇을 포기할 것인가" 는 AI가 대신 결정할 수 없습니다.
ADR은 "AI가 정리하고 사람이 결정한다"는 이 과목의 원칙이 문서로 드러나는 자리입니다.


파일명 규칙

docs/adr/0001-frontend-framework-react.md
docs/adr/0002-database-postgresql.md
docs/adr/0003-auth-oauth-vs-session.md

템플릿 (이 아래를 복사해서 사용)

# ADR-0001: (결정 내용을 한 줄로)

- **상태:** 제안됨 / **채택됨** / 폐기됨 / 대체됨(→ ADR-00XX)
- **날짜:** 2026-XX-XX
- **결정자:** (리뷰 짝 이름들)
- **관련 요구사항:** FR-01, NFR-성능

## 배경 (Context)

무엇을 결정해야 하는가? 왜 지금 결정해야 하는가?
내 프로젝트의 제약 조건은 무엇인가? (내 역량, 남은 기간, 예산, 배포 환경 등)

> 여기에 **내 실제 제약**을 솔직하게 쓰세요.
> "리뷰 짝 4명 중 3명이 해당 언어 경험 없음" 같은 것이 가장 중요한 제약입니다.

## 검토한 대안 (Options)

### 대안 A: (이름)
- 장점:
- 단점:
- 내 프로젝트 기준 적합도:

### 대안 B: (이름)
- 장점:
- 단점:
- 내 프로젝트 기준 적합도:

### 대안 C: (이름)
- 장점:
- 단점:
- 내 프로젝트 기준 적합도:

## 결정 (Decision)

우리는 **(대안 X)** 를 선택한다.

**결정적인 이유 (한 가지):**


**이 결정으로 우리가 포기하는 것:**


> 포기하는 것이 없다면, 그건 결정이 아니라 그냥 유일한 선택지였던 것입니다.
> 진짜 결정에는 반드시 대가가 따릅니다.

## 결과 (Consequences)

**긍정적 영향:**
-

**부정적 영향 / 감수하는 리스크:**
-

**이 결정이 틀렸다는 것을 언제 알 수 있는가:**
(예: 스프린트 2 종료 시점에 ○○ 성능이 △△ 이하이면 재검토)

## AI 활용 기록

| 무엇을 시켰나 | AI 결과 | 본인이 판단한 것 |
|---|---|---|
| (예: "이 요구사항에 맞는 DB 대안 3개와 트레이드오프") | (예: PostgreSQL / MongoDB / SQLite 비교표) | (예: AI는 MongoDB를 권했으나, 우리 데이터가 관계형이 명확하고 리뷰 짝 3명이 SQL 경험이 있어 PostgreSQL 선택) |

> **AI의 추천을 그대로 따랐다면, 왜 그것이 우리 상황에도 맞는지를 적으세요.**
> **AI와 다르게 결정했다면, 그 이유가 이 ADR에서 가장 가치 있는 문장입니다.**

작성 예시

캠퍼스 캡션 — ADR-0002 음성 인식 방식 선택

ADR-0002: 음성 인식을 외부 STT API로 처리한다

  • 상태: 채택됨
  • 날짜: 2026-XX-XX
  • 결정자: 리뷰 짝 3인
  • 관련 요구사항: FR-01(실시간 자막), NFR-성능(1.5초 이내), NFR-개인정보

배경

강의 음성을 텍스트로 바꾸는 방식을 정해야 한다. 이것이 프로젝트의 성패를 가르는 핵심 기술이며, 6주차 PoC에서 "가능하긴 한데 지연이 문제"라는 결과가 나온 상태다.

내 프로젝트의 제약

  • 리뷰 짝 3명 중 지도 API 경험자 0명
  • 남은 개발 기간 6주
  • 예산: 학과 지원 없음. 무료 범위 안에서 해결해야 함
  • 강의 음성은 개인정보이므로 저장을 최소화해야 함

검토한 대안

대안 A: 오픈소스 STT 모델을 직접 서버에 올려 구동

  • 장점: 비용이 들지 않고, 음성이 외부로 나가지 않아 개인정보 측면에서 유리
  • 단점: GPU 없는 환경에서 실시간 처리가 어려움. PoC에서 30초 음성에 40초 소요
  • 적합도: 낮음. 6주 안에 성능 문제를 해결할 역량이 없음

대안 B: 상용 STT API 실시간 스트리밍 사용

  • 장점: PoC에서 지연 1.2초 확인. 별도 튜닝 없이 목표 달성
  • 단점: 무료 한도를 넘으면 비용 발생. 음성이 외부 서비스로 전송됨
  • 적합도: 높음. 단 개인정보 처리 방침을 명시해야 함

대안 C: 녹음 후 후처리 (비실시간)

  • 장점: 구현이 가장 쉽고 정확도가 높음
  • 단점: 문제 정의를 포기하는 것. 우리가 풀려는 건 "수업 시간 안에서의 참여"였음
  • 적합도: 없음. 문제 정의와 충돌

결정

우리는 대안 B(상용 STT API 실시간 스트리밍) 를 선택한다.

결정적인 이유: 1.5초 이내라는 비기능 요구사항은 타협할 수 없는데, 내 역량과 남은 기간으로 대안 A가 그 수치에 도달할 가능성이 낮다.

이 결정으로 우리가 포기하는 것

  • 음성이 외부로 나가지 않는다는 개인정보 이점 → 대신 저장하지 않고 즉시 폐기하고, 사용 전 고지·동의 화면을 넣는다
  • 무료 한도 초과 시 서비스 중단 위험 → 데모용 사용량 상한을 코드에 넣는다

결과

긍정적 영향

  • 인식 품질을 본인이 붙들지 않아도 되어, 남은 6주를 자막 표시·사용자 경험에 쓸 수 있다

부정적 영향 / 감수하는 리스크

  • 외부 서비스 장애 시 핵심 기능이 멈춘다 (대체 경로 없음)
  • 전공 용어 인식률이 낮을 수 있음 → 사용자 정정 기능은 이번 학기 비목표

이 결정이 틀렸다는 것을 언제 알 수 있는가

  • Sprint 2 종료 시점(11주차)에 실제 강의 녹음으로 측정한 지연이 2초를 넘으면 재검토한다

AI 활용 기록

무엇을 시켰나AI 결과본인이 판단한 것
"실시간 STT 구현 방법 3가지와 트레이드오프"A·B·C 비교표 제시유용했음. 다만 "GPU 없이도 가능"이라는 서술은 우리 PoC 결과와 달랐음
"우리 상황에 뭐가 제일 좋아?"대안 A(오픈소스) 추천거부. AI는 비용만 보고 내 역량과 기간을 계산에 넣지 못함. 우리 PoC 실측(40초)이 반박 근거

마지막 줄이 이 ADR에서 가장 가치 있는 문장입니다.
AI와 다르게 결정했고, 그 근거가 우리가 직접 측정한 숫자입니다.


8주차 필수 ADR 3건

최소 아래 3개 영역에 대해 ADR을 작성합니다.

#영역예시
1아키텍처 구조모놀리식 vs 분리 / 클라이언트-서버 경계 / 렌더링 방식
2데이터 저장어떤 DB, 왜. 스키마 설계 원칙
3가장 불확실한 것인증 방식 / 외부 API 선택 / 배포 환경 / 실시간 처리 방식

3번은 사람마다 다릅니다. 6주차 리스크 리포트에서 "미해결"로 남은 항목을 고르세요.


작성 시 흔한 실수

❌ 이렇게 쓰면 안 됩니다✅ 이렇게 쓰세요
"React가 가장 인기 있어서""리뷰 짝 4명 중 3명이 React 경험이 있어 학습 비용을 8주차 이후 구현 기간에서 뺄 수 있다"
대안이 1개만 적혀 있음진지하게 검토한 대안 최소 2개, 각각의 단점까지
"포기하는 것: 없음"반드시 있습니다. 찾아서 쓰세요
12주차에 몰아서 작성결정한 그 주에 작성 (작성 시점을 확인합니다)

제출 체크리스트

  • 결정 1건 = 파일 1개로 분리되어 있는가
  • 각 ADR에 대안이 2개 이상 검토되었는가
  • "내 프로젝트의 제약"이 배경에 구체적으로 적혀 있는가
  • 포기한 것이 명시되어 있는가
  • "이 결정이 틀렸다는 것을 언제 알 수 있는가"가 채워져 있는가
  • AI 추천을 따랐다면 그 근거가, 따르지 않았다면 그 이유가 적혀 있는가

템플릿 089주~

스프린트 계획

사용 주차: 9주차 3개 스프린트 계획 수립 → 10·11·12주차 실행
제출: 과제 제출 페이지에서 «스프린트 계획» — 스프린트마다 한 건씩 (작업 목록은 이슈 보드가 정본)
이슈 트래커를 쓸 수 없으면 저장소 운영 방식 선택 가이드의 대체 수단을 사용하세요.


이 과목의 스프린트 구조

스프린트기간목표종료 조건
Sprint 19주차 수업 후 ~ 10주차핵심 기능 1개를 끝에서 끝까지사용자가 화면에서 시작해 결과를 볼 수 있는 경로 1개 완성
Sprint 210주차 후 ~ 11주차모듈 통합각자 만든 것들이 하나의 앱으로 연결됨
Sprint 311주차 후 ~ 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-01S/M☐
#US-02☐
#US-03☐

리스크 및 대응

예상 리스크대응 계획

회고 (10주차 수업 중 작성) → docs/retro/sprint-1.md


Sprint 2 — 통합

항목내용
기간~
스프린트 목표 (한 문장)
데모할 것 (11주차)
이슈스토리담당추정상태
#☐
#☐

통합 계획 — 11주차 이전에 반드시

연결할 모듈 A연결할 모듈 B인터페이스 (API/함수 시그니처)담당

통합은 마지막에 하는 일이 아닙니다. 이번 스프린트 중반에 한 번 억지로라도 붙여보세요.
붙여봐야 무엇이 안 맞는지 알 수 있고, 그걸 알아야 남은 기간에 고칠 수 있습니다.


Sprint 3 — 품질·배포

항목내용
기간~
스프린트 목표 (한 문장)
데모할 것 (12주차)
이슈작업담당추정상태
#예외 처리 / 에러 화면☐
#성능 개선☐
#보안 점검 (키 노출, 입력 검증)☐
#배포☐
#README (설치·실행법)☐

작업 분배 원칙

원칙이유
1인당 동시에 진행 중인 이슈는 최대 2개3개 이상이면 전부 미완성으로 끝납니다
스프린트마다 역할 순환"나는 프론트만" = 캡스톤의 학습 목적 상실
이슈에 담당자 없이 두지 않기주인 없는 작업은 아무도 안 합니다
마감 48시간 전 미착수 이슈는 스코프에서 뺀다늦게 시작한 작업은 통합을 망칩니다

진행 관리

항목규칙
데일리 체크(예: 매일 저녁 Discord에 한 줄 — 한 것 / 할 것 / 막힌 것)
이슈 상태 갱신작업 시작 시 In Progress, 리뷰 요청 시 In Review
막혔을 때2시간 이상 막히면 반드시 수업 채널에 공유. 혼자 붙잡고 있는 것이 가장 큰 손실입니다

AI 활용 계획 (스프린트별)

스프린트AI에게 맡길 것사람이 반드시 할 것
1(예: 보일러플레이트, 테스트 케이스 초안)(예: 인터페이스 설계, 인수조건 판정)
2(예: 통합 시 타입 정합성 점검, 에러 로그 분석)(예: 모듈 경계 결정, 통합 순서)
3(예: 리팩터링 제안, 보안 체크리스트 점검)(예: 배포 결정, 성능 목표 판정)

작성 예시

동네장터 — Sprint 1

항목내용
기간9주차 수업 후 ~ 10주차 수업 전
스프린트 목표판매자가 거래를 열고 가능 시간을 골라 약속판에서 확인하는 경로 하나를 끝까지 뚫는다
데모할 것 (10주차)빈 화면에서 시작해 작업 3개가 약속판에 보이는 것까지
이슈스토리담당추정상태
#12US-01 거래 열기 + 링크 공유박지훈M☑
#13US-02 가능 시간 선택 (요일·시간대)이도현 + 김서연 (페어)M☑
#14US-03 약속판 조회김서연M☐
#15US-03 약속판 화면최유진S☐

리스크 및 대응

예상 리스크대응 계획
이도현이 첫 구현이라 시간이 오래 걸릴 수 있음김서연과 페어. 목요일까지 안 되면 김서연이 이어받고 이도현은 테스트 담당
#14와 #15가 붙지 않을 위험응답 JSON 형식을 수요일까지 먼저 확정하고 이슈에 붙여둔다

두 번째 대응이 핵심입니다. 8주차에 정한 인터페이스를 코드보다 먼저 확정해두면
11주차 통합에서 터지지 않습니다.

❌ 이렇게 나누면 안 됩니다

잘못된 분배왜
김서연=프론트 전부 / 박지훈=백엔드 전부레이어별 분업. 10주차 데모 때 화면과 API가 안 붙습니다
이도현=문서, 최유진=발표구현에서 배제된 사람이 생깁니다. 15주차 개인 점수에서 그대로 드러납니다

Definition of Done (이 본인이 합의한 것)

  • 인수조건 전부 충족 (예외·빈 상태 포함)
  • 테스트 작성 및 통과
  • CI 초록불
  • 리뷰 짝 1명 리뷰 승인
  • main 머지
  • 작성자가 5줄로 설명 가능 (AI 생성분 포함)
  • 추가 규칙: 화면 작업은 빈 상태 스크린샷을 변경 요청(또는 리뷰 기록지)에 첨부한다

AI 활용 계획

스프린트AI에게 맡길 것사람이 반드시 할 것
1인수조건 → 테스트 초안, 보일러플레이트응답 JSON 형식 결정, 인수 판정
2타입 정합성 점검, 에러 로그 분석모듈 통합 순서, 무엇을 자를지 결정
3리팩터링 제안, 보안 체크리스트배포 결정, 성능 목표 판정

제출 체크리스트

  • 3개 스프린트의 목표가 각각 한 문장으로 정의되었는가
  • Sprint 1이 end-to-end 관통을 목표로 하는가 (레이어별 분업 X)
  • 모든 이슈에 담당자와 추정이 있는가
  • DoD에 본인이 실제로 합의했는가
  • 백로그가 이슈(또는 본인이 정한 대체 보드)로 전부 등록되었는가

템플릿 0910주~

주간 회고

사용 주차: 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 | 실행 여부 | 안 됐다면 이유 |
|---|---|---|
| | ☐ | |

---

## 5. AI 활용 회고

| 질문 | 답 |
|---|---|
| 이번 주 AI가 가장 도움이 된 순간은? | |
| AI 때문에 오히려 시간을 **잃은** 순간은? | |
| 다음 주에 AI 사용 방식을 어떻게 바꿀 것인가? | |

> **"AI 때문에 시간을 잃은 순간"을 매주 반드시 적으세요.**
> 이걸 찾을 수 있어야 AI를 도구로 쓰는 것이고,
> 못 찾으면 AI에게 끌려다니면서 그 사실을 모르는 것입니다.

---

## 6. 다음 주 위험 신호

| 위험 | 심각도 | 대응 |
|---|---|---|
| | 상/중/하 | |

**교수에게 도움이 필요한 것:**

회고 진행 방법 (15분 타이머)

시간활동
3분각자 조용히 Keep/Problem을 개인 메모에 작성 (동시에, 말하지 않고)
5분돌아가며 공유. 이 단계에서는 반박 금지, 듣기만
5분가장 중요한 Problem 1~2개 선정 후 Try 결정
2분담당자·기한 확정, 과제 제출 페이지에서 제출

3분간 먼저 각자 쓰는 것이 핵심입니다. 바로 말로 시작하면 목소리 큰 사람 의견만 남습니다.


작성 예시

동네장터 — Week 11 회고

참석: 전원 (박지훈 20분 늦참, 사전 공유함)
스프린트: Sprint 2, 진행률 4/7 이슈 완료

1. 사실 확인

항목계획실제
완료 이슈 수74
병합된 변경 수75
CI 실패 횟수—11
전체 투입 시간40h34h

계획과 실제가 다른 지점:

#18(작업 상태 변경)에서 3일이 갈렸다. 프론트에서 보내는 상태 값과
API가 기대하는 값이 달랐는데, 양쪽 다 자기 쪽은 맞다고 보고 있었다.
결국 김서연이 로그를 찍어보고서야 원인을 찾았다.

2. Keep

  • 수요일 인터페이스 확정 규칙 — Sprint 1에서 효과 있었음
  • 이도현이 이번 주부터 단독 이슈를 맡았고 완료함

3. Problem

  • 상태 값 형식을 이슈에 적어두지 않아 양쪽이 다르게 구현했다
  • CI가 11번 실패했는데, 아무도 원인을 확인하지 않고 재실행만 눌렀다
  • 통합 시도를 수요일에 하기로 했는데 금요일에 했다

4. Try

무엇을누가언제까지
API 응답 예시(JSON 실물)를 이슈 본문에 붙이기 — 새 이슈부터 전부박지훈이번 주 이슈 생성 시
CI 실패 시 재실행 금지. 로그를 읽고 원인을 이슈에 코멘트전원즉시

지난주 Try 점검:

지난주 Try실행안 됐다면 이유
매일 22시 약속 상황 한 줄 공유☑5일 중 4일 실행
수요일 통합 시도☐각자 자기 이슈를 끝내는 데 몰두. 이번 주 Try로 다시 올림

5. AI 활용 회고

질문답
가장 도움이 된 순간인수조건을 그대로 붙여넣고 테스트를 먼저 만들게 한 것. #17은 한 번에 통과
시간을 잃은 순간#18 상태 값 문제를 AI에게 "고쳐줘"로 3번 시켰다. 매번 다른 코드가 나왔고 증상만 옮겨 다녔다. 결국 로그를 직접 읽고서야 원인을 찾음
다음 주에 바꿀 것에러가 나면 바로 시키지 않고, 가설 3개를 먼저 받아 확인한 뒤에 고친다

6. 다음 주 위험 신호

위험심각도대응
배포를 아직 한 번도 안 해봄상12주차 전에 한 번 시도. 최유진 담당
최유진 작업량이 적음중Sprint 3에서 QA·배포를 맡기기로 함

교수에게 도움이 필요한 것: 배포 환경 선택 조언 (무료 범위 안에서)


흔한 실패

❌✅
Problem이 "시간이 부족했다" 한 줄어느 작업에서 얼마나 초과됐고 왜인지
Try가 "더 열심히 하겠다""매일 22시에 진행 상황 한 줄 공유 — 전원, 이번 주부터"
지난주 Try를 확인 안 함매주 첫 순서로 지난주 Try 실행 여부 점검
3주 몰아서 작성작성 시점을 봅니다. 몰아쓴 회고는 인정하지 않습니다

템플릿 1013–14주

사용성 테스트

사용 주차: 12주차 계획 → 13주차 간이 테스트(2명) → 13~14주차 본 테스트(5명) → 14주차 분석
제출: 과제 제출 페이지에서 «사용성 테스트» — 참가자 1명당 한 건씩. 종합 분석은 14주차에 같은 서식 아래 절에 채워 다시 제출


원칙

"어떠세요? 괜찮나요?"라고 묻지 마세요. 과업을 주고 입 다물고 지켜보세요.

사용자는 예의상 "좋네요"라고 말합니다. 그 말은 데이터가 아닙니다.
데이터는 사용자가 막힌 지점, 잘못 누른 곳, 3초 이상 멈춘 순간입니다.

5명이면 충분합니다. 사용성 문제의 약 80%는 5명 안에서 드러납니다.
10명을 대충 하는 것보다 5명을 제대로 관찰하는 것이 낫습니다.


1. 테스트 계획

항목내용
테스트 목적(무엇을 확인하려는가. 문제 정의서의 성공 지표와 연결)
대상자 조건(실제 타깃 사용자. 리뷰 짝·수강생 제외)
인원5명
방식대면 / 화면 공유
소요 시간1인당 20~30분
준비물배포된 서비스, 초기화된 테스트 계정, 기록지, 타이머

2. 과업 (Task) 설계

과업은 목표로 주고, 방법을 알려주지 마세요.
❌ "우측 상단 + 버튼을 눌러 작업을 추가해 보세요" (답을 알려준 것)
✅ "리뷰 짝에게 나눠줄 작업 3개를 등록해 보세요" (목표만 준 것)

#과업성공 기준예상 시간
T1(관찰 가능한 상태로)초
T2초
T3초

과업은 3~5개. 첫 과업은 반드시 핵심 기능으로 두세요.
뒤로 갈수록 사용자가 지쳐서 데이터 질이 떨어집니다.


3. 진행 스크립트

[도입]
"오늘은 저희가 만든 서비스를 테스트합니다.
 테스트하는 건 여러분이 아니라 저희 서비스입니다.
 못 하셔도 전혀 문제되지 않고, 오히려 그게 저희에게 가장 필요한 정보입니다.

 진행하시면서 머릿속 생각을 소리 내어 말씀해 주세요.
 '이걸 누르면 될 것 같은데', '이게 뭐지?' 같은 것 전부요.

 제가 중간에 도와드리지 못하는 점 양해 부탁드립니다.
 화면 녹화를 해도 괜찮을까요?"

[과업 진행]
- 과업을 하나씩 제시하고 타이머 시작
- 사용자가 물어봐도 답하지 않기: "어떻게 하시면 좋을 것 같으세요?"
- 침묵이 길어지면: "지금 무슨 생각 하고 계세요?"
- ⚠️ 절대 힌트 주지 않기 (여기서 대부분의 본인이 데이터를 망칩니다)

[마무리 인터뷰]
1. 가장 헷갈렸던 부분은 어디였나요?
2. 이 서비스를 한 문장으로 설명한다면?
3. 실제로 쓰신다면 언제 쓰실 것 같나요? 안 쓰신다면 왜인가요?
4. 하나만 바꿀 수 있다면 무엇을 바꾸시겠어요?

4. 세션 기록지 (참가자별 — docs/usability/U1.md)

# 사용성 테스트 — U1
- 일시 / 프로필(익명) / 진행자 / 기록자

## 과업 결과
| 과업 | 완료 | 소요 시간 | 도움 필요 | 오류 횟수 |
|---|---|---|---|---|
| T1 | ☐성공 ☐실패 ☐포기 | 초 | ☐ | |
| T2 | | | | |
| T3 | | | | |

## 막힌 지점 (가장 중요)
| 시점 | 무엇을 하려다 | 어떻게 막혔나 | 사용자 발언 |
|---|---|---|---|
| | | | "..." |

## 인상적인 발언
- "..."

## 관찰 노트 (말이 아닌 것)
- (한숨, 뒤로가기 반복, 화면 위아래 스크롤, 3초 이상 정지 등)

5. 종합 분석 (14주차 수업 중)

참고

이 절의 집계 표와 문제 목록은 스프레드시트로 만들어도 됩니다. 파일을 저장소에 넣고 링크를 겁니다.
다만 최종 개선 백로그와 "고치지 않기로 한 것"은 마크다운으로 씁니다. 판단이 담긴 부분이라 평가가 이 글을 봅니다.

정량 결과

과업성공률평균 소요 시간목표 대비
T1/5
T2/5
T3/5

문제 목록 (심각도순)

심각도 기준
상 — 과업을 완료하지 못함 / 데이터 손실 / 3명 이상이 겪음
중 — 완료는 했으나 크게 헤맴 / 2명이 겪음
하 — 사소한 불편 / 1명만 겪음

#문제발생 인원심각도원인 추정수정 난이도
1/5상S/M/L
2
3

최종 개선 백로그 (15주차까지 할 것)

남은 1주에 할 수 있는 것만 고르세요.
심각도 상 + 수정 난이도 S/M 인 것이 최우선입니다.
고치지 않기로 한 문제는 최종 발표에서 "한계"로 정직하게 밝히세요. 그게 감점보다 낫습니다.

#개선 항목담당기한근거(문제 #)
1
2

이번 학기에 고치지 않기로 한 문제와 그 이유:

문제이유향후 계획

6. AI 활용 기록

무엇을 시켰나AI 결과사람이 검증/수정한 것
(예: 5명 기록지에서 공통 문제 추출)(예: AI가 U2·U4를 같은 문제로 묶었으나 실제 원인이 달라 분리)
주의

사용자 피드백 자체를 AI로 생성하는 것은 금지입니다.
AI는 수집한 데이터를 정리하는 데만 사용합니다.


작성 예시

동네장터 — 사용성 테스트 5명

과업 설계

#과업성공 기준예상 시간
T1팔 물건 하나를 등록하고 상대에게 링크를 보내 보세요링크를 복사해 전달까지 완료90초
T2만날 수 있는 시간 3개를 골라 보세요가능 시간 3건이 약속판에 표시됨150초
T3지금 늦어지고 있는 작업이 있는지 확인해 보세요답 없는 거래을 말로 짚어냄30초

T2를 "우측 상단 + 버튼을 눌러 작업을 추가해 보세요"라고 쓰면 안 됩니다.
답을 알려준 것이라 아무 데이터도 나오지 않습니다.

정량 결과

과업성공률평균 소요목표 대비
T15/571초달성
T23/5214초미달 (목표 150초)
T35/512초달성

세션 기록 발췌 (U2)

시점무엇을 하려다어떻게 막혔나사용자 발언
1:40장소를 바꾸려다상대가 수락하기 전에는 변경이 막힘"어? 아까 보냈는데 왜 못 바꾸죠"
3:05만날 날짜를 고르려다날짜 선택기가 모바일에서 잘림(화면을 계속 확대·축소)

관찰 노트: 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지연 표시에 범례 추가최유진화문제 4

고치지 않기로 한 것

문제이유향후 계획
3. 연속 등록 흐름등록 화면 구조를 바꿔야 해서 1주 안에는 위험. 지금 되는 것을 깨뜨릴 수 있음최종 발표에서 한계로 밝히고 향후 계획에 포함
5. 복사 버튼 피드백심각도 하시간이 남으면

고치지 않기로 한 것을 기록하고 발표에서 밝히는 것이 감점보다 낫습니다.
숨겼다가 질의에서 드러나는 쪽이 훨씬 큰 감점입니다.

AI 활용 기록

무엇을 시켰나AI 결과사람이 검증/수정한 것
5명 기록지에서 공통 문제 추출7개 문제로 정리U2와 U4를 같은 문제로 묶었으나 원인이 달라(하나는 목록 구성, 하나는 화면 크기) 분리
심각도 판정 요청전부 '중'으로 판정발생 인원을 반영하지 않은 판정. 본인이 기준표로 다시 매김

제출 체크리스트

  • 실제 타깃 사용자 5명 (리뷰 짝·수강생 제외)
  • 과업이 방법이 아닌 목표로 제시되었는가
  • 진행 중 힌트를 주지 않았는가
  • 각 세션에 막힌 지점과 관찰 노트가 기록되었는가
  • 문제에 심각도와 발생 인원이 표시되었는가
  • 고치지 않기로 한 문제와 그 이유가 명시되었는가

템플릿 11매주 · 개인

AI 사용 로그

사용 주차: 1주차부터 매주
제출: 과제 제출 페이지에서 «AI 사용 로그» 선택 → 주차를 바꿔 매주 따로 제출
제출로 대체할 수 없습니다. 이 로그가 개인 기여도 평가의 근거입니다.


왜 쓰는가

이 과목에서 여러분은 팀장이고 AI는 팀원입니다.
이 로그는 감시 기록이 아니라 팀장의 작업 지시·검수 기록입니다.

단계이 로그의 어느 칸
① 지시「무엇을 시켰나」
② 검수「받은 것」 · 「검수 방법」
③ 반려「판정」 · 「이번 주 반려 기록」

이 과목은 AI 사용을 전면 허용합니다. 대신 "무엇을 시켰고, 받은 것을 어떻게 판정했는가" 를 기록하게 합니다. 이 기록이 여러분이 실제로 한 일이며, 배운 것입니다.

코드는 AI가 쓸 수 있습니다. 하지만 "받은 것을 왜 채택했고 왜 반려했는가"는 오직 여러분만 쓸 수 있습니다. 그게 이 과목이 평가하는 것입니다.

작성 시간: 주당 10분. 길게 쓰지 마세요. 대신 거짓 없이 쓰세요.


주간 기록 형식 (아래를 매주 아래에 이어 붙이기)

## Week XX (2026-XX-XX) — 이름

### 이번 주 AI 사용 요약
- 주 사용 도구:
- 대략 사용 시간:
- 이번 주 내가 담당한 작업:

### 기록

**1.**
- 무엇을 시켰나:
- 받은 것:
- 판정: 채택 / 수정 후 채택 / 반려
- 검수 방법:

**2.** (같은 형식)

**3.** (같은 형식)

> **검수 방법 예시:** 테스트 실행 / 직접 실행해 확인 / 경계값 넣어보기 /
> 공식 문서 대조 / 원 출처 URL 직접 열기 / 리뷰 짝 리뷰 / 다른 방식으로 재계산
>
> 표가 편하면 표로 써도 됩니다. 형식보다 **판정과 검수가 적혀 있는지**가 중요합니다.

### 🔴 이번 주 반려 기록 (필수 · 최소 1건)

**무엇을 반려했나:** (AI가 준 것 중 되돌린 것)

**왜 반려했나:** (틀렸다 / 맞지만 우리 것이 아니다 / 맞지만 내가 설명하지 못한다)

**대신 어떻게 했나:**

> **반려는 AI가 틀렸을 때만 하는 것이 아닙니다.** 세 가지 경우가 있습니다.
>
> | 경우 | 예 |
> |---|---|
> | 틀렸다 | 시간대를 UTC로 처리해 자정 근처에서 하루 오차가 남 |
> | 맞지만 우리 것이 아니다 | join 최적화 — 우리 스키마에서는 데이터 중복이 커짐 |
> | 맞지만 내가 설명하지 못한다 | 동작은 하는데 왜 되는지 모르는 코드 |
>
> 이 항목이 "없음"인 주는 **검수하지 않고 받아 쓴 것**입니다.
> 매주 최소 1건을 찾으세요. 반려할 것이 한 건도 없는 주는 없습니다. 없다고 적힌 로그는 인정하기 어렵습니다.

### 💡 이번 주에 배운 것 (AI 사용법 관점)

**다음 주에 다르게 시도할 프롬프트/방법:**

### ✍️ 내가 AI 없이 직접 한 것

> 설계 판단, 원인 추적, 사용자 관찰, 우선순위 결정 등. **여기가 여러분의 실력이 드러나는 자리입니다.**

-
-

작성 예시

동네장터 — 김서연, Week 10

## Week 10 (2026-XX-XX) — 김서연

### 이번 주 AI 사용 요약
- 주 사용 도구: Claude Code
- 대략 사용 시간: 6시간
- 이번 주 내가 담당한 작업: US-03 약속판 조회 API + 테스트

### 기록

| # | 무엇을 시켰나 | 받은 것 | 판정 | 검수 방법 |
|---|---|---|---|---|
| 1 | US-03 인수조건을 그대로 주고 테스트 코드 먼저 작성 요청 | 테스트 4개 | 수정 후 채택 | 빈 상태 케이스가 빠져 있어 1개 직접 추가 |
| 2 | 그 테스트를 통과하는 조회 API 구현 요청 | 구현 완료, 3/4 통과 | 수정 후 채택 | 실패한 테스트 원인을 직접 추적 |
| 3 | N+1 쿼리 최적화 제안 요청 | join 방식 제안 | **반려** | 우리 스키마에서는 데이터 중복이 커짐. 별도 조회 후 메모리 병합으로 변경 |

### 🔴 이번 주 반려 기록
**무엇을 반려했나:** 겹치는 시간 판정 로직. 시간대를 UTC로 처리해,
한국 시간 자정~09시 사이에 등록된 약속이 하루 일찍 '지난 약속'으로 표시됨.

**왜 반려했나:** 틀렸다. 밤 11시에 테스트 데이터를 넣었더니 방금 만든 약속이 지난 것으로 뜸.

**대신 어떻게 했나:** 서버 시간대를 KST로 고정하고, 경계값 테스트 케이스 2개를 직접 추가.

### 💡 이번 주에 배운 것
인수조건을 그대로 붙여넣으면 AI 구현 성공률이 확 올라간다.
반대로 "약속판 만들어줘" 같은 요청은 매번 다시 만들게 된다.
**다음 주에 다르게 시도할 것:** 이슈 본문 자체를 프롬프트로 쓸 수 있게 인수조건을 더 촘촘히 써보기.

### ✍️ 내가 AI 없이 직접 한 것
- 약속판 조회 API의 응답 구조 설계 — 지연 판정을 서버에서 하기로 결정
- 시간대 버그 원인 추적
- Sprint 2 통합 순서 결정 (붙는 순서를 잘못 잡으면 되돌리기 어렵다고 판단)

이 로그가 좋은 이유는 3번 항목(반려) 과 「반려 기록」 입니다.
채택만 있는 로그는 "AI가 시키는 대로 했다"는 기록일 뿐입니다 — 팀장이 아니라 전달자였다는 뜻입니다.
15주차 과정 확인에서 근거로 쓰이는 것은 반려와 판정의 흔적입니다.


평가에 쓰이는 방식

확인 항목무엇을 보는가
매주 작성 여부작성 시점을 봅니다(커밋 날짜 또는 주차별 스냅샷). 몰아쓴 로그는 인정하지 않습니다
「반려 기록」검수 없이 받아 쓰고 있는지, 실제로 판정하고 있는지
「직접 한 것」 항목15주차 기여 명세서 「내가 판단한 것」의 근거 자료
지시문의 변화주차가 갈수록 지시가 구체적이 되는가 — 팀장으로서 늘고 있는가

하면 안 되는 것

❌왜
로그 자체를 AI에게 쓰게 하기즉시 확인됩니다. 본인 판단이 없는 로그는 0점
"AI가 다 해줌"만 반복여러분이 한 일이 없다는 자백입니다
학기 말에 몰아서 작성작업 이력으로 확인합니다
다른 수강생의 로그 복사전체 감점

템플릿 12매주

과제 제출 서식

사용 시점: 매주 · 제출: 각 서식에 적힌 경로
주차별 과제를 어떤 형식으로 내는지 모아둔 문서입니다. 해당 주차 서식을 복사해 채웁니다.


공통 규칙

문서 산출물은 전부 과제 제출 페이지에서 제출합니다.
아래 서식들은 그 페이지에 그대로 들어 있습니다. 이 문서는 무엇을 어떻게 채우는지를 설명하는 참고 자료입니다.

항목규칙
제출과제 제출 페이지에서 해당 서식 선택 → 폼을 채우고 «제출»
마감해당 주차 수업 전날 자정
로그인Google 계정으로 로그인합니다. 작성자 이름은 계정에서 자동으로 채워집니다
수정제출함에서 본인 제출물을 열어 고친 뒤 다시 제출 (덮어쓰기, 회차가 올라감)
분량서식에 적힌 항목만. 길게 쓰는 것은 가점 요인이 아닙니다

저장소에 직접 쓰는 것은 이 넷뿐입니다 — 이슈 본문, 변경 요청 본문, README, 소스 코드.

모든 제출물 머리말

> 주차: 3주차 과제 · 작성일: 2026-XX-XX
> 작성: 김서연
> 관련 서식: 04-problem-definition

머리말의 작성일이 작업 시점 확인에 쓰입니다. 실제로 쓴 날짜를 적습니다.

과제 제출 페이지

https://sw-project-839ae.web.app/forms-firebase.html

  • 표를 직접 정렬할 필요가 없습니다. 항목마다 작성 방법과 예시가 붙어 있습니다
  • 제출 전에 체크리스트가 실시간으로 표시됩니다 (예: "Must 기능이 3개를 넘었습니다")
  • Google 계정으로 로그인합니다. 내가 낸 것만 고치거나 지울 수 있습니다
  • 제출한 것은 제출함에서 다시 열어 수정하거나 숨길 수 있습니다 (본인 것만)

표를 손으로 그리지 마세요

마크다운 표를 직접 정렬해 쓰는 것은 이 과목에서 배울 것이 아닙니다. 세 가지 방법 중 편한 것을 쓰면 됩니다.

방법언제
AI에게 정리시키기내용을 불러주고 형식만 맡깁니다. 넣지 않은 내용이 들어갔는지만 확인하세요
목록으로 쓰기서식이 표로 되어 있어도 목록으로 제출해도 됩니다
스프레드시트로 내기집계가 필요한 표. 파일을 저장소에 넣고 마크다운에서 링크만 겁니다
스프레드시트를 써도 되는 것반드시 마크다운으로 쓰는 것
선행사례 조사표, 화면 목록문제 정의서, PRD, ADR
사용성 테스트 집계·문제 목록사용자 스토리와 인수조건
백로그·이슈 목록, 스프린트 표주간 회고, AI 사용 로그, 기여 명세서
정량 측정 결과리스크 리포트, 피드백 반영 계획서

오른쪽이 마크다운인 이유는 판단과 근거가 담긴 글이기 때문입니다. 평가가 보는 것이 이 글입니다.
문법이 헷갈리면 마크다운 15분을 보세요.


1주차 → 인터뷰 전사록

제출: docs/interviews/P1.md, P2.md, P3.md (대상자 1명당 1파일)

> 주차: 1주차 과제 · 작성일: 2026-XX-XX
> 작성: (진행자 / 기록자)

# 인터뷰 P1

| 항목 | 내용 |
|---|---|
| 일시 | 2026-XX-XX 14:00 (35분) |
| 대상자 프로필 | (익명. 학년·상황만. 실명 금지) |
| 진행자 / 기록자 | |
| 녹음 동의 | ☑ 구두 동의 확보 |

## 전사
[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 ~ 5 — (같은 형식)

## 직접 써 본 것 (최소 1건)
- 서비스명 / 사용 시간 / 좋았던 점 / 불편했던 점

## 우리가 다르게 할 지점
주의

직접 확인 칸이 비어 있는 항목은 무효입니다. AI가 알려준 사례는 URL을 직접 열어 확인합니다.

이 조사표는 스프레드시트로 만들어 파일을 저장소에 넣고 링크만 걸어도 됩니다.
다만 "왜 부족한가"에는 일반적인 단점이 아니라 우리 인터뷰 근거가 들어가야 합니다.


4주차 → 사용자 플로우와 화면 목록

제출: docs/05-flow.md

# 사용자 플로우

## 핵심 경로 (1개만)
진입 → □□ → □□ → 목표 달성

## 화면 목록

| # | 화면 이름 | 이 화면의 목적 (한 줄) | 관련 FR |
|---|---|---|---|
| 1 | | | |

## 빈 상태·에러 화면
| 상황 | 무엇을 보여줄 것인가 |
|---|---|
| 데이터 0건 | |
| 로딩 중 | |
| 에러 | |

## 참고 서비스 UI 분석 (3건)
| 서비스 | 화면 캡처 | 좋았던 점 | 나빴던 점 |
|---|---|---|---|

5주차 → 리스크 리포트

제출: docs/06-risk.md

# 기술 리스크 리포트

## 상위 리스크 2개

### 리스크 1: (한 줄로)
- 왜 불확실한가:
- 이게 안 되면: (프로젝트에 미치는 영향)
- 확인 방법: (무엇이 되면 해결된 것인가)
- 검증 상태: ☐ 미검증 ☐ 검증됨 ☐ 불가 판정 → 대안:

### 리스크 2: (동일 형식)

## 개발 환경 세팅
| 항목 | 상태 | 스크린샷 |
|---|---|---|
| API 키·계정 | ☐ | |
| 라이브러리 설치 | ☐ | |
| Hello World 실행 | ☐ | |

## 목업 사용자 피드백 3건
| 대상 | 막힌 지점 | 발언 |
|---|---|---|

6·12·14주차 → 발표 구성서

제출: docs/presentation-1.md / -2.md / -final.md

# N차 발표 구성

| 순서 | 내용 | 시간 | 발표자 |
|---|---|---|---|
| 1 | | 2분 | |
| 2 | | 2분 | |

## 데모 시나리오
| # | 보여줄 것 | 조작 순서 | 준비물 |
|---|---|---|---|
| 1 | | | (테스트 계정, 샘플 데이터) |

## 데모가 실패하면
- 대체 방안:

## 리허설 기록
- 일시 / 실제 소요 시간 / 초과분을 어디서 줄일 것인가

발표 필수 항목은 각 발표 평가 기준 문서에 있습니다.


7주차 → 피드백 반영 계획서

제출: docs/07-feedback.md

# 1차 발표 피드백 반영 계획

| # | 받은 지적 | 출처 | 수용/거부 | 이유 | 반영 시점 |
|---|---|---|---|---|---|
| 1 | | 교수/동료| 수용 | | 8주차 |
| 2 | | | 거부 | | — |

## 이번 피드백으로 바꾸는 것
## 바꾸지 않기로 한 것과 그 이유

거부한 항목이 하나도 없는 계획서는 반려합니다. 전부 수용했다는 것은 판단하지 않았다는 뜻입니다.


7주차 → 아키텍처 대안 조사

제출: docs/07-architecture-options.md

# 아키텍처 대안 조사 (결정은 8주차 수업에서)

## 내 프로젝트의 제약
- 내 역량: (경험자 수, 익숙한 언어)
- 남은 기간:
- 예산·환경:

## 대안 A / B / C — 각각
| 항목 | 내용 |
|---|---|
| 접근 방식 | |
| 장점 | |
| 단점 | |
| 내 프로젝트 적합도 | 상/중/하 + 이유 |

## 저장할 데이터 항목 전수 목록
| 항목 | 설명 | 개인정보 | 어느 화면에서 쓰이나 |
|---|---|---|---|

8주차 → 이슈 등록

제출: 이슈 트래커 (또는 칸반 보드)

제목: [US-03] 리뷰 짝 진행 상황 확인

**As a** 중고 물건을 파는 사람,
**I want** ...,
**So that** ...

## 인수조건
- [ ] Given , When , Then .
- [ ] Given , When , Then .
- [ ] (예외·빈 상태·에러 중 최소 1개)

우선순위: Must · 추정: M · 의존성: US-01

9주차 → 변경 요청 본문

제출: 변경 요청 (또는 리뷰 기록지)

## 무엇을
관련 이슈: #12

## 인수조건 충족 여부
- [x] 조건 1
- [x] 조건 2
- [ ] 조건 3 → 다음 변경에서

## 검증
- 테스트: 4/4 통과
- 자동 검증: 통과 (또는 `scripts/check` 실행 결과 첨부)

## 리뷰어가 봐줬으면 하는 곳

10주차 → 통합 시도 기록

제출: docs/integration-log.md

# 통합 시도 기록 (11주차 디버깅 클리닉 재료)

| 시도 | 연결한 모듈 | 결과 | 증상 |
|---|---|---|---|
| 1 | A ↔ B | 실패 | |

## 실패 로그 (잘라내지 말고 전문)
​```
(에러 메시지 전체)
​```

## 기대한 동작 / 실제 동작
## 이미 시도해본 것
1.
2.

성공한 통합보다 실패 로그가 더 중요한 제출물입니다. 11주차 수업은 이 로그로 진행합니다.


11주차 → README

제출: 개인 저장소 루트 README.md

# (프로젝트명)

한 줄 설명

## 무엇을 해결하나
## 스크린샷 또는 데모 URL

## 설치
​```bash
​```

## 실행
​```bash
​```

## 환경변수
| 이름 | 설명 | 예시 |

## 프로젝트

12주차 교차 QA에서 다른 수강생이 이 README만 보고 여러분 서비스를 실행합니다. 질문은 받지 않습니다.


12주차 → 간이 사용성 테스트 (2명)

제출: docs/usability/U1.md, U2.md — 서식은 사용성 테스트와 동일하되 과업 2~3개로 축소


13주차 → 사용성 테스트 5명

제출: docs/usability/U1~U5.md + 종합 분석 → 사용성 테스트 서식 사용


14주차 → 최종 제출물

제출: docs/final-report.md

# 최종 보고서

## 1. 문제와 사용자
- 타깃 사용자 / 만난 인원 / 핵심 인사이트 3개

## 2. 해결 방법
- 핵심 기능 / 화면 흐름

## 3. 설계와 주요 결정
- 아키텍처 / ADR 요약 (결정과 포기한 것)

## 4. 구현 결과
- 배포 URL / 기술 스택 / 완성한 것과 못 한 것

## 5. 사용자 검증
- 테스트 5명 결과 / 지표 / 발견한 문제 / 개선 반영

## 6. 한계와 향후 계획
- 이번 학기에 못 한 것과 그 이유

## 7. 회고
- 15주간 배운 것 / 다시 한다면 다르게 할 것

## 부록
- 산출물 목록과 링크

개인 제출: logs/contribution-홍길동.md

# 기여 명세서 — 홍길동

## 내가 담당한 것
| 주차 | 무엇을 | 근거 (이슈·작업 이력·문서) |
|---|---|---|
| 10 | US-03 조회 API + 테스트 | #14, 커밋 a1b2c3d |

## 내가 판단한 것 ↔ AI가 만든 것
| 무엇 | AI가 만든 것 | 내가 판단한 것 |
|---|---|---|
| (기능·문서 단위) | (받아서 쓴 것) | (조건·구조·반려를 정한 부분) |

## 내가 내린 판단 (코딩이 아니라 결정)
1.
2.

## AI 사용 요약
- 총 사용 시간(대략) / 주로 맡긴 것 / **반려한 사례 2건**

## 개인 회고
- 가장 크게 성장한 것 / 다시 한다면 다르게 할 것

가운데 표가 이 문서의 핵심입니다. 이 과목은 여러분을 팀장으로, AI를 팀원으로 놓습니다.
팀장의 성과는 팀원이 만든 결과물이 아니라 무엇을 어떤 조건으로 시켰고 무엇을 되돌렸는가입니다.
「AI가 만든 것」 칸이 넓은 것은 감점 사유가 아닙니다. 「내가 판단한 것」 칸이 비어 있는 것이 감점 사유입니다.

기여 명세서는 매주 쓴 AI 사용 로그와 대조합니다. 로그에 없는 기여는 근거가 없습니다.

루브릭7주

1차 발표

시점: 7주차 · 형식: 개인 발표 10분 + 질의응답 5분
배점: 100점 만점 (강의계획서 평가항목 배점으로 환산)

참고

1주차에 공개합니다. 평가 기준을 모른 채 준비하는 일이 없도록 합니다.


발표에 반드시 포함할 것

  1. 우리가 만난 실제 사용자와 거기서 나온 인사이트
  2. 문제 정의 (POV) — 왜 이 문제인가
  3. 아이디어 선정 과정과 탈락시킨 대안
  4. 프로토타입 시연 (슬라이드 설명 아님)
  5. 기술 리스크 — 무엇이 검증됐고 무엇이 아직 불확실한가

평가 항목

1. 사용자 근거 (25점)

점수기준
23~25실사용자 3명 이상 인터뷰. 인용과 관찰이 발표에 직접 등장하며, 예상하지 못했던 발견이 명확히 제시됨
18~22인터뷰를 수행했고 근거로 제시하나, 대부분 예상 가능한 내용에 머무름
12~17인터뷰는 했으나 발표에서 근거로 활용되지 않음. 주장과 데이터가 연결되지 않음
0~11인터뷰 부족·부재. 또는 지인 위주. AI 생성 사용자 데이터 사용 시 0점

2. 문제 정의 (25점)

점수기준
23~25타깃 사용자가 상황·시점까지 구체적. POV에 해결책이 섞이지 않음. 스코프 경계(하지 않는 것)가 명확
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점

질의응답

준비된 발표만으로는 실제 이해도가 드러나지 않습니다. 아래에서 골라 묻습니다.

  1. 인터뷰 대상자 중 여러분의 예상을 가장 많이 깬 사람은 누구였고, 무엇 때문이었나요?
  2. 이 문제를 겪지 않는 사람은 누구인가요? 왜 안 겪나요?
  3. 탈락시킨 아이디어 중 가장 아까웠던 것은? 왜 탈락시켰나요?
  4. 지금 이 문제를 사용자들은 어떻게 버티고 있나요? 그 방법의 무엇이 부족한가요?
  5. 여러분 프로토타입에서 가장 확신이 없는 부분은 어디인가요?
  6. 15주차에 무엇이 관찰되면 성공한 건가요?
  7. (AI 활용) AI가 준 것 중 반려한 것이 있나요? 왜 반려했나요?

평가지 (개인별)

발표자: ______________ 평가자: ______________

항목배점점수메모
1. 사용자 근거25
2. 문제 정의25
3. 아이디어 수렴20
4. 프로토타입20
5. 발표·질의응답10
감점
합계100

다음 단계로 가기 전 반드시 고쳐야 할 것 (1~2개):

루브릭13주

2차 발표

시점: 13주차 · 형식: 개인 발표 10분 + 질의응답 5분
배점: 100점 만점

주의

이번 발표는 슬라이드가 아니라 라이브 데모가 중심입니다.
녹화 영상 대체는 감점입니다(네트워크 등 불가피한 사유는 사전 허가 필요).


발표에 반드시 포함할 것

  1. 1차 발표 피드백을 어떻게 반영했는지
  2. 아키텍처와 주요 설계 결정 (ADR 중 1건 이상 설명)
  3. 라이브 데모 — 실제로 동작하는 것
  4. 간이 사용성 테스트(2명) 결과
  5. 남은 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~15AI를 프로세스에 통합(스펙→테스트→구현, AI 리뷰 등). AI 제안을 반려한 사례와 근거를 제시. 매주 로그를 성실히 작성
11~13AI를 잘 쓰고 있으나 검증 절차가 다소 느슨
7~10AI에 의존적. 생성된 코드를 설명하지 못하는 부분이 있음
0~6로그 미작성 또는 부실. 코드 설명 불가
핵심

발표 중 코드 설명 확인을 합니다.
교수가 저장소에서 한 부분을 고르면, 해당 담당자가 동작을 설명해야 합니다.

5. 사용자 검증 및 발표 (15점)

점수기준
14~15실사용자 테스트를 수행하고, 발견한 문제를 정직하게 제시. 1차 피드백 반영이 명확
11~13테스트는 했으나 분석이 얕음
7~10본인 확인만 수행
0~6사용자 검증 없음

미리 알아두는 감점

참고

모두 미리 공개합니다. 발표 당일에 처음 듣는 감점은 없습니다.
아래 항목만 피하면 감점은 발생하지 않습니다.

항목감점
라이브 데모 없이 영상·슬라이드로 대체 (사전 허가 없이)-10
사전 제출물 미제출-10
코드 설명을 하지 못한 경우 (1건당)-5
발표 시간 2분 이상 초과-5

질의응답

  1. 저장소의 이 부분(무작위 선택)은 무엇을 하는 코드인가요? 왜 이렇게 짰나요?
  2. 이 기능을 AI에게 어떻게 시켰나요? 한 번에 됐나요, 몇 번 만에 됐나요?
  3. AI가 준 코드 중 버린 것이 있나요? 왜 버렸나요?
  4. 지금 이 시스템에서 가장 먼저 터질 것 같은 곳은 어디인가요?
  5. 테스트가 없는 부분은 어디이고, 왜 없나요?
  6. 통합할 때 가장 오래 걸린 문제는 무엇이었나요?
  7. 남은 2주에 못 할 것 같은 것은 무엇인가요? (정직하게 답하면 가점)

평가지 (개인별)

발표자: ______________ 평가자: ______________

항목배점점수메모
1. 구현 완성도30
2. 설계와 근거20
3. 개발 프로세스20
4. AI 활용의 질15
5. 사용자 검증·발표15
감점
합계100

코드 설명 확인 기록

고른 파일:라인담당자설명 가능 여부
☐

최종 발표 전 반드시 해결할 것:

루브릭15주

최종 발표

시점: 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~25Must 기능 전부 동작. 배포되어 외부인이 사용 가능. 예외·빈 상태·에러 처리됨. README만 보고 재현 가능
18~22Must 기능 대부분 동작하나 일부 예외 처리 미흡
12~17핵심 흐름은 되나 미완성 기능이 다수
0~11시연 실패 또는 로컬에서만 겨우 동작

3. 사용자 검증 (20점)

점수기준
18~20실사용자 5명 테스트 수행. 정량 지표 제시. 발견한 문제를 개선에 반영. 못 고친 것을 한계로 정직하게 밝힘
14~17테스트 수행 및 분석은 되었으나 개선 반영이 부분적
9~13테스트 인원 부족 또는 분석이 인상 수준
0~8검증 없음. 또는 본인 확인만

4. 공학적 프로세스 (20점)

점수기준
18~20요구사항→설계(ADR)→스토리→구현→테스트→검증이 문서와 저장소에 실제로 남아 있음. 매주 작성된 회고와 작업 이력이 일관됨
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

과정 확인 (감점·가점의 근거)

발표 점수만으로 판단하지 않습니다. 학기 내내 남은 기록과 교차 확인합니다.

근거 자료확인 내용
작업 이력 (커밋·변경요청 또는 변경기록)작업이 시간에 걸쳐 분포했는가
과제 제출 페이지 제출 이력문서 제출 시점과 회차
AI 사용 로그 (매주)「반려 기록」이 매주 있는가 — 판정의 흔적
주간 회고매주 남겼는가
기여 명세서「내가 판단한 것 ↔ AI가 만든 것」 (위 항목과 대조)
리뷰 짝 평가남의 코드를 성실히 봐 줬는가
코드 설명 확인본인 코드를 설명할 수 있는가
조정기준
+5점 (최대)리뷰를 성실히 해 다른 수강생의 결과를 실제로 바꿈
0정상
−10점작업이 마지막 2~3주에 몰림. 로그·회고 부실
−20점 이하본인 코드를 설명하지 못함. 리뷰 요청에 응답하지 않음
주의

한 가지 근거만으로 감점하지 않습니다. 여러 근거가 서로 일치할 때만 조정합니다.

참고

계정을 만들 수 없어 경로 B(Drive + 로컬 Git)로 진행한 학생도 동등하게 평가합니다.
커밋 이력이 남는 것은 같습니다. → 저장소 운영 방식 선택 가이드


질의응답

  1. (코드 한 부분을 골라) 이 부분을 설명해 주세요. 누가 작성했나요?
  2. 15주 전으로 돌아간다면 무엇을 다르게 하시겠어요?
  3. 사용성 테스트에서 가장 뼈아팠던 발견은 무엇이었나요?
  4. 지금 이 제품을 실제 사용자에게 내놓으면 무엇이 가장 먼저 문제가 될까요?
  5. ADR 중 하나를 골라, 지금 시점에서도 그 결정이 옳았다고 보나요?
  6. AI에게 시켰다가 되돌린 것 중 가장 잘 되돌린 건 무엇인가요?
  7. 이번 학기에 못 한 것은 무엇이고, 왜 못 했나요?
  8. 학기 초와 지금, 본인이 AI에게 주는 지시는 어떻게 달라졌나요?

평가지 (개인별)

발표자: ______________ 평가자: ______________

항목배점점수메모
1. 문제-해결 정합성20
2. 구현 완성도25
3. 사용자 검증20
4. 공학적 프로세스20
5. AI 활용 역량10
6. 발표·질의응답5
감점
합계100

과정 확인 조정

조정근거
☐ +5 ☐ 0 ☐ −10 ☐ −20

루브릭7·13·15주

동료 평가지

용도 2가지: ① 발표 평가 ② 매주 리뷰 짝 평가
개인 프로젝트이므로 기여도 배분은 없습니다. 대신 서로를 얼마나 잘 봐 줬는가를 봅니다.


A. 발표 평가 (7·13·15주차)

발표를 들으며 실시간 작성. 발표 종료 후 즉시 제출.
모두가 모두를 평가합니다. 자기 발표는 평가하지 않습니다.

평가자: ______________ 평가 대상: ______________

항목1 (아쉬움)23 (보통)45 (뛰어남)
문제가 무엇인지 명확히 이해되었다☐☐☐☐☐
문제의 근거(사용자 데이터)가 설득력 있었다☐☐☐☐☐
해결 방법이 문제와 잘 연결되었다☐☐☐☐☐
시연/결과물이 실제로 동작함을 보여주었다☐☐☐☐☐
질문에 근거를 들어 답변했다☐☐☐☐☐

👍 배우고 싶은 점 (1개, 구체적으로)

(예: 인터뷰 인용을 슬라이드마다 붙여서, 주장마다 근거가 보였습니다.)

🤔 내가 이 프로젝트를 한다면 걱정될 것 (1개, 예의 있게)

(예: Must 기능이 4개인데 남은 기간이 4주입니다. 하나를 줄이면 어떨까요?)

❓ 시간이 없어 못 한 질문

주의

"수고하셨습니다", "좋았습니다" 만 적은 평가지는 미제출과 같습니다.


B. 리뷰 짝 평가 (9주차부터 격주)

혼자 하는 프로젝트에서 유일하게 남을 위해 쓰는 시간입니다.
이 과목은 「변경이 다른 사람의 눈을 거친 흔적」을 요구합니다. 그 흔적을 만드는 사람이 리뷰 짝입니다.

평가자: ______________ 내 리뷰 짝: ______________ 기간: ____주차 ~ ____주차

1. 리뷰를 받은 경험

항목12345
약속한 기한 안에 리뷰해 주었다☐☐☐☐☐
코드를 실제로 읽고 지적했다 (형식적이지 않았다)☐☐☐☐☐
인수조건과 대조해 확인해 주었다☐☐☐☐☐
내가 설명하지 못한 부분을 짚어 주었다☐☐☐☐☐

가장 도움이 된 지적 1개 (그대로 인용)

(예: "겹치는 시간이 0건일 때 [0]에 접근해서 오류 날 것 같습니다" — 실제로 그랬습니다.)

형식적이었던 지적이 있었다면

(예: "LGTM"만 세 번. 실제로 본 것 같지 않았습니다.)

2. 내가 한 리뷰

내가 남긴 리뷰 중 가장 쓸모 있었다고 생각하는 것

내가 놓쳤다고 생각하는 것

3. 본인 회고

이번 기간에 가장 잘한 것

다음 기간에 다르게 할 것 하나

막혔을 때 2시간 규칙을 지켰는가

(예: 두 번 중 한 번만. 화요일에 시간대 버그를 4시간 붙들고 있었습니다.)

4. 교수에게만 전하고 싶은 것 (선택)

(리뷰 짝이 응답하지 않아 진행이 막혔다면 여기에 적으세요. 짝을 바꿔 드립니다.)

이 평가가 점수에 쓰이는 방식

무엇어디에
A. 발표 평가발표자에게 전달 (평가자 이름은 지웁니다). 점수에는 직접 반영하지 않습니다
B. 리뷰 짝 평가「협업·리뷰」 항목의 근거. 리뷰를 성실히 한 사람이 점수를 받습니다
주의

리뷰를 받기만 하고 해 주지 않으면 점수가 깎입니다. 짝이 남긴 평가가 그 근거입니다.
개인 프로젝트라도 남의 코드를 읽는 일은 평가 대상입니다 — 그게 이 과목이 가르치려는 것 중 하나입니다.

핵심

평가 하나만으로 감점하지 않습니다. 저장소의 리뷰 기록과 함께 봅니다.

가이드15주 상시

AI 활용 가이드북

SW 캡스톤디자인 (1215-4003-02) · 2026학년도 2학기
15주 내내 곁에 두고 참조하는 문서입니다. 주차별 슬라이드는 이 문서를 요약할 뿐입니다.


참고

리뷰 짝과 협업하며 AI를 쓰는 방법은 GitHub 협업 × AI 사용 가이드에 따로 있습니다.
이 문서는 개인이 AI를 다루는 법, 그 문서는 여러 사람이 함께 쓸 때 생기는 문제를 다룹니다.

목차

  1. 이 과목이 AI에 대해 취하는 입장
  2. 사용 규칙 (허용·금지·의무)
  3. 프롬프트 패턴 카탈로그 8종
  4. 검증 절차 — AI를 믿는 유일한 방법
  5. AI가 반드시 틀리는 지점 10가지
  6. 주차별 AI 활용 지도
  7. 자주 하는 질문
  8. 부록 — 인터뷰 전사에 AI 쓰기

1. 이 과목이 AI에 대해 취하는 입장

금지하지 않습니다

AI 사용을 금지하는 캡스톤은 2026년에 의미가 없습니다. 여러분이 졸업 후 들어갈 모든 개발 조직이 AI를 씁니다. 못 쓰게 하는 것은 교육이 아니라 회피입니다.

여러분이 팀장이고, AI가 팀원입니다

이 과목은 개인 프로젝트입니다. 그런데 혼자 하는 것은 아닙니다.

역할누구하는 일
팀장여러분지시 · 검수 · 반려
팀원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에게 시킨 것도 본인이 판단했으면 기여입니다. 하지만 리뷰 짝이 한 것은 아닙니다

📌 의무

  1. 매주 AI 사용 로그 제출 — 한 번에 몰아 낼 수 없습니다
  2. 매주 "AI가 틀린 것" 최소 1건 기록
  3. 발표에서 코드 한 부분을 골라 설명 — 설명할 수 있으면 그것으로 완성입니다

3. 프롬프트 패턴 카탈로그

프롬프트를 외울 필요는 없습니다. 패턴 8개의 "언제 쓰는가" 만 기억하세요.

패턴 1. 맥락 먼저 (Context First)

언제: 거의 모든 요청. AI 결과가 엉뚱할 때 90%는 맥락을 안 줬기 때문입니다.

❌ "로그인 기능 만들어줘"

✅ "우리는 중고 직거래 약속을 잡아주는 웹서비스를 만들고 있어.
    - 스택: (사용 중인 기술)
    - 사용자: 중고 물건을 파는 사람, 모바일 브라우저에서 주로 접속
    - 제약: 혼자 하는 학기 프로젝트라 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 답을 근거로 쓰되, 결정은 사람이

5. AI가 반드시 틀리는 지점

매주 강의에서 하나씩 실물로 보여드릴 항목들입니다. 미리 알아두세요.

#실패 유형언제 나타나나대응
1없는 출처를 만들어냄논문·통계·사례 인용 시URL 직접 열기
2없는 함수/API를 만들어냄라이브러리 사용 시공식 문서 대조
3예외 경로를 안 만듦코드 생성 시 항상빈 상태·에러 케이스 명시 요구
4오래된 방식으로 작성빠르게 변하는 프레임워크버전 명시 후 요청
5시간대·타임존 오류날짜 로직경계값 테스트 필수
6동조 편향여러분 아이디어를 평가할 때패턴 3 (반박 요청)
7맥락 유실대화가 길어졌을 때새 대화 시작 + 맥락 재투입
8한국어 뉘앙스 오독인터뷰 전사록 분석반어·완곡·침묵을 사람이 확인
9일반론으로 도피문서 초안 생성 시우리 데이터를 강제 주입
10자신 있게 틀림항상확신의 강도는 정확도와 무관

10번이 가장 위험합니다. AI는 모를 때도 아는 것처럼 말합니다.
"확실하지 않으면 확실하지 않다고 말해줘"를 붙여도 완전히 해결되지 않습니다.


6. 주차별 AI 활용 지도

주차이번 주 배울 AI 스킬사용 패턴이번 주 "AI 함정"
1도구 설치, 맥락 주입 기초1자신 있게 틀리기
2전사·발언 분류 보조1한국어 뉘앙스 오독
3PRD 초안 + 반박 요청1, 3일반론으로 도피
4대안 대량 생성 + 출처 검증4없는 출처 만들기
5목업 생성·반복 개선1, 5맥락 유실
6낯선 API 학습, 에러 디버깅5, 6없는 함수 만들기
7(발표)——
8아키텍처 대안 비교 + ADR3, 4동조 편향
9AI 코드 리뷰, 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로만 작업하고 이해를 못 합니다.
회고 Problem에 상황으로 적고, Try로 "머지 전 설명하기"를 규칙화하세요.
그래도 안 되면 교수 면담을 요청하세요. 리뷰 짝을 바꿔 드립니다.

Q. 문서를 AI로 쓰면 감점인가요?
초안은 괜찮습니다. 다만 AI가 쓴 일반론은 채점자가 즉시 알아봅니다.
여러분 인터뷰 인용과 본인 제약이 들어가 있지 않은 문서는 누구 것이어도 상관없는 문서이고, 그런 문서는 점수를 받지 못합니다. 초안 생성 후 근거 부분은 반드시 직접 쓰세요.

Q. 어떤 도구를 써야 하나요?
도구 간 차이보다 사용 방식의 차이가 결과에 훨씬 크게 작용합니다. 이 문서의 패턴 8개는 어떤 도구에서도 동일하게 적용됩니다.

Q. 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주차 결정

저장소 운영 방식

1주차에 각자 결정 · 결정 내용은 프로젝트 계획서에 기록

이 과목의 두 경로

무엇을 쓰나언제 고르나
A. GitHub계정을 만들어 씁니다기본
B. Google Drive + 로컬 Git각자 PC에서 커밋하고, 커밋 묶음을 Drive로 주고받습니다계정을 못 만들거나 학교에서 접속이 막힐 때
주의

문서 과제는 저장소에 넣지 않습니다. 서식 21종은 과제 제출 페이지로 냅니다.
저장소에는 코드 · 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 (직접 설치)학내 서버나 개인 서버를 쓸 수 있다면

용어는 서비스마다 다릅니다. 이 자료의 용어를 이렇게 읽으세요.

이 자료의 표현GitHubGitLab
변경 요청Pull RequestMerge Request
이슈IssuesIssues
자동 검증ActionsCI/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] 작업 3개가 담당자·상태·마감일과 함께 표시된다
- [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. GitHubB. Drive + 로컬 Git
프로세스 (2차·최종 발표)이슈·변경요청·CI 이력칸반 + 리뷰 기록지 + 검증 스크립트 로그
작업의 시간 분포커밋 날짜커밋 날짜 (동일)
개인 기여도커밋 작성자커밋 작성자 + Co-authored-by
문서 몰아쓰기 확인커밋 날짜커밋 날짜 (동일)

경로를 바꿔도 점수에 유불리가 없습니다. 두 경로 모두 커밋 이력이 남기 때문입니다.
다만 B는 이슈·리뷰·자동 검증을 사람이 수동으로 해야 해서 손이 더 갑니다. 가능하면 A를 권합니다.


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주차~

GitHub 협업 × AI

적용 주차: 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가 협업을 깨뜨리는 다섯 가지

#이렇게 됩니다이렇게 막습니다
1AI가 파일을 통째로 재작성 → 충돌 100줄함수 단위로만 요청
2요청 안 한 파일까지 "정리"변경 요청 전에 git diff로 본인이 먼저 확인
3커밋 메시지가 전부 "AI 코드 반영"메시지는 본인이 작성
4리뷰를 AI에게 맡겨 승인승인 전에 작성자에게 한 줄 질문
5셋이 같은 기능을 각자 AI로 만듦이슈에 담당자를 반드시 지정

5번은 리뷰 짝과 같은 영역을 볼 때 생깁니다. 이슈에 담당을 적어두면 겹치지 않습니다.


최소 명령 모음

이것만 알면 한 학기가 됩니다.

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건

인터뷰 대상자는 최근 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제가 재촉하는 사람처럼 보일까 봐요P104:40
2어디 사는지는 못 물어보죠. 그건 좀 무례하니까P105:06
3아무 때나 괜찮아요 / 아무 데나 괜찮아요 (상대 답변)P103:56
4편하다는데 뭐가 편한지를 모르니까P104:17
5제가 정한 데가 그쪽한테 멀면 어떡하지P105:06
6사흘 동안 그러다가 그쪽이 그냥 안 읽더라고요P105:27
7물건이 안 팔린 게 아니라 약속을 못 잡아서 흐지부지된 거요P106:05
8그냥 제가 먼저 던졌으면 됐을 것 같은데, 그 순간엔 안 돼요P106:28
9연락 오자마자 제가 바로 보냈어요 (장소·시간 2개 제시)P202:47
10처음엔 저도 "언제 편하세요?" 이랬죠. 근데 그러면 안 끝나요P203:12
11서로 양보하다가 사흘 가요. 그러다 한쪽이 지쳐요P203:27
12열 번 중에 서너 번은 그냥 없어져요P203:27
13만 원짜리 파는데 채팅을 스무 번 하면 손해잖아요P203:53
14오히려 고맙다고 해요. 자기도 정하기 싫었던 거예요P204:16
15다들 정해주길 기다리고 있어요. 근데 아무도 먼저 안 해요P204:40
16서로 배려한다고 하는데 사실은 서로 미루는 거죠P204:40
17장소를 아예 하나로 고정했어요P205:05
18멀면 안 오죠. 예전엔 미안했는데 지금은 그런가 보다 해요P205:26
19다 맞춰주다가 아무것도 못 팔았거든요P205:51
20판매자분이 먼저 정해주셨어요. 편했어요, 진짜로P304:15
21제가 정하면 그게 맞는 건지 모르잖아요P304:41
22"아무 데나 괜찮아요"라고 해요. 근데 사실 아무 데나 괜찮진 않아요P305:06
23그걸 말하면 까다로워 보이니까P305:21
242만 원짜리 사는데 왕복 두 시간. 이미 간다고 했으니까P305:40
25이미 괜찮다고 했는데 안 간다고 하면 이상한 사람 되잖아요P306:08
26물건은 좋았는데 지쳐서 그냥 안 사고 싶어졌어요P306: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분)

먼저 — 요약과 인사이트를 가릅니다

문장판정
❌사용자는 약속 잡는 것을 불편해한다요약. 인터뷰 전에도 알던 것
❌사용자는 편한 장소에서 만나고 싶어한다요약. 누구나 그렇습니다
✅판매자는 장소를 몰라서 못 정하는 게 아니라, 먼저 제안하는 행위의 사회적 비용 때문에 조율을 포기한다인사이트. 원인이 뒤집힘

판별 기준 두 개

  1. 인터뷰 전에도 예상했는가? → 예상했다면 요약입니다
  2. 모순이 있는가? → "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개 이상인가✅ 8개
인사이트에 해결책 단어가 들어가지 않았는가✅ 앱·알림·자동화 없음
주의

인사이트에 해결책을 쓰면 안 됩니다. "알림 기능이 필요하다"는 인사이트가 아니라 이미 답입니다.
무엇을 만들지는 4주차에 정합니다. 지금은 무엇이 일어나고 있는지만 씁니다.


여기서 3주차로 무엇이 넘어가는가

인사이트 1·2·3이 다음 주 POV 문장의 재료가 됩니다.

[이번 학기에 처음 중고 물건을 팔아본 3학년 학생]은
[상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법]이 필요하다.
왜냐하면 [먼저 장소를 제안하는 행위가 상대를 재촉하는 것처럼 보일까 봐
서로 미루다가 대화가 끊기고 거래가 흐지부지되기] 때문이다.

「왜냐하면」 칸에 들어간 것이 인사이트입니다. 요약을 넣으면 3주차 문제 정의가 통과되지 않습니다.


참고

이 POV를 어떻게 세 번 고쳐 썼는지는 3주차 시연 자료에 이어집니다.

자주 막히는 곳

Q. 카드가 24장이 안 나옵니다.
전사록이 짧거나 질문이 얕았던 것입니다. 「또 질문」과 「구체화 질문」을 안 쓰면 답이 한 겹에서 끝납니다.
2주차 안에 보완 인터뷰를 하세요 — 3주차 문제 정의의 재료가 부족한 상태입니다.

Q. 그룹이 2~3개밖에 안 나옵니다.
카드를 요약해서 옮긴 경우입니다. 원래 발언으로 돌아가 다시 자르세요.

Q. ☑가 하나도 없습니다.
전사록을 읽고 이미 알던 것만 뽑은 것입니다. 말과 행동이 어긋난 지점을 찾아보세요. 관찰 노트가 그 단서입니다.

Q. 세 명의 이야기가 서로 다릅니다.
좋은 신호입니다. 다르니까 비교가 됩니다. P2(숙련자)와 P1(초보)의 차이에서 인사이트 6번이 나왔습니다.
평균을 내지 말고 차이가 어디서 오는지를 보세요.

시연 자료3주차

3주차 시연 — 문제 정의

쓰임: 3주차 강의 파트(40분)에서 이 자료로 한 번 시연한 뒤, 실습 파트(80분)에서 각자 자기 데이터로 같은 절차를 밟습니다.
2주차 시연 자료의 3조(중고거래 직거래 약속)가 그대로 이어집니다. 절차만 가져가세요.


이 자료가 보여주는 것

인사이트 10개  →  ① 후보 좁히기  →  ② POV  →  ③ HMW  →  ④ PRD  →  ⑤ 스토리
   (2주차)        (근거 강도로)     (한 문장)   (범위 조절)  (요구사항)  (인수조건)

여기서 결과가 갈립니다. POV에 해결책 단어가 하나라도 들어가면 나머지 12주가 그 단어에 끌려다닙니다.


들어올 때 가지고 있는 것

2주차에 3조가 뽑은 인사이트 중 상위 세 개입니다.

#인사이트근거
1판매자는 장소를 몰라서 못 정하는 게 아니라, 먼저 제안하는 행위의 사회적 비용 때문에 조율을 포기한다P1 04:40, P3 04:41
2양쪽 다 상대가 정해주기를 기다린다. 배려가 아니라 대칭적 회피다P2 04:40, P3 04:29
3먼저 정해주는 것은 무례로 읽히지 않는다. 오히려 고맙게 받아들여진다P2 04:16, P3 04:15

① 후보 12개 → 1개 (20분)

개인이 3개씩 낸 문제 정의 후보를 벽에 붙이고 근거 강도로 줄입니다. 좋아 보이는 것이 아니라 근거가 있는 것을 남깁니다.

판정 기준 세 가지

#기준확인 방법
1구체적인 사람이 있는가"대학생"은 사람이 아닙니다. 상황·시점·역할까지
2이미 대가를 치르고 있는가지금 시간·돈·감정을 쓰고 있다는 근거가 인터뷰에 있는가
3해결책이 섞이지 않았는가앱·플랫폼·자동화·추천 단어가 있으면 후보가 아니라 답

3조의 후보 9개와 판정

후보판정이유
중고거래 앱이 약속을 자동으로 잡아주면 좋겠다❌해결책. 3번 기준 위반
사람들이 중고거래를 불편해한다❌사람이 없고 근거도 없음
약속 장소를 정하는 데 오래 걸린다△현상은 맞지만 왜가 없음
판매자가 먼저 장소를 제안하지 못한다✅사람·행동·근거가 모두 있음
구매자도 먼저 제안하지 못한다✅위와 짝. 합칠 수 있음
거래가 조율 단계에서 무산된다✅결과. 위 둘의 귀결
안전한 장소를 모른다❌인터뷰에 없음. 내 추측
중고거래는 시간이 아깝다△너무 넓음
채팅이 불편하다❌도구 탓. 인터뷰는 도구를 지적하지 않았음

남은 셋을 하나로 합칩니다.

판매자와 구매자 양쪽 모두 먼저 제안하지 못해서, 거래가 조율 단계에서 무산된다

핵심

후보를 합칠 때 「양쪽 모두」가 나왔다는 것이 중요합니다. 2주차 인사이트 2번(대칭적 회피)이 여기서 처음으로 문장이 됐습니다. 인사이트가 살아 있으면 이런 일이 생깁니다.


② POV 문장 (20분)

[사용자]는 [니즈]가 필요하다. 왜냐하면 [인사이트]이기 때문이다.

세 번 고쳐 쓴 과정

1차 — 처음 쓴 것

[중고거래 사용자]는 [약속을 자동으로 잡아주는 앱]이 필요하다.
왜냐하면 [약속 잡기가 불편하기] 때문이다.
문제
사용자"중고거래 사용자"는 상황이 없습니다
니즈"앱"은 해결책입니다
왜냐하면"불편하다"는 요약이지 인사이트가 아닙니다

2차 — 해결책 단어를 지운 뒤

[이번 학기에 처음 중고 물건을 팔아본 3학년 학생]은
[약속을 빨리 정할 방법]이 필요하다.
왜냐하면 [조율에 시간이 오래 걸리기] 때문이다.

사용자는 좋아졌지만 왜냐하면이 여전히 요약입니다. "오래 걸린다"는 인터뷰 전에도 알던 것입니다.

3차 — 인사이트를 넣은 뒤 ✅

[이번 학기에 처음 중고 물건을 팔아본 3학년 학생]은
[상대에게 계속 묻지 않고도 만날 장소와 시간이 좁혀지는 방법]이 필요하다.
왜냐하면 [먼저 장소를 제안하는 행위가 상대를 재촉하는 것처럼 보일까 봐
서로 미루다가 대화가 끊기고 거래가 흐지부지되기] 때문이다.

검증

질문답
해결책 단어가 있는가없음 (앱·플랫폼·자동화 없음)
이 사용자를 몇 명 만났는가5명 (P1~P5)
「왜냐하면」이 인사이트인가✅ 인사이트 1번 그대로
인용 근거P1 "제가 재촉하는 사람처럼 보일까 봐 먼저 말을 못 꺼내겠더라고요"
주의

「왜냐하면」 칸이 이 문서의 전부입니다. 여기에 요약을 넣으면 4주차 주제 확정에서 통과되지 않습니다.
판별법은 하나입니다 — 인터뷰 전에도 쓸 수 있었던 문장인가?


③ HMW 질문 (②와 함께 20분)

POV를 질문으로 바꿉니다. 범위 조절이 전부입니다.

#HMW 질문범위왜
1어떻게 하면 중고거래를 편하게 할까?❌ 너무 넓음무엇부터 할지 알 수 없음
2어떻게 하면 지도에 장소 핀을 찍게 할까?❌ 너무 좁음이미 해결책
3어떻게 하면 서로 묻지 않아도 만날 장소와 시간이 자연스럽게 좁혀질까?✅ 적당방법은 열려 있고 방향은 분명
4어떻게 하면 먼저 제안하는 일이 부담스럽지 않게 될까?✅ 적당인사이트 1번을 정면으로

4주차 아이디어 발산은 3·4번 두 질문에 대해서만 합니다. 질문을 좁히지 않으면 아이디어가 사방으로 흩어집니다.


④ PRD 초안 (20분)

AI로 골격을 만들되, §2 배경과 §4 시나리오는 직접 씁니다. 그 두 절이 이 문서를 여러분 것으로 만듭니다.

AI에게 시킬 때

아래 문제 정의로 PRD 목차와 기능 요구사항 초안을 만들어 줘.
- 문제: (POV 문장 그대로 붙여넣기)
- 사용자: 직거래 경험 3회 이하, 반경 2km 안에서 거래하는 20대
- 제약: 혼자, 개발 기간 6주, 지도 API 경험 없음
Must 기능은 5개를 넘기지 마.

나온 초안에서 직접 다시 쓴 부분

§2 배경 — AI가 쓴 것

중고거래 시장이 성장하면서 사용자 편의성에 대한 요구가 증가하고 있다.
효율적인 거래 프로세스를 제공하는 것이 중요하다.

§2 배경 — 직접 다시 쓴 것 ✅

판매자는 만날 장소를 모르는 게 아니다. 먼저 제안하는 행위가 재촉으로 읽힐까 봐
제안하지 못한다. 결과적으로 대화가 끊긴 뒤에야 알게 되고, 그때는 거래를 접는 것
말고 선택지가 없다. (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의 기능 하나를 스토리로 옮깁니다. 인수조건이 곧 AI 프롬프트가 됩니다.

### US-03 · 상대와 겹치는 시간 확인

**As a** 중고 물건을 파는 사람,
**I want** 상대에게 직접 묻지 않고 서로 가능한 시간이 겹치는 구간 보기,
**So that** 재촉하는 것처럼 보이지 않으면서 만날 시간을 정할 수 있다.

**인수조건**
- [ ] Given 양쪽이 가능 시간을 3개씩 골랐고, When 약속판에 진입하면,
      Then 겹치는 시간이 이른 순서로 한 화면에 보인다.
- [ ] Given 겹치는 시간이 하나도 없고, When 약속판에 진입하면,
      Then 다시 고르기 안내가 보인다.

**우선순위:** Must   **추정:** M   **의존성:** US-01(로그인), US-02(거래 열기)
참고

빈 상태(겹치는 시간 0건)를 반드시 넣으세요. AI는 정상 경로만 만들고 빈 화면을 잊습니다.
10주차 구현에서 가장 많이 깨지는 곳이 여기입니다.


AI 반박 실습 (20분 · 필수)

문제 정의를 AI에게 넣고 약점을 지적하게 합니다.

이 문제 정의의 약점을 3가지 지적해줘.
특히 '우리가 근거 없이 가정하고 있는 것'을 찾아줘.
좋게 말하지 말고 냉정하게 평가해줘.

AI가 지적한 것과 3조의 판단

#AI의 지적판단이유
15명은 표본이 너무 작다. 일반화할 수 없다수용맞습니다. 14주차 사용성 테스트로 다시 확인하기로 하고, PRD에 「검증되지 않은 가정」으로 명시
2사용자가 위치 정보 제공을 꺼릴 수 있다수용인터뷰에서 "어디 사는지는 못 물어보죠"가 나왔습니다. 동 단위까지만 받는 것으로 설계 변경
3이미 당근마켓이 있는데 왜 새로 만드나반려당근마켓은 채팅으로 조율합니다. 우리가 바꾸려는 것은 조율 자체를 없애는 것입니다. P2·P4가 "몇 번 주고받다 지쳐서 접었다"고 했습니다
주의

반려한 이유를 쓰지 못하면 아직 문제를 자기 것으로 만들지 못한 것입니다.
2번처럼 설계가 실제로 바뀐 수용이 하나라도 있어야 반박 실습을 한 것입니다.


코칭에서 나오는 네 질문

개인별 코칭(50분)에서 이 넷을 묻습니다. 3조의 답을 함께 둡니다.

#질문3조의 답
1이 사용자를 몇 명이나 실제로 만났나요?5명. 판매 위주 2명, 구매 위주 2명, 양쪽 1명
2이 문제를 겪지 않는 사람은 누구예요?거래 10회 이상 숙련자(P2). 예의를 포기하고 먼저 통보합니다
3지금 사용자들은 이 문제를 어떻게 버티고 있나요?버티지 않습니다. 그냥 거래를 접습니다 (P1 4회 중 2회)
415주차에 무엇이 관찰되면 성공인가요?조율 왕복 2회 이하로 약속이 잡히는 것
핵심

2번 답이 특히 좋습니다. "겪지 않는 사람"을 찾으면 문제의 경계가 분명해집니다.
숙련자는 안 겪는다 → 우리 사용자는 초보자다 가 여기서 확정됐습니다.


자주 막히는 곳

Q. 후보를 하나로 못 좁히겠습니다.
근거 강도로 줄이세요. 인터뷰 인용을 못 붙이는 후보는 그 자리에서 지웁니다. 그래도 남으면 같은 원인의 다른 증상인지 보세요 — 3조는 셋을 하나로 합쳤습니다.

Q. POV에서 해결책 단어를 지우니 문장이 안 됩니다.
해결책을 문제로 착각한 것입니다. "앱이 필요하다"를 지우고 "무엇을 할 수 있어야 하는가"로 바꿔 보세요.

Q. AI가 쓴 PRD가 그럴듯한데 왜 다시 써야 하나요?
읽어 보세요. 이름만 바꾸면 누구 것이어도 맞습니다. §2와 §4에 인용이 하나도 없기 때문입니다.

Q. Must가 5개를 넘습니다.
혼자 6주에 만들 수 있는 양이 아닙니다. 지금 줄이지 않으면 12주차에 절반이 미완성으로 남습니다. 하지 않는 것 목록으로 옮기세요.

가이드1주차 실습

마크다운 15분

1주차 실습 · 이 과목의 모든 문서 산출물은 마크다운(.md)으로 씁니다.
외울 것은 6개뿐입니다. 나머지는 필요할 때 이 문서를 다시 보면 됩니다.


왜 배우는가

마크다운이 대단한 기술이라서가 아닙니다. 이유는 셋입니다.

  1. AI의 입출력 형식이 마크다운입니다. AI가 내놓는 답, 저장소 README, 이슈 본문, 코딩 도구에 넣는 프로젝트 규칙 파일 — 전부 마크다운입니다. 이 과목에서 안 배워도 매일 마주칩니다.
  2. 구조가 있어야 AI 결과를 판정할 수 있습니다. 인수조건을 제목·체크박스로 구조화해서 넘기면 합격/불합격을 판정할 수 있고, 판정할 수 있어야 AI에게 다시 시킬 수 있습니다. 덩어리 글을 넘기면 결과도 덩어리로 옵니다.
  3. 변경 이력이 남습니다. 텍스트라서 언제 무엇을 썼는지가 저장소에 그대로 기록됩니다. 이 과목의 평가 근거입니다.

이 과목에서 쓰는 6가지

1. 제목 — #

# 문서 제목       (문서당 1개)
## 큰 절
### 작은 절

# 뒤에 공백을 꼭 넣습니다. #제목은 제목이 되지 않습니다.

2. 목록 — - 와 1.

- 첫째
- 둘째
  - 하위 항목 (앞에 공백 2칸)

1. 첫째
2. 둘째

3. 강조 — **

**중요한 부분**

4. 체크박스 — - [ ]

- [ ] 아직 안 한 것
- [x] 끝난 것

인수조건과 제출 체크리스트에 씁니다. -, 공백, [, 공백, ], 공백 순서입니다.

5. 코드 — 백틱 3개

npm install


```javascript
const x = 1;

> 에러 메시지·명령어·프롬프트를 붙여넣을 때 씁니다. **여는 줄과 닫는 줄이 짝**이어야 합니다.
> 문장 안에서는 백틱 1개: `` `main` 브랜치 `` → `main` 브랜치

### 6. 링크 — `[]()`

```markdown
[문제 정의서](docs/04-problem-definition.md)
[참고 서비스](https://example.com)

미리보기

VS Code에서 .md 파일을 열고:

단축키동작
Ctrl+Shift+V미리보기 탭으로 열기
Ctrl+K 누른 뒤 V원본 옆에 나란히 보기

쓰면서 오른쪽 미리보기를 켜두는 것이 가장 빠르게 익히는 방법입니다. 틀리면 바로 보입니다.


표는 손으로 그리지 마세요

마크다운에서 가장 귀찮은 것이 표입니다. 그리고 이 과목에서 표를 손으로 그리는 연습은 배울 것이 아닙니다.

방법 0 — 과제 제출 페이지 쓰기 (가장 쉬움)

문서 산출물 21종 전부가 폼을 채우면 그대로 제출됩니다. 마크다운을 직접 쓸 일이 거의 없습니다.

https://sw-project-839ae.web.app/forms-firebase.html

프로젝트 계획서 · 인터뷰 스크립트·전사록 · 공감지도 · 문제 정의서 · 선행사례 조사표 · PRD · 사용자 스토리 · 플로우·화면 목록 · 리스크 리포트 · 발표 구성서 · 피드백 반영 계획서 · 아키텍처 대안 조사 · ADR · 스프린트 계획 · 주간 회고 · 통합 시도 기록 · 사용성 테스트 · 최종 보고서 · 기여 명세서 · AI 사용 로그

저장소에 직접 쓰는 것은 README, 이슈 본문, 변경 요청 본문, 소스 코드뿐입니다.

방법 1 — AI에게 정리시키기

내용을 말로 불러주고 형식만 맡깁니다.

아래 내용을 마크다운 표로 정리해줘.
열은 이름 / 무엇을 하는가 / 왜 부족한가 / 출처 URL 이야.

노션은 문서랑 보드를 같이 쓸 수 있는데 P2랑 P4가 써보고
한 번 쓰기엔 무겁다고 2주 만에 그만뒀어. 주소는 ...
구글 시트는 역할 분담표로 쓰는데 처음 한 번 쓰고 안 고쳐. 주소는 ...

내용은 여러분이 판단하고, 형식은 도구가 정리합니다. 이게 이 과목이 가르치는 분담 그대로입니다.
단, AI가 만든 표에 여러분이 말하지 않은 내용이 들어갔는지 반드시 확인하세요.

방법 2 — 목록으로 쓰기

표가 꼭 필요한 게 아니라면 목록이 낫습니다. 서식에 표로 되어 있어도 목록으로 제출해도 됩니다.

**리스크 1: 실시간 자막 지연**
- 왜 불확실한가: 지연을 실제로 재본 적이 없음
- 이게 안 되면: 문제 정의 자체가 무너짐
- 확인 방법: 20회 측정, 평균 1.5초 이하

방법 3 — 스프레드시트로 내기

집계가 필요한 표는 스프레드시트로 만들고 파일을 저장소에 넣은 뒤 링크만 겁니다.

선행사례 조사표: [benchmark.xlsx](benchmark.xlsx)
스프레드시트를 써도 되는 것반드시 마크다운으로 쓰는 것
선행사례 조사표문제 정의서, PRD, ADR
사용성 테스트 집계사용자 스토리와 인수조건
백로그·이슈 목록주간 회고, AI 사용 로그
정량 측정 결과기여 명세서

오른쪽 항목이 마크다운인 이유는 판단과 근거가 담긴 글이기 때문입니다. 평가가 이 글을 봅니다.


자주 하는 실수 5가지

증상원인해결
목록이 한 줄로 붙어 나옴목록 앞에 빈 줄이 없음문단과 목록 사이에 빈 줄 하나
표가 표로 안 보임두 번째 줄(|---|---|)이 없음머리글 아래에 구분선 줄 추가
문서 절반이 회색 덩어리코드 블록을 안 닫음백틱 3개 짝 맞추기
줄을 나눴는데 붙어서 나옴마크다운은 한 줄 띄움을 무시함빈 줄을 넣거나 목록으로
별표가 그대로 보임*를 문자로 쓴 것앞에 \ 붙이기 → \*

15분 연습 (1주차 실습)

프로젝트 계획서을 채우는 것이 곧 연습입니다.

  1. VS Code에서 docs/01-team-charter.md 생성
  2. Ctrl+K V로 미리보기를 옆에 켜기
  3. 서식을 붙여넣고 기본 정보부터 채우기
  4. 목표 수준 항목에 체크박스 - [x] 써보기
  5. 작업 규칙을 목록으로 쓰기
  6. 과제 제출 페이지에서 «프로젝트 계획서»을 골라 채우고 제출

여기까지 하면 이 과목에서 필요한 마크다운은 다 쓴 것입니다.


한 장 요약

# 제목        ## 절        ### 작은 절
- 목록        1. 번호 목록
**굵게**
- [ ] 할 일   - [x] 완료
`인라인 코드`
​```
코드 블록
​```
[링크 이름](주소)

미리보기 Ctrl+Shift+V · 나란히 Ctrl+K V · 표는 AI에게

리소스Marp

슬라이드 테마 CSS

/* @theme capstone */
/*
 * SW 캡스톤디자인 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: ''; }