แพตเทิร์นนักพัฒนาแบบใหม่ในยุค AI
(a16z.com)- กำลังก่อตัวเป็นวัฒนธรรมการพัฒนาที่มอง AI ไม่ใช่แค่เครื่องมือ แต่เป็น เทคโนโลยีพื้นฐาน
- วิธีการเดิม ๆ ในด้านการจัดการเวอร์ชัน แดชบอร์ด เทมเพลต การทำเอกสาร และการจัดการซีเคร็ต กำลังเปลี่ยนไปให้สอดรับกับยุค AI
- Git ไม่ได้ถูกมองเป็นเพียงเครื่องมือสำหรับติดตามการเปลี่ยนแปลงของโค้ดทีละบรรทัดอีกต่อไป แต่กำลังถูกตีความใหม่เป็น วิธีจัดการสถานะที่มี prompt และผลการทดสอบเป็นศูนย์กลาง
- เอเจนต์กลายเป็นทั้ง ผู้เขียนโค้ดและผู้ใช้โค้ด ทำให้ความจำเป็นในการออกแบบเครื่องมือใหม่มีมากขึ้น
- แดชบอร์ดและ UI กำลังเปลี่ยนไปเป็นอินเทอร์เฟซที่อิงภาษาธรรมชาติ และพัฒนาไปสู่รูปแบบที่มนุษย์กับ AI agent ใช้งานร่วมกัน
- เอกสารกำลังเปลี่ยนเป็นฐานความรู้สำหรับทั้งมนุษย์และ AI และถูกจัดโครงสร้างใหม่ให้อยู่ในรูปแบบที่เอเจนต์เข้าใจได้
1. AI-Native Git: นิยามใหม่ของการจัดการเวอร์ชันสำหรับ AI agent
- เดิมที Git ถูกออกแบบมาเพื่อติดตาม ประวัติการเปลี่ยนแปลงระดับบรรทัด ของโค้ดที่มนุษย์เขียนโดยตรง
- แต่เมื่อ AI เข้ามาสร้างและแก้ไขโค้ดจำนวนมากโดยอัตโนมัติ การติดตามแบบละเอียดระดับนี้ก็ มีความสำคัญน้อยลง
- นักพัฒนาไม่ได้สนใจรายละเอียดของการเปลี่ยนแปลงเท่าเดิม แต่หันไปให้ความสำคัญกับ ความถูกต้องของผลลัพธ์การทำงาน มากกว่า เช่น ผ่านเทสต์หรือทำงานได้ปกติหรือไม่
- SHA บอกได้ว่ามีการเปลี่ยนแปลงเกิดขึ้น แต่ไม่ได้บอกว่า ทำไมจึงเปลี่ยน หรือ การเปลี่ยนแปลงนั้นใช้ได้จริงหรือไม่
- โดยเฉพาะในกรณีที่มีการเปลี่ยนแปลงขนาดใหญ่หรือเป็นโค้ดที่สร้างอัตโนมัติ นักพัฒนามักไม่ได้ไล่ตรวจ diff ทีละจุด
- ใน AI-first workflow การรวมองค์ประกอบต่อไปนี้เข้าด้วยกันกลายเป็นหน่วยที่มีประโยชน์มากกว่า
- prompt: อินพุตที่ใช้ชี้นำการสร้างโค้ด
- test: ชุดทดสอบสำหรับตรวจสอบพฤติกรรมที่คาดหวัง
- spec และ constraints: ข้อกำหนดและเงื่อนไขเชิงออกแบบ
- สิ่งเหล่านี้ถูกมองเป็น bundle ที่ทำเวอร์ชันได้ หนึ่งชุด เพื่อใช้ในการจัดการและติดตาม
- หากขยับแนวคิดนี้ไปอีกขั้น ใน Agent-Driven workflow แหล่ง Source of Truth อาจเลื่อนขึ้นไปอยู่ upstream ที่ระดับ prompt, data schema, API contract และเจตนาทางสถาปัตยกรรม (intent)
- ผลคือ โค้ดจะถูกมองเสมือนผลลัพธ์ที่คอมไพล์แล้ว และถูกปฏิบัติในฐานะผลพลอยได้ของอินพุตเหล่านี้ ไม่ใช่ตัวต้นทาง
- Git จะทำหน้าที่ไม่ใช่เป็น workspace สำหรับทำงานกับโค้ด แต่เป็น artifact log
- ใครใช้โมเดลอะไรและใช้ prompt แบบไหนในการสร้างโค้ด
- เทสต์ใดผ่านแล้วบ้าง
- ส่วนใดที่มนุษย์ต้องเข้ามารีวิว พร้อมทั้งเก็บ metadata เหล่านี้ไว้ด้วย
- ประวัติการเปลี่ยนแปลงจะมีทั้ง prompt, เป้าหมาย, เทสต์ที่เกี่ยวข้อง และข้อมูลโมเดลที่ใช้สร้าง
- สามารถเชื่อมต่อกับ เครื่องมือรีวิวด้วย AI อย่าง Diamond เพื่อสร้างกระบวนการรีวิวแบบอัตโนมัติได้
- และยังสามารถจัดชั้น metadata ให้สมบูรณ์ขึ้น เช่น การแยกโค้ดที่เอเจนต์สร้างออกจากพื้นที่คุ้มครองที่มนุษย์ดูแล
- หากจินตนาการถึง AI-Native Git workflow
- เราอาจได้เห็นแดชบอร์ด Git รูปแบบใหม่ที่แสดงทั้ง prompt, ลำดับการเปลี่ยนแปลงที่อิงจาก prompt นั้น, ผลการทดสอบ, ข้อมูลเอเจนต์ที่ทำงาน และข้อมูลของ bundle ไปพร้อมกัน
2. Dashboards → Synthesis: วิวัฒนาการสู่อินเทอร์เฟซแบบไดนามิกที่ขับเคลื่อนด้วย AI
- ตลอดหลายปีที่ผ่านมา แดชบอร์ดทำหน้าที่เป็น อินเทอร์เฟซหลัก สำหรับโต้ตอบกับระบบที่ซับซ้อน เช่น ระบบสังเกตการณ์ เครื่องมือวิเคราะห์ และ cloud console อย่าง AWS
- แต่ด้วยองค์ประกอบการควบคุม กราฟ และแท็บที่มากเกินไป จึงเกิด ภาระด้าน UX และทำให้ผู้ใช้หลงทางได้ง่ายระหว่างการค้นหาข้อมูลกับการลงมือทำ
- โดยเฉพาะในสถานการณ์ที่มีผู้ใช้ที่ไม่ใช่ผู้เชี่ยวชาญหรือมีหลายทีมต้องทำงานร่วมกัน แดชบอร์ดลักษณะนี้อาจถูกมองว่าเป็น เครื่องมือที่น่ากลัวและไม่มีประสิทธิภาพ
- ผู้ใช้มักรู้ว่าต้องการบรรลุอะไร แต่ ไม่รู้ว่าควรไปหาที่ไหนหรือต้องใช้ฟิลเตอร์แบบใด
- AI model รุ่นใหม่กำลังชี้ให้เห็นความเป็นไปได้ในการแก้ปัญหานี้
- คือการตีความ แดชบอร์ดใหม่ให้เป็นพื้นที่ที่สำรวจและโต้ตอบได้ แทนที่จะเป็นแคนวาสแบบตายตัว
- LLM สามารถช่วยผู้ใช้ได้ในลักษณะต่อไปนี้:
- ค้นหาตำแหน่งของตัวควบคุม เช่น “จะไปเปลี่ยนการตั้งค่า rate limit ของ API นี้ได้ที่ไหน?”
- สรุปข้อมูลแบบบูรณาการ เช่น “ช่วยสรุปเทรนด์ของ error ที่เกิดขึ้นในทุก service ของ staging environment ตลอด 24 ชั่วโมงที่ผ่านมา”
- แนะนำอินไซต์ที่ซ่อนอยู่ เช่น “จากสถานการณ์ธุรกิจของฉัน ช่วยแนะนำ metric ที่ควรจับตาในไตรมาสนี้”
- ปัจจุบันเทคโนโลยีอย่าง Assistant UI รองรับให้เอเจนต์ใช้ React component เป็นเครื่องมือได้แล้ว
- เช่นเดียวกับที่คอนเทนต์มีความไดนามิกและปรับให้เหมาะกับแต่ละคน ตัว UI เองก็กำลังถูกจัดโครงสร้างใหม่ตามเจตนาของผู้ใช้และพัฒนาไปสู่ความเป็นแบบสนทนา
- แดชบอร์ดแบบคงที่อาจถูกมองว่าล้าสมัยในไม่ช้า
- ตัวอย่าง:
- หากผู้ใช้พูดว่า “แสดงความผิดปกติที่เกิดขึ้นในยุโรปช่วงสุดสัปดาห์ที่ผ่านมา” ระบบก็จะ สรุป log และเทรนด์ที่เกี่ยวข้องให้อัตโนมัติ โดยไม่ต้องมานั่งปรับฟิลเตอร์เอง
- สำหรับคำถามว่า “ทำไมคะแนน NPS ถึงลดลงเมื่อสัปดาห์ก่อน?” AI สามารถนำเสนอทั้ง การวิเคราะห์อารมณ์จากแบบสำรวจ การวิเคราะห์ความสัมพันธ์กับประวัติการ deploy โปรดักต์ และสรุปเชิงวินิจฉัย ได้
- ในมุมที่กว้างขึ้น หากเอเจนต์กลายเป็นผู้บริโภคซอฟต์แวร์ แนวคิดเรื่อง “แดชบอร์ด” เองก็จำเป็นต้องถูกออกแบบใหม่
- ตัวอย่างเช่น แดชบอร์ดอาจเรนเดอร์มุมมองที่เหมาะกับ Agent Experience
- โดยมอบ อินเทอร์เฟซที่มีโครงสร้างและเข้าถึงได้เชิงโปรแกรม เพื่อให้ระบบรับรู้สถานะ ตัดสินใจ และลงมือทำได้
- ผลลัพธ์คืออาจเกิด โครงสร้างอินเทอร์เฟซคู่ ที่มีทั้ง UI สำหรับมนุษย์และ UI สำหรับเอเจนต์อยู่ร่วมกัน
- ทั้งสอง UI ใช้สถานะเดียวกัน แต่ จัดองค์ประกอบต่างกันตามรูปแบบการบริโภค
- ตัวอย่างเช่น แดชบอร์ดอาจเรนเดอร์มุมมองที่เหมาะกับ Agent Experience
- เอเจนต์จะเข้ามาแทนบทบาทของการแจ้งเตือน cronjob และระบบอัตโนมัติตามเงื่อนไขแบบเดิม พร้อมเป็น ผู้ลงมือทำที่มีบริบทและความยืดหยุ่นมากกว่าเดิมอย่างมาก
- ตัวอย่าง:
- แบบเดิม:
if error rate > threshold then send alert - แบบเอเจนต์: “อัตรา error กำลังเพิ่มขึ้น สาเหตุมาจาก service นี้ และนี่คือ component ที่ได้รับผลกระทบรวมถึงแนวทางรับมือที่แนะนำ”
- แบบเดิม:
- ด้วยเหตุนี้ แดชบอร์ดจึงไม่ใช่แค่สถานที่สำหรับสังเกตการณ์อีกต่อไป แต่กำลังถูกนิยามใหม่ให้เป็น พื้นที่ที่มนุษย์และ AI ร่วมมือกัน หลอมรวมข้อมูล และลงมือทำ
3. เอกสารกำลังพัฒนาไปเป็นการผสานกันของเครื่องมือ ดัชนี และฐานความรู้แบบ interactive
- วิธีที่นักพัฒนาใช้งานเอกสารกำลังเปลี่ยนไป
- ในอดีต มักอ่านตามสารบัญหรืออ่านสเปกจากบนลงล่าง แต่ตอนนี้แนวทางแบบ “ตั้งคำถามก่อน” กลายเป็นเรื่องปกติ
- แทนที่จะคิดว่า “ฉันต้องไปอ่านสเปกนี้” กลับเปลี่ยนเป็นแนวคิดว่า “ช่วยจัดเรียงข้อมูลใหม่ในแบบที่ฉันต้องการ”
- การเปลี่ยนแปลงนี้ส่งผลถึงรูปแบบของเอกสารด้วย ทำให้เอกสารกำลังพัฒนาเป็น ระบบความรู้แบบ interactive ที่มีดัชนี embeddings และเอเจนต์ที่รู้จักการใช้เครื่องมืออยู่เบื้องหลัง แทนที่จะเป็นเพียง HTML หรือ Markdown แบบคงที่
- ด้วยเหตุนี้จึงมีเครื่องมืออย่าง Mintlify เกิดขึ้น
- Mintlify ไม่ได้เพียงจัดเอกสารเป็น ฐานข้อมูลที่ค้นหาได้ตามความหมาย เท่านั้น แต่ยังถูกใช้เป็น แหล่งบริบทสำหรับเอเจนต์บนหลายแพลตฟอร์ม ด้วย
- ตัวอย่างเช่น ใน AI IDE, ส่วนขยาย VS Code, terminal agent และอื่น ๆ เอกสารของ Mintlify ถูกใช้เป็น ข้อมูลอ้างอิงแบบเรียลไทม์
- เหตุผลคือเอเจนต์สร้างโค้ดใช้ เอกสารล่าสุดเป็นบริบทสำหรับการประมวลผล
- Mintlify ไม่ได้เพียงจัดเอกสารเป็น ฐานข้อมูลที่ค้นหาได้ตามความหมาย เท่านั้น แต่ยังถูกใช้เป็น แหล่งบริบทสำหรับเอเจนต์บนหลายแพลตฟอร์ม ด้วย
- สิ่งนี้กำลังเปลี่ยนจุดประสงค์ของเอกสารโดยตรง
- เอกสารไม่ได้มีไว้เพื่อส่งต่อข้อมูลให้ผู้อ่านที่เป็นมนุษย์เท่านั้นอีกต่อไป แต่ต้องถูกออกแบบเป็น โครงสร้างสำหรับผู้บริโภคที่เป็นเอเจนต์ ด้วย
- ในพลวัตใหม่นี้ เอกสารจะทำหน้าที่เป็น คู่มือการใช้งานสำหรับ AI agent
- นี่ไม่ใช่แค่การเผยแพร่คอนเทนต์ แต่เป็น รูปแบบที่อธิบายว่าระบบควรถูกใช้งานอย่างถูกต้องอย่างไร
4. จากเทมเพลตสู่การสร้าง: vibe coding ที่มาแทน create-react-app
- ในอดีต หากจะเริ่มต้นโปรเจ็กต์ โดยทั่วไปมักต้องเลือก เทมเพลตแบบตายตัว อย่าง
create-react-app,next init,rails new- เทมเพลตเหล่านี้ให้โครงสร้างแอปที่สม่ำเสมอ แต่ ปรับแต่งให้ตรงกับเจตนาหรือสแตกของนักพัฒนาได้ยาก และต้องยึดตามค่าเริ่มต้นของเฟรมเวิร์ก
- ผลคือ หากต้องการออกนอกกรอบการตั้งค่าพื้นฐาน ก็จำเป็นต้อง รีแฟกเตอร์ด้วยมือตั้งแต่ต้นจำนวนมาก
- ตอนนี้กระแสดังกล่าวกำลังเปลี่ยนไปด้วยการมาถึงของ แพลตฟอร์ม text-to-app อย่าง Replit, Same.dev, Loveable, Chef by Convex, Bolt และ AI IDE อย่าง Cursor
- ตัวอย่างเช่น นักพัฒนาสามารถอธิบายว่า “TypeScript API server ที่มี Supabase, Clerk, Stripe” แล้ว AI จะจัดโครงสร้างโปรเจ็กต์แบบปรับแต่งเฉพาะให้โดยอัตโนมัติภายในไม่กี่วินาที
- สตาร์ตเตอร์ที่ได้จึงไม่ใช่เทมเพลตทั่วไป แต่เป็น โครงสร้างที่เหมาะกับเจตนาและสแตกของนักพัฒนาโดยเฉพาะ
- การเปลี่ยนแปลงนี้กำลังเปลี่ยนโครงสร้างการกระจายในอีโคซิสเต็มด้วย
- แทนที่จะมีเฟรมเวิร์กไม่กี่ตัวครองศูนย์กลางเหมือนในอดีต ตอนนี้ กระแสการสร้างแบบเฉพาะทางที่ผสมผสานเครื่องมือและสถาปัตยกรรมหลากหลาย กำลังแพร่หลาย
- แก่นสำคัญเปลี่ยนจาก การเลือกเฟรมเวิร์ก ไปเป็น การอธิบายว่าอยากสร้างอะไร
- นักพัฒนาบางคนอาจเลือกชุด Next.js กับ tRPC ขณะที่อีกคนเลือก Vite กับ React แต่ ทั้งคู่สามารถถูกสร้างเป็นโปรเจ็กต์ที่พร้อมรันได้ทันที
- แน่นอนว่าสแตกมาตรฐานก็ยังมีข้อดี:
- เช่น เพิ่มประสิทธิภาพการทำงานของทีม, การ onboarding ที่มีประสิทธิผล, และการดีบักที่ง่ายขึ้น
- แต่ การรีแฟกเตอร์ข้ามเฟรมเวิร์กไม่ใช่แค่ปัญหาทางเทคนิคเท่านั้น แต่ยังพัวพันกับผลิตภัณฑ์ อินฟรา และศักยภาพขององค์กรด้วย
- จุดเปลี่ยนสำคัญคือ ต้นทุนของการย้ายเฟรมเวิร์กลดลงแล้ว
- AI agent สามารถเข้าใจเจตนาของโปรเจ็กต์และ ทำรีแฟกเตอร์ขนาดใหญ่แบบกึ่งอัตโนมัติ ได้
- ส่งผลให้การทดลองทำได้ง่ายขึ้น และ มีพื้นที่ให้ลองสแตกหลากหลายตั้งแต่ช่วงต้นหรือย้อนกลับได้
- ผลลัพธ์คือ การเลือกเฟรมเวิร์กกำลังกลายเป็นสิ่งที่ย้อนกลับได้ (decision reversible)
- ตัวอย่าง: เริ่มด้วย Next.js แล้วเปลี่ยนเป็น Remix + Vite โดยให้ agent จัดการรีแฟกเตอร์ทั้งหมด
- เมื่อ framework lock-in ลดลง ก็ทำให้ สามารถลองสแตกแบบ opinionated ได้โดยไม่ต้องแบกรับภาระมากนัก
5. ก้าวข้าม .env: การจัดการซีเคร็ตในสภาพแวดล้อมที่มี agent เป็นศูนย์กลาง
- ตลอดหลายสิบปีที่ผ่านมา ไฟล์
.envคือ วิธีพื้นฐานที่นักพัฒนาใช้จัดการซีเคร็ตในเครื่องแบบง่าย ๆ เช่น API key, database URL และ service token- วิธีนี้เรียบง่าย พกพาได้ และเป็นมิตรกับนักพัฒนา แต่ เมื่อ AI IDE หรือ agent เขียนโค้ด ดีพลอยบริการ และประสานสภาพแวดล้อมเอง ก็เริ่มเกิดปัญหา
- กล่าวคือ ไม่ชัดเจนอีกต่อไปว่าใครคือเจ้าของไฟล์ .env
- ขณะนี้กำลังมีแนวทางใหม่เพื่อแก้ปัญหานี้
- ตัวอย่างเช่น สเปก MCP เวอร์ชันล่าสุดได้รวม เฟรมเวิร์กการยืนยันตัวตนที่อิง OAuth 2.1 ไว้
- โครงสร้างนี้ชี้ไปสู่แนวทางที่มอบ โทเค็นแบบจำกัดขอบเขตแทนซีเคร็ตดิบ (scope-based, revocable tokens) ให้กับ AI agent
- เช่น แทนที่ agent จะได้รับ AWS key ทั้งชุด ก็จะได้รับ credential ชั่วคราว ที่อนุญาตเฉพาะการกระทำจำกัด เช่น “อัปโหลดไฟล์ไปยัง S3”
- อีกกระแสหนึ่งคือ การเกิดขึ้นของ local secret broker
- มันทำงานอยู่ในเครื่องหรือข้างแอป และทำหน้าที่เป็น บริการตัวกลางระหว่าง agent กับซีเคร็ตที่อ่อนไหว
- agent จะไม่เข้าถึง
.envโดยตรงหรือฮาร์ดโค้ดค่าไว้ แต่เมื่อมีคำขอทำงานบางอย่าง broker จะประเมินแบบเรียลไทม์และมอบสิทธิ์ให้- เช่น คำขอ “ดีพลอยไปยัง staging” หรือ “ส่งล็อกไปยัง Sentry”
- broker จะจัดการแบบ Just-in-time และทุกการเข้าถึงสามารถตรวจสอบย้อนหลังได้
- แนวทางนี้เปลี่ยน การเข้าถึงซีเคร็ตจากโมเดลที่ยึดไฟล์ระบบ ไปสู่โมเดลสิทธิ์แบบ API
- ผลลัพธ์คือ การจัดการซีเคร็ตจะพัฒนาจากการตั้งค่าผ่าน
.envไปเป็น โครงสร้างควบคุมสิทธิ์บนฐาน OAuth
- ผลลัพธ์คือ การจัดการซีเคร็ตจะพัฒนาจากการตั้งค่าผ่าน
6. การเข้าถึงเป็นอินเทอร์เฟซสากล: แอปในมุมมองของ LLM
- ช่วงหลังแอปอย่าง Granola และ Highlight มักขอสิทธิ์การเข้าถึงของ macOS แต่จุดประสงค์นั้น ไม่ใช่เพื่อช่วยผู้พิการตามความหมายดั้งเดิม หากเป็นการเปิดให้ AI agent สังเกตและโต้ตอบกับ UI
- นี่ไม่ใช่แฮ็กชั่วคราว แต่สามารถมองได้ว่าเป็น สัญญาณล่วงหน้าของการเปลี่ยนผ่านอินเทอร์เฟซที่ลึกกว่านั้น
- เดิมที Accessibility API ถูกสร้างขึ้นเพื่อยกระดับการเข้าถึงดิจิทัลสำหรับผู้ใช้ที่มีความบกพร่องทางการมองเห็นหรือการเคลื่อนไหว
- แต่หากขยาย API นี้ออกไป ก็สามารถทำหน้าที่เป็น ชั้นอินเทอร์เฟซสากลสำหรับ AI agent ได้
- แทนที่จะคลิกตามตำแหน่งพิกเซลหรือสแครป DOM agent จะสามารถสังเกตและทำงานกับแอปแบบ semantic ได้ เหมือนกับที่เทคโนโลยีช่วยเหลือตีความ UI
- accessibility tree เปิดเผย องค์ประกอบ UI ที่มีโครงสร้าง อยู่แล้ว เช่น ปุ่ม หัวเรื่อง และช่องกรอกข้อมูล
- หากเพิ่มเมทาดาทาอย่าง intent, role และ affordance เข้าไปอีก ก็จะทำให้ agent ควบคุมได้อย่างแม่นยำตามเป้าหมายและบริบท
- ทิศทางนี้อาจขยายไปสู่ความสามารถต่อไปนี้:
- Context extraction: ใช้ accessibility/semantic API เพื่อสอบถามองค์ประกอบที่มองเห็นบนหน้าจอ รายการที่โต้ตอบได้ และสิ่งที่ผู้ใช้กำลังทำอยู่ในตอนนั้น
- Intentful execution: แทนที่จะต้องเชื่อมหลาย API call ด้วยมือ ก็ประกาศ เป้าหมายระดับสูง เช่น “เพิ่มสินค้าใส่รถเข็นและเลือกการจัดส่งที่เร็วที่สุด” แล้วให้แบ็กเอนด์จัดลำดับขั้นตอนการทำงาน
- Fallback UI for LLMs: ความสามารถด้าน accessibility จะให้ อินเทอร์เฟซสำรองที่ช่วยให้ agent ใช้งานแอปที่ไม่มี public API ได้
- นักพัฒนาสามารถกำหนด render surface ที่ agent รับรู้ได้ นอกเหนือจาก visual UI หรือ DOM ด้วย structured annotation หรือคอมโพเนนต์ที่ยึด accessibility เป็นศูนย์กลาง
- โดยสรุป Accessibility API กำลังพัฒนาจาก ฟังก์ชันสำหรับมนุษย์เท่านั้น ไปเป็น ชั้นอินเทอร์เฟซหลักสำหรับปฏิสัมพันธ์ระหว่าง AI กับระบบ
7. การผงาดขึ้นของงาน agent แบบ asynchronous
- เมื่อนักพัฒนาเริ่มทำงานร่วมกับเอเจนต์เขียนโค้ดได้อย่างเป็นธรรมชาติ การเปลี่ยนผ่านไปสู่ เวิร์กโฟลว์แบบอะซิงโครนัส ก็กำลังเร่งตัวขึ้น
- เอเจนต์ทำงานในลักษณะ ประมวลผลงานแบบขนานอยู่เบื้องหลัง และเมื่อคืบหน้าไปถึงระดับหนึ่งก็จะรายงานผลกลับมา
- ปฏิสัมพันธ์ลักษณะนี้กำลังใกล้เคียงกับ task orchestration มากกว่าการ pair programming มากขึ้นเรื่อยๆ
- กล่าวคือ นักพัฒนาส่งต่อเป้าหมาย แล้วเอเจนต์นำไปดำเนินการ ก่อนจะกลับมาตรวจสอบภายหลัง
- ประเด็นสำคัญไม่ใช่แค่การแบ่งเบางาน แต่คือการบีบอัดกระบวนการทำงานร่วมกันทั้งกระบวนการ
- ตัวอย่างเช่น แทนที่จะต้องขอให้อีกทีมอัปเดตไฟล์คอนฟิก ช่วย triage error หรือรีแฟกเตอร์คอมโพเนนต์
นักพัฒนาสามารถ สื่อเจตนาไปยังเอเจนต์โดยตรง และสั่งให้จัดการงานนั้นอยู่เบื้องหลัง ได้ - เดิมทีสิ่งนี้ต้องอาศัยการประชุมแบบซิงโครนัส การส่งต่องานข้ามทีม และรอบรีวิวที่ยาวนาน
แต่ตอนนี้ลูปแบบ request → generate → validate เกิดขึ้นได้อย่างเป็นธรรมชาติ
- ตัวอย่างเช่น แทนที่จะต้องขอให้อีกทีมอัปเดตไฟล์คอนฟิก ช่วย triage error หรือรีแฟกเตอร์คอมโพเนนต์
- วิธีโต้ตอบกับเอเจนต์ก็กำลังขยายตัวเช่นกัน
- นอกจากการพิมพ์พรอมป์ต์ใน IDE หรือ CLI แบบตรงๆ แล้ว ยังทำได้ด้วยวิธีต่อไปนี้:
- ส่งคำของานผ่านข้อความใน Slack
- เขียนคอมเมนต์บน mockup ใน Figma
- ใส่คอมเมนต์แบบอินไลน์ใน code diff หรือ PR (เช่น Graphite review assistant)
- เพิ่มฟีดแบ็กใน app preview ที่ deploy แล้ว
- อธิบายการเปลี่ยนแปลงด้วยวาจาผ่านอินเทอร์เฟซแบบเสียงหรือการโทร
- นอกจากการพิมพ์พรอมป์ต์ใน IDE หรือ CLI แบบตรงๆ แล้ว ยังทำได้ด้วยวิธีต่อไปนี้:
- การเปลี่ยนแปลงนี้ทำให้เอเจนต์เข้ามาอยู่ตลอดทั้งวงจรชีวิตการพัฒนา
- ไม่ได้หยุดอยู่แค่การเขียนโค้ด แต่รวมถึงการตีความงานออกแบบ การสะท้อนฟีดแบ็ก และการ triage บั๊กทั่วทั้งแพลตฟอร์ม
- นักพัฒนาจึงรับบทเป็น orchestrator ที่ตัดสินใจว่าจะเดินหน้า ตัดออก หรือรวม task thread ใดบ้าง
- แนวโน้มนี้ท้ายที่สุดอาจชี้ให้เห็นว่า task thread ที่ขับเคลื่อนด้วยเอเจนต์อาจกลายเป็นแนวคิด ‘Git branch’ แบบใหม่
- ไม่ใช่ fork โค้ดแบบคงที่อีกต่อไป แต่เป็น thread แบบไดนามิกที่ยึดตามเป้าหมาย ซึ่งรันแบบอะซิงโครนัสและถูกรวมกลับเมื่อเสร็จสมบูรณ์
8. MCP: ขยับเข้าใกล้มาตรฐานสากลอีกก้าวด้วย Model Context Protocol
- หลังจากเผยแพร่ บทความวิเคราะห์เชิงลึกเกี่ยวกับ MCP ไปไม่นาน ความเร็วในการยอมรับ MCP ก็เพิ่มขึ้นอย่างต่อเนื่อง
- OpenAI รับ MCP อย่างเป็นทางการแล้ว มีฟีเจอร์ใหม่หลายรายการถูกรวมเข้าไปในสเปก
และผู้สร้างเครื่องมือจำนวนมากขึ้นเรื่อยๆ ก็กำลัง ยอมรับ MCP เป็นอินเทอร์เฟซพื้นฐานระหว่างเอเจนต์กับโลกความเป็นจริง - โดยแก่นแล้ว MCP แก้ปัญหาสำคัญอยู่ 2 เรื่อง:
- ให้บริบทที่จำเป็น เพื่อให้ LLM สามารถทำงานที่ไม่เคยพบมาก่อนได้
- ตัดความซับซ้อนของการเชื่อมต่อแบบกำหนดเองลักษณะ N×M ออกไป และ ทำให้เหลือโครงสร้างที่เครื่องมือเปิดเผยอินเทอร์เฟซมาตรฐาน (server) และเอเจนต์ทุกตัว (client) ใช้งานได้
- ต่อจากนี้คาดว่าการยอมรับ MCP จะขยายตัวมากขึ้นอีก
และหาก remote MCP และ MCP registry โดยพฤตินัย (de-facto registry) เกิดขึ้น
แอปจำนวนมากก็อาจเปิดตัวพร้อมอินเทอร์เฟซ MCP มาเป็นค่าพื้นฐาน - เช่นเดียวกับที่ในอดีต API ทำให้เครื่องมือ SaaS เชื่อมต่อกันและประกอบเป็นเวิร์กโฟลว์ได้
MCP ก็อาจสร้างระบบนิเวศของคอมโพเนนต์ที่ทำงานร่วมกันได้สำหรับ AI agent - แพลตฟอร์มที่ฝัง MCP client มาในตัว จะไม่ได้เป็นแค่ระดับ “รองรับ AI” เท่านั้น
แต่จะกลายเป็น ส่วนหนึ่งของระบบนิเวศที่เชื่อมต่อเข้ากับเครือข่ายความสามารถซึ่งเอเจนต์เข้าถึงได้โดยตรง - client และ server ของ MCP เป็นเพียงแนวคิดเชิงตรรกะ ไม่ได้แยกจากกันทางกายภาพ
- นั่นหมายความว่า MCP client ใดๆ ก็สามารถเป็น server ได้ และในทางกลับกันก็เช่นกัน
- สิ่งนี้เปิดทางให้เกิด composability ในระดับสูง ดังตัวอย่างต่อไปนี้:
- ตัวอย่าง: เอเจนต์เขียนโค้ดตัวหนึ่งอาจทำหน้าที่เป็น client เพื่อดึง GitHub issue มาใช้ และในเวลาเดียวกันก็ทำหน้าที่เป็น server เพื่อ มอบผลการวิเคราะห์โค้ดหรือข้อมูล test coverage ให้เอเจนต์ตัวอื่น ได้
- MCP กำลังวางตัวเป็น ชั้นอินเทอร์เฟซพื้นฐาน สำหรับระบบนิเวศที่เครื่องมือและเอเจนต์โต้ตอบกันอย่างเป็นธรรมชาติ
9. Primitive ที่ถูกทำให้เป็นนามธรรม: การยืนยันตัวตน การชำระเงิน และสตอเรจที่ AI agent ทุกตัวต้องมี
- ยิ่ง vibe coding agent มีความสามารถมากขึ้น ก็ยิ่งเห็นชัดว่า
แม้เอเจนต์จะสร้างโค้ดได้มาก แต่ มันยังต้องมีโครงสร้างพื้นฐานที่เชื่อถือได้ให้โค้ดนั้นเชื่อมต่อเข้าไปใช้งาน - เช่นเดียวกับที่นักพัฒนามนุษย์พึ่งพา Stripe สำหรับการชำระเงิน, Clerk สำหรับการยืนยันตัวตน, และ Supabase สำหรับฐานข้อมูล
เอเจนต์ก็ต้องการ service primitive ที่เชื่อถือได้และนำมาประกอบกันได้ เช่นกัน - บริการเหล่านี้มีขอบเขต API ที่ชัดเจน, SDK ที่ใช้งานง่าย และค่าเริ่มต้นที่สมเหตุสมผล
และกำลังกลายเป็น อินเทอร์เฟซรันไทม์ของเอเจนต์ มากขึ้นเรื่อยๆ - ตัวอย่างเช่น เมื่อต้องสร้างเครื่องมือสำหรับสร้างแอป SaaS แทนที่เอเจนต์จะลงมือสร้างระบบยืนยันตัวตนหรือโลจิกการชำระเงินเอง
ก็สามารถใช้ Clerk และ Stripe เพื่อ เชื่อมต่อได้อย่างรวดเร็วและปลอดภัย - เมื่อแพตเทิร์นนี้เติบโตเต็มที่ บริการต่างๆ อาจไม่ได้หยุดแค่การให้ API แต่ยังอาจเปิดเผยสิ่งต่อไปนี้ด้วย:
- schema: คำจำกัดความของข้อมูลแบบมีโครงสร้าง
- capability metadata: ข้อกำหนดของงานที่สามารถทำได้
- example flows: ตัวอย่างวิธีการเชื่อมต่อใช้งาน
→ ซึ่งจะช่วยให้เอเจนต์เชื่อมต่อได้อย่างเสถียรมากขึ้น
- บางบริการอาจถึงขั้น เปิดตัวพร้อม MCP server ในตัว
- ตัวอย่าง: Clerk อาจเปิดเผยความสามารถอย่างการดูรายการสินค้า การสร้างแพ็กเกจราคาใหม่ หรือการแก้ไข subscription ผ่าน MCP server
- เอเจนต์จึงไม่ต้องคอยค้นหาสเปก API หรือเอกสารอีกต่อไป แต่สามารถส่งคำขอเป็นภาษาธรรมชาติได้
และ MCP server จะ ตรวจสอบและประมวลผลคำขอภายใต้ขอบเขตสิทธิ์และข้อจำกัดที่กำหนดไว้ - ตัวอย่าง:
“ช่วยสร้างแพ็กเกจ Pro ราคา $49 ต่อเดือน และตั้งค่าคิดค่าบริการส่วนเพิ่มตามการใช้งานให้หน่อย”
→ MCP server ของ Clerk จะตีความและดำเนินการตามคำขอนี้
- เช่นเดียวกับที่
rails newเคยทำให้การพัฒนาในยุคเว็บช่วงแรกเป็นไปได้อย่างรวดเร็ว
ในยุคเอเจนต์ เราจำเป็นต้องมี primitive ที่เชื่อถือได้ (เช่น drop-in identity, การชำระเงิน, การควบคุมสิทธิ์การเข้าถึง)- primitive เหล่านี้ต้อง ถูกทำให้เป็นนามธรรมมากพอที่เอเจนต์จะนำไปใช้ในการสร้างได้
พร้อมกันนั้นก็ต้องมีโครงสร้างที่ขยายต่อได้เมื่อแอปเติบโตขึ้น
- primitive เหล่านี้ต้อง ถูกทำให้เป็นนามธรรมมากพอที่เอเจนต์จะนำไปใช้ในการสร้างได้
บทสรุป
- ทั้ง 9 แพตเทิร์นนี้ไม่ได้เป็นเพียงการเอา AI มาครอบบนวิธีพัฒนาแบบเดิม แต่สะท้อนว่า วิธีสร้างซอฟต์แวร์กำลังถูกนิยามใหม่โดยมีเอเจนต์ บริบท และเจตนาเป็นศูนย์กลาง
- ดังนั้นพฤติกรรมการทำงานของนักพัฒนาแบบเดิมก็เปลี่ยนตามไปด้วย และ toolchain กับโปรโตคอลใหม่ๆ (เช่น MCP) ที่รองรับสิ่งนี้ก็กำลังเกิดขึ้นอย่างรวดเร็ว
- ชั้นเครื่องมือหลักเดิม อย่าง Git, เทมเพลต, แดชบอร์ด, และวิธีทำเอกสาร ต่างกำลังถูกออกแบบใหม่อย่างถึงรากพร้อมกับ AI
- ท่ามกลางช่วงเปลี่ยนผ่านนี้ คาดว่า การสร้างและการลงทุนในเครื่องมือและโครงสร้างพื้นฐานรุ่นถัดไป ที่จะประกอบกันเป็นระบบนิเวศนักพัฒนาแบบใหม่จะเกิดขึ้นอย่างคึกคัก
8 ความคิดเห็น
มีคนที่ทำข้อ 1 จริงๆ ด้วยเหรอ..?
LLM ไม่ได้รับประกันว่าจะให้ผลลัพธ์เดิมกับอินพุตเดียวกัน แบบนั้นการจัดการเวอร์ชันคอนฟิกในลักษณะนั้นจะใช้ได้จริงหรือครับ...
หรือว่าตอนนี้ผมยังใช้งานมันแบบมิติเดียวเกินไปอยู่
เข้าใจว่าเมื่อกำหนดตัวเลือก temperature เป็น 0 จะรับประกันได้ว่าจะได้ผลลัพธ์เดิมสำหรับอินพุตเดียวกัน
ยังไงผ่านไปอีกไม่กี่เดือน ตัวโมเดลเองก็คงเปลี่ยนอีกอยู่ดี เลยไม่มีความหมายหรือเปล่าครับ
ประเด็นนั้นก็อีกเรื่องหนึ่ง แต่การตั้งสมมติฐานว่าไม่ต้องคำนึงถึงการแทรกแซงของมนุษย์เลยนั้นดูฟันธงเกินไปนะครับ
ในกรณีอย่างการแก้ตัวเลขหรือข้อความเล็กน้อย การให้มนุษย์เข้ามาจัดการน่าจะมีประสิทธิภาพกว่า LLM มากกว่าครับ
เป็นบทความที่ให้ความรู้สึกถึงมุมมองเชิงลึกจริง ๆ สมกับเป็น a16z
https://th.news.hada.io/topic?id=21091
พออ่านบทความนี้แล้ว ก็รู้สึกสงสัยว่าแบบนี้มันถูกต้องจริงเหรอครับ
ข้อ 1 นี่เหมือนฝันร้ายจริง ๆ เป็นการเปลี่ยนแปลงที่ไม่อยากยอมรับเด็ดขาด มันกำลังทำให้การติดตามประวัติซอร์สโค้ดหมดความหมายไปเลย