~/VibeHandbook
PDF ฟรี

บท 12 · 02

เช็กลิสต์การดีบัก

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

  1. ทำให้ปัญหาเกิดซ้ำได้อย่างแน่นอน หาขั้นตอนที่แน่ชัดซึ่งทำให้บั๊กเกิดขึ้นทุกครั้ง บั๊กที่คุณทำให้เกิดซ้ำไม่ได้ก็คือบั๊กที่คุณยืนยันไม่ได้ว่าแก้แล้วจริงหรือไม่ — คุณจะได้แต่เดาว่ามันหายไปหรือเปล่า ถ้ามันเกิดขึ้นเป็นครั้งคราว ให้ตามหาตัวแปรที่เป็นตัวสวิตช์: อินพุตเฉพาะเจาะจง สถานะล็อกอินหรือไม่ล็อกอิน หรือเครือข่ายที่ช้า
  2. อ่านข้อผิดพลาดจริง ๆ อย่าอ่านผ่าน ๆ ข้อความแสดงข้อผิดพลาดและส่วน บนสุด ของ stack trace มักจะระบุไฟล์และบรรทัดที่เกิดปัญหา มือใหม่มักเลื่อนผ่านประโยคที่มีประโยชน์ที่สุดบนหน้าจอไปเพราะมันดูน่ากลัว
  3. รวบรวมบริบท เก็บข้อความข้อผิดพลาด stack trace โค้ดที่เกี่ยวข้อง และคำอธิบายสั้น ๆ ว่าคุณคาดหวังอะไร
  4. ส่งภาพรวมทั้งหมดให้ AI วางทั้งหมดข้างต้นในข้อความเดียว ให้มันตั้งสมมติฐาน
  5. ตั้งสมมติฐาน ไม่ใช่ทางแก้ ถามว่า "อะไรที่อาจทำให้เกิดสิ่งนี้ได้?" ก่อนจะถามว่า "แก้ตรงนี้ที" ทางแก้ที่ผิดจากทฤษฎีที่ผิดเสียเวลาเปล่า — และบางครั้งยังเพิ่มบั๊ก ตัวที่สอง ทับซ้อนกับตัวแรกอีกด้วย
  6. เพิ่ม logging เพื่อทดสอบสมมติฐาน ยืนยันว่าโค้ดกำลังทำอะไรอยู่จริง ๆ ก่อนที่จะเปลี่ยนแปลงมัน
  7. ค้นหาแบบทวิภาค (binary search) หาจุดปัญหา จำกัดขอบเขตว่า ตรงไหน ที่พัง โดยตัดพื้นที่ต้องสงสัยลงครึ่งหนึ่งซ้ำ ๆ
  8. แก้ที่สาเหตุที่แท้จริง ไม่ใช่แค่อาการ ให้แน่ใจว่าทางแก้จัดการกับ สาเหตุ ที่มันพัง ไม่ใช่แค่ปัญหาที่มองเห็น
  9. ตรวจสอบทางแก้และเช็กว่ามีผลกระทบย้อนกลับหรือไม่ รันขั้นตอนที่ทำให้เกิดปัญหาซ้ำอีกครั้ง แล้วตรวจสอบว่าฟีเจอร์ใกล้เคียงยังทำงานได้ — regression คือเมื่อการแก้ปัญหาแอบทำให้สิ่งที่เคยใช้ได้พังไปเงียบ ๆ เหมือนการซ่อมรอยรั่วจุดหนึ่งแล้วทำให้ท่อข้าง ๆ แตก

เช็กลิสต์นั้นแท้จริงแล้วคือลูปเดียวที่คุณวนซ้ำจนกว่าบั๊กจะหายไป แต่ละขั้นตอนส่งหลักฐานต่อไปให้ขั้นถัดไป และการตรวจสอบที่ล้มเหลวก็แค่ส่งคุณกลับไปวนอีกครั้งพร้อมกับสิ่งที่คุณเรียนรู้มา:

   ┌──────────────┐
   │  REPRODUCE   │  make it happen every time
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ READ ERROR + │  what does it actually say?
   │   GATHER     │  collect trace + code + context
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ HYPOTHESIS   │  "what could cause this?"
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ CONFIRM w/   │  add a log, get evidence
   │   LOGGING    │
   └──────┬───────┘
     wrong│  correct
   ┌──────┘ guess   ▼
   │            ┌──────────────┐
   │ (new       │  FIX root    │  not the symptom
   │  theory)   │    cause     │
   │            └──────┬───────┘
   │                   ▼
   │            ┌──────────────┐    fails / regression
   └────────────┤   VERIFY     │──────────┐
                │ + regressions│          │
                └──────┬───────┘          │
                       │ passes           │
                       ▼          ◀───────┘
                    ✔ DONE      (loop back around)

ลำดับนี้ไม่ได้สุ่มมาเฉย ๆ แต่ละขั้นตอนสร้างหลักฐานที่ขั้นตอนถัดไปต้องการ การทำให้เกิดซ้ำให้สิ่งที่คุณอ่านได้ การอ่านให้บริบทที่ต้องรวบรวม บริบทให้สิ่งที่ AI ใช้ตั้งสมมติฐานได้ ข้ามขั้นตอนใดไปก็เท่ากับป้อนช่องโหว่ให้ขั้นตอนถัดไป

อยากได้แบบออฟไลน์?

ดาวน์โหลดหนังสือทั้งเล่มเป็น PDF หรือ EPUB — ฟรี