ไวบ์เอนจิเนียริง
(simonwillison.net)- "Vibe Engineering" คือชื่อเรียกใหม่ของแนวทางการพัฒนาระดับมืออาชีพที่ใช้ เครื่องมือ AI สำหรับการเขียนโค้ด โดยต่างจาก 'vibe coding' ที่รวดเร็วแต่ขาดความรับผิดชอบ แนวทางนี้หมายถึง การที่วิศวกรผู้ชำนาญใช้ LLM โดยยังคงรักษาคุณภาพโค้ดและความรับผิดชอบ
- การมาถึงของ coding agent อย่าง Claude Code, OpenAI Codex CLI และ Gemini CLI ทำให้การใช้ LLM ในโปรเจกต์งานจริงเพิ่มขึ้นอย่างมาก และวิศวกรบางคนถึงกับ รันหลายเอเจนต์พร้อมกันเพื่อทำงานแบบขนาน
- หากต้องการใช้ LLM อย่างมีประสิทธิภาพ จำเป็นต้องมีแนวปฏิบัติด้านซอฟต์แวร์เอนจิเนียริงระดับสูงที่วางรากฐานไว้แล้ว เช่น การทดสอบอัตโนมัติ การวางแผนล่วงหน้า เอกสารที่ครอบคลุม การควบคุมเวอร์ชัน และวัฒนธรรม code review
- เครื่องมือ AI มีคุณสมบัติในการ ขยายศักยภาพของความเชี่ยวชาญที่มีอยู่เดิม ยิ่งวิศวกรระดับอาวุโสมีทักษะและประสบการณ์มากเท่าไร ก็ยิ่งใช้ LLM เพื่อให้ได้ผลลัพธ์ที่เร็วและดีกว่าเดิมได้มากขึ้น
- คำนี้เน้นให้เห็นว่าเป็น วิธีใช้ AI เพื่อพัฒนาซอฟต์แวร์ production ที่ยากและซับซ้อนกว่า ผ่านการแยกความหมายจาก 'vibe coding' อย่างชัดเจน และการจับคู่คำที่ดูขัดแย้งกันระหว่าง engineering กับ vibe ก็กลับช่วยให้จดจำได้ง่าย (ตอกย้ำการเปลี่ยนแปลงของกระบวนการพัฒนาจากความก้าวหน้าของเครื่องมือ AI และความสำคัญของความเชี่ยวชาญ)
การแยกความต่างระหว่าง vibe coding กับ vibe engineering
- vibe coding คือแนวทางพัฒนาซอฟต์แวร์ที่ใช้ AI แบบรวดเร็ว หลวม และขาดความรับผิดชอบ โดยขับเคลื่อนด้วยพรอมป์ตทั้งหมด และเป็น แนวทางที่ไม่ใส่ใจว่าโค้ดทำงานอย่างไร
- ที่ปลายอีกด้านของสเปกตรัม มี วิธีการที่ผู้เชี่ยวชาญซึ่งมีทักษะใช้ LLM เพื่อเร่งงาน แต่ยังคงภาคภูมิใจและรับผิดชอบต่อซอฟต์แวร์ที่ตนสร้างอย่างมั่นใจ และสิ่งนี้ถูกเรียกว่า vibe engineering
- ความจริงที่คนยังพูดถึงไม่มากคือ การทำงานร่วมกับ LLM อย่างมีประสิทธิผลในฐานะวิศวกรซอฟต์แวร์บนโปรเจกต์จริง ไม่ใช่โปรเจกต์เล่น ๆ นั้น เป็นเรื่องยาก ต้องเข้าใจการใช้เครื่องมืออย่างลึกซึ้ง และยังมีหลุมพรางอีกมากที่ต้องหลีกเลี่ยง
การมาถึงและผลกระทบของ coding agent
- การปรากฏตัวของ เครื่องมือ coding agent อย่าง Claude Code ที่ออกในเดือนกุมภาพันธ์ 2025, OpenAI Codex CLI ที่ออกในเดือนเมษายน และ Gemini CLI ที่ออกในเดือนมิถุนายน ทำให้ประโยชน์ของ LLM ต่อปัญหาการเขียนโค้ดจริงเพิ่มขึ้นอย่างมาก
- เครื่องมือเหล่านี้ทำงานโดยแก้ไขโค้ดซ้ำ ๆ และทดสอบอย่างจริงจังจนกว่าจะบรรลุเป้าหมายที่กำหนด
- วิศวกรซอฟต์แวร์ที่มีประสบการณ์สูงและเชื่อถือได้กำลัง รันหลายเอเจนต์พร้อมกัน เพื่อจัดการหลายปัญหาแบบขนานและขยายขอบเขตของงาน
- ผู้เขียนเองตอนแรกก็สงสัย แต่หลังจากลองรัน parallel coding agent ด้วยตัวเองแล้วก็พบว่า แม้จะทำให้ล้าทางความคิด แต่ได้ผลอย่างน่าทึ่ง
- แม้คอลเลกชันส่วนใหญ่ใน tools.simonwillison.net จะถูกสร้างขึ้นด้วยแนวทาง vibe coding แบบดั้งเดิม แต่การทำงานวนซ้ำร่วมกับ coding agent เพื่อสร้าง โค้ดคุณภาพระดับ production ที่ดูแลรักษาได้ในอนาคต ให้ความรู้สึกว่าเป็นกระบวนการที่ต่างออกไปโดยสิ้นเชิง
แนวปฏิบัติด้านซอฟต์แวร์เอนจิเนียริงเดิมที่ LLM ช่วยเสริมพลัง
- การทดสอบอัตโนมัติ: หากมี test suite ที่แข็งแรง ครอบคลุม และเสถียร เครื่องมือ agent coding ก็จะทำงานได้อย่างรวดเร็ว แต่หากไม่มีการทดสอบ เอเจนต์อาจอ้างว่าทดสอบแล้วทั้งที่จริงไม่ได้ทดสอบ หรือการเปลี่ยนแปลงใหม่อาจไปทำให้ฟังก์ชันที่ไม่เกี่ยวข้องพังได้
- การพัฒนาแบบ test-first มีประสิทธิภาพเป็นพิเศษกับเอเจนต์ที่สามารถทำงานวนซ้ำในลูปได้
- การวางแผนล่วงหน้า: การเริ่มต้นด้วยแผนระดับสูงก่อนลงมือประกอบบางอย่างเข้าด้วยกันช่วยให้งานเดินได้ดีกว่ามาก และสิ่งนี้ยิ่งสำคัญขึ้นเมื่อทำงานกับเอเจนต์
- สามารถทำซ้ำแผนก่อน แล้วค่อยส่งต่อให้เอเจนต์ไปเขียนโค้ดได้
- เอกสารที่ครอบคลุม: เช่นเดียวกับโปรแกรมเมอร์มนุษย์ LLM ก็สามารถเก็บบริบทของ codebase ได้เพียงบางส่วนในแต่ละครั้ง หากมีเอกสารที่เกี่ยวข้องให้ ก็สามารถใช้ API ของส่วนอื่นได้โดยไม่ต้องอ่านโค้ดก่อน
- หากเขียนเอกสารที่ดีตั้งแต่แรก โมเดลก็อาจสร้าง implementation ที่สอดคล้องกับข้อมูลอินพุตนั้นได้โดยตรง
- นิสัยการควบคุมเวอร์ชันที่ดี: เมื่อ coding agent อาจเป็นผู้เปลี่ยนแปลงโค้ด ความสามารถในการย้อนความผิดพลาด และเข้าใจว่าสิ่งใดถูกเปลี่ยนเมื่อไรและอย่างไร ยิ่งสำคัญกว่าเดิม
- LLM เก่งเรื่อง Git มาก ถึงขั้นสามารถไล่ดูประวัติเพื่อตามหาต้นตอของบั๊กได้ด้วยตัวเอง และใช้
git bisectได้ดีกว่านักพัฒนาส่วนใหญ่
- LLM เก่งเรื่อง Git มาก ถึงขั้นสามารถไล่ดูประวัติเพื่อตามหาต้นตอของบั๊กได้ด้วยตัวเอง และใช้
- ระบบอัตโนมัติที่มีประสิทธิภาพ: continuous integration, การจัดรูปแบบและ linting อัตโนมัติ, รวมถึง continuous deployment ไปยังสภาพแวดล้อม preview ต่างก็ช่วยเครื่องมือ agent coding ได้เช่นกัน
- LLM ทำให้การเขียนสคริปต์อัตโนมัติแบบรวดเร็วเป็นเรื่องง่ายขึ้น ช่วยให้ทำงานเดิมซ้ำได้อย่างถูกต้องและสม่ำเสมอในครั้งถัดไป
- วัฒนธรรม code review: หากทำ code review ได้รวดเร็วและมีประสิทธิภาพ คุณจะมีประสบการณ์ที่ดีกว่ามากเมื่อทำงานกับ LLM
- ถ้าคุณอยากเขียนโค้ดเองมากกว่าตรวจทานสิ่งเดิมที่คนอื่น (หรือบางสิ่งบางอย่าง) เขียนไว้ เรื่องนี้ก็คงยาก
- เทคนิคการบริหารจัดการในรูปแบบที่ประหลาดมาก: การจะได้ผลลัพธ์ที่ดีจาก coding agent นั้นมีความคล้ายอย่างน่าอึดอัดกับการจะได้ผลลัพธ์ที่ดีจากผู้ร่วมงานที่เป็นมนุษย์
- ต้องให้คำสั่งที่ชัดเจน จัดให้มีบริบทที่จำเป็น และให้ feedback ที่นำไปลงมือทำได้กับผลงานที่ได้ออกมา
- เหตุผลที่ง่ายกว่าการทำงานกับคนจริงมาก ก็คือไม่ต้องกังวลว่าจะไปดูหมิ่นหรือทำให้พวกเขาท้อใจ แต่ประสบการณ์ด้านการบริหารจัดการที่มีอยู่เดิมกลับมีประโยชน์อย่างน่าประหลาด
- manual QA ที่ยอดเยี่ยมจริง ๆ: นอกเหนือจากการทดสอบอัตโนมัติแล้ว ยังต้อง เก่งมากในการทดสอบซอฟต์แวร์ด้วยมือ รวมถึงการคาดการณ์และเจาะลึก edge case
- ทักษะการวิจัยที่แข็งแกร่ง: ปัญหาการเขียนโค้ดหนึ่ง ๆ มักมีวิธีแก้ได้เป็นสิบแบบ การระบุตัวเลือกที่ดีที่สุดและพิสูจน์แนวทางนั้นเป็นสิ่งสำคัญมาโดยตลอด และยังคงเป็นอุปสรรคก่อนจะปล่อยเอเจนต์ไปเขียนโค้ดจริง
- ความสามารถในการ deploy ไปยังสภาพแวดล้อม preview: เมื่อเอเจนต์สร้างฟีเจอร์เสร็จ หากมีวิธี preview ฟีเจอร์นั้นได้อย่างปลอดภัย (โดยไม่ต้อง deploy ขึ้น production ทันที) การรีวิวก็จะมีประสิทธิภาพขึ้นมาก และลดความเสี่ยงในการปล่อยของพังออกไปอย่างมาก
- สัญชาตญาณว่าอะไรควร outsource ให้ AI และอะไรควรทำเองด้วยมือ: สิ่งนี้ยังคงพัฒนาไปเรื่อย ๆ ตามที่โมเดลและเครื่องมือมีประสิทธิภาพมากขึ้น
- ส่วนสำคัญของการทำงานกับ LLM อย่างมีประสิทธิภาพคือ การรักษาสัญชาตญาณที่แม่นยำว่าเมื่อใดมันเหมาะจะถูกนำมาใช้มากที่สุด
- ความสามารถในการประเมินเวลาที่อัปเดตแล้ว: การประเมินว่าโปรเจกต์จะใช้เวลานานเท่าไรเป็นหนึ่งในส่วนที่ยากที่สุดแต่สำคัญที่สุดของการเป็นวิศวกรอาวุโสมาโดยตลอด โดยเฉพาะในองค์กรที่การตัดสินใจด้านงบประมาณและกลยุทธ์ตั้งอยู่บนการประเมินเหล่านี้
- การเขียนโค้ดด้วย AI ทำให้เรื่องนี้ยากขึ้นไปอีก เพราะสิ่งที่เคยใช้เวลานานกลับเร็วขึ้นมาก แต่ตอนนี้การประเมินต้องพึ่งพาปัจจัยใหม่ที่เราทุกคนยังพยายามทำความเข้าใจ
แก่นแท้และความหมายของ vibe engineering
- หากต้องการใช้ความสามารถของเครื่องมือใหม่เหล่านี้อย่างแท้จริง จำเป็นต้อง ทำงานในระดับสูงสุดของเกมนี้ ซึ่งรวมถึง
- รับผิดชอบไม่ใช่แค่การเขียนโค้ด
- การวิจัยแนวทาง
- การตัดสินใจเชิงสถาปัตยกรรมระดับสูง
- การเขียนสเปก
- การกำหนดเกณฑ์ความสำเร็จ
- การออกแบบ agent loop
- การวางแผน QA
- การบริหารกองทัพของเด็กฝึกงานดิจิทัลประหลาดที่ชอบพยายามหลอกเมื่อมีโอกาส และเพิ่มจำนวนขึ้นเรื่อย ๆ
- รวมถึงการใช้เวลากับ code review อย่างมาก
- เกือบทั้งหมดนี้คือ คุณลักษณะที่เป็นของวิศวกรซอฟต์แวร์อาวุโสอยู่แล้ว
- เครื่องมือ AI ทำหน้าที่ ขยายศักยภาพของความเชี่ยวชาญเดิม และยิ่งคุณมีทักษะและประสบการณ์ในฐานะวิศวกรซอฟต์แวร์มากเท่าไร คุณก็ยิ่งทำงานกับ LLM และ coding agent เพื่อให้ได้ผลลัพธ์ที่เร็วและดีกว่าเดิมได้มากขึ้น
“Vibe engineering”, really? : ข้อคิดเกี่ยวกับการเลือกคำ
- ชื่อว่า "vibe engineering" ฟังดูงี่เง่าหรือไม่: ก็น่าจะใช่ และคำว่า "vibe" ในโลก AI ณ จุดนี้ก็ดูเริ่มน่าเหนื่อยหน่ายอยู่บ้าง ขณะที่ "vibe coding" เองก็ถูกใช้ในเชิงดูแคลนโดยนักพัฒนาหลายคน
- แต่ฉัน พร้อมจะทวงคำว่า vibe กลับมาใช้กับสิ่งที่สร้างสรรค์กว่าเดิม
- ฉันไม่เคยชอบการแบ่งแยกระหว่าง "coder" กับ "engineer" แบบประดิษฐ์ขึ้นมา เพราะมันให้ความรู้สึกเหมือนเป็นกำแพงกีดกันเล็ก ๆ เสมอ แต่ในกรณีนี้ กำแพงกีดกันเล็กน้อยนี่แหละคือสิ่งที่ต้องการอย่างพอดี
- vibe engineering สร้างเส้นแบ่งที่ชัดเจนจาก vibe coding และส่งสัญญาณว่านี่คือ อีกวิธีหนึ่งที่ต่างออกไป ยากกว่า และซับซ้อนกว่าของการทำงานกับเครื่องมือ AI เพื่อสร้างซอฟต์แวร์ production
- ฉันชอบที่มันอาจฟังดูทะลึ่งและชวนถกเถียง และพื้นที่ทั้งหมดนี้ก็ยังคงมีความไร้สาระอยู่หลายแบบ
- ระหว่างที่เรากำลังหาวิธีใช้เครื่องมือใหม่เหล่านี้ให้เกิดประสิทธิผลสูงสุด เราก็ไม่ควรจริงจังกับตัวเองมากเกินไป
- ก่อนหน้านี้ฉันเคยพยายามผลักดันคำอย่าง AI-assisted programming ให้ติด แต่แทบไม่ประสบความสำเร็จเลย ดังนั้นครั้งนี้การลองถูคำว่า vibe ดูแล้วดูว่าจะเกิดอะไรขึ้นก็คงไม่เสียหาย
- ฉันชอบความไม่เข้ากันอย่างชัดเจนระหว่างคำว่า "vibe" กับ "engineering" มาก และมันทำให้คำผสมนี้ มีความย้อนแย้งในตัวเองอย่างขี้เล่นและ (หวังว่า) จดจำได้ง่าย
4 ความคิดเห็น
เมื่อไม่นานมานี้ก็เหมือนเคยตั้งชื่อประมาณว่า “โค้ดอะไรนะ?” แล้วล้มเหลวมาแล้ว เท่าที่รู้ ดูเหมือนว่า
AI pair programmingจะเป็นคำที่เหมาะสมที่สุดนะครับการตั้งชื่อก็เพื่อจะได้อ้างว่า “ชื่อนี้ฉันเป็นคนคิด”
เคยมีคนเรียกมันว่า Augmented Coding แต่ก็หายไปอย่างรวดเร็ว
ความเห็นจาก Hacker News
/yoloให้ claude แล้วลองสั่งให้มันรันไปเลยแบบแทบไม่มีไกด์อะไรตั้งชื่อที่ไม่มีความหมาย;