- ช่วงหลังมานี้ ผู้ใช้คอมพิวเตอร์ต้องทำ งานที่ไร้ความหมาย จำนวนมากซ้ำ ๆ โดยไม่เกี่ยวกับความตั้งใจของตัวเอง และทำตามที่คอมพิวเตอร์สั่ง
- LLM เริ่ม ส่งอิทธิพลต่อวิธีการออกแบบ API ของนักพัฒนา และมีการคาดการณ์ว่าในไม่ช้า AI จะเป็นผู้เขียนโค้ดส่วนใหญ่ ขณะที่นักพัฒนายอมรับฟีเจอร์ที่ AI เสนอจริง
- ตัวอย่างเช่น Soundslice ได้เพิ่มฟีเจอร์ที่ ChatGPT แนะนำผิดพลาดเข้าไปจริง
- นั่นเป็นเพราะ LLM วิเคราะห์ API จำนวนมากและเสนอ การออกแบบที่เข้าใจได้โดยสัญชาตญาณ ซึ่งนักพัฒนาน่าจะนึกถึงเป็นอันดับแรก
- เมื่อพัฒนาไอเดียใหม่หรือแนวทางที่มีเอกลักษณ์ LLM อาจไม่เหมาะนัก แต่ในกรณีส่วนใหญ่ การทำตาม การออกแบบที่ดูธรรมดาที่สุด อาจมีประสิทธิภาพกว่า
- ตอนนี้เราได้เข้าสู่ยุคที่ AI ไม่ได้เป็นแค่ผู้นำการใช้เครื่องมือ แต่เริ่มนำวิธีออกแบบเครื่องมือด้วย
Gaslight-driven development
งานไร้ความหมายที่กลายเป็นเรื่องปกติ
- ตลอด 10 ปีที่ผ่านมา ใครก็ตามที่ใช้คอมพิวเตอร์ต้องทำสิ่งที่ไม่จำเป็นในสาระสำคัญซ้ำ ๆ เช่น สมัครสมาชิก ยืนยันอีเมล ยอมรับคุกกี้ กรอกแคปช่า
- แม้จะไม่ใช่สิ่งที่ผู้ใช้ต้องการ แต่ก็ต้องทำตามที่คอมพิวเตอร์สั่งเท่านั้น
- จากงานซ้ำ ๆ เหล่านี้ เราจึงคุ้นชินไปแล้วระดับหนึ่งกับ การใช้ชีวิตแบบทำตามที่เครื่องสั่ง
ความเป็นจริงของการพัฒนาที่ LLM กำลังเปลี่ยน
- ช่วงหลัง LLM เริ่มออกความเห็นแล้วว่า API หรืออินเทอร์เฟซควรมีหน้าตาอย่างไร
- ถึงขั้นมีการคาดการณ์ว่าในเดือนกันยายน 2025 โค้ดทั้งหมด 90% จะถูกเขียนโดย AI
- เช่นกรณีของ Soundslice [ChatGPT เข้าใจผิดว่ามีฟีเจอร์ที่ไม่มีอยู่จริง] และเมื่อมีคำขอจากลูกค้าเข้ามาเรื่อย ๆ สุดท้ายก็เพิ่มฟีเจอร์นั้นเข้าไปจริง](https://th.news.hada.io/topic?id=21873)
- ที่ Instant ก็มีกรณีคล้ายกัน เดิมทีใช้
tx.update จัดการทั้ง insert และ update แต่เพราะ LLM สร้างโค้ดที่ใช้ tx.create อย่างต่อเนื่อง สุดท้ายจึงต้องเพิ่มเมธอด tx.create ขึ้นมา
ความหมายของปรากฏการณ์นี้
- ยังตัดสินได้ยากว่าการเปลี่ยนแปลงนี้ เป็นผลดีหรือผลเสีย
- ในอีกด้านหนึ่ง LLM เรียนรู้ API มาจำนวนมาก จึงมีผลในการเสนอวิธีที่ 'เข้าใจง่ายที่สุด' จากมุมมองของนักพัฒนา
- นี่อาจเป็นวิธีใหม่ในการ ทดสอบ API จากมุมมองของมือใหม่ (newbie’s POV) ด้วย
- แต่ก่อนถ้านักพัฒนาพลาด ก็มักจะไปเปิดเอกสารแล้วแก้เอง แต่ตอนนี้ LLM คอยยกตัวอย่างการใช้งานผิด ๆ อย่างต่อเนื่อง ทำให้ นักพัฒนารับรู้ปัญหาได้เร็วขึ้น เช่นกัน
ข้อจำกัดและสิ่งที่ต้องคิดต่อ
- แนวทางนี้ไม่เหมาะกับ งานที่ต้องการนวัตกรรม
- LLM ไม่เข้าใจแพตเทิร์นที่ไม่คุ้นเคยหรือแนวคิดใหม่ทั้งหมด
- ท้ายที่สุดแล้ว ในเรื่องอย่าง API ความธรรมดาอาจเป็นทางเลือกที่ดีที่สุด
- ในสถานการณ์ส่วนใหญ่ แทนที่จะออกแบบให้ซับซ้อน รูปแบบที่ทั้ง AI และนักพัฒนาสามารถเข้าใจได้อย่างเป็นธรรมชาติอาจได้เปรียบกว่า
บทสรุป: จุดเริ่มต้นของยุคใหม่
- ตอนนี้ AI ไม่ได้หยุดอยู่แค่ การใช้เครื่องมือที่มีอยู่ แต่เริ่มมีความเห็นว่าเครื่องมือเองควรถูกออกแบบอย่างไร
- และความเห็นนั้นก็มักกลายเป็นวิธี gaslighting นักพัฒนาและองค์กร ราวกับว่า "มันควรเป็นแบบนี้มาตั้งแต่แรก"
- ต่อจากนี้ การพัฒนาที่สอดคล้องกับความคาดหวังและสามัญสำนึกของ AI มีแนวโน้มสูงที่จะกลายเป็นมาตรฐานตามธรรมชาติ
6 ความคิดเห็น
บางครั้งผมก็รู้สึกเหมือนกับว่า ในแนวคิดใหญ่เรื่องการพึ่งพาเส้นทางเดิม กำลังมีตะปูอันทรงพลังที่ชื่อว่าการพึ่งพา LLM ถูกตอกลงไป ความรู้สึกที่ว่ามันกำลังเปลี่ยนจาก 'เพราะใช้กันมาตั้งแต่ก่อน' ไปเป็น 'เพราะ LLM ชอบ' สุดท้ายแล้วมันจะลงเอยอย่างไรกันนะ...
สิ่งที่ใช้เขียนมาตั้งแต่ก่อนหน้านี้ LLM ก็ได้เรียนรู้มันไปแล้ว..
"ตอนนี้คุณสามารถปิดเครื่องคอมพิวเตอร์ได้แล้ว"
เปรียบเทียบได้เป๊ะมาก!!
ความเห็นจาก Hacker News
421: Misdirected Requestก็ได้ หรือจะใช้501: Not Implementedตามจริงก็ยังได้เช่นกัน ถ้ารู้สึกว่า501ให้อารมณ์ไม่ตรงนัก ก็ขอเสนอ status code ใหม่คือ513: Your Coding Assistant Is Wrongดูวิกิของ HTTP status code
513: Your Coding Assistant Is Wrongตลกมาก ชอบเลย อีกอย่างอยากเสนอHTTP 407 Hallucinationด้วย หมายถึงเซิร์ฟเวอร์เข้าใจคำขอ แต่ตัดสินว่าไม่สอดคล้องกับความเป็นจริงตัวอย่าง GPS is wrong
(มีโค้ด JavaScript ให้)
ลิงก์งานวิจัยวิทยาศาสตร์, ดูวิกิประสาทวิทยา
ภาพหน้าจอ Chess Royale
tx.updateถูกทำให้รองรับทั้งการแทรกและการอัปเดต entity แต่ LLM ก็ยังเขียนโค้ดtx.createอยู่เรื่อย ๆ สุดท้ายเลยต้องสร้างฟังก์ชันtx.createขึ้นมาด้วย เลยคิดว่าจุดสับสนแบบนี้อาจทำให้ไม่ใช่แค่ LLM แต่รวมถึงนักพัฒนาจริง ๆ เสียเวลาโดยใช่เหตุไปมากแค่ไหนtx.createอยู่แล้ว จะมีใครเสียเวลาไปกับมันได้อย่างไรล่ะputมากกว่าupdateเพราะคำว่าupdateชวนให้เข้าใจผิดได้upsertจะเหมาะกว่าputสื่อถึงการเขียนทับข้อมูลเดิม ขณะที่upsertหมายถึงทั้ง insert/update ได้ครบกว่าฉันคิดว่าเหตุที่ผู้ใช้ต้องยืนยันอีเมลหรือสมัครสมาชิก ก็ไม่ใช่เพราะคอมพิวเตอร์สั่ง แต่เป็นตัวเลือกด้านการออกแบบของมนุษย์ต่างหาก
ต่อไปนี้ แทนที่จะโฟกัสที่ความอ่านง่ายของโค้ด หลักการ SOLID หรือความซับซ้อน สิ่งที่สำคัญกว่าน่าจะเป็นว่า agentic IDE ที่ฉันใช้สามารถทำดัชนีบริบทของโค้ดได้ดีแค่ไหน และโมเดลสามารถสร้างโค้ดจากฐานนั้นได้ดีเพียงใด
เมื่อความเร็วในการเปลี่ยนโค้ดสูงขึ้นมาก ความสามารถในการบำรุงรักษาโค้ดอาจกลับกลายเป็นตัวชี้วัดหลัก และเราน่าจะได้เห็นโลกที่ผู้คนสนใจมากขึ้นกับความสอดคล้องระหว่างพรอมป์ต์กับโค้ด รวมถึงประโยชน์ใช้สอยของโค้ดที่บังเอิญเข้าที่เข้าทาง
เช่น ฝั่ง AWS ใช้ “dev” กับ “prod” แต่ฝั่ง Expo ใช้ “test” กับ “production” ทำให้พอต้องสลับไปมาหลายโปรเจกต์ ก็ใช้พลังสมองมากกว่าที่คิด
คิดว่า LLM เองก็คงเจอปัญหาแบบนี้ในสเกลที่ใหญ่กว่ามาก
ถ้าเราสามารถเอาไซแนปส์ในสมองที่เดิมต้องเสียไปกับความสับสนไร้ประโยชน์เรื่องชื่อและพฤติกรรมของ API ไปใช้กับสิ่งที่มีความหมายจริง ๆ ได้ ก็คงดีที่สุด
ไม่ว่า LLM จะฉลาดในการตั้งชื่อแค่ไหน ปัญหาก็ยังอยู่ เพราะมันตั้งอยู่บน incoherent stochastic process
แล้วก็อยากถามจริงจังว่าเคยตั้งคำถามไหมว่าทำไมการตั้งชื่อ environment ถึงไม่เป็นมาตรฐานเดียวกัน
ในฐานะอดีต CTO ฉันมองว่าสิ่งแบบนี้เป็นสัญญาณว่าการสื่อสารในองค์กรหรือมาตรฐานภายในยังต้องปรับปรุง
เพราะมันเป็นเรื่องที่แก้ได้ไม่ยากและช่วยยกระดับวัฒนธรรมการทำงานรวมถึงความตระหนักของทีมได้จริง จึงอยากบอกว่าเรื่องแบบนี้ไม่ควรโยนให้ LLM จัดการ แต่ควรลงมือดูแลด้วยตัวเองมากกว่า
ดูการถกเถียงก่อนหน้าบน Hacker News
ความสำเร็จแบบไวรัลของ Soundslice