- ในการพัฒนาซอฟต์แวร์ Bus Factor คือแนวคิดที่ใช้บอกว่าต้องมีผู้ถือครองความรู้เฉพาะกี่คนจึงจะยังดูแลโปรเจกต์ต่อไปได้ โดยเดิมนั้น ค่าต่ำสุดในกรณีเลวร้ายคือ 1
- อย่างไรก็ตาม หลังจาก การเปิดตัว ChatGPT (30 พฤศจิกายน 2022) เมื่อ generative AI ถูกนำไปใช้กันอย่างแพร่หลาย หลายคนไม่ได้เก็บรักษาความรู้ไว้ด้วยตนเองอีกต่อไป แต่พึ่งพา AI แทน จนเกิดสถานการณ์ที่แทบจะเป็น Bus Factor 0
- ในสายงานเขียนโปรแกรม นักพัฒนาจำนวนมากขึ้นเรื่อยๆ ใช้ โค้ดและฟังก์ชันที่ LLM สร้างขึ้น ตรงๆ โดยเลิกพยายามทำความเข้าใจ codebase และหันไปใช้ “vibe coding”
- ผลคือเมื่อถึงเวลาต้องแก้บั๊ก อุดช่องโหว่ความปลอดภัย หรือขยายฟีเจอร์ อาจต้องเผชิญกับสถานการณ์ที่ ไม่มีใครรู้ว่าเหตุใดโค้ดจึงถูกเขียนแบบนั้น
- สิ่งนี้ก่อให้เกิดความเสี่ยงร้ายแรงต่อความน่าเชื่อถือและความปลอดภัยของซอฟต์แวร์ และตราบใดที่ วันที่ AI สามารถสร้างโค้ดที่สมบูรณ์แบบได้อย่างสมบูรณ์แบบ ยังมาไม่ถึง ข้อจำกัดเชิงรากฐานนี้ก็ยังคงอยู่
แนวคิดและประวัติของ Bus Factor
- Bus Factor คือแนวคิดที่ แสดงเป็นตัวเลขว่าความรู้เฉพาะถูกแบ่งปันอยู่กับคนกี่คน
- ตัวอย่าง: ถ้ามี 3 คนที่รู้วิธีกู้คืน database backup ได้ Bus Factor ของความสามารถนี้ก็คือ 3
- ตามธรรมเนียมแล้วค่าที่แย่ที่สุดคือ 1 และหากคนคนนั้นสูญเสียความรู้นั้นไป ก็จะไม่สามารถดูแลโปรเจกต์ต่อได้
- มนุษย์พยายามเอาชนะปัญหานี้ผ่านวิธีมากมาย เช่น การทำเอกสาร การสอน การถ่ายทอดความรู้ สัมมนา โรงเรียน ฯลฯ
- นำไปสู่ความพยายามอย่างเป็นระบบในการสืบทอดและเก็บรักษาความรู้ โดยใช้ทั้งทรัพยากรบุคคลและเวลาเป็นจำนวนมาก
การนำ AI มาใช้และ Bus Factor 0
- การเปิดตัว ChatGPT ในเดือนพฤศจิกายน 2022 เปิดยุค “AI First”
- ในกระบวนการที่ AI สร้างโค้ดและฟังก์ชัน หลายคนถูกกันออกจากการเป็นผู้เก็บรักษาความรู้ และเริ่มพึ่งพาสิ่งที่ AI สร้างขึ้น ทำให้ความเข้าใจต่อโปรเจกต์ลดลงอย่างรวดเร็ว
- ผลลัพธ์คือเกิด ภาวะที่ไม่มีผู้ถือครองความรู้อยู่เลย หรือก็คือ สถานการณ์ Bus Factor 0
- โปรแกรมเมอร์มีแนวโน้มจะไม่เขียนหรือทำความเข้าใจโค้ดและฟังก์ชันด้วยตนเอง แต่ มอบหมายให้ AI ไปทั้งหมด
- ในกระบวนการนี้ นักพัฒนาเริ่ม หลีกเลี่ยงการทำความเข้าใจ codebase และการทำเอกสาร แล้วเปลี่ยนไปเป็นรูปแบบที่เพียง ขอให้ AI อธิบายใหม่อีกครั้ง
ปัญหาของการเขียนโค้ดด้วย LLM
- ต่อให้ยังไม่พูดถึงปัญหาคุณภาพโค้ด ประเด็นสำคัญคือ การอ่านและการบำรุงรักษานั้นยากกว่าการเขียนโดยเนื้อแท้
- ในอดีต อย่างน้อยก็ยังมีเมนเทอร์หรือเอกสารคอยช่วยเหลือขั้นต่ำ แต่ในสภาพแวดล้อมที่พึ่งพา AI แม้แต่ตาข่ายนิรภัยแบบนี้ก็หายไป
- ในการพัฒนาที่อิง LLM กระบวนการสร้างโค้ดไม่ได้ถูกบันทึกไว้ และ แม้แต่ AI เองก็จำบริบทของโค้ดที่มันสร้างไม่ได้
- สุดท้ายแล้ว นักพัฒนาต้องตกอยู่ในสถานการณ์ที่ต้องวิเคราะห์และแก้ไข โค้ดที่ AI เขียน แต่มีบริบทไม่ชัดเจน
- สิ่งนี้นำไปสู่ภาวะที่ ไม่มีใครรู้เจตนาและโครงสร้างของโค้ด เมื่อต้องแก้บั๊ก แพตช์ช่องโหว่ความปลอดภัย หรืออัปเกรด dependency
ความเสี่ยงจากมุมมองของผู้ใช้
- ไม่ใช่แค่นักพัฒนา แต่ผู้ใช้เองก็เผชิญความเสี่ยงเช่นกัน
- ซอฟต์แวร์ที่ให้อัปโหลดเอกสารส่วนตัว ข้อมูลบัตรเครดิต รูปถ่ายส่วนตัว หรือความคิดส่วนตัว อาจถูกสร้างขึ้นจาก โค้ดที่ไม่มีใครรู้โครงสร้างภายในและจุดประสงค์ของมัน
- สิ่งนี้แฝงความเสี่ยงร้ายแรงในแง่ การคุ้มครองข้อมูลและความน่าเชื่อถือ และทำให้เกิดคำถามต่อ เสถียรภาพของบริการ
บทสรุป
- vibe coding ที่นำไปสู่ Bus Factor 0 เป็นแนวทางที่มีข้อบกพร่องในระดับพื้นฐาน
- นี่คือข้อจำกัดที่หลีกเลี่ยงไม่ได้ ตราบใดที่ AI ยังไม่สามารถสร้างโค้ดที่ถูกต้อง 100% จากพรอมป์ต์ที่ถูกต้อง 100% ได้
- ดังนั้นในสถานการณ์ปัจจุบัน นอกเหนือจาก การใช้ AI แล้ว ก็ไม่อาจมองข้ามความสำคัญของ การเก็บรักษาความรู้ และ ความเข้าใจโค้ด ได้ และจำเป็นต้อง คงระบบการจัดการความรู้และการทำเอกสาร ไว้
ยังไม่มีความคิดเห็น