สัปดาห์ที่ 15 · 🎓 Capstone Project

Final Project
ทำของจริงให้ user จริง

ไม่ใช่ "แอปเดโม่" · ไม่ใช่ "ทำส่งครู" · นี่คือ "ของที่จะใช้จริงกับเพื่อน 1 คน" — รวมทุกทักษะจาก W01-W14 และเป็นชิ้นที่ใส่ใน portfolio ได้

🎯 เป้าหมาย Final Project

สิ่งที่ทำให้ Final Project ของคู่มือนี้ ต่างจาก Final Project ทั่วไป — เกณฑ์ประเมินคือ:

หลักคิด — "Useful > Impressive" ระบบเล็กที่ใช้ได้จริง = 90/100 · ระบบใหญ่ที่ไม่มีใครใช้ = 50/100
📐 ก่อนเลือก tech — เปิด UX/UI Principles Final Project = user จริง · ถ้าเลือก tech ผิดตั้งแต่แรก (เช่น Tkinter เพราะคิดว่า "ง่าย" แล้วอยาก deploy) → จบไม่ได้ · เปิด UX/UI Section 0 — เลือก UI Technology ก่อนคุย AI · และ UX/UI Checklist ก่อนส่งงาน
🔒 ทำไม Final Project = บททดสอบยุค AI AI ช่วยคุณ "เขียน code" · แต่ Final Project ทดสอบสิ่งที่ AI ทำไม่ได้: หา real user · ตัดสินใจ scope · ออกแบบ schema · เลือก deployment · จัดการ cost · ทดสอบกับคนจริง · ส่งมอบให้ใช้ได้ · เมื่อคุณกด deploy = "คุณรับผิดชอบทุกบรรทัด" · ไม่ใช่ AI

📋 Spec — Final Project Requirements

ข้อกำหนดรายละเอียด
Real user1 คน · ไม่ใช่คุณเอง · ไม่ใช่อาจารย์
Real problemปัญหาที่ user มีจริง · ไม่ใช่ที่คุณคิดเอง
Pipeline ครบProblem → Workflow → Spec → Build → Test → Deploy → Demo → Maintain
TechPython · อย่างน้อย 1 ใน: web app / API / data dashboard / desktop app / bot
Persistenceเก็บข้อมูลถาวร (JSON / SQLite / Sheet / Postgres)
Test≥ 10 unit tests · pass ทั้งหมด · AI test review checklist (W13)
Deployคนอื่นใช้ได้โดยไม่ลง Python · มี mobile-accessible channel (PWA/LINE/responsive web)
MonitoringUptimeRobot ping /health + Sentry crash report (W14)
Cost ceilingBudget alert ทุก service ที่ใช้ · < $5/เดือน
Privacyถ้าเก็บข้อมูล user — consent + anonymize + .gitignore raw data (W10)
DocsREADME · spec.md · architecture diagram (C4 + sequence) · CHANGELOG · ADR
AI DisclosureAI_USAGE.md — อะไรที่ AI ช่วย · อะไรที่คุณเขียนเอง
Demo5 นาที · user ใช้จริงต่อหน้าคน · บน mobile (ถ้าทำได้)

🗺 Traceability — Final Project ใช้ทักษะจาก W01-W14

Final Project = บทรวม · ทุก week ที่เรียนมา ต้องเห็นใน project · นี่คือ checklist ที่ขาดอะไรไม่ได้

flowchart LR W01[W01
Problem-finding] --> P[Final
Project] W02[W02
Tools+Vocab] --> P W03[W03
Diagrams] --> P W04W05[W04-W05
Read+Modify code] --> P W06[W06
Spec → AI] --> P W07[W07
CLI workflow] --> P W08[W08
Data + Schema] --> P W09W10[W09-W10
Data Project] --> P W11[W11
OOP] --> P W12[W12
APIs + LLM] --> P W13[W13
Test + Debug] --> P W14[W14
Deploy + Cost] --> P P --> Demo[🎓 Demo
+ Maintain] classDef foundation fill:#1e3a5f,stroke:#3776ab,color:#fff classDef literacy fill:#3d2c1a,stroke:#ffd43b,color:#fff classDef data fill:#0d3f3a,stroke:#2dd4bf,color:#fff classDef advanced fill:#3b2962,stroke:#8b5cf6,color:#fff classDef capstone fill:#5c2618,stroke:#ec4899,stroke-width:3px,color:#fff class W01,W02,W03 foundation class W04W05,W06,W07 literacy class W08,W09W10 data class W11,W12,W13,W14 advanced class P,Demo capstone

📝 Self-check: Project ของฉันใช้ทุก week มั้ย?

Weekใน Final Project เห็นที่ไหน?เช็ค
W01 Problem-findingมี real user · interview notes · problem statement
W02 Tools+Vocabเลือก tool stack + วาด architecture mental map
W03 Diagrams≥ 3 Mermaid diagrams (C4 + sequence + ER)
W04-W05 Read/Modifyอ่าน + แก้ code ที่ AI สร้าง · มี diff/PR ใน git
W06 Spec → AIspec.md ที่ Scorecard ≥ 75%
W07 CLI workflowSpec → Plan → Code → Test ครบ cycle
W08 Data+SchemaSchema ที่ออกแบบเอง · ใช้ JSON/CSV/SQLite/Postgres
W09-W10 Data(ถ้ามี analyze) — privacy + AI verification ทำตามเกณฑ์
W11 OOPใช้ class เมื่อจำเป็น · ไม่ over-engineer · type hints
W12 APIs+LLM(ถ้ามี) API key ใน .env · LLM ใช้ Haiku ตอนเรียน · cache
W13 Test≥ 10 pytest · CI/CD pass · AI test review
W14 DeployCloud + Mobile access · monitoring + budget alert

🚦 Day 0 — Pre-flight Checklist (ก่อนเริ่ม)

"ก่อนวันที่ 1" — ตอบ 8 ข้อนี้ก่อน · ถ้าตอบไม่ได้ → กลับไปคิด · เริ่มก่อนพร้อม = เสียเวลาทีหลัง

#คำถามตอบใน 1 ประโยค
1User คือใคร? (ชื่อจริง · role)______________________
2Pain point เฉพาะที่จะแก้?______________________
3User บอก "อยากใช้" แล้วหรือยัง?☐ ใช่   ☐ ยัง — กลับไปสัมภาษณ์
4Deployment target?☐ Cloud Web   ☐ Mobile   ☐ Desktop   ☐ IoT
5เก็บข้อมูลส่วนตัวมั้ย?ถ้าใช่ → ต้องทำ consent + anon (W10)
6ใช้ external API / LLM มั้ย?ถ้าใช่ → ต้องตั้ง budget alert
7Scope ทำใน 7 วันได้แน่?ถ้าไม่แน่ → ตัด feature ครึ่งหนึ่ง
8Plan B ถ้า user ไม่ใช้?______________________

📜 Proposal Approval Gate

ส่ง proposal สั้น ๆ 1 หน้า ให้อาจารย์ "ก่อนเริ่ม" · ได้ approve ก่อน Day 1 · ป้องกัน scope ใหญ่เกิน

# Final Project Proposal — [ชื่อ project]

**User:** [ชื่อจริง · role · ทำไมเลือกคนนี้]
**Problem:** [1-2 ประโยค]
**Solution:** [1 ประโยค]
**Tech stack:** [Streamlit / Flask / LINE bot / ...]
**Deployment target:** [Cloud / Mobile / Desktop / IoT]
**Privacy:** [เก็บข้อมูลส่วนตัวมั้ย · จัดการยังไง]
**External services:** [API ที่ใช้ · cost estimate]
**Risk + Plan B:** [ความเสี่ยง 2 อย่าง + plan B แต่ละอัน]
**Why it's "right size":** [ทำไมไม่ใหญ่/เล็กเกิน]

🔐 Privacy + Ethics Review

ถ้า project เกี่ยวข้องกับ ข้อมูลของคนอื่น → ต้องผ่าน review นี้ก่อน deploy

✅ Privacy Checklist (จาก W10)

⚖️ Ethics Checklist

⛔ Projects ที่ "เกินเกณฑ์ ethics" ของคอร์ส
  • ❌ ระบบ surveillance / monitor คนโดยไม่บอก
  • ❌ AI ตัดสินใจอัตโนมัติเรื่อง health/legal/financial โดยไม่มี human review
  • ❌ Scrape ข้อมูล Facebook/IG/TikTok ที่ไม่ใช่ของตัวเอง
  • ❌ "Predict student performance" จาก demographic — bias risk สูง
  • ❌ Deepfake / voice clone ของคน real โดยไม่ได้รับอนุญาต

🤖 AI Usage Disclosure — Academic Honesty

AI ช่วยเขียน code คือเรื่องปกติในยุคนี้ · แต่ "การไม่บอก" = academic dishonesty · ทุก Final Project ต้องมี AI_USAGE.md บอกตรง ๆ

📄 Template — AI_USAGE.md

# AI Usage Disclosure

## Tools ที่ใช้
- Cursor (Claude Sonnet 4.6) — main pair-programming
- ChatGPT (gpt-4o) — debug ครั้งคราว
- Claude API (Haiku) — ใน production สำหรับ summary feature

## AI ทำอะไรให้บ้าง
- [✅] เขียน boilerplate (`Flask app`, route definitions)
- [✅] สร้าง test cases หลังจากเขียน function เอง
- [✅] อธิบาย error message ที่ไม่เข้าใจ
- [✅] Generate Mermaid diagrams จาก spec
- [⚠️] เขียน function `calculate_grade()` ครั้งแรก · ผมแก้ logic เอง
- [❌] **ไม่ได้** ใช้ AI สำหรับ: spec writing · user interview · ตัดสินใจ scope

## สิ่งที่ผมเขียนเองล้วน ๆ
- spec.md
- user interview notes
- architecture decision records
- regression tests สำหรับ bug ที่เจอ
- README

## สิ่งที่ AI พลาด · ผมต้องแก้
1. AI ใช้ `df.dropna()` ทำลายข้อมูล 30% — แก้เป็น `dropna(subset=["x"])`
2. AI สร้าง class hierarchy 5 ชั้น สำหรับ "add 2 numbers" — refactor เป็น function
3. AI mock function ผิด level — แก้ patch ที่ถูกต้อง
📌 ทำไมการ disclose ดีต่อคุณ
  • ป้องกัน trouble — บอกตอนต้นปลอดภัยกว่าโดน catch ตอนหลัง
  • แสดง maturity — บอกได้ละเอียดว่าจัดการ AI ยังไง = mark of senior engineer
  • เรียนรู้ — เห็นชัดว่าตัวเองยังต้องเก่งตรงไหน
  • Industry standard — บริษัทใหญ่ ๆ ต้องการ disclosure แบบนี้

🛡 Risk Register — รู้ว่าอะไรจะพัง ก่อนพัง

เขียน 3-5 ความเสี่ยง ที่ project อาจเจอ + plan B ของแต่ละอัน · ทำใน Day 0 · ทบทวนทุกวัน

📋 Risk Register Template

RiskLikelihoodImpactPlan B
API ของ vendor ล่ม (LINE, IQAir) Medium High cache last value + retry · ถ้าล่ม > 1 ชม. → manual mode
User เลิกใช้กลางคัน (Day 4) Medium High มี user ที่ 2 (เพื่อนคนที่สนใจ) เป็น backup
Cost ทะลุ free tier Low High budget alert at $1 · kill switch พร้อม
เครื่อง dev พัง / WiFi ตก Medium Medium code ใน GitHub + Codespaces backup · phone hotspot
Demo day app crash Low Very High Local backup version · video screenshot ของการใช้จริง

📝 ADR — Architecture Decision Records

ทุกครั้งที่ตัดสินใจใหญ่ (เลือก SQLite vs Postgres · เลือก Streamlit vs Flask · เลือก LLM ตัวไหน) → เขียน 1 ADR · ในงานจริง = standard practice

📄 Template — docs/adr/0001-choose-streamlit.md

# ADR-0001: เลือก Streamlit Cloud แทน Cloud Run

## Status
Accepted (2026-05-15)

## Context
- User เป็น TA ของอาจารย์ · เปิด URL บน laptop ในห้อง lab
- ต้องการ data dashboard ที่อัพเดตทุก 30 นาที
- มีเวลา 7 วัน · ทำคนเดียว

## Decision
ใช้ Streamlit Cloud (free tier) แทน Cloud Run

## Reasons
- ✅ Streamlit = Python ทั้งหมด · ไม่ต้องเขียน HTML/CSS
- ✅ Streamlit Cloud free · ไม่ต้องตั้ง Docker
- ✅ Deploy ใน 2 นาทีจาก git push
- ❌ Streamlit Cloud bandwidth limit · แต่ user 1 คน · พอ
- ❌ ไม่มี SLA — ถ้าพัง รอ 10 นาที · OK สำหรับ demo

## Consequences
- ถ้า user หลายคนใช้ → ย้ายเป็น Cloud Run
- ถ้าต้องการ custom domain → ต้อง upgrade ($20/เดือน) หรือใช้ Render

ทุก ADR 1 หน้า · 4-5 ADR ใน Final Project ก็พอ · ใส่ใน docs/adr/


♿ Accessibility — User บางคนต้องการความช่วยเหลือ

ถ้า user คือ พ่อ-แม่ (ตามตัวอย่างใน table) → accessibility สำคัญมาก · ถ้า user คือ เพื่อน Gen Z → ยังสำคัญ (50% ใช้บนมือถือ outdoor · จอเล็ก)

✅ Accessibility Checklist (เริ่มต้น)

📱 Mobile-first by default 90% ของ user ในปี 2026 เปิด app ครั้งแรกบนมือถือ · ออกแบบ mobile ก่อน · desktop เป็น bonus

⏱ Estimation — ทำไม "7 วัน" จะกลายเป็น "14 วัน"

ความจริงของนักศึกษาทุกคน: ประเมินงานต่ำกว่าจริง 2-3 เท่า · "ผมว่าใช้ 2 ชั่วโมง" → 6 ชั่วโมง · "เสร็จคืนนี้" → 3 วัน · นี่ไม่ใช่ความขี้เกียจ — มัน "Planning Fallacy" ที่นักจิตวิทยายืนยันมา 30 ปี

📊 ทำไมประเมินผิด

เหตุผลตัวอย่าง
1. จำแค่ happy path"แค่เขียน Flask app" — ลืม env setup, debug, deploy, test
2. ไม่นับ "ของที่ไม่รู้"API doc อ่านยาก · auth พัง · cost limit · time zone bug
3. ไม่นับ context switchกิน · นอน · เรียนวิชาอื่น · ตอบ LINE · กลับมา = 30 นาทีหาที่
4. ไม่นับ "ของที่พัง"Mac update ลบ Python · WiFi ตก · เครื่อง crash
5. Optimism bias"ครั้งนี้จะดี" — ทุกครั้งก็คิดอย่างนี้

📐 วิธีประเมินที่แม่นยำขึ้น — 3-Point Estimate

แทนที่จะให้ตัวเลขเดียว → ให้ 3 ตัว: best / likely / worst · เฉลี่ยน้ำหนัก

# Pessimistic-weighted average (PERT formula)
estimate = (best + 4 × likely + worst) / 6

ตัวอย่าง:
"Deploy ขึ้น Cloud Run"
- best:   30 นาที (ทำมาแล้ว · ทุกอย่างพร้อม)
- likely: 2 ชั่วโมง (ปกติ)
- worst:  6 ชั่วโมง (ติด billing · ติด IAM · ติด Docker)

→ (0.5 + 4×2 + 6) / 6 = 2.4 ชั่วโมง

🪜 Task Breakdown — เล็กไปเรื่อย ๆ จนเห็นชัด

ถ้าประเมินยาก = task ใหญ่เกิน · แตกเป็น sub-task < 2 ชั่วโมงต่ออัน

# ❌ Task ใหญ่ — ประเมินไม่แม่น "ทำ Grading App" — 3 วัน # ปัญหา: "3 วัน" คืออะไร? # - 3 × 24 = 72 ชม.? # - 3 × 8 = 24 ชม. ทำงาน? # - 3 × 4 = 12 ชม. หลังเรียน? # ไม่ชัด · จะ slip แน่นอน
# ✅ แตกเป็น sub-task < 2 ชม. D1: Setup project (1.5h) - venv + git init + .env (30m) - install packages + check (30m) - hello world ใน Streamlit (30m) D2: DB schema (2h) - design ER diagram (45m) - create_table.py (45m) - seed data + verify (30m) D3: Core logic (3h) - calc_grade function (45m) - tests (5 cases) (45m) - integrate with DB (1h) - manual test (30m) D4: UI (2h) ... ทั้งหมด = 18 ชม. · ถ้ามี 4 ชม./วัน → 4.5 วัน + buffer 30% = 6 วัน

📈 กฎ "2x + 30% Buffer"

🔮 สูตรที่ใช้จริงในวงการ
  1. ประเมินอย่างซื่อสัตย์ → ได้ X ชั่วโมง
  2. คูณ ×2 สำหรับสิ่งที่ลืม
  3. เพิ่ม 30% buffer สำหรับ "ของที่ไม่รู้ว่าไม่รู้"
  4. = (X × 2) × 1.3 = X × 2.6
ฟังดูเกินจริง · แต่ "ส่งทันเวลา" มีค่ามากกว่า "ประเมินได้ใกล้"

📋 Time-boxing — กฎเหล็กของ 7-day project

กฎทำยังไง
Hard time box ทุก task ตั้ง timer · task X = 2 ชม. · เกินแล้วหยุด · review
"Done is better than perfect" ทำให้ครบ MVP ก่อน · polish หลัง
End-of-day check-in 15 นาทีท้าย — เช็คว่าตามแผน? · ต้อง descope มั้ย?
Buffer day = Day 7 Day 1-6 = build · Day 7 = test + demo · ห้าม build ใหม่ใน Day 7
Descope ไม่ใช่ความล้มเหลว "ตัด feature 1 → ส่งทัน" > "ทำครบ → ส่งช้า"

⚡ ถ้าใช้ AI — เพิ่มความเร็วไม่ใช่ครึ่ง

AI "ลดเวลาเขียน code" 50-80% · แต่ "เวลา debug + verify" เพิ่มขึ้น · เพราะต้อง review สิ่งที่ AI สร้าง · net = "ประหยัด ~30%" ถ้าใช้เป็น

Phaseเวลาไม่มี AIเวลาใช้ AI
Write boilerplate4 ชม.30 นาที
Debug2 ชม.1.5 ชม. (AI ช่วยอ่าน error)
Test writing2 ชม.1 ชม. (แต่ + 30 นาที review test)
Review AI output0+1.5 ชม. ⚠️
Doc writing2 ชม.45 นาที
Total10 ชม.~5.5 ชม.

📅 Timeline 7 วัน

วันงานDeliverable
วันที่ 1 หา user + เข้าใจปัญหา Interview note + Problem statement
วันที่ 2 เขียน Spec + Diagram spec.md + diagrams.md
วันที่ 3-4 Build MVP (Minimum Viable Product) Code ทำงานได้ในเครื่อง
วันที่ 5 Test + Bug fix + Polish tests pass · ใช้ได้แบบไม่พัง
วันที่ 6 Deploy + Docs URL หรือ .exe + README + changelog
วันที่ 7 User test + Iterate + Demo User feedback + final version

🎨 ตัวอย่าง Project ที่ "ใช่"

ProjectUserTech
ตัวคำนวณค่าน้ำมัน + แบ่งเงินกลุ่ม เพื่อนที่ขับรถไปกินข้าวกัน Streamlit + SQLite
ระบบจัดตาราง lab CNC ของห้อง TA ของอาจารย์ Flask + Google Sheets
Bot ส่งเตือน LINE เมื่อ PM2.5 สูง เพื่อนที่เป็นหอบหืด Python loop + IQAir API + LINE
Dashboard ค่าใช้จ่ายรายเดือน น้อง / แม่ Streamlit + Google Forms
เครื่องช่วยจดสมุดงานของพ่อ พ่อที่ทำธุรกิจเล็ก Desktop tkinter app + .exe
Auto-grader Lab พื้นฐาน TA Python + pytest + Local LLM (Ollama)
เครื่องสรุปบทเรียนจาก YouTube เพื่อนที่ไม่ทันเข้าฟัง Whisper + Claude API

🚫 ตัวอย่าง Project ที่ "ไม่ใช่"

📋 Process — Spec ก่อน Code

วันที่ 1: หา User

  1. คิดถึงคนรอบตัวที่ "บ่นเรื่องเดิม" บ่อย — เพื่อน, ครอบครัว, TA
  2. นัดคุย 30 นาที — ฟังว่าเขาเสียเวลากับอะไร
  3. ถาม: "ถ้ามีเครื่องช่วยทำ X ให้ คุณจะใช้บ่อยแค่ไหน?"
  4. เลือก 1 ปัญหา → จด Problem Statement

วันที่ 2: Spec + Diagram

ใช้ template จาก W06:

## Spec: [ชื่อ project]

**User:** [ใคร · role · skill level]
**Problem:** [1 ย่อหน้า]
**Success criteria:** [user ทำอะไรได้ที่ทำไม่ได้ก่อน]

**Workflows:**
1. [Use case 1 · step-by-step]
2. ...

**Data:**
- [schema · primary keys]

**Constraints:**
- [tech limitation · time · cost]

**Non-goals:**
- [สิ่งที่ "ยังไม่ทำ"]

**Acceptance test:**
- [test scenario ที่ user ลงมือทำได้]

+ Diagrams (W03):

วันที่ 3-4: Build MVP

MVP = "ทำให้ user ทำสิ่งที่ตั้งใจให้ทำได้ ก่อน" · ไม่สวย ไม่ครบ · แต่ "ผ่านจุด pain" ของเขา

  1. เริ่ม database schema (JSON/SQLite ก่อน)
  2. เขียน function ที่ใช้บ่อยที่สุดก่อน — happy path
  3. สร้าง UI (CLI / Streamlit / Flask) ที่ใช้ function นั้น
  4. commit หลังทุก feature ที่ทำงานได้
  5. หยุดเมื่อ "ครบ user story หลัก" · อย่าเพิ่ม feature ขณะ build

วันที่ 5: Test + Polish

  1. เขียน pytest ≥ 10 cases
  2. ลอง edge cases (W13)
  3. เพิ่ม error message ที่ user อ่านเข้าใจ
  4. ทำ UI ให้พอใช้ — ไม่ต้องสวย แต่อย่าทำ user สับสน
  5. เซฟ regressions.md เผื่อ AI ทำพัง

วันที่ 6: Deploy + Docs

  1. เลือก deploy method ตาม W14
  2. ทดสอบ "fresh clone" — เพื่อนคนที่ไม่ใช่ user ลอง install
  3. เขียน README ครบ — install + usage + screenshot
  4. changelog.md + version 1.0.0

วันที่ 7: User Test + Demo

  1. นัด user ใช้จริง 30 นาที
  2. นั่งดูเขาใช้ "ไม่ช่วย" — สังเกตจุดที่งง
  3. ถามคำถาม 3 ข้อ: "ใช้ง่ายมั้ย", "มีอะไรหายไป", "จะใช้อีกมั้ย"
  4. แก้ของที่ user บ่นภายใน 2 ชั่วโมง
  5. Demo 5 นาที — user ใช้จริงต่อหน้าคน

📊 Rubric (100 คะแนน)

เกณฑ์คะแนนวัดจาก
Problem-finding + User research10real user · interview note · proposal approved
Spec + Diagrams + ADR12spec.md ผ่าน Scorecard ≥ 75% · ≥ 3 diagrams · ≥ 3 ADR
Build quality15working MVP · code อ่านง่าย · structure ตาม W11 · ไม่ over-engineer
Test + CI/CD10≥ 10 pytest · pass · AI test review checklist · GitHub Actions green
Deployment (multi-channel)12Cloud + mobile-accessible (PWA/LINE/responsive) — ดูใน mobile ได้
Monitoring + Cost8Sentry/UptimeRobot setup · budget alert ทุก service · < $5/เดือน
🔐 Privacy + Ethics8Privacy checklist ผ่าน · ไม่มี PII ใน repo · consent ถ้าต้องการ
♿ Accessibility5Accessibility checklist ≥ 6/8 · test กับ user จริง
🤖 AI Disclosure5AI_USAGE.md ครบ · honest disclosure
Documentation5README · CHANGELOG · screenshot · "fresh clone" works
User test + Iterate5หลักฐานว่า user ใช้จริง ≥ 3 ครั้ง + feedback
Demo5เล่าได้ใน 5 นาที · user ใช้สำเร็จต่อหน้า
Reflection5เขียน "เรียนรู้อะไร" 1 หน้า · honest

🎤 Format ของ Demo

1. Hook (30 sec)
   "[User] เคยเสียเวลา X ทุกวัน · ผมสร้าง [Y] ให้เขา"

2. Problem (1 min)
   - แสดง workflow เดิม (flowchart)
   - บอกว่าเสียเวลา / ผิดบ่อยตรงไหน

3. Solution (1.5 min)
   - แสดง architecture (C4)
   - explain spec กับ non-goals

4. Live demo (1.5 min)
   - User ใช้จริงต่อหน้า
   - ใส่ข้อมูลจริง · เห็นผลลัพธ์จริง

5. Outcome (30 sec)
   - User ใช้ไปกี่ครั้งแล้ว
   - เปลี่ยน workflow เขายังไง

6. Reflection (30 sec)
   - "ถ้าได้ทำใหม่ จะเปลี่ยน X"

🧠 Reflection — สิ่งที่ต้องเขียน

# Reflection: [ชื่อ Project]

## ที่ทำสำเร็จ
- [3-5 ข้อ]

## ที่ไม่สำเร็จ / ยังขาด
- [3-5 ข้อ]

## AI ช่วยอะไรเป็นพิเศษ
- [อะไรที่ AI ทำได้ดีกว่าที่คาด]

## AI พลาดอะไรเป็นพิเศษ
- [อะไรที่ AI ทำผิด · ฉันต้องแก้]

## ที่เรียนรู้
- [3 ข้อหลัก]

## ถ้าทำใหม่ จะเปลี่ยน
- [3 ข้อ]

## Project นี้ใช้ทักษะอะไรจาก W01-W14 บ้าง
- [list]

🎓 Portfolio Path — Final Project → Resume / LinkedIn / สัมภาษณ์

Final Project ที่ดี ≠ คะแนน 100 · Final Project ที่ดี = "ของที่ใส่ resume ได้" · ผู้รับสมัครงานจะดูสิ่งที่คุณ "ทำได้" มากกว่าเกรด

📄 4 Assets ที่ต้องทำหลัง Final Project

Assetเพื่อวิธีทำ
1. README ใน GitHub recruiter อ่านก่อนสัมภาษณ์ ใส่ "What I learned" · screenshot · live URL · 1 GIF demo
2. LinkedIn Post showcase · networking 1 ภาพ + 200 คำ + link repo · ใส่ #BuildInPublic #Python #AIEngineer
3. Blog post / Medium เล่า "process" — ไม่ใช่แค่ "ผลลัพธ์" เล่า problem → user → mistakes → fix → result · 800-1500 คำ
4. Resume bullet ใส่ CV/resume 1-2 บรรทัด · มี metric (e.g. "ลด TA work time จาก 8 ชม. → 3.5 ชม./สัปดาห์")

📝 Resume Bullet Template — STAR Format

**Smart Lab Monitor** — Python · Flask · Streamlit · LINE bot
- (S) Situation: TA spent 8 hrs/week manually checking lab equipment
- (T) Task: Built automated PM2.5/temperature monitor with LINE alerts
- (A) Action: Designed REST API, integrated 3 external services (IQAir, LINE, Claude),
       deployed to Cloud Run with monitoring + budget alerts
- (R) Result: Reduced manual check time to < 1 hr/week · used daily by 5 TAs

[GitHub link] · [Live demo URL] · [Architecture diagram link]

🎤 สัมภาษณ์ — เล่ายังไง

เมื่อ interviewer ถาม "เล่า project ที่ภาคภูมิใจ" — ใช้ STAR:

  1. Situation (15 sec) — user/problem · ไม่เริ่มที่ tech
  2. Task (15 sec) — สิ่งที่คุณรับมาทำ
  3. Action (60 sec) — สิ่งที่คุณ ตัดสินใจ · 2-3 key decisions
  4. Result (30 sec) — metric ที่วัดได้ · feedback ของ user
📌 ที่ interviewer สนใจที่สุด — "ตัดสินใจอะไรบ้าง" ไม่ใช่ "ใช้ tech อะไร" · พูดถึง ทำไม เลือก SQLite ไม่ใช่ Postgres · ทำไม LINE bot ไม่ใช่ web · ทำไม ตัด feature X ออก · ADR ของคุณคือ goldmine

🎁 Bonus Path — สำหรับคนที่อยากไปต่อ

ข้อผิดที่พบบ่อย

เริ่มจาก tech ไม่ใช่ user "อยากใช้ Llama 3" → ไม่มี user · กลับไป W01 หา user ก่อน
Scope creep ในวันที่ 3-4 "อยากเพิ่ม feature นี้ด้วย" — เขียนใน backlog.md · อย่าทำตอน build · ทำหลัง MVP ผ่าน
ไม่ทดสอบกับ user จริง Demo อาจารย์ ≠ user test · user คือคนที่จะใช้ ไม่ใช่คนตรวจ
"AI ทำเสร็จแล้ว" — push ทันที W06/W13: verify ก่อน push · เพราะ user จะเห็น · disclose ใน AI_USAGE.md
ไม่ disclose AI usage academic dishonesty · ทำให้ลำบากตอน thesis defense ตอนปี 4 · บอกตั้งแต่ปี 1 ปลอดภัยกว่า
ลืม set budget alert LLM API + infinite loop = bill 5000 บาทใน 1 คืน · ตั้ง $5 alert ก่อน deploy ทุกครั้ง

ส่งงาน Final Project

📦 Repository ครบ checklist

📊 Evidence ครบ checklist

🎓 Portfolio (Bonus +5 pts)

🌟 หลังจาก W15

จบคู่มือนี้ — คุณ ไม่ใช่ programmer มืออาชีพ · แต่คุณมี "workflow" ที่ programmer มืออาชีพใช้: เห็นปัญหา → spec → AI build → test → deploy → maintain

ปีต่อไปเรียนวิชาอื่น — เอา workflow นี้ไปใช้ · ค่าของคุณ ไม่ใช่ "เขียน Python ได้" · ค่าของคุณคือ "นำ AI ไปทำของจริงที่ใช้ได้"

คำสุดท้าย "If I had eight hours to chop down a tree, I'd spend the first six sharpening the axe." — Lincoln
15 สัปดาห์นี้คือการ "ลับขวาน" · ทั้งชีวิตวิศวกรของคุณคือการ "ตัดต้นไม้"