SE บทที่ 8 — เมื่อของพัง จะแก้ยังไง · วินิจฉัยก่อนจ่ายยา
ใช้ปุ่ม ← → เปลี่ยนสไลด์ได้SE TRACK — MODULE 8 · DEBUGGING
เมื่อของพัง จะแก้ยังไง — ไม่ให้ AI แก้มั่ว
วันหนึ่งหน้าสั่งซื้อของร้านเราค้าง แล้ว AI บอกว่า "I can't reproduce the issue, but here's a quick fix that might work" — ถ้าอ่านไม่ออก เราจะพิมพ์ "โอเค" แล้วปล่อยให้มันเดาสุ่มแก้โค้ดระบบจริง บทนี้สอนให้อ่านประโยคแบบนี้ออก และสั่งกลับให้ AI วินิจฉัยก่อนจ่ายยา เหมือนหมอที่ดี
ความจริงที่ทำให้สบายใจ: ของพังไม่น่ากลัวเท่าแก้มั่ว — ซอฟต์แวร์ทุกตัวในโลกมีบั๊ก ต่างกันแค่ทีมไหน "หาสาเหตุก่อนแก้" กับทีมไหน "เดาแล้วแก้ไปเรื่อย ๆ"
ทำไมต้องรู้ · Analogy ประจำบท
หมอที่ดีไม่จ่ายยาตามอาการ — แต่หาสาเหตุก่อน
01ไข้ ≠ การติดเชื้อ
- ไข้คืออาการ (Symptom) ที่เห็น · การติดเชื้อคือสาเหตุ (Root Cause) ที่ซ่อนอยู่
- กินยาลดไข้อย่างเดียว ไข้กลับมาแน่ — โค้ดก็เหมือนกัน
02ทำให้ป่วยซ้ำได้ในห้องตรวจ
- หมอต้องเห็นอาการเกิดต่อหน้า ถึงจะตรวจถูกจุด — นี่คือ Reproduce
- บั๊กที่ทำให้เกิดซ้ำได้ = บั๊กที่แก้ได้เกือบแน่นอน
03เราคือคนไข้ที่เล่าอาการเก่ง
- งานของเราไม่ใช่ผ่าตัดเอง — คือเล่าอาการให้ครบ: ทำอะไรอยู่ เกิดอะไร เห็นข้อความอะไร
- Debugging = กระบวนการหาสาเหตุแล้วแก้ — AI ทำได้ ถ้าเราให้ข้อมูลดี
MENTAL MODEL ประจำบท
"วินิจฉัยก่อนจ่ายยา — ไข้คืออาการ การติดเชื้อคือสาเหตุ" · อย่าให้ AI แก้ จนกว่ามันจะบอกได้ว่าสาเหตุคืออะไร
ศัพท์ชุดวินิจฉัย · 6 คำ
เครื่องมือในห้องตรวจของหมอ
SYMPTOMอาการที่เห็น
- สิ่งที่สังเกตได้ เช่น หน้าเว็บค้าง ยอดสต๊อกไม่ตรง
- AI: "the symptom is the page freezing"
ROOT CAUSEสาเหตุที่แท้จริง
- ต้นตอที่ทำให้อาการเกิด — แก้ตรงนี้ อาการถึงหายจริง
- AI: "the root cause is…"
REPRODUCEทำให้ป่วยซ้ำได้
- ทำให้บั๊กเกิดซ้ำอย่างสม่ำเสมอ · Reproduction Steps = ขั้นตอนกดตามแล้วพังทุกครั้ง
- AI: "can you share the steps to reproduce?"
STACK TRACEลายแทงจุดที่ล้ม
- ข้อความยาว ๆ ที่โผล่ตอน error — บอกลำดับการทำงานที่นำไปสู่จุดพัง
- เจอเมื่อไหร่ copy ส่งให้ AI ทั้งก้อน อย่าสรุปเอง
LOGสมุดบันทึกเหตุการณ์
- ข้อมูลที่โปรแกรมจดไว้ระหว่างทำงาน — หลักฐานชั้นดีเวลาวินิจฉัย
- AI: "let me check the logs"
HYPOTHESISสมมติฐาน
- คำตอบชั่วคราวที่ยังต้องพิสูจน์ — หมอเก่งตั้งหลายข้อแล้วตัดทีละข้อ
- AI: "my hypothesis is the discount code logic"
ตัวอย่างจริง: ลูกค้า LINE OA ทักว่า "กดสั่งซื้อแล้วเด้ง" — อาการ (Symptom) คือเด้ง · Reproduction steps คือ "เพิ่มของ 2 ชิ้น + ใส่โค้ดส่วนลด แล้วกดชำระเงิน" · สาเหตุจริง (Root Cause) อาจเป็นโค้ดส่วนลดที่หมดอายุแล้วระบบไม่ได้กันไว้
คู่สำคัญ + วิธีสั่งให้วินิจฉัย
ยาแก้ปวดชั่วคราว vs รักษาต้นเหตุ
WORKAROUND · ยาแก้ปวดเลี่ยงปัญหาชั่วคราว
- ทำให้ระบบใช้ต่อได้ทันที แต่ต้นเหตุยังอยู่ เช่น ปิดโค้ดส่วนลดไปก่อน ร้านขายต่อได้
- รับได้ในวันที่ลูกค้ารอ — แต่ต้องจดไว้เสมอว่ายังไม่ได้แก้จริง
FIX · รักษาต้นเหตุแก้ที่ Root Cause
- แก้ต้นตอให้อาการไม่กลับมาอีก แล้วปิดท้ายด้วยตัวตรวจอัตโนมัติ (บท SE6) กัน Regression — ของที่เคยดีกลับพังซ้ำหลังแก้อย่างอื่น
- เหตุการณ์ใหญ่จบแล้ว ให้ AI เขียน Postmortem = บันทึกสรุปว่าเกิดอะไร เพราะอะไร กันซ้ำยังไง
# Prompt ทองประจำบท — สั่ง AI วินิจฉัยก่อนจ่ายยา (ย่อจาก template เต็ม) วิเคราะห์ปัญหานี้ โดยยังไม่แก้โค้ด - Expected: กดชำระเงินแล้วได้ใบยืนยันคำสั่งซื้อ - Actual: หน้าค้าง ไม่มีใบยืนยัน - Reproduction steps + error message + stack trace: (แปะทั้งก้อน) สิ่งที่ต้องการ: แยก symptom ออกจาก root cause → จัดอันดับ hypotheses → เสนอ minimal fix + regression test
ใช้คู่กันได้: workaround ให้ร้านไปต่อวันนี้ + fix ต้นเหตุภายในสัปดาห์ — แค่ต้องรู้ว่าอันไหนเป็นอันไหน
⭐ หัวใจของบท
ตารางแปลภาษา AI — ได้ยินแบบนี้ ต้องทำยังไง
| AI พูดว่า | กำลังจะเกิดอะไร | เราควรทำอะไร |
|---|---|---|
| "I can't reproduce the issue" | มันทำให้บั๊กเกิดซ้ำในห้องตรวจไม่ได้ — ข้อมูลอาการยังไม่พอ | 🟡 ไม่ใช่ทางตัน — ส่ง reproduction steps ละเอียดขึ้น + ภาพหน้าจอ + ข้อความ error |
| "let me check the logs and stack trace first" | กำลังเก็บหลักฐานก่อนวินิจฉัย — ยังไม่แตะโค้ด | ✅ ทิศทางถูก — นี่คือหมอที่ตรวจก่อนจ่ายยา ปล่อยให้ทำ |
| "my hypothesis is the discount logic" | มีสมมติฐานแล้ว แต่ยังไม่ได้พิสูจน์ | ✅ ปกติ — ให้มันหาหลักฐานยืนยันก่อน แล้วค่อยอนุมัติให้แก้ |
| "the root cause is…" | วินิจฉัยเจอสาเหตุแล้ว กำลังจะเสนอวิธีแก้ | ✅ อ่านคำอธิบาย — ถ้าฟังขึ้น (ตรงกับอาการที่เราเห็นจริง) ค่อยให้ลงมือแก้ |
| "here's a temporary workaround" | ยาแก้ปวดชั่วคราว — ระบบไปต่อได้ แต่ต้นเหตุยังอยู่ | 🟡 รับได้ — แต่จดไว้ว่ายังไม่ได้แก้จริง แล้วนัดกลับมาแก้ root cause |
| "I fixed it" (โดยไม่บอกสาเหตุ) | อาจแก้ตามอาการ — ไข้ลดแต่เชื้อยังอยู่ | ⚠️ ถามกลับก่อน: "root cause คืออะไร แล้วทดสอบยังไงว่าหายจริง" |
| "I'll add a regression test so it never breaks again" | เพิ่มตัวตรวจอัตโนมัติ (บท SE6) กันอาการเดิมกลับมา | ✅ ดีที่สุด — นี่คือการปิดเคสแบบมืออาชีพ กันพังซ้ำ |
สูตรจำเร็ว: ประโยคที่มี logs / hypothesis / root cause / regression test = หมอกำลังตรวจ ✅ · ประโยคที่ เสนอแก้ทันทีโดยไม่บอกสาเหตุ = จ่ายยาไม่ตรวจ ยกมือถามก่อน
กันหลงทาง
5 คู่ที่จำสลับกันบ่อยที่สุด
| คู่ศัพท์ | ต่างกันตรงไหน |
|---|---|
| Symptom vs Root Cause | Symptom = อาการที่เห็น (ไข้ · หน้าเว็บค้าง) · Root Cause = ต้นตอที่ซ่อนอยู่ (การติดเชื้อ · โค้ดส่วนลดไม่กันวันหมดอายุ) — แก้แต่อาการ เดี๋ยวกลับมา |
| Workaround vs Fix | Workaround = ยาแก้ปวดชั่วคราว ต้นเหตุยังอยู่ · Fix = รักษาที่ต้นเหตุจริง — ใช้คู่กันได้ แต่ห้ามนับ workaround ว่า "แก้เสร็จแล้ว" |
| Log vs Stack Trace | Log = สมุดบันทึกเหตุการณ์ที่จดตลอดทั้งวัน · Stack Trace = ลายแทงเฉพาะตอนล้ม บอกลำดับที่นำไปสู่ error หนึ่งครั้ง |
| Bug ใหม่ vs Regression | Bug ใหม่ = ของที่ไม่เคยทำงานถูก · Regression = ของที่เคยดีอยู่แล้วกลับพังหลังมีการแก้อย่างอื่น — เจ็บกว่าเพราะลูกค้าเคยใช้ได้ |
| Testing vs Debugging | Testing (บท SE6) = ชิมก่อนเสิร์ฟ กันของพังตั้งแต่ยังไม่ถึงลูกค้า · Debugging = งานหลังพังแล้ว หาสาเหตุแล้วแก้ — ยิ่ง testing ดี งาน debugging ยิ่งน้อย |
สังเกต: ทุกคู่ฝั่งซ้ายคือ "สิ่งที่เห็นเร็ว" ฝั่งขวาคือ "ของจริงที่ต้องตามให้เจอ" — นิสัยของบทนี้คืออย่าหยุดที่ของที่เห็นเร็ว
QUICK-CHECK · กดดูเฉลย
จริงหรือไม่? — เช็คก่อนปิดคอร์ส
1 · "AI บอก reproduce ไม่ได้ = แก้ไม่ได้แล้ว จบกัน"
ไม่จริง — แปลว่าข้อมูลอาการยังไม่พอ หน้าที่เราคือส่ง reproduction steps ที่ละเอียดขึ้น ภาพหน้าจอ และข้อความ error — บั๊กที่ทำให้เกิดซ้ำได้ คือบั๊กที่แก้ได้
2 · "AI ให้ workaround มาแล้ว ถือว่าปิดงานได้เลย"
ไม่จริง — workaround คือยาแก้ปวด ต้นเหตุยังอยู่ ต้องจดไว้แล้วนัดกลับมาแก้ root cause ไม่งั้นอาการเดิมจะกลับมาตอนที่เราลืมไปแล้วว่าเคยเลี่ยงอะไรไว้
3 · "แก้บั๊กเสร็จ ควรให้ AI เพิ่ม regression test ปิดท้าย"
จริง — ตัวตรวจอัตโนมัติ (บท SE6) จะจับอาการเดิมให้ทันทีถ้ามันกลับมา — วิธีปิดเคสที่กันพังซ้ำได้จริง
KEY TAKEAWAY
Symptom = อาการ · Root Cause = ต้นเหตุ · Reproduce = ทำให้ป่วยซ้ำในห้องตรวจ · Workaround = ยาแก้ปวด · Fix + Regression test = รักษาจริงและกันซ้ำ
กฎเหล็กประจำบท: "อย่าให้ AI จ่ายยาก่อนวินิจฉัย — ถาม Root Cause ทุกครั้ง ก่อนอนุมัติให้แก้"
🎓 จบ SE Track ครบ 9 บท: SE0 แผนที่วงจรงาน → SE1 Requirement → SE2 Design → SE3 ศัพท์พื้นฐาน → SE4 คุม AI Coding → SE5 Git & GitHub → SE6 Testing → SE7 Delivery → SE8 Debugging — บทไหนยังไม่ได้เรียน กดกลับไปเก็บได้เลย