การเติบโตของ Large Language Models ( LLMs ) ในการพัฒนาซอฟต์แวร์ได้จุดประกายการถกเถียงที่สำคัญเกี่ยวกับว่าเครื่องมือเหล่านี้ช่วยแก้ไขความท้าทายหลักด้านผลิตภาพของอุตสาหกรรมได้จริงหรือไม่ ในขณะที่การสร้างโค้ดด้วย AI สัญญาว่าจะทำให้รอบการพัฒนาเร็วขึ้น นักพัฒนาที่มีประสบการณ์กำลังแสดงความกังวลว่าอาจสร้างคอขวดใหม่ในการทำงานร่วมกันของทีมและการประกันคุณภาพโค้ด
คอขวดที่แท้จริงยังคงไม่เปลี่ยนแปลง
ผู้เชี่ยวชาญด้านวิศวกรรมซอฟต์แวร์โต้แย้งว่าการเขียนโค้ดไม่เคยเป็นอุปสรรคหลักต่อความสำเร็จของโครงการ ความท้าทายที่แท้จริงมักจะเน้นไปที่การประสานงานของมนุษย์ การตรวจสอบโค้ด การถ่ายทอดความรู้ผ่านการให้คำปรึกษา การทดสอบ การแก้ไขข้อผิดพลาด และการสื่อสารในทีม กระบวนการเหล่านี้ต้องการการคิดเชิงวิพากษ์ ความเข้าใจร่วมกัน และการตัดสินใจที่ดี ซึ่งเป็นคุณสมบัติที่ยังคงเป็นของมนุษย์โดยพื้นฐาน
นักพัฒนาคนหนึ่งที่มีประสบการณ์มากกว่า 30 ปีกล่าวว่าการแปลความต้องการทางธุรกิจเป็นโซลูชันทางเทคนิคเป็นส่วนที่ยากที่สุดเสมอมา โดยเปรียบเทียบกับความพยายามในการ offshoring ช่วงต้นยุค 2000 ที่ล้มเหลวด้วยเหตุผลที่คล้ายกัน ความท้าทายไม่ได้อยู่ที่การสร้างโค้ดเพียงอย่างเดียว แต่ต้องมั่นใจว่าโค้ดนั้นตอบสนองความต้องการทางธุรกิจที่แท้จริงผ่านการให้ข้อมูลย้อนกลับและการทำงานร่วมกันแบบวนซ้ำ
ปัญหาคอขวดในการพัฒนาซอฟต์แวร์แบบดั้งเดิม:
- การตรวจสอบโค้ดและการประกันคุณภาพ
- การถ่ายทอดความรู้ผ่านการให้คำปรึกษาและการทำงานเป็นคู่
- กระบวนการทดสอบและแก้ไขข้อผิดพลาด
- การประสานงานและการสื่อสารในทีม
- การประชุมวางแผนและพิธีกรรม agile
LLMs เปลี่ยนภาระงานแทนที่จะขจัดออกไป
แม้ว่า LLMs สามารถสร้างโค้ดที่ใช้งานได้อย่างรวดเร็ว แต่ก็สร้างแรงกดดันใหม่ต่อคนที่รับผิดชอบในการตรวจสอบ รวมเข้าด้วยกัน และดูแลรักษาผลลัพธ์นั้น ทีมงานต้องเผชิญกับสถานการณ์ที่ไม่ชัดเจนว่านักพัฒนาเข้าใจโค้ดที่ส่งมาอย่างครบถ้วนหรือไม่ โซลูชันที่สร้างขึ้นอาจทำลายแบบแผนที่กำหนดไว้ และกรณีพิเศษต่างๆ กลายเป็นเรื่องยากที่จะระบุ
ต้นทุนที่ใหญ่ที่สุดของโค้ดคือการเข้าใจมัน — ไม่ใช่การเขียนมัน
การเปลี่ยนแปลงนี้กลายเป็นปัญหาโดยเฉพาะเมื่อโค้ดไหลผ่านระบบเร็วกว่าที่ทีมจะสามารถหารือหรือตรวจสอบได้อย่างเหมาะสม ผลลัพธ์มักเป็นกระบวนการตรวจสอบที่ซับซ้อนมากขึ้นแทนที่จะเป็นการปรับปรุงความเร็วโดยรวม
ความท้าทายใหม่ที่เกิดจาก LLMs:
- ความเข้าใจที่ไม่ชัดเจนของผู้เขียนต่อโค้ดที่ส่งมา
- โค้ดที่สร้างขึ้นทำลายแนวทางปฏิบัติที่กำหนดไว้
- ความยากลำบากในการระบุกรณีขอบเขตและผลข้างเคียง
- กระบวนการตรวจสอบที่ซับซ้อนมากขึ้น
- การผลิตโค้ดที่เร็วกว่าความสามารถในการตรวจสอบ
ความท้าทายของระบบเก่าและการถ่ายทอดความรู้
การอภิปรายเผยให้เห็นมุมมองที่น่าสนใจเกี่ยวกับวิธีที่ LLMs อาจช่วยในการดูแลรักษาโค้ดเก่า นักพัฒนาบางคนเห็นศักยภาพในการใช้ AI เพื่อค้นหาผ่านโค้ดเบสเก่าอย่างรวดเร็วและระบุส่วนที่เกี่ยวข้อง โดยเฉพาะเมื่อทีมพัฒนาเดิมไม่มีอยู่แล้ว อย่างไรก็ตาม คนอื่นๆ เน้นย้ำว่าวัฒนธรรมองค์กร แนวทางการจัดการ และการทำงานร่วมกันข้ามสายงานยังคงเป็นปัจจัยหลักในความสำเร็จของโครงการ
ความท้าทายจะชัดเจนมากขึ้นในสภาพแวดล้อมที่มีความปลอดภัยสำคัญหรือมีการควบคุมสูง ซึ่งการเข้าใจพฤติกรรมของระบบและโหมดความล้มเหลวที่อาจเกิดขึ้นต้องการความเชี่ยวชาญเฉพาะด้านที่ลึกซึ้งซึ่งเกินกว่าความสามารถในการสร้างโค้ด
ด้านที่ LLMs แสดงให้เห็นถึงศักยภาพ:
- การสร้างต้นแบบและโครงสร้างพื้นฐานอย่างรวดเร็ว
- การค้นหาผ่านฐานโค้ดเก่า
- การระบุส่วนของโค้ดที่เกี่ยวข้องอย่างรวดเร็ว
- การชี้นำนักพัฒนาไปสู่โซลูชันที่เป็นไปได้
- การทำงานเขียนโค้ดประจำให้เป็นแบบอัตโนมัติ
องค์ประกอบของมนุษย์ยังคงอยู่
แม้จะมีความก้าวหน้าทางเทคโนโลยี การพัฒนาซอฟต์แวร์ยังคงเป็นการทำงานร่วมกันโดยพื้นฐาน ทีมงานยังคงพึ่พาบริบทร่วม ความไว้วางใจ และความสัมพันธ์ในการให้คำปรึกษาที่พัฒนาขึ้นตามเวลา เมื่อการสร้างโค้ดเร็วกว่ากระบวนการของมนุษย์เหล่านี้ การประกันคุณภาพกลายเป็นสิ่งที่สันนิษฐานแทนที่จะเป็นสิ่งที่มั่นใจได้ ซึ่งอาจสร้างความล่าช้าที่ละเอียดแต่สำคัญ
อุตสาหกรรมดูเหมือนจะเรียนรู้ว่าแม้ว่า LLMs จะเป็นเครื่องมือที่ทรงพลังสำหรับการสร้างต้นแบบและระบบอัตโนมัติ แต่ก็ไม่ได้ขจัดความจำเป็นในการคิดอย่างชัดเจน การตรวจสอบอย่างระมัดระวัง และการออกแบบระบบอย่างรอบคอบ หากมีอะไร ทักษะของมนุษย์เหล่านี้กลับมีความสำคัญมากขึ้นเมื่อปริมาณโค้ดที่สร้างขึ้นเพิ่มมากขึ้น
ขณะที่ทีมพัฒนายังคงปรับตัวเข้ากับเวิร์กโฟลว์ที่ช่วยเหลือด้วย AI จุดสนใจอาจต้องเปลี่ยนไปที่การรวมเครื่องมือเหล่านี้เข้ากับกระบวนการตรวจสอบที่มีอยู่ให้ดีขึ้น แทนที่จะคาดหวังให้เครื่องมือเหล่านี้เปลี่ยนแปลงวิธีการทำงานร่วมกันและประกันคุณภาพของทีมวิศวกรรมซอฟต์แวร์โดยพื้นฐาน