AI กับการเขียนโค้ด: วิศกรรมซอฟต์แวร์แบบเดิมกำลังจะหมดยุคแล้ว?
ตั้งแต่ปลายปี 2022 ในครั้งแรกของการเปิดตัว ChatGPT จะมีใครคิดบ้างว่า หลังจากนั้นเพียงไม่กี่ปีวงการพัฒนาซอฟต์แวร์ต้องเผชิญกับการเปลี่ยนแปลงครั้งใหญ่
ผู้คนในวงการ tech หลายคนคอยเฝ้าสังเกตการณ์พัฒนาการอย่างรวดเร็วของเครื่องมือเขียนโค้ดที่ขับเคลื่อนด้วย AI นี้และต่างพบสัญญาณชัดเจนว่าการพัฒนาซอฟต์แวร์แบบดั้งเดิมกำลังถึงจุดเปลี่ยน
มันทำให้ผมที่มีความเชื่อในวิศวกรรมซอฟต์แวร์แบบเดิมอย่างลึกซึ้ง ต้องมานั่งตกผลึกเพื่อทำลายความเชื่อที่มีอยู่ เพราะเรื่องน่าเหลือเชื่อพวกนั้นอยู่ตรงหน้าและผมก็ได้ทดลองด้วยตัวเองมาตลอดเกือบสองปีที่ผ่านมา
เริ่มจากเรามาดูหลักฐานที่น่าสนใจจากพัฒนาการล่าสุดในวงการนี้กันซัก 2 ตัว
ตัวอย่างความสำเร็จเล็ก ๆ แต่น่าทึ่ง
สร้างเว็บแอพอย่างรวดเร็ว: Riley Brown สามารถสร้าง React แอพพลิเคชันในเวลาเพียง 18 นาทีที่ค่อนข้างจะสมบูรณ์โดยใช้เพียง Cursor Composer และ Claude ในการสร้างโค้ดทั้งหมด
สร้างเกม: มีการสร้างวิดีโอเกมโดยใช้การผสมผสานระหว่าง Adobe Firefly ในการทำ game assets และ ChatGPT ในการสร้างโค้ด
เมื่อโลกขับเคลื่อนด้วยผลลัพท์ ไม่ใช่กระบวนการ
เหตุผลหลักที่วิศวกรรมซอฟต์แวร์จะค่อย ๆ ลดความสำคัญลงก็เพราะ วิศวกรรมซอฟต์แวร์เชื่อว่า กระบวนการที่ดีจะทำให้ได้ผลลัพธ์ที่ดี (กระบวนการในที่นี้คือ Software Process)
มารื้อฟื้นกันก่อนว่า ทำไมเราต้องการกระบวนการที่ดี
เพราะเป้าหมายของวิศวกรรมซอฟต์แวร์คือเพื่อให้ได้
- ซอฟต์แวร์ที่คุณภาพสูงขึ้น
- สร้างซอฟต์แวร์ได้เร็วขึ้น
- ทำได้ในราคาที่ถูกลง
และสามเสาหลักของวิศวกรรมซอฟต์แวร์คือ 1. เสาหลักคน 2. เสาหลักกระบวนการ และ 3. เสาหลักเครื่องมือ
ตัวร้ายคือ Software Complexity
ที่ต้องมีสามเสาหลักก็เพราะว่า Muzan ในโลกของซอฟต์แวร์คือ Software Complexity เหตุผลสนับสนุนเรื่องนี้ก็คือ ถ้าเราทำซอฟร์แวร์ที่ง่าย ๆ ไม่ซับซ้อน เราก็ไม่จำเป็นต้องนำหลักการใด ๆ ทางวิศวกรรมซอฟต์แวร์มาใช้เลย :-)
แต่สิ่งที่ผมกำลังจะ spoil ตอนจบของเรื่องนี้ก็คือ
Software Complexity จากที่เคยเป็นปัญหาโดยตรง (direct problems) ของนักพัฒนา วันนี้มันไม่ใช่ปัญหาแล้ว
Software Complexity กำลังถูกผลักให้ไปเป็นปํญหาของ AI
เมื่อเสาหลักเครื่องมือเป็นคนปราบ Last Boss
กลับไปที่เป้าหมาย
- เราทำซอฟต์แวร์ให้ได้คุณภาพสูงขึ้นได้โดย Generative AI — เช่น การ Gen ทั้ง Test และ Code ด้วยเทคนิค TDG (ผมเขียนเรื่องนี้ไว้เมื่อประมาณเดือนที่แล้วที่นี่)
- เราสร้างซอฟต์แวร์ให้เสร็จได้เร็วขึ้นโดยใช้ Generative AI — แม้ตัวเลขจะต่างกันออกไป แต่โดยภาพรวมทุกคนที่ใช้ AI ช่วยในการสร้างซอฟต์แวร์สรุปไปในทิศทางเดียวกันว่ามันเร็วขึ้น
- เราทำได้ในราคาที่ถูกลงโดยใช้ Generative AI — อาจจะเป็นข้อที่สะเทือนใจนิดหน่อย แต่ในเชิงเศรษฐศาสตร์ความพยายามที่จะลดคนทำงานลงของบริษัท Tech เป็นจุดสะท้อนได้อย่างดีว่าการลดต้นทุนนั้นทำได้จริง — เช่น https://arstechnica.com/ai/2024/10/google-ceo-says-over-25-of-new-google-code-is-generated-by-ai
เมื่อสามารถไปถึงเป้าหมายได้ง่ายขึ้นด้วยเครื่องมือ ก็แน่นอนอยู่แล้วว่าเสาหลักที่เหลืออีกสองเสา ทั้งคนและกระบวนการ ก็จะถูกลดความสำคัญลง
ใช้เครื่องมือที่มากมายให้เป็น
การเปลี่ยนแปลงที่เราเห็นไม่ได้หมายถึงการหายไปของ Dev แต่เป็นการเปลี่ยนแปลงบทบาทและวิธีการทำงาน เช่น จากนักเขียนโค้ด ปรับฟังก์ชันไปเป็น Prompt Engineer และ System Architect มากขึ้น, เน้นการออกแบบระบบและการคิดเชิงกลยุทธ์มากกว่าการเขียนโค้ดโดยตรง, เข้าใจการทำงานร่วมกับ AI และการใช้เครื่องมือ AI อย่างมีประสิทธิภาพ
ความยากในการรับมือกับความเก่งขึ้นของเครื่องมือก็คือ การใช้เครื่องมือทาง Generative AI ที่มี ความหลายหลาย เฉพาะทาง (ตัวเดียวไม่สามารถแก้ปัญหาได้จบ) เปลี่ยนแปลงบ่อย อับเดตบ่อย มีความไม่คงที่ ให้คล่องจนทำให้เกิด productivity ได้ โดยทักษะใหม่ที่สำคัญก็คือ
- Prompt Engineering และการสื่อสารกับ AI
- การออกแบบระบบที่ทำงานร่วมกับ AI ได้ดี
- การจัดการและควบคุมคุณภาพผลลัพธ์จาก AI
แน่นอนว่ากระบวนการพัฒนาก็จะเปลี่ยนรูปแบบไป เราจำเป็นต้องปรับเปลี่ยนวิธีการทำงานเพื่อใช้ประโยชน์จาก AI, หา best practices สำหรับการทำงานร่วมกับ AI, สร้างมาตรฐานหรือ process ใหม่ ๆ สำหรับการพัฒนาซอฟต์แวร์
บทสรุป
สัญญาณที่ชัดเจนกำลังบอกเราว่า วิธีการเขียนโค้ดแบบดั้งเดิมกำลังถูกเปลี่ยนแปลงด้วย AI ในอัตราที่ไม่เคยมีมาก่อน แม้ว่านี่จะไม่ได้หมายความว่า Dev จะหายไป แต่ก็เป็นตัวบ่งชี้ว่าธรรมชาติของการพัฒนาซอฟต์แวร์กำลังถูกเปลี่ยนแปลงในระดับโครงสร้าง เพราะความซับซ้อน (Software Complexity) ที่เป็นปัญหาหลักของซอฟต์แวร์ที่เคยต้องแก้ด้วยคน และ Software Process แบบเข้มข้นนั้น กำลังถูกผลักให้กลายเป็นภาระของ AI และได้ผลลัพธ์ที่ดีกว่า
สำหรับบริษัทที่ต้องการ evaluate ว่าจะปรับกลยุทธ์ให้กับทีมซอฟต์แวร์อย่างไรเพื่อให้สามารถใช้เครื่องมือ AI ได้อย่างเต็มที่สามารถลองคุยกันได้ทาง DM ของ LinkedIn ผมครับ