- antirez ให้นิยาม กระบวนการเขียนซอฟต์แวร์โดยใช้ AI ช่วย ว่าเป็น ‘Automatic Programming’ และคาดว่านี่จะกลายเป็นมาตรฐานของการพัฒนาซอฟต์แวร์ในไม่ช้า
- แม้จะใช้ LLM ตัวเดียวกัน แต่ สัญชาตญาณ การออกแบบ และการปรับทิศทางอย่างต่อเนื่องของมนุษย์ ก็ทำให้ผลลัพธ์แตกต่างกันได้มาก
- Vibe coding คือแนวทางที่ปล่อยให้ AI ทำงานไปโดยแทบไม่มีความเข้าใจเชิงลึก ขณะที่ Automatic Programming ตั้งอยู่บนพื้นฐานของ วิสัยทัศน์และการควบคุมที่ชัดเจนของนักพัฒนา
- โค้ดที่ AI สร้างขึ้นเองก็ยัง อาศัยข้อมูล pretraining และการตัดสินใจที่มนุษย์สั่งสมไว้ และความเป็นเจ้าของผลงานยังคงเป็นของนักพัฒนา
- แม้การเขียนโปรแกรมจะถูกทำให้เป็นอัตโนมัติมากขึ้นเรื่อย ๆ แต่ ไอเดียและวิสัยทัศน์ยังคงเป็นพื้นที่ของมนุษย์
นิยามแนวคิดของ Automatic Programming
- ตั้งชื่อกระบวนการเขียนซอฟต์แวร์ด้วยการสนับสนุนจาก AI ว่า Automatic Programming
- วิธีนี้จะกลายเป็นกระบวนการมาตรฐานของการพัฒนาซอฟต์แวร์ในเร็ว ๆ นี้
ความแตกต่างจาก Vibe Coding
- Vibe Coding คือการสร้างซอฟต์แวร์ด้วย AI โดยไม่เข้าไปมีส่วนร่วมในกระบวนการเลย
- หากอธิบายสิ่งที่ต้องการด้วยคำกว้าง ๆ มาก ๆ LLM ก็จะสร้างไอเดีย การออกแบบ หรือโค้ดชุดแรกที่ผุดขึ้นมาอย่างเป็นธรรมชาติ ตามข้อมูลที่มันเรียนรู้และการสุ่มตัวอย่างเฉพาะของการรันครั้งนั้น
- สิ่งที่ Vibe coder ทำได้มากที่สุดก็มักเป็นเพียงการรายงานว่าส่วนไหนไม่ทำงานหรือไม่ตรงกับที่คาดไว้
- Automatic Programming เป็นแนวทางที่มุ่งคุณภาพสูง และยึดตามวิสัยทัศน์ด้านซอฟต์แวร์ของผู้สร้างอย่างเคร่งครัด
- วิสัยทัศน์นี้มี หลายชั้น: ตั้งแต่วิธีทำงานบางอย่างอย่างแม่นยำ ไปจนถึงการสั่ง AI โดยตรงว่าควรเขียนฟังก์ชันหนึ่งอย่างไร
- องค์ประกอบสำคัญอีกอย่างคือ จะทำอะไร
ความสำคัญของปัจจัยมนุษย์
- แม้จะเป็น LLM ตัวเดียวกัน ผลลัพธ์ก็อาจต่างกันมากตาม สัญชาตญาณ การออกแบบ การปรับทิศทางอย่างต่อเนื่อง และไอเดียเกี่ยวกับซอฟต์แวร์ ของมนุษย์ที่เป็นผู้นำกระบวนการ
- คำพูดว่า "Claude ช่วย vibe coding ซอฟต์แวร์นี้ให้" จึงไม่ใช่การอธิบายที่เหมาะสม
- หากคุณรู้ว่าเกิดอะไรขึ้น และมีส่วนในกระบวนการผลิตซอฟต์แวร์จริง ๆ นั่นก็คือ ซอฟต์แวร์ที่คุณเป็นผู้สร้าง
มุมมองต่อความเป็นเจ้าของโค้ด
- ข้อมูล pretraining ไม่ใช่ส่วนเดียวที่ LLM ใช้เรียนรู้ (RL ก็มีสัดส่วนมากเช่นกัน) แต่สิ่งเหล่านั้นก็ล้วนเป็นสิ่งที่มนุษย์สร้างขึ้น
- ดังนั้นนี่จึงไม่ใช่การยึดเอาของอย่างอื่นมาใช้โดยเฉพาะเจาะจง
- เราสามารถเรียกโค้ดที่ AI สร้างว่าเป็น "ของเรา" ได้ และมีสิทธิ์ที่จะพูดเช่นนั้น
- pretraining คือ ของขวัญร่วมกันของส่วนรวม ที่ทำให้หลายคนสามารถทำสิ่งที่ลำพังคนเดียวไม่มีวันทำได้
- คล้ายกับการเชื่อมต่อกันผ่าน จิตสำนึกร่วมของส่วนรวม ในบางรูปแบบ
- โค้ดที่สร้างผ่าน Automatic Programming คือ โค้ดของคุณ ผลงานของคุณ และสิ่งที่คุณเป็นผู้ผลิต และคุณสามารถภูมิใจกับมันได้
กรณีของ Redis
- Redis ไม่ได้มีความน่าพิศวงทางเทคนิคมากนัก
- ในช่วงเริ่มต้น มันเป็นเพียง การรวมกันของโครงสร้างข้อมูลพื้นฐานและโค้ดเครือข่าย ที่โปรแกรมเมอร์สายระบบที่มีความสามารถคนใดก็เขียนได้
- ถึงอย่างนั้นมันก็กลายเป็นซอฟต์แวร์ที่มีประโยชน์มาก เพราะมี ไอเดียและวิสัยทัศน์ อยู่ภายใน
บทสรุป
- ตอนนี้การเขียนโปรแกรมถูกทำให้เป็นอัตโนมัติแล้ว แต่วิสัยทัศน์ยังไม่ถูกทำให้เป็นอัตโนมัติ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผมมีประสบการณ์ในวงการมากกว่า 30 ปี และช่วงนี้กำลังอินกับ การพัฒนาแบบขับเคลื่อนด้วยสเปก(spec-driven development) มาก
ผมใช้ Claude Code และ GPT-5.2(CoPilot) เพื่อสร้างข้อกำหนด แล้วขัดเกลาด้วยการทำ ทบทวนด้วยตนเอง(self-review) ซ้ำหลายรอบ
เมื่อได้สเปกที่สมบูรณ์แล้ว Claude Code ก็จะเขียนแผนการพัฒนาและโค้ดจากสเปกนั้น ทำให้ฟีเจอร์หลักเสร็จได้ภายใน 20 นาที
มันทำให้นึกถึง แนวทางวอเตอร์ฟอล สมัยทำงานในอุตสาหกรรมป้องกันประเทศ แต่รู้สึกว่าด้วย AI ตอนนี้เราสามารถใช้แนวทางแบบ “augmented cascade” ที่เร็วและขัดเกลามากกว่าเดิมได้
Agile เป็นการตอบสนองของบริษัทที่ทำแบบนั้นไม่ได้ และต้องรีบปล่อยผลิตภัณฑ์เพื่อความอยู่รอด
เลยสงสัยว่ามีตัวอย่างสเปกแบบเปิดเผยสาธารณะอะไรที่น่าอ้างอิงบ้างไหม สมัยก่อนคนรุ่นหนึ่งยกย่องโค้ด Quake ของ John Carmack ส่วนคนรุ่นต่อไปอาจจะยกย่องสเปกที่ยอดเยี่ยมก็ได้
เพราะมนุษย์ไม่สามารถคาดการณ์ความซับซ้อนและกรณียกเว้นทั้งหมดได้ พอลงมือทำจริงก็ต้องมีจุดที่คิดไม่ถึงโผล่มาแน่
ถ้าข้อกำหนดชัดเจนอยู่แล้ว ก็ไม่ได้จำเป็นนัก
เพียงแต่ต่างกันตรงที่ใช้ LLM แทนทีมย่อย
ข้อมูลอ้างอิงที่เกี่ยวข้อง: Design by Contract (Goodreads), PDF ต้นฉบับ
ผมไม่เห็นด้วยกับคำพูดที่ว่า “การฝึกสอนล่วงหน้า(pre-training) คือของขวัญร่วมกันจากมนุษยชาติ”
ถ้ามันเป็นของที่ขโมยมา ก็ไม่ใช่ของขวัญ
ต่อให้เป็นโค้ดที่ LLM สร้าง ถ้าผมเป็นคนรับผิดชอบและดูแลมัน ผมก็ถือว่านั่นคือโค้ดของผม
ปัญหาเกิดขึ้นตอนที่ผู้เขียน หลีกเลี่ยงความรับผิดชอบ
หลังจากลองใช้ Claude Code กับ Opus 4.5 ผมก็มาถึงข้อสรุปคล้ายกัน
ผมเรียกมันว่า “zen coding” คือดูแล codebase เหมือนสวนเซน วางสเปกอย่างละเอียดและรีวิวทีละบรรทัด
AI ควรทำงานเป็น เครื่องมือ ไม่ใช่นักออกแบบ
คนที่มีสเปกชัดเจนจะได้โค้ดคุณภาพสูงกว่าจาก AI อย่างมาก
Vibe coding คือการทดลองตามสัญชาตญาณ ส่วน Zen coding คือการฝึกฝนของช่างฝีมือ
เวลาได้ยินคำพูดทำนองว่า “Claude ให้มา” ผมมักมีลางสังหรณ์ว่านั่นยังเป็น โค้ดที่มีกลิ่นอายแบบร่างแรก
อย่าโทษเครื่องมือหรือเอาแต่ขอโทษ แค่ทำให้ผลลัพธ์ดีขึ้นก็พอ
ผมรู้สึกไม่สบายใจกับคำว่า “การฝึกสอนล่วงหน้าเป็นของขวัญจากมนุษยชาติ”
นักพัฒนาโอเพนซอร์สจำนวนมากไม่ได้ต้องการให้โค้ดของตนถูกใช้ฝึก LLM
โค้ดที่ LLM สร้างขึ้นบางส่วนที่ผมเคยเห็น แทบจะคัดลอก โค้ดจากหนังสือหรือบล็อก มาตรง ๆ
อย่างน้อยที่สุดก็ควรระบุที่มาเพื่อความเหมาะสม
ถ้านำโค้ด GPL ไปฝึก LLM ก็อาจตีความได้ว่าผลลัพธ์ที่ออกมาก็ควรถูกเผยแพร่ภายใต้ GPL ด้วย
เช่น Kafka เคยขอให้เผาต้นฉบับของตัวเองทิ้ง แต่ตอนนี้กลับกลายเป็นวรรณกรรมคลาสสิก
“automatic programming” ในช่วงทศวรรษ 1950~60 แท้จริงแล้วหมายถึงคอมไพเลอร์
ส่วน 4GL ในยุค 1980 คือภาษาระดับสูงเฉพาะโดเมน และ LLM ในปัจจุบันก็ยังอยู่ในขั้นของการสร้างแบบร่างจากสเปกภาษาธรรมชาติ
ท้ายที่สุดมนุษย์ก็ยังต้องยกระดับความสมบูรณ์ผ่าน การแก้ไขซ้ำและการเปลี่ยนแบบการออกแบบ อยู่ดี
ตอนนี้เราอาจกำลังมองดูคนรุ่นสุดท้ายของ นักพัฒนาระดับช่างฝีมือ(artisanal coder) อยู่ก็ได้
ช่างฝีมืออย่าง Antirez จัดการกับแนวคิดที่ก้าวข้ามขีดจำกัดของมนุษย์ และสร้าง ซอฟต์แวร์ที่เรียบง่ายแต่สวยงามอย่าง Redis ขึ้นมา
AI สร้างโค้ดได้เร็วในระดับที่มนุษย์ทำไม่ได้ แต่ก็ไม่ใช่พู่กันกับผืนผ้าใบ
คนรุ่นใหม่จะกลายเป็นช่างฝีมือในแบบที่ต่างออกไปโดยสิ้นเชิง
ผมเองก็กลัวเหมือนกัน แต่ก็ยอมรับเครื่องมือใหม่เหล่านี้และกำลังทดลองกับ ยุคใหม่ของงานช่างฝีมือ
เพียงแค่มีทักษะในการใช้งาน AI เพิ่มเข้ามา ไม่ได้หมายความว่าความรู้เดิมจะหมดความจำเป็น
ในบทความของ Antirez การแยกความต่างระหว่าง “vibe coding กับ automatic programming” อย่างชัดเจนนั้นน่าประทับใจ
มันคล้ายกับการเปลี่ยนผ่านจากยุคที่สถาปนิกวาดแบบด้วยมือ ไปสู่ BIM, CAD
สำหรับนักพัฒนาในยุค AI นี่ไม่ใช่ว่าเขียนโค้ดน้อยลง แต่เป็น จุดโฟกัสของคุณค่าได้เปลี่ยนไป
“vibe coding vs automatic coding” ไม่ใช่ การแบ่งขั้วแบบสองทาง แต่เป็นสเปกตรัม
แม้แต่ในโปรเจกต์เดียวก็สามารถผสมหลายระดับของแนวทางเข้าด้วยกันได้
สิ่งสำคัญคือท่าทีในการใช้เครื่องมืออย่าง วิพากษ์วิจารณ์ และปรับปรุงมันอย่างต่อเนื่อง
บางคนเรียกสิ่งนี้ว่า “spec strumming”