ชุดสัมภาษณ์ AI 15: ข้อผิดพลาดทั่วไปของ Vibe Coding มีอะไรบ้าง?
แม้รูปแบบ 'ขับเคลื่อนด้วยความรู้สึก/บรรยากาศ' ของ Vibe Coding จะสนุกมากเมื่อใช้ในการสร้างต้นแบบอย่างรวดเร็วและสำรวจความคิดสร้างสรรค์ แต่หากไม่มีการควบคุม ก็จะตกหลุมพรางทั่วไปได้ง่าย ต่อไปนี้คือสรุปจากห้ามิติ: คุณภาพโค้ด, ความสามารถในการบำรุงรักษา, ความปลอดภัย, วิวัฒนาการของความต้องการ, การทำงานร่วมกันเป็นทีม
1. ข้อผิดพลาดด้านคุณภาพโค้ด
เนื่องจาก Vibe Coding อาศัยการทำซ้ำแบบสนทนา ทุกครั้งที่ผู้ใช้ร้องขอการเปลี่ยนแปลงที่ไม่ชัดเจน (เช่น 'ทำให้ปุ่มนี้ดูมีเทคโนโลยีมากขึ้น') AI จะมีแนวโน้มที่จะ เพิ่มโค้ดใหม่ แทนที่จะปรับโครงสร้างตรรกะเดิม มันไม่รู้ว่าโค้ดเก่าใดใช้ไม่ได้แล้ว และไม่กล้าลบทิ้ง ทำให้เกิดโค้ดที่ซ้ำซ้อนและโค้ดตายสะสม ในขณะเดียวกัน AI ไม่มี 'ความทรงจำเกี่ยวกับสไตล์โค้ด' ที่เป็นหนึ่งเดียว การสร้างแต่ละครั้งอาจใช้หลักการตั้งชื่อต่างกัน (ขึ้นอยู่กับความสุ่มของข้อมูลฝึก) และผู้ใช้ไม่ค่อยกำหนดข้อจำกัดที่ชัดเจน สุดท้ายโค้ดก็รกและคาดเดาได้ยาก สรุปได้ดังนี้:
- โค้ดซ้ำซ้อนและโค้ดตาย: หลังจากแก้ไขหลายครั้ง AI จะทิ้งการใช้งานเก่า บล็อกโค้ดที่ถูกคอมเมนต์ไว้ การนำเข้าที่ไม่ได้ใช้ เพราะความเสี่ยงในการลบสูง มันจึงเลือกที่จะเก็บไว้
- การตั้งชื่อและสไตล์ที่ไม่สอดคล้อง: AI สุ่มดึงสไตล์จากข้อมูลฝึกในแต่ละรอบ หากผู้ใช้ไม่บังคับมาตรฐาน ก็จะเกิดการผสมผสานระหว่าง camelCase, underscore, ช่องว่าง
- ข้อผิดพลาดตรรกะที่ซ่อนอยู่: AI มีแนวโน้มที่จะสร้างโค้ดที่ถูกต้องใน 'เส้นทางทั่วไป' แต่เงื่อนไขขอบเขต (ค่าว่าง, ค่าสุดขีด, การทำงานพร้อมกัน) มักถูกละเลย เนื่องจากตัวอย่างประเภทนี้ในข้อมูลฝึกมีน้อย
2. ข้อผิดพลาดด้านความสามารถในการบำรุงรักษา
ความเร็วในการทำซ้ำของ Vibe Coding นั้นเร็วมาก ทั้งผู้ใช้และ AI มุ่งเน้นที่ 'ฟังก์ชันปัจจุบันใช้งานได้หรือไม่' แทบไม่มีเวลาเขียนเอกสาร คอมเมนต์ หรือปรับโครงสร้าง AI ขาดความจำระยะยาว จะไม่เพิ่ม docstring ให้ฟังก์ชันโดยอัตโนมัติ และไม่พิจารณานักพัฒนาคนต่อไปที่จะมารับช่วง นอกจากนี้ AI มักจะ 'จัดการความต้องการเฉพาะหน้า' ไม่ว่าจะออกแบบกรอบงานทั่วไปเกินความจำเป็น (คิดว่าผู้ใช้จะต้องการในภายหลัง) หรือคัดลอกและวางเพื่อให้เสร็จเร็ว ทำให้ระดับนามธรรมสับสน สรุปได้ดังนี้:
- ขาดเอกสารและคอมเมนต์: AI เริ่มต้นด้วยการสร้างโค้ดที่ 'อธิบายตัวเอง' แต่ในความเป็นจริง regex หรืออัลกอริทึมที่ซับซ้อนนั้นเข้าใจยาก; หากผู้ใช้ไม่ขอ มันก็จะไม่เขียนเอกสาร
- การแยกส่วนมากเกินไปหรือไม่เพียงพอ: บางครั้ง AI ใช้รูปแบบการออกแบบที่พบบ่อย (เช่น Factory, Strategy) แม้ปัญหาจะง่าย; บางครั้งก็ขี้เกียจแยกฟังก์ชันร่วม ก็คัดลอกบล็อกโค้ดโดยตรง
3. ข้อผิดพลาดด้านความปลอดภัย
ข้อมูลฝึกของ AI มีโค้ดโอเพนซอร์สจำนวนมาก ซึ่งมีช่องโหว่ทางประวัติศาสตร์ (เช่น การต่อ SQL, การเขียนคีย์แบบตายตัว) ใน Vibe Coding ผู้ใช้ไม่ค่อยขอให้ 'ใช้การสอบถามแบบมีพารามิเตอร์' หรือ 'อ่านคีย์จากตัวแปรสภาพแวดล้อม' AI จึงใช้รูปแบบที่พบบ่อยที่สุด (และมักไม่ปลอดภัย) นอกจากนี้ AI ไม่มีจิตสำนึก 'โมเดลภัยคุกคาม' จะไม่ตรวจสอบการกรองอินพุตหรือสิทธิ์ขั้นต่ำโดยอัตโนมัติ เพราะมันสนใจแค่การทำงานของฟังก์ชัน สรุปได้ดังนี้:
- ช่องโหว่การแทรก: AI เริ่มต้นด้วยการใช้การต่อสตริงเพื่อสร้าง SQL/คำสั่ง เนื่องจากวิธีนี้พบได้บ่อยในบทช่วยสอนง่ายๆ
- การเขียนข้อมูลที่ละเอียดอ่อนแบบตายตัว: ตัวอย่างในข้อมูลฝึกมักเขียน API Key แบบตายตัว AI จะเลียนแบบรูปแบบนี้
- สิทธิ์เกินความจำเป็น: เพื่อความสะดวก AI มักใช้
sudoหรือโหมดw+ในการเปิดไฟล์ โดยไม่พิจารณาสิทธิ์ที่จำเป็นน้อยที่สุด
4. ข้อผิดพลาดด้านวิวัฒนาการของความต้องการ
Vibe Coding ไม่มีขอบเขตที่ชัดเจน เมื่อผู้ใช้พูดว่า 'เพิ่มฟังก์ชันอีกหน่อย' AI จะพยายามทำให้พอใจ แต่มันไม่รู้ว่าอะไรคือ 'นอกขอบเขต' AI ไม่มีแนวคิดเรื่องลำดับความสำคัญ อาจเพิ่มฟีเจอร์เสริมสามอย่างพร้อมกัน ทำให้ฟังก์ชันหลักถูกกลบ ในขณะเดียวกัน ทุกครั้งที่แก้ไขบั๊กใหม่ AI จะไม่ทบทวนฟังก์ชันเก่า มักเกิดปัญหาการถดถอยที่แก้ A แล้วพัง B สรุปได้ดังนี้:
- การขยายขอบเขต: เพื่อ 'ทำให้ผู้ใช้พอใจ' AI จะเพิ่มฟังก์ชันที่ดูเกี่ยวข้องแต่ไม่จำเป็น (เช่น เครื่องคิดเลขเพิ่มประวัติ)
- การถดถอยของฟังก์ชัน: เมื่อ AI แก้ไขบั๊กตัวหนึ่ง เนื่องจากไม่เข้าใจตรรกะโดยรวม จึงแก้ไขฟังก์ชันร่วมที่อื่น ทำให้ฟังก์ชันอื่นที่พึ่งพามันผิดปกติ
5. ข้อผิดพลาดด้านการทำงานร่วมกันเป็นทีม
กระบวนการสนทนาของ Vibe Coding คือ การโต้ตอบส่วนตัวระหว่างบุคคลกับ AI ไม่มีเอกสารข้อกำหนดหรือบันทึกการตัดสินใจออกแบบที่สามารถส่งต่อได้ สมาชิกทีมที่แตกต่างกันคุยกับ AI แต่ละคน ได้โค้ดในสไตล์ของตัวเอง เมื่อรวมเข้าด้วยกันก็เกิดความขัดแย้งมากมาย นอกจากนี้ AI จะไม่สร้าง commit message หรือบันทึกการเปลี่ยนแปลงโดยอัตโนมัติ เหตุผลของวิวัฒนาการโค้ดสูญหาย ผู้ดูแลในภายหลังต้องเดาเอา สรุปได้ดังนี้:
- การสร้างที่ไม่สามารถทำซ้ำได้: คนต่างกัน เวลาต่างกัน ใช้ prompt เดียวกัน AI จะส่งออกการใช้งานที่แตกต่างกัน (เนื่องจากความสุ่มของการสุ่มตัวอย่าง)
- ขาดการติดตามการเปลี่ยนแปลง: ไม่มีเอกสารออกแบบ ไม่มี commit message อธิบาย 'ทำไมถึงเปลี่ยนแบบนี้' โค้ดกลายเป็นกล่องดำ
评论
暂无已展示的评论。
发表评论(匿名)