สอนลูกแก้ Error Debugging เริ่มจากเปลี่ยนความคิดของลูกก่อนว่า error message ไม่ใช่คอมพิวเตอร์กำลังดุ แต่เป็นคอมพิวเตอร์กำลังบอกตำแหน่งที่มันงงให้ฟังอย่างตรงไปตรงมาที่สุดเท่าที่จะทำได้ค่ะ
Debugging คืออะไร ทำไมถึงเป็นทักษะชีวิต
Debugging คือกระบวนการหาว่าทำไมโปรแกรมถึงไม่ทำงานตามที่ตั้งใจ แล้วแก้ไขทีละจุด ฟังดูเป็นเรื่องเทคนิค แต่จริง ๆ แล้วเป็นวงจรเดียวกับที่ใช้ตอนต่อเลโก้แล้วชิ้นไม่พอดี หรือทำโจทย์เลขแล้วคำตอบผิด สังเกตว่าผิดตรงไหน ลองปรับ แล้วดูผลอีกครั้ง เด็กที่ฝึกวงจรนี้ผ่านโค้ดดิ้ง มักเอาไปใช้กับปัญหาอื่นในชีวิตได้เองโดยไม่รู้ตัว
ลูกเจอ Error แล้วร้องไห้ ผู้ปกครองควรทำยังไง
อย่าเพิ่งรีบแก้ให้ และอย่าเพิ่งรีบปลอบว่า "ไม่เป็นไร" เฉย ๆ เพราะทั้งสองแบบสอนลูกว่า error เป็นเรื่องน่ากลัวที่ต้องรีบผ่านให้พ้น สิ่งที่ได้ผลกว่าคือนั่งข้าง ๆ แล้วพูดว่า"อ่านให้ฟังหน่อยว่ามันบอกว่าอะไร" การอ่านออกเสียงช่วยให้เด็กช้าลงพอจะเห็นรายละเอียดที่พลาดไปตอนอ่านเร็ว ๆ ในหัว
สอนลูกอ่าน Error Message
ในห้องเรียนของครูพิม error ที่เด็กเจอบ่อยที่สุดตอนเริ่มเขียน Python คือ NameError ลองดูสองบรรทัดนี้
name = 'Ploy'
print(nme)
Python จะตอบแบบนี้
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(nme)
^^^
NameError: name 'nme' is not defined. Did you mean: 'name'?
สอนให้ลูกอ่านจากบรรทัดล่างสุดขึ้นมา เพราะบรรทัดล่างสุดคือตัวที่บอกชนิดของปัญหาและเหตุผล ตรงนี้ Python บอกว่าไม่รู้จักชื่อ nme และเดาให้ด้วยซ้ำว่าที่ตั้งใจจะพิมพ์คือ name ส่วนบรรทัดที่ขึ้นต้นด้วย File บอกว่าปัญหาอยู่ที่บรรทัดไหนของไฟล์ ทั้งหมดที่ต้องทำคือกลับไปแก้ nme ให้ตรงกับชื่อตัวแปรที่ตั้งไว้
5 ขั้นตอนแก้บั๊กที่ใช้ได้ทุกภาษา
- อ่าน error message ให้จบทั้งบรรทัด ก่อนเดาสุ่มแก้อะไรก็ตาม
- ทำให้ปัญหาเกิดซ้ำได้แน่นอน รู้ว่ากดอะไรหรือรันโค้ดส่วนไหนแล้วมันพังทุกครั้ง
- ย่อปัญหาให้เล็กที่สุด ลบหรือปิดส่วนที่ไม่เกี่ยวออกไปก่อน จนเหลือแค่โค้ดจุดที่พังจริง ๆ
- เปลี่ยนทีละอย่างเดียว แล้วรันดูใหม่ ไม่แก้พร้อมกันหลายจุดเพราะจะไม่รู้ว่าอะไรที่แก้ปัญหาได้จริง
- จดบันทึกบั๊กที่เจอไว้ สมุดเล่มเล็กหรือไฟล์เดียวก็พอ จดว่าเจออะไร แก้ยังไง ครั้งต่อไปเจอซ้ำจะแก้เร็วขึ้นมาก
เด็กที่แก้บั๊กเป็นไม่ได้เก่งกว่าคนอื่น เขาแค่ยอมอ่านสิ่งที่คอมพิวเตอร์บอกจนจบ
ใช้ AI ช่วยหาบั๊กได้ไหม
ใช้ได้ แต่มีข้อควรระวังเรื่องหนึ่ง ให้ลูกวางโค้ดของตัวเองพร้อม error message แล้วถามว่า "ทำไมมันพัง" ไม่ใช่ถามว่า "ช่วยเขียนให้ใหม่หน่อย" เพราะแบบแรกลูกยังได้ฝึกทำความเข้าใจปัญหาเอง ส่วนแบบหลังลูกแค่ได้โค้ดใหม่มาวางทับโดยไม่รู้เลยว่าทำไมของเดิมถึงพัง ครั้งหน้าเจอปัญหาคล้ายกันก็จะพึ่ง AI อีกอยู่ดี
ถ้าลูกยังอ่านโค้ด Python ไม่คล่อง มีคอร์ส Pythonและคอร์สฝึกฝน Pythonให้ฝึกอ่านและแก้โค้ดจริงเป็นขั้นตอน ใครยังไม่เคยเขียนโปรแกรมแรก เริ่มที่บทความโปรแกรม Python โปรแกรมแรกของลูก ถ้าลูกท้อกับ error จนอยากเลิกเรียน อ่านต่อที่บทความลูกอยากเลิกเรียนโค้ดดิ้ง ดูตัวอย่างโปรเจ็คที่ผ่านการแก้บั๊กมาแล้วที่หน้าผลงานนักเรียน
คำถามที่พบบ่อย
ลูกเจอ error ทุกบรรทัดจนหมดกำลังใจ ผิดปกติไหม
ไม่ผิดปกติเลยค่ะ ช่วงแรกที่เริ่มเขียนโค้ดทุกคนเจอแบบนี้ ยิ่งเจอบ่อยเท่าไหร่ยิ่งอ่าน error ได้คล่องขึ้นเร็วเท่านั้น
ควรปล่อยให้ลูกแก้บั๊กเองทั้งหมดไหม
ให้ลองเองก่อนสัก 10–15 นาที ถ้ายังไม่ได้ค่อยเข้าไปช่วยด้วยคำถามนำ เช่น "ลองอ่าน error บรรทัดสุดท้ายอีกทีสิ" แทนที่จะบอกคำตอบตรง ๆ
debugging ต้องเก่งภาษาอังกฤษไหม เพราะ error เป็นภาษาอังกฤษหมด
ช่วยได้แต่ไม่จำเป็นต้องเก่งมาก error message ส่วนใหญ่ใช้คำศัพท์ซ้ำ ๆ ไม่กี่คำ เด็กจะจำความหมายได้เองหลังเจอบ่อยเข้า