AI กับการเขียนโค้ด: วิศกรรมซอฟต์แวร์แบบเดิมกำลังจะหมดยุคแล้ว?

Chanwit Kaewkasi
2 min readNov 2, 2024

--

ตั้งแต่ปลายปี 2022 ในครั้งแรกของการเปิดตัว ChatGPT จะมีใครคิดบ้างว่า หลังจากนั้นเพียงไม่กี่ปีวงการพัฒนาซอฟต์แวร์ต้องเผชิญกับการเปลี่ยนแปลงครั้งใหญ่

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

มันทำให้ผมที่มีความเชื่อในวิศวกรรมซอฟต์แวร์แบบเดิมอย่างลึกซึ้ง ต้องมานั่งตกผลึกเพื่อทำลายความเชื่อที่มีอยู่ เพราะเรื่องน่าเหลือเชื่อพวกนั้นอยู่ตรงหน้าและผมก็ได้ทดลองด้วยตัวเองมาตลอดเกือบสองปีที่ผ่านมา

เริ่มจากเรามาดูหลักฐานที่น่าสนใจจากพัฒนาการล่าสุดในวงการนี้กันซัก 2 ตัว

ตัวอย่างความสำเร็จเล็ก ๆ แต่น่าทึ่ง

สร้างเว็บแอพอย่างรวดเร็ว: Riley Brown สามารถสร้าง React แอพพลิเคชันในเวลาเพียง 18 นาทีที่ค่อนข้างจะสมบูรณ์โดยใช้เพียง Cursor Composer และ Claude ในการสร้างโค้ดทั้งหมด

สร้างเกม: มีการสร้างวิดีโอเกมโดยใช้การผสมผสานระหว่าง Adobe Firefly ในการทำ game assets และ ChatGPT ในการสร้างโค้ด

เมื่อโลกขับเคลื่อนด้วยผลลัพท์ ไม่ใช่กระบวนการ

เหตุผลหลักที่วิศวกรรมซอฟต์แวร์จะค่อย ๆ ลดความสำคัญลงก็เพราะ วิศวกรรมซอฟต์แวร์เชื่อว่า กระบวนการที่ดีจะทำให้ได้ผลลัพธ์ที่ดี (กระบวนการในที่นี้คือ Software Process)

มารื้อฟื้นกันก่อนว่า ทำไมเราต้องการกระบวนการที่ดี

เพราะเป้าหมายของวิศวกรรมซอฟต์แวร์คือเพื่อให้ได้

  1. ซอฟต์แวร์ที่คุณภาพสูงขึ้น
  2. สร้างซอฟต์แวร์ได้เร็วขึ้น
  3. ทำได้ในราคาที่ถูกลง

และสามเสาหลักของวิศวกรรมซอฟต์แวร์คือ 1. เสาหลักคน 2. เสาหลักกระบวนการ และ 3. เสาหลักเครื่องมือ

Generated by ChatGPT

ตัวร้ายคือ Software Complexity

ที่ต้องมีสามเสาหลักก็เพราะว่า Muzan ในโลกของซอฟต์แวร์คือ Software Complexity เหตุผลสนับสนุนเรื่องนี้ก็คือ ถ้าเราทำซอฟร์แวร์ที่ง่าย ๆ ไม่ซับซ้อน เราก็ไม่จำเป็นต้องนำหลักการใด ๆ ทางวิศวกรรมซอฟต์แวร์มาใช้เลย :-)

แต่สิ่งที่ผมกำลังจะ spoil ตอนจบของเรื่องนี้ก็คือ

Software Complexity จากที่เคยเป็นปัญหาโดยตรง (direct problems) ของนักพัฒนา วันนี้มันไม่ใช่ปัญหาแล้ว

Software Complexity กำลังถูกผลักให้ไปเป็นปํญหาของ AI

เมื่อเสาหลักเครื่องมือเป็นคนปราบ Last Boss

กลับไปที่เป้าหมาย

  1. เราทำซอฟต์แวร์ให้ได้คุณภาพสูงขึ้นได้โดย Generative AI — เช่น การ Gen ทั้ง Test และ Code ด้วยเทคนิค TDG (ผมเขียนเรื่องนี้ไว้เมื่อประมาณเดือนที่แล้วที่นี่)
  2. เราสร้างซอฟต์แวร์ให้เสร็จได้เร็วขึ้นโดยใช้ Generative AI — แม้ตัวเลขจะต่างกันออกไป แต่โดยภาพรวมทุกคนที่ใช้ AI ช่วยในการสร้างซอฟต์แวร์สรุปไปในทิศทางเดียวกันว่ามันเร็วขึ้น
  3. เราทำได้ในราคาที่ถูกลงโดยใช้ 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 ผมครับ

--

--

Chanwit Kaewkasi
Chanwit Kaewkasi

Written by Chanwit Kaewkasi

Tech Advisor at ConfigHub. ex-weaveworks. Go nut since r57 (pre v1)

No responses yet