ชุมชนเทคโนโลยีกำลังประสบกับความแตกแยกที่เพิ่มขึ้นเกี่ยวกับเครื่องมือเขียนโค้ดที่ขับเคลื่อนด้วย AI โดยนักพัฒนาจำนวนมากรายงานว่ามีช่องว่างที่สำคัญระหว่างคำสัญญาทางการตลาดกับประสิทธิภาพในโลกแห่งความเป็นจริง ในขณะที่บางคนอ้างว่าได้รับผลตอบแทนด้านผลิตภาพอย่างปฏิวัติ แต่ส่วนใหญ่ของชุมชนกำลังต่อต้านการคาดการณ์ที่มองโลกในแง่ดีเกินไปเกี่ยวกับ AI ที่จะมาแทนที่โปรแกรมเมอร์มนุษย์
ช่องว่างระหว่างคำสัญญากับความเป็นจริง
การอภิปรายล่าสุดเผยให้เห็นความแตกต่างอย่างชัดเจนระหว่างผู้ที่เผยแพร่ AI coding กับผู้ปฏิบัติงานที่ต้องรับมือกับความท้าทายในแต่ละวัน นักพัฒนาจำนวนมากรายงานว่าเครื่องมือ AI ทำงานได้ดีสำหรับงานง่าย ๆ เช่น การสร้างการดำเนินการ CRUD พื้นฐานหรือการสร้างโค้ดโครงสร้าง แต่กลับมีปัญหาอย่างมากกับแอปพลิเคชันที่ซับซ้อนและต้องอาศัยบริบท เครื่องมือเหล่านี้มักจะสร้างโค้ดที่ดูน่าเชื่อถือแต่มีข้อบกพร่องที่ละเอียดอ่อนหรือตั้งสมมติฐานที่ไม่ถูกต้องเกี่ยวกับสถาปัตยกรรมระบบ
ตัวอย่างที่น่าสนใจอย่างหนึ่งคือ SQL queries ที่สร้างโดย AI ซึ่งดูถูกต้องในด้านไวยากรณ์แต่ทำการดำเนินการที่ไร้สาระ เช่น JOIN clauses ที่ไม่ได้เชื่อมโยงตารางอย่างถูกต้อง ปัญหาเหล่านี้อาจยากต่อการตรวจพบ โดยเฉพาะเมื่อฝังอยู่ในโครงสร้างโค้ดที่ซับซ้อน
ปัญหาทั่วไปที่มีการรายงานเกี่ยวกับเครื่องมือเขียนโค้ด AI:
- การสร้างโซลูชันที่ไม่เป็นจริงสำหรับปัญหาที่ไม่ธรรมดา
- โค้ดที่ถูกต้องในด้านไวยากรณ์แต่มีข้อบกพร่องทางตรรกะ
- การสูญเสียบริบทในโปรเจกต์ที่ซับซ้อนและมีหลายไฟล์
- ความยากลำบากกับเทคโนโลยีเฉพาะทางหรือที่มีเอกสารไม่ครบถ้วน
- บั๊กที่ละเอียดอ่อนซึ่งยากต่อการตรวจจับในโค้ดที่สร้างขึ้น
ปัญหาความแม่นยำ
ความท้าทายพื้นฐานเกิดขึ้นจากความแม่นยำที่จำเป็นสำหรับการเขียนโปรแกรมเทียบกับลักษณะที่คลุมเครือของภาษาธรรมชาติ นักวิจารณ์โต้แย้งว่าการอธิบายความต้องการในภาษาอังกฤษมักต้องการความแม่นยำเท่ากับการเขียนโค้ด แต่ไม่มีโครงสร้างเชิงตรรกะที่ภาษาการเขียนโปรแกรมให้ ซึ่งสร้างสถานการณ์ที่นักพัฒนาต้องใช้เวลามากในการสร้าง prompts ที่มีรายละเอียดหรือทำซ้ำกับระบบ AI เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ
ชุมชนสังเกตว่าการเขียนโปรแกรมที่ประสบความสำเร็จมักเกี่ยวกับการแปลความต้องการของมนุษย์ที่คลุมเครือให้เป็นคำสั่งที่แม่นยำและสามารถดำเนินการได้ ในขณะที่เครื่องมือ AI สามารถช่วยในกระบวนการนี้ได้ แต่ก็ไม่ได้ขจัดความจำเป็นในการคิดอย่างชัดเจนเกี่ยวกับการออกแบบระบบและรายละเอียดการดำเนินการ
ข้อจำกัดด้านบริบทและความเชี่ยวชาญ
นักพัฒนาที่ทำงานกับโดเมนเฉพาะทางหรือเทคโนโลยีที่มีเอกสารน้อยรายงานผลลัพธ์ที่แย่โดยเฉพาะจากผู้ช่วยเขียนโค้ด AI เมื่อต้องจัดการกับการปรับปรุง assembly language, คำสั่ง SIMD หรือปัญหาเฉพาะโดเมนที่มีตัวอย่างออนไลน์จำกัด เครื่องมือ AI มักสร้างโซลูชันที่เป็นภาพหลอนซึ่งดูมั่นใจแต่ผิดพลาดโดยพื้นฐาน
ให้ AI ใด ๆ แก้ปัญหาที่ไม่ปกติและคุณจะเห็นมันสร้างภาพหลอนขนาดใหญ่ เอาปัญหาง่าย ๆ แล้วใช่ คุณจะเร็วขึ้น แต่สิ่งเหล่านั้นสามารถทำได้และเคยทำมาแล้ว 1 ล้านครั้ง
ข้อจำกัดนี้บ่งชี้ว่าเครื่องมือเขียนโค้ด AI มีประสิทธิภาพหลักสำหรับรูปแบบการเขียนโปรแกรมที่มีเอกสารครบถ้วนและทั่วไป มากกว่างานที่เป็นนวัตกรรมหรือเฉพาะทาง
ประสิทธิภาพของเครื่องมือ AI สำหรับการเขียนโค้ดจำแนกตามประเภทงาน:
- ประสิทธิภาพสูง: การดำเนินการ CRUD, โค้ดเบื้องต้น, อัลกอริทึมทั่วไป
- ประสิทธิภาพปานกลาง: การพัฒนาเว็บ, เฟรมเวิร์กมาตรฐาน, API ที่มีเอกสารประกอบ
- ประสิทธิภาพต่ำ: การปรับแต่ง Assembly, คำสั่ง SIMD, ปัญหาเฉพาะทาง
- ประสิทธิภาพแย่: การรวมระบบที่ซับซ้อน, การแก้ปัญหาใหม่ๆ, สาขาเฉพาะทาง
ความกังวลเรื่องการพึ่งพา
ความกังวลที่สำคัญในหมู่นักพัฒนาเกี่ยวข้องกับการพึ่งพาที่เพิ่มขึ้นต่อบริการ AI ของบุคคลที่สามสำหรับงานพัฒนาหลัก ไม่เหมือนเครื่องมือเขียนโปรแกรมแบบดั้งเดิมที่นักพัฒนาสามารถควบคุมและเข้าใจได้ ผู้ช่วยเขียนโค้ด AI ต้องการการสมัครสมาชิกอย่างต่อเนื่องกับบริการภายนอกที่สามารถเปลี่ยนราคา ความพร้อมใช้งาน หรือฟังก์ชันการทำงานได้ตลอดเวลา ซึ่งสร้างช่องโหว่ที่อาจเกิดขึ้นสำหรับบุคคลและองค์กรที่พึ่งพาเครื่องมือเหล่านี้มากเกินไป
ความเป็นจริงของตลาดเทียบกับการโฆษณาชวนเชื่อ
การอภิปรายเผยให้เห็นความสงสัยเกี่ยวกับความยั่งยืนของโมเดลธุรกิจเครื่องมือเขียนโค้ด AI ในปัจจุบัน บริษัท AI จำนวนมากกำลังดำเนินงานขาดทุนอย่างมีนัยสำคัญในขณะที่สัญญาว่าจะมีความสามารถปฏิวัติภายใน 2-5 ปี รวมถึงการสร้างโค้ดที่ปราศจากข้อบกพร่อง ชุมชนเปรียบเทียบกับฟองสบู่เทคโนโลยีในอดีต โดยสังเกตว่าแม้เทคโนโลยีพื้นฐานอาจมีคุณค่า แต่ระยะเวลาและขอบเขตของการปรับปรุงที่สัญญาไว้อาจไม่สมจริง
บทสรุป
ในขณะที่เครื่องมือเขียนโค้ด AI ได้พบที่ยืนในฐานะผู้ช่วยที่มีประโยชน์สำหรับงานเขียนโปรแกรมบางประเภท ชุมชนนักพัฒนายังคงแบ่งแยกเกี่ยวกับศักยภาพการเปลี่ยนแปลงของเครื่องมือเหล่านี้ เครื่องมือเหล่านี้เก่งในการสร้างรูปแบบทั่วไปและช่วยในงานเขียนโค้ดประจำ แต่มีปัญหากับปัญหาที่ซับซ้อนและขึ้นอยู่กับบริบทที่ต้องการความเข้าใจระบบอย่างลึกซึ้ง ในขณะที่เทคโนโลยีนี้ยังคงพัฒนาต่อไป นักพัฒนาที่ประสบความสำเร็จมากที่สุดดูเหมือนจะเป็นผู้ที่เข้าใจทั้งความสามารถและข้อจำกัดของเครื่องมือเหล่านี้ โดยใช้อย่างมีกลยุทธ์มากกว่าการใช้เป็นตัวแทนความรู้การเขียนโปรแกรมทั้งหมด
อ้างอิง: The Last Programmers