สวัสดีค่าาาา กลับมาอีกแล้ววว 👋

EP นี้ขอพูดถึงหนึ่งใน สิ่งที่เปลี่ยนชีวิตการใช้ Claude Code ได้มากที่สุด — Plan-First Workflow

หรือพูดง่ายๆ คือ: บังคับ Claude ให้คิดก่อนทำ

ฟังดูง่ายใช่ไหม? แต่ 90% ของคนที่ใช้ Claude Code ไม่ทำสิ่งนี้ แล้วก็งงว่าทำไม Claude ถึงทำ feature พังซ้ำๆ 5555


Claude Code เป็น "agentic system" ไม่ใช่ chatbot

Chatbot ธรรมดา (เช่น Claude.ai) คือ:

เรา → พิมพ์ → Claude ตอบ → จบ

Claude Code คือ:

เรา → พิมพ์ → Claude วางแผน → Claude ทำ action หลายอย่าง 
→ อ่านไฟล์ → รัน command → แก้ไขไฟล์ → ทำอีก → ทำอีก
→ จนเสร็จ (หรือพัง)

Claude Code ทำ หลาย steps ต่อเนื่องกันโดยอัตโนมัติ เรียกว่า "agentic loop" ซึ่งหมายความว่าถ้าตัดสินใจผิดในสเต็ปแรก ความผิดพลาดมันจะ ขยายตัว เอาเป็นว่าชิบหายวายป่วง

เหมือนขับรถ GPS บอกผิดตั้งแต่แยกแรก ยิ่งขับยิ่งหลง อะไรประมาณนั้น


The 1%

มีการคำนวณที่ทำให้เห็นภาพชัดมาก

สมมติว่า Claude ตัดสินใจถูกต้องแต่ละ step 80% ของเวลา (ซึ่งถือว่าเก่งมากแล้ว)

ถ้า feature หนึ่งต้องตัดสินใจ 20 จุด:

โอกาสที่ทุก step จะถูกหมด = 0.80^20 = 1.15%

แปลว่าถ้าไม่มีการวางแผน โอกาสที่ feature จะออกมาสมบูรณ์แบบมีแค่ 1% เท่านั้น

แต่ถ้าเราวางแผนก่อน โดยตรวจสอบ 20 จุดตัดสินใจนั้นล่วงหน้า:

การตัดสินใจเหลือแค่ "ทำตามแผนหรือเปล่า" → ความถูกต้องขึ้นไปใกล้ 100%

Plan-First Workflow ทำยังไง?

วิธีที่ 1: พิมพ์ขอตรงๆ

"ก่อนที่จะทำอะไร ช่วยเขียนแผนก่อนนะคะ ว่าจะแก้ไฟล์ไหนบ้าง 
ขั้นตอนเป็นยังไง แล้วรอให้เราเห็นด้วยก่อนค่อยทำ"

วิธีที่ 2: ใส่ไว้ใน CLAUDE.md เลย (แนะนำท่านี้ดีกว่า)

## Workflow Rules
- ก่อนทำ task ใหม่ทุกครั้ง ให้เขียน plan ก่อนเสมอ
- บอกว่าจะแก้ไฟล์ไหนบ้าง, ลำดับการทำงาน, edge cases
- รอให้ได้รับการ approve ก่อนถึงจะเริ่ม implement

วิธีที่ 3: Plan Mode (Shift+Tab)

Claude Code มี built-in Plan Mode กด Shift+Tab เพื่อสลับ (ถ้าใช้แบบ CLI)

ใน Plan Mode Claude จะ

  • อ่านไฟล์ได้ แต่แก้ไม่ได้

  • เขียน plan ให้เราเห็นก่อน

  • รอ confirm ก่อนจะออกจาก Plan Mode แล้วทำจริง


ตัวอย่าง Plan ที่ดี

พิมพ์: "เพิ่ม dark mode ให้กับ settings page"

Claude ควรตอบแบบนี้ก่อน:

แผนการทำงาน:

1. อ่านไฟล์ที่เกี่ยวข้อง
   - /app/settings/page.tsx
   - /lib/theme.ts (ถ้ามี)
   - /styles/globals.css

2. ตรวจสอบว่ามี theme system อยู่แล้วไหม
   → ถ้ามี next-themes: ใช้ useTheme() hook
   → ถ้าไม่มี: ต้องติดตั้ง next-themes ก่อน

3. เพิ่ม toggle switch ใน settings page
   - ใช้ component Switch จาก /components/ui/Switch

4. เก็บ preference ไว้ใน localStorage
   - key: "theme-preference"
   - ค่า: "light" | "dark" | "system"

5. Test: ทดสอบว่า preference ยังอยู่หลัง refresh

ขั้นตอนนี้ถูกต้องไหมคะ? มีอะไรเพิ่มเติมก่อนเริ่มทำ?

Plan ช่วยจับ edge cases ที่เรามองไม่เห็น

ข้อดีอีกอย่างของการให้ Claude เขียน plan คือ มันมักจะ ตั้งคำถามที่เราไม่ได้นึกถึง

เช่น:

Claude: "สำหรับ dark mode นี้ ถ้า user ใช้ system preference เป็น dark 
แต่กดเปลี่ยนเป็น light ในแอป แล้วเปิดใหม่ จะให้จำค่าที่กดไว้หรือ 
กลับไปตาม system?"

คำถามนี้เป็นสิ่งที่เราอาจไม่ได้เขียนใน spec แต่ถ้าปล่อยให้ Claude ทำโดยไม่ถาม มันจะเลือกเองแล้วเราอาจไม่รู้ว่ามันเลือกอะไร


Anti-pattern: อย่าหยุด Plan กลางทาง

มีสิ่งที่ต้องระวังคือ ถ้าเราใช้ Hook (EP.6) หรือกฎต่างๆ ที่ บล็อคการทำงาน Claude กลางคัน ระหว่างที่มันกำลัง implement ตาม plan — มันจะทำให้ Claude สับสนและ "หลงลืม" ว่าตัวเองอยู่สเต็ปไหน

✅ ถูก: ตรวจสอบก่อน plan → ยืนยัน → ทำเสร็จทั้ง plan
❌ ผิด: กำลังทำอยู่ดีๆ บล็อคกลางคัน → Claude ต้องเริ่มใหม่

ลองทำดู!

ทดลองทำ 2 แบบ แล้วสังเกตผลต่าง

แบบที่ 1 (ไม่มี plan): พิมพ์ task ตรงๆ เลย เช่น "เพิ่ม loading spinner ให้ปุ่ม submit"

แบบที่ 2 (มี plan): พิมพ์ว่า "ก่อนทำ เขียน plan ก่อนนะ ว่าจะแก้ไฟล์ไหน ยังไงบ้าง รอ approve ก่อน"

แล้วดูว่า output ต่างกันไหม ส่วนใหญ่จะเห็นว่าแบบที่ 2 ตรงความต้องการมากกว่าอย่างเห็นได้ชัด


สรุป

Plan-First Workflow ไม่ใช่แค่ best practice มันคือ การแก้ปัญหาทางคณิตศาสตร์ ยิ่ง feature ซับซ้อน ยิ่งต้องการ plan ก่อนมากเท่านั้น

เพราะ AI บางทีมันทำก่อนค่อยคิด เหมือนโปรแกรมเมอร์ที่เขียนโค้ดก่อนค่อยคิดเช่นกัน


EP ถัดไป: Decision Logs บันทึกว่า "ทำไมถึงตัดสินใจแบบนี้" ไว้ใน docs เพื่อไม่ให้ต้องอธิบายซ้ำๆทุก session

ขอบคุณที่อ่านจนจบนะคะ ขอให้มีวันที่ดีค่าา <3


Tags: Claude Code, AI, Planning, Agentic AI, Developer Tools