- ว่าด้วยเหตุใดการแทนที่นักพัฒนาด้วย AI จึงเป็นเรื่องยาก
- ในข่าวจำนวนมากมีการพูดว่า AI จะเข้ามาแทนที่นักพัฒนาได้ แต่ส่วนที่ยากที่สุดของการสร้างซอฟต์แวร์ไม่ใช่การเขียนโค้ด หากเป็นการสร้างข้อกำหนดความต้องการที่ชัดเจนและแม่นยำ
- "นั่นไม่ใช่บั๊ก แต่เป็นฟีเจอร์ เอ๊ะ เดี๋ยวก่อน มันเป็นบั๊กนี่นา"
- ข้อกำหนดความต้องการที่ไม่ชัดเจนก่อให้เกิดบั๊ก
- "ถ้า AI จะมาแทนที่นักพัฒนาได้ ลูกค้าต้องอธิบายสิ่งที่ตัวเองต้องการให้ได้อย่างแม่นยำ เราปลอดภัย"
ความเป็นจริงของ AI: หมากรุก vs. รถยนต์ขับเคลื่อนอัตโนมัติ
- AI ประสบความสำเร็จในการใช้งานในขอบเขตที่กฎมีจำกัดและชัดเจน เช่น หมากรุก แต่รถยนต์ขับเคลื่อนอัตโนมัติเป็นความท้าทายที่ซับซ้อนกว่ามากสำหรับ AI เพราะมีตัวแปรและกรณียกเว้นได้ไม่สิ้นสุด
- ในสายเทคโนโลยี ค่า Availability (ความพร้อมใช้งาน) ระดับ 9 ห้าตัวหรือ 6 ตัวเป็นมาตรฐาน (99.999% ถึง 99.9999%)
- การไปให้ถึง 99% แทบไม่มีต้นทุนมากนัก 99% หมายความว่าเว็บไซต์ของคุณล่มได้ไม่เกิน 3 วันต่อปี (87.6 ชั่วโมง)
- แต่ทุกครั้งที่มีเลข 9 เพิ่มขึ้นอีกหนึ่งตัว ต้นทุนในการไปให้ถึงระดับนั้นจะเพิ่มขึ้นแบบทวีคูณ
- หากจะให้ได้ 99.9999% ระบบต้องล่มได้เพียง 31.5 วินาทีต่อปี (99.9% คือ 526 นาที/8.76 ชั่วโมง, 99.99% คือ 52 นาที, 99.999% คือ 5.2 นาที)
- สิ่งนี้ต้องอาศัยการวางแผนและความพยายามอย่างมหาศาล และแน่นอนว่าราคาแพง
- ไม่ว่า AI จะเก่งขึ้นเพียงใด ก็ยังมีความเสี่ยงของอุบัติเหตุอยู่เสมอ
- เราไม่รู้ว่าควรยอมรับอุบัติเหตุได้ในระดับไหน แต่อย่างน้อยมันต้องทำได้ดีพอ ๆ กับมนุษย์
AI สร้างซอฟต์แวร์ไม่ได้ มันสร้างได้แค่โค้ด
- การสร้างและดูแลซอฟต์แวร์มีความคล้ายกับการขับรถมากกว่าการเล่นหมากรุก
- มีตัวแปรนับไม่ถ้วน และกฎต่าง ๆ ถูกตัดสินด้วยวิจารณญาณ
- เวลาสร้างซอฟต์แวร์ เราอาจมีผลลัพธ์ที่ต้องการ แต่สิ่งนั้นไม่ได้เรียบง่ายเหมือนหมากรุก
- ซอฟต์แวร์แทบไม่มีคำว่าเสร็จสิ้น มันเป็นกิจกรรมต่อเนื่องที่มีการเพิ่มฟีเจอร์และแก้บั๊กอยู่ตลอด
- ต่างจากซอฟต์แวร์ เกมหมากรุกจะจบลงทันทีเมื่อแพ้หรือชนะ
- ในการพัฒนาซอฟต์แวร์ เรามีเครื่องมือที่ทำให้การออกแบบซอฟต์แวร์คล้ายกับเอนจินกฎของหมากรุกได้ นั่นคือ technical spec
- ในสภาวะที่ดีที่สุด technical spec นี้จะคาดการณ์พฤติกรรมของผู้ใช้และลำดับการทำงานของโปรแกรม
- แต่กรณีแบบนั้นแทบไม่เกิดขึ้น เรามักได้รับ wishlist แทนฟังก์ชันสเปก หรือได้รับ wireframe ที่เขียนบนกระดาษเช็ดปาก หรือเอกสารข้อกำหนดความต้องการที่คลุมเครือ แล้วปล่อยให้เราต้องใช้ดุลยพินิจอย่างดีที่สุด
- ที่แย่ไปกว่านั้นคือ ข้อกำหนดความต้องการยังเปลี่ยนแปลงและบางครั้งก็ถูกเพิกเฉย
- ข้อกำหนดที่เป็นไปไม่ได้ ในบทความต้นฉบับยกตัวอย่างโปรเจ็กต์แบบสอบถาม COVID ทาง SMS ในพื้นที่ที่ไม่มี WIFI ซึ่งจริง ๆ แล้วไม่ควรทำตั้งแต่แรก
- AI จะรับมือกับเรื่องแบบนี้ได้จริงหรือ?
- หาก AI จะสามารถสร้างซอฟต์แวร์ที่ใช้งานได้จริง มนุษย์ต้องรู้ให้ชัดว่าต้องการอะไร และนิยามสิ่งนั้นอย่างชัดเจนและแม่นยำ
- ในช่วง 10 ปีที่ผ่านมา อุตสาหกรรมซอฟต์แวร์ได้เปลี่ยนจากแนวทาง waterfall ไปเป็น agile
- ในยุค waterfall ผู้มีส่วนได้ส่วนเสียคิดว่าตัวเองรู้ว่าต้องการอะไรและสามารถบันทึกมันเป็นเอกสารได้ แต่เมื่อส่งมอบผลิตภัณฑ์สุดท้ายกลับผิดหวังอย่างมาก จึงล้มเหลว
- agile คือคำตอบของปัญหาในกระบวนการนี้
- AI อาจเหมาะที่สุดกับการนำซอฟต์แวร์ที่เรามีอยู่แล้วมาเขียนใหม่ด้วยฮาร์ดแวร์สมัยใหม่และภาษาใหม่
- ยังมีหลายแห่งที่ใช้ซอฟต์แวร์ที่เขียนด้วย COBOL แต่แทบไม่มีใครเรียนภาษานั้นแล้ว
- AI อาจสร้างซอฟต์แวร์ที่มีอยู่แล้วได้เร็วกว่ามนุษย์ แต่เป็นเพราะเคยมีใครบางคนคิดไว้ก่อนแล้วว่าซอฟต์แวร์นั้นควรถูกสร้างอย่างไร
- AI อาจสร้างซอฟต์แวร์ได้ค่อนข้างดี หากเราใช้กระบวนการ waterfall แบบที่เราเรียกกันว่า death march
- แล้วใครกันที่แย่ใน waterfall? มนุษย์นั่นเอง
- ไม่ใช่แค่ส่วนของการเขียนเอกสารเพื่อส่งต่อให้ทีมโปรแกรมเมอร์เท่านั้น แต่รวมถึงทุกอย่างก่อนหน้านั้นด้วย
- AI อาจทำเรื่องน่าทึ่งได้หลายอย่าง แต่มันไม่สามารถอ่านใจคุณ หรือบอกได้ว่าคุณต้องการอะไร
8 ความคิดเห็น
ผมคิดว่าสิ่งนี้ใช้ได้กับทุกสาขาที่มีความกังวลเกี่ยวกับ AI ไม่ใช่แค่การพัฒนาซอฟต์แวร์เท่านั้น
ดูเหมือนว่าเทคโนโลยีสำหรับทำให้การตรวจสอบความต้องการเป็นอัตโนมัติจะพัฒนาไปอีกมาก การทำเทสต์อัตโนมัติน่าจะยิ่งโดดเด่นขึ้นไปอีก... หรือว่าโลกกำลังจะไปสู่ยุคที่มนุษย์แค่คอยจัดการ test case เท่านั้น....
"ใน Waterfall ใครกันแน่ที่น่ากลัว? ก็มนุษย์ไง"
ในฐานะคนที่เคยเจอมากับตัว ก็เห็นด้วยเลย
อ่านบทความดี ๆ กันแล้ว ไปจัดระเบียบอีสชูกันต่อเถอะ
แม้ AI อาจแทนที่นักพัฒนาได้ยาก แต่ถ้านักพัฒนาแค่โยนคีย์เวิร์ดให้ การเขียนโค้ดอาจเป็นสิ่งที่ AI ทำแทนได้ก็ไม่ใช่หรือ?
สิ่งที่เคยพูดกันเล่น ๆ ว่าเขียนโค้ดด้วยปาก อาจกลายเป็นความจริงก็ได้..
ตอนนี้ก็ไม่ได้พัฒนากันแบบนี้โดยใช้ Copilot หรือ AI ตัวอื่น ๆ กันอยู่แล้วเหรอครับ
ถ้าเขียนสิ่งที่ต้องการเป็นภาษาอังกฤษไว้ในคอมเมนต์ มันก็จะสร้างให้เอง แล้วเราก็แค่ตรวจว่าอันนี้ตรงกับสิ่งที่ต้องการหรือไม่เท่านั้น
เห็นด้วยมากครับ/ค่ะ ผม/ฉันคิดว่าวิศวกรซอฟต์แวร์ในอนาคตทุกคนจะต้องมีความสามารถในเชิง TPM และจะถูกคาดหวังให้มีความสามารถแบบนั้น