เครื่องมือ AI สำหรับเขียนโค้ดเผชิญกับความเป็นจริง: นักพัฒนารายงานปัญหาการทำงานที่หยุดชะงักและคุณภาพที่มีปัญหา

ทีมชุมชน BigGo
เครื่องมือ AI สำหรับเขียนโค้ดเผชิญกับความเป็นจริง: นักพัฒนารายงานปัญหาการทำงานที่หยุดชะงักและคุณภาพที่มีปัญหา

คำสัญญาของเวิร์กโฟลว์การพัฒนาที่ขับเคลื่อนด้วย AI กำลังเผชิญกับการตรวจสอบอย่างจริงจัง เนื่องจากนักพัฒนารายงานความผิดหวังที่แพร่หลายกับเครื่องมือปัจจุบัน การทดลองล่าสุดที่ติดตามการพัฒนาแอปพลิเคชันด้วยความช่วยเหลือของ AI เต็มรูปแบบเป็นเวลาสองสัปดาห์ได้จุดประกายการอภิปรายอย่างเข้มข้นในชุมชนเกี่ยวกับข้อจำกัดในโลกจริงของโมเดลภาษาขนาดใหญ่ ( LLMs ) ในงานการเขียนโค้ด

ปัญหาบริบทรบกวนการพัฒนา AI

ปัญหาที่คงอยู่มากที่สุดที่นักพัฒนาพบคือการที่ AI ไม่สามารถถามคำถามเพื่อขอความชัดเจนเมื่อข้อมูลขาดหายไป ซึ่งแตกต่างจากนักพัฒนามนุษย์ที่ธรรมชาติแล้วจะแสวงหาข้อเสนอแนะเมื่อความต้องการไม่ชัดเจน เครื่องมือ AI จะตั้งสมมติฐานที่มักนำไปสู่การดำเนินการที่ไม่ถูกต้อง สิ่งนี้สร้างวงจรที่น่าผิดหวังที่นักพัฒนาต้องให้บริบทที่ครอบคลุมล่วงหน้า แต่ยังคงเผชิญกับความล้มเหลวที่ไม่คาดคิด

สมาชิกในชุมชนรายงานประสบการณ์ที่คล้ายกันในเครื่องมือและงานที่แตกต่างกัน นักพัฒนาคนหนึ่งใช้เวลามากกว่าหนึ่งชั่วโมงพยายามให้ได้คำสั่ง rsync ง่ายๆ จาก ChatGPT แต่กลับได้รับพารามิเตอร์ที่ไม่ทำงานกับเวอร์ชันระบบของพวกเขา AI ยังคงดำเนินการแก้ไขปัญหาต่อไปแทนที่จะยอมรับข้อจำกัดของตัวเองหรือขอข้อมูลเฉพาะเจาะจงมากขึ้นเกี่ยวกับการตั้งค่าของผู้ใช้

ข้อจำกัดหลักของ AI ในการเขียนโค้ดที่ระบุได้

  • ปัญหาบริบท: AI ไม่ถามคำถามเพื่อขอความชัดเจนเมื่อข้อมูลหายไป
  • การทำซ้ำของโค้ด: สร้างคอมโพเนนต์เวอร์ชันต่างๆ หลายตัวแทนที่จะใช้โค้ดที่มีอยู่ซ้ำ
  • ความเข้ากันได้ของเวอร์ชัน: สร้างพารามิเตอร์ที่ไม่มีจริงสำหรับเวอร์ชันซอฟต์แวร์เฉพาะที่ไม่มีในข้อมูลการฝึก
  • การรบกวนขั้นตอนการทำงาน: ทำลายการไหลของการทำงานของนักพัฒนาด้วยความต้องการในการตรวจสอบอย่างต่อเนื่อง
  • ปัญหา 80/20: ง่ายต่อการได้โซลูชันที่ทำงานได้ 80% แต่ยังต้องใช้เวลา 80% สำหรับการปรับแต่งให้สมบูรณ์

คุณภาพโค้ดและความสามารถในการบำรุงรักษาได้รับผลกระทบ

โค้ดที่สร้างโดย AI มักขาดการแยกส่วนและการนำกลับมาใช้ใหม่ที่นักพัฒนาที่มีประสบการณ์คาดหวัง แทนที่จะจดจำคอมโพเนนต์และรูปแบบที่มีอยู่ เครื่องมือ AI มักจะทำซ้ำฟังก์ชันการทำงานในโครงการต่างๆ นักพัฒนารายงานว่าพบคอมโพเนนต์เดียวกันหลายเวอร์ชันกระจัดกระจายไปทั่วโค้ดเบสของพวกเขา ทำให้เกิดฝันร้ายในการบำรุงรักษา

กฎ 80/20 กลายเป็นสิ่งที่เด่นชัดเป็นพิเศษด้วยความช่วยเหลือของ AI ในขณะที่เครื่องมือสามารถสร้างโค้ดที่ดูเหมือนใช้งานได้อย่างรวดเร็ว นักพัฒนายังคงใช้เวลาประมาณ 80% ของเวลาในการแก้ไขความไม่สอดคล้องกัน จัดการกรณีขอบ และรับประกันการรวมที่เหมาะสมกับระบบที่มีอยู่

ปัญหาความเข้ากันได้ของเวอร์ชันและการหลอน

ข้อจำกัดทางเทคนิคที่สำคัญเกิดขึ้นจากข้อจำกัดของข้อมูลการฝึกอบรมของ AI เมื่อทำงานกับเวอร์ชันซอฟต์แวร์เฉพาะหรือ APIs ที่มีเอกสารไม่ดี เครื่องมือ AI มักจะหลอนพารามิเตอร์ endpoints และฟังก์ชันการทำงานที่ไม่มีอยู่ ปัญหานี้รุนแรงเป็นพิเศษกับเครื่องมือบรรทัดคำสั่งที่เวอร์ชันต่างๆ มีความต้องการไวยากรณ์ที่แตกต่างกัน

หากมันให้แฟล็กที่ผิดกับคุณ ทำไมคุณถึงสมมติว่าคำอธิบายที่มันให้คุณนั้นถูกต้อง LLMs สามารถสร้างสิ่งเหล่านั้นได้เช่นกัน

นักพัฒนาบางคนได้พบวิธีแก้ไขโดยการให้เอกสารที่สมบูรณ์ภายในพรอมต์ของพวกเขา แต่วิธีการนี้สามารถใช้โทเค็นหลายล้านตัวสำหรับปัญหาที่ค่อนข้างง่าย ทำให้เกิดความกังวลเรื่องต้นทุน

การหยุดชะงักของเวิร์กโฟลว์และการสูญเสียโมเมนตัม

ลักษณะการโต้ตอบของการเขียนโค้ด AI สร้างปัญหาเวิร์กโฟลว์ที่ไม่คาดคิด นักพัฒนารายงานว่าสูญเสียการไหลของการเขียนโปรแกรมของพวกเขาเนื่องจากต้องตรวจสอบเอาต์พุต AI อย่างต่อเนื่องเพื่อจับข้อผิดพลาดตั้งแต่เนิ่นๆ จังหวะการพัฒนาแบบดั้งเดิมของช่วงการมุ่งเน้นอย่างต่อเนื่องถูกแทนที่ด้วยวงจรความสนใจที่แยกส่วนของการปรับแต่งพรอมต์และการตรวจสอบโค้ด

นักพัฒนาที่มีประสบการณ์หลายคนพบว่างานที่พวกเขาสามารถทำให้เสร็จอย่างรวดเร็วผ่านวิธีการแบบดั้งเดิมกลายเป็นการฝึกฝนที่ใช้เวลานานในการออกแบบพรอมต์เมื่อพยายามด้วยความช่วยเหลือของ AI

กรณีการใช้งาน AI ในการเขียนโค้ดที่มีประสิทธิภาพ (จากข้อเสนอแนะของชุมชน)

  • การสร้างโค้ดส่วนย่อย (ฟังก์ชันยูทิลิตี้เช่น chunkify, clamp, mapValues)
  • การเขียนเทสเคสและการค้นหาสถานการณ์ต่างๆ
  • การค้นหาเอกสารและการปรับบริบท
  • การสร้างโค้ดเบื้องต้น
  • การแก้ไขข้อความสำหรับ commit message และการเขียนเชิงเทคนิค
  • การดีบักแบบ rubber duck และการระดมความคิดหาทางเลือกอื่น

การค้นหาจุดที่เหมาะสม

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

ความเห็นพ้องต้องที่เกิดขึ้นถือว่า AI เป็นผู้ช่วยเฉพาะทางมากกว่าการทดแทนทักษะการพัฒนาแบบดั้งเดิม การดำเนินการที่ประสบความสำเร็จมักจะเกี่ยวข้องกับนักพัฒนาที่เข้าใจเทคโนโลยีพื้นฐานดีพอที่จะระบุและแก้ไขข้อผิดพลาดที่สร้างโดย AI ได้อย่างรวดเร็ว

ในขณะที่เทคโนโลยียังคงพัฒนาต่อไป ชุมชนการพัฒนายังคงมีความหวังอย่างระมัดระวังในขณะที่รักษาความคาดหวังที่สมจริงเกี่ยวกับข้อจำกัดปัจจุบัน กุญแจสำคัญดูเหมือนจะเป็นการหาสมดุลที่เหมาะสมระหว่างความช่วยเหลือของ AI และการดูแลของมนุษย์ มากกว่าการไล่ตามเวิร์กโฟลว์การพัฒนาที่เป็นอัตโนมัติเต็มรูปแบบ

อ้างอิง: TO AI OR NOT TO AI

การสำรวจความสมดุลระหว่างความช่วยเหลือจาก AI และการดูแลจากมนุษย์ในการพัฒนาแอปพลิเคชัน
การสำรวจความสมดุลระหว่างความช่วยเหลือจาก AI และการดูแลจากมนุษย์ในการพัฒนาแอปพลิเคชัน