- ช่วงหลังมานี้คำพูดของ Andrej Karpathy กลายเป็นประเด็นร้อน: "ปล่อยตัวไปกับ Vibe, ยอมรับการเติบโตแบบทวีคูณ, และลืมไปเสียด้วยซ้ำว่ามีโค้ดอยู่"
- "Vibe Coding" หมายถึงแนวโน้มในการมอบหมายการแก้ปัญหาให้เครื่องมือ AI โดยไม่มีแผนที่ชัดเจนหรือไม่ต้องเขียนโค้ดเอง
- ผ่านเอเจนต์ LLM (Large Language Model) ผู้ใช้สามารถสั่งงานด้วยภาษาธรรมชาติให้สร้างและแก้ไขโค้ดได้
- 2022: สามารถคัดลอกและแก้ไขโค้ดใน ChatGPT ได้
- 2023: สามารถรีวิวและแก้ไขโค้ดใน Copilot ที่ผสานเข้ากับ IDE ได้
- 2024~2025: สามารถแก้ไขหลายไฟล์ในโปรเจกต์ รวมถึงทดสอบและแก้ไขได้ด้วยตัวเอง
วิธีการทำงานของ "Vibe Coding"
- ทั้งผู้ใช้สายเทคนิคและไม่ใช่สายเทคนิคสามารถตั้งค่าโปรเจกต์ผ่านเอเจนต์ที่อิงกับ LLM ได้
- สามารถสร้างเว็บไซต์หรือแอปได้ด้วยคำสั่งง่ายๆ (เช่น "สร้างเว็บไซต์สกีรีสอร์ต")
- หลังตั้งค่าเริ่มต้นแล้ว สามารถแก้ไขและทดสอบอัตโนมัติได้
-
ตัวอย่าง:
- Cursor, GitHub Copilot Agent Mode เป็นต้น สามารถแก้ไขไฟล์และรันคำสั่งได้
- ทำการแก้ไขและทดสอบอัตโนมัติ → แต่อาจเกิดข้อผิดพลาดจากความไม่สอดคล้องกัน
ปัญหาเรื่องความเป็นอิสระของเอเจนต์
- เอเจนต์สามารถทำงานได้โดยอัตโนมัติ แต่ยังไม่ใช่ความเป็นอิสระอย่างสมบูรณ์
- หากรันโดยไม่มีการอนุมัติจากผู้ใช้ อาจเกิดความเสี่ยงได้ (เช่น รันคำสั่งในโหมด YOLO)
- อาจเกิดปัญหาเรื่องคุณภาพและความถูกต้องของโค้ด
-
ปัญหาหลัก:
- ใช้โค้ดเดิมซ้ำไม่สำเร็จ → สร้างคอมโพเนนต์เดิมซ้ำหลายครั้ง
- พยายามรัน logic ฝั่งเซิร์ฟเวอร์บนฝั่งไคลเอนต์
- เกิดข้อผิดพลาดหลังแก้โค้ดผิด → และแก้ต่อไม่สำเร็จ
- เขียน unit test ไม่สำเร็จ หรือทำโค้ดพัง
ข้อจำกัดในโลกความเป็นจริง
- โมเดลอย่าง Claude 3.7 Sonnet ยังไม่สามารถก้าวข้ามข้อจำกัดของข้อมูลฝึกได้
- หากหลุดบริบทใน codebase ก็ไม่สามารถแก้ไขได้อย่างสอดคล้อง
- เมื่อขนาดโค้ดใหญ่ขึ้น ประสิทธิภาพจะลดลงและไม่สามารถรักษาบริบทไว้ได้
- หากเกินขนาด context window ของ LLM จะเกิดปัญหาความสอดคล้องกัน
-
ตัวอย่างปัญหาแบบเจาะจง:
- คัดลอก TypeScript interface ซ้ำ
- รัน logic ฝั่งเซิร์ฟเวอร์บนฝั่งไคลเอนต์
- แก้ไขคอมโพเนนต์ที่ซ้ำกันไม่สำเร็จ
- เขียน unit test ไม่สำเร็จ
- หลัง refactor โค้ดแล้วแก้ข้อผิดพลาดไม่สำเร็จ
ความพยายามในการแก้ปัญหา
- Claude Plays Pokémon: เอเจนต์โต้ตอบแบบเรียลไทม์และเล่นเกมได้
- แต่ล้มเหลวในการคงหน่วยความจำและแก้ข้อผิดพลาดซ้ำๆ
- สร้างความทรงจำระยะยาวไม่สำเร็จ → ทำให้เกิดข้อผิดพลาดต่อเนื่อง
-
ความเป็นไปได้ในการปรับปรุง:
- จำเป็นต้องปรับปรุง MCP(Model Context Protocol) และการจัดการหน่วยความจำ
- เมื่อแก้โค้ด LLM ต้องสะท้อนการแก้ไขก่อนหน้าได้อย่างถูกต้อง
- จำเป็นต้องเก็บรักษาความทรงจำเฉพาะโดเมนและประวัติงาน
บทสรุป
- "Vibe Coding" อาจไปได้ถึง 80% ในการทำแนวคิดเชิงฟังก์ชันให้ใช้งานได้จริง แต่หากต้องการสร้างผลิตภัณฑ์ที่เชื่อถือได้และปลอดภัย ยังต้องอาศัยความพยายามของมนุษย์ที่มีประสบการณ์
- AI agent ช่วยให้ผู้มีทักษะสามารถสร้างสิ่งต่างๆ ได้มากขึ้นอย่างอิสระ แต่ไม่อาจแทนที่คนที่แก้ปัญหายากๆ ซึ่งต้องอาศัยประสบการณ์และสัญชาตญาณได้
- ในระดับปัจจุบัน "Vibe Coding" ยังยากที่จะนำไปสู่ผลิตภัณฑ์ที่มีประโยชน์จริง และยังจำเป็นต้องมีความช่วยเหลือจากนักพัฒนาที่มีทักษะ
- "Vibe Coding" เป็นเพียงเครื่องมือช่วยในการเขียนโค้ด ไม่ใช่วิธีทดแทนอย่างสมบูรณ์
9 ความคิดเห็น
คำว่า "ระดับปัจจุบัน" สะดุดตาผมอยู่ ไม่ใช่ว่าเรากำลังมอง LLM ด้วยกรอบแนวคิดเรื่องเวลาของมนุษย์กันอยู่หรอกหรือ?
สิ่งที่รู้สึกได้ระหว่างเขียนโค้ดกับ AI คือ ต่อให้ให้โค้ดกับ AI ไปแค่บางส่วน ถ้าเราแยกหน่วยงานในลักษณะตามหลักความรับผิดชอบเดียว + ความรู้สึกแบบ TDD จนมันเข้าใจบริบทได้ ก็ต้องจัดให้แม้ไม่ต้องอ่านบริบทใหญ่ทั้งหมด แต่แค่บริบทของส่วนนั้นก็เพียงพอให้จับประเด็นได้
ผมใช้ AI กับงานอดิเรกมากที่สุดในการทำเว็บเกม และก็เห็นด้วยครับ พอขนาดงานใหญ่เกินระดับหนึ่งไป จะมีช่วงที่ AI เหมือนเสียสมาธิหรือโฟกัสตกลงอย่างเห็นได้ชัด ผมเลยใช้มันในลักษณะนี้: รวมโครงสร้างทั้งต้นไม้ภายในเกมกับซอร์สโค้ดทั้งหมดเป็นไฟล์เดียวพร้อม TOC จากนั้นสร้างเธรดใหม่ อัปโหลดไฟล์นั้น แล้วทำงานต่อจากตรงนั้น และเวลาถาม ผมจะระบุชื่อโปรเจกต์ปัจจุบันให้ชัดเจนเสมอพร้อมขอให้มันตอบตามนั้น ถึงอย่างนั้นก็ยังมีบางส่วนที่ยังไม่ค่อยน่าพอใจอยู่บ้าง... แต่ผมพอใจมากกับการที่สามารถทำงานอดิเรกซึ่งเมื่อก่อนเพราะยุ่งกับชีวิตจริงจนไม่กล้าแม้แต่จะเริ่ม ให้ค่อย ๆ เสร็จสมบูรณ์ได้ในเวลาที่ค่อนข้างสั้น
แพตเทิร์นที่ทำแบบคร่าวๆ ก่อน แล้วค่อยมาเก็บรายละเอียดที่เหลือทีหลังนี่ดีมากจริงๆ
แม้จะลองหลายอย่าง แต่ข้อจำกัดด้านความจำก็ชัดเจนอยู่แล้ว เหมาะในระดับ PoC ดี ในแง่ของการดูความเป็นไปได้/การใช้งานอย่างรวดเร็วก็ถือว่าดี
แต่ปัญหาคือยิ่งต้องการผู้มีประสบการณ์มากขึ้นไปอีก
เมื่อมองว่าเวลาส่วนใหญ่ในการเขียนโค้ดหมดไปกับการดีบักและการอ่านโค้ด ผมคิดว่านี่เป็นการพูดเกินจริงไปมาก คนที่สร้าง AI ต่างก็พูดในทำนองนี้กันหมด แต่ถ้าดูอย่างน้อยจากสถานการณ์ตอนนี้ ก็ดูเหมือนจะยังไม่เป็นแบบนั้น ถ้าไปถึงจุดที่ไม่ต้องใช้แรงคนเลยจริง ๆ จะยังจำเป็นต้องเขียนโค้ดอยู่หรือเปล่า? แค่ใส่คำอธิบาย API แล้วใช้ LLM เป็นแบ็กเอนด์ไปเลยน่าจะดีกว่า
ในทางปฏิบัติก็มักตั้งค่าสคีมาแล้วรับมาใช้กันเยอะแบบนั้นครับ
เห็นด้วยครับ/ค่ะ ช่วงแรกมันแสดงให้เห็นความเร็วในการพัฒนาที่แทบจะมหัศจรรย์ แต่ยิ่งสเกลใหญ่ขึ้นและมีไฟล์มากขึ้น หากผู้ที่รับผิดชอบในการดูแลจัดการมันอย่างมีประสิทธิภาพไม่ได้ (ในที่นี้คือมนุษย์) สุดท้ายก็จะได้เพียงผลลัพธ์ที่ตัวใหญ่เทอะทะและเต็มไปด้วยข้อผิดพลาดเท่านั้น ถ้าปล่อยไปจนถึงขั้นที่แก้ไขอะไรไม่ได้แล้ว ก็มีแต่จะสิ้นเปลืองเครดิต (Windsurf) หรือรีเควสต์ (Cursor) ไปเปล่า ๆ มันจะค่อย ๆ ดีขึ้นแน่นอน แต่ตอนนี้ยังไม่ควรเชื่อถือโค้ดจาก AI แบบ 100%
ความคิดเห็นบน Hacker News
ความต่างใหญ่ระหว่าง "AI ที่ถูกโหมเกินจริง vs. ความเป็นจริง" อยู่ที่ตัวเลขด้านประสิทธิภาพที่ผู้คนชอบพูดถึงกัน ตัวอย่างเช่น พาร์ตเนอร์ของ YC อ้างคำกล่าวของบริษัทหนึ่งที่บอกว่าประสิทธิภาพการเขียนโค้ด "เร็วขึ้น 100 เท่า" คำกล่าวแบบนี้ถ้าเป็นจริงคนนอกก็น่าจะมองเห็นได้ชัด จึงไม่ควรต้องพึ่งการรายงานด้วยตัวเอง
ตอนนี้เรากำลังตามกระแสการจ้างงานเอาต์ซอร์ส ด้วยคำกล่าวเกินจริงทั้งหมดนั้น ความจริงกลับต่างออกไป การถกเถียงเรื่องเอเจนต์เขียนโค้ดแบบ LLM ก็แยกความต่างได้ยาก
มันก็เหมือนกับที่ชุมชน Go เคยบอกว่าคอมพิวเตอร์ไม่มีทางชนะผู้เล่น Go ที่เป็นมนุษย์ได้ ตอนนี้มีตัวอย่างของโมเดลที่หาวิธี sort ที่มีประสิทธิภาพดีกว่าเดิมได้แล้ว ถ้าให้แรงจูงใจและเวลาที่เหมาะสม คอมพิวเตอร์ก็จะชนะพวกเรา
แชร์ปัญหาใหม่เกี่ยวกับ coding LLM นักพัฒนานอกประเทศถูกรวมเข้ากับทีมอย่างสมบูรณ์แล้ว แต่การใช้ LLM เป็นไปอย่างสะเปะสะปะและไร้การควบคุม จน pull request ที่ส่งเข้ามากลายเป็นฝันร้าย
"Vibe Coding" อาจทำให้คอนเซปต์เสร็จได้ 80% แต่การจะสร้างสิ่งที่เชื่อถือได้ ปลอดภัย และมีคุณค่านั้น ยังต้องการมนุษย์ที่มีประสบการณ์
ไม่นานมานี้มีการลองใช้ Claude และ OpenAI o3-mini เพื่อแปลงโค้ด Matlab เป็น Python แต่ผลลัพธ์แย่มาก แทบทุกบรรทัดสำคัญมีข้อผิดพลาด นี่เป็นงานที่ควรถูกทำให้อัตโนมัติได้ แต่กลับล้มเหลว
การทำ "Vibe-TDDing" ยังดีกว่าไม่มีเทสต์เลย ถ้ามีความเข้าใจทั้งเรื่องการเขียนโค้ดและการทดสอบ ก็สามารถใช้ LLM เพื่อลดผลกระทบเชิงลบภายนอกได้
หลังจากแชร์วิธีสร้าง SaaS ก็เกิดเรื่องแปลกขึ้น การใช้ API key พุ่งถึงขีดสูงสุด มีการเลี่ยงระบบสมัครสมาชิก และมีข้อมูลสุ่ม ๆ ถูกสร้างใน DB นี่อาจเป็นการปั่นเล่น
เห็นวิศวกรจำนวนมากประเมินความสามารถและประสิทธิภาพของเครื่องมือเขียนโค้ดด้วย AI ต่ำเกินไป เลยยิ่งรู้สึกมั่นคงกับงานของตัวเอง จะไม่เลิกใช้ Cursor แน่นอน