Vibe Coding ไม่ใช่ปัญหา แต่การไม่เข้าใจ Stack ต่างหากที่เป็นปัญหา

ครั้งหนึ่ง เครื่องมือ AI เคยส่งไฟล์คอนฟิกนี้มาให้ผม: DATABASE_URL = "postgresql://admin:SuperSecret123@db.internal:5432/app" API_KEY = "sk-live-4f9a..."

มันใช้งานได้ นั่นแหละคือกับดัก เดโมรันผ่านและผู้ตรวจก็พยักหน้าเห็นด้วย แต่ความลับนั้นจะอยู่ใน git history ของคุณตลอดไป ใครก็ตามที่เข้ามาใน repo ของคุณสามารถเห็นมันได้

ผมไม่ใช่เดเวลอปเปอร์ ผมใช้เวลา 20 ปีในสายงานวิศวกรรมระบบ (systems engineering) ผมสร้างรากฐานที่แอปพลิเคชันทำงาน ผมสร้างโฮสต์ เครือข่าย และฐานข้อมูล

เมื่อผมใช้เครื่องมือ AI ผมไม่พลาดเหมือนคนอื่น และนี่คือเหตุผล

Andrej Karpathy เคยพูดถึง "vibe coding" สำหรับโปรเจกต์ที่ทำเล่นๆ แล้วทิ้งไป (throwaway projects) แต่บางคนกลับทำเกินเลยไปไกล พวกเขาเลิกดูโค้ด และตอนนี้พวกเขาก็เลิกดูระบบด้วย คุณอาจจะมองข้ามโค้ดได้ แต่คุณมองข้ามระบบไม่ได้ เพราะระบบคือสิ่งที่ทำงานจริงๆ

ผมมักจะปฏิเสธคำแนะนำของ AI เพราะโมเดลขาดบริบทด้านการปฏิบัติงาน (operational context):

  • Operating Systems: AI อาจแนะนำ Windows สำหรับแอปพลิเคชันด้านความปลอดภัย แต่มันมองข้ามเรื่องค่าลิขสิทธิ์ การใช้ Ubuntu ฟรีๆ ก็ทำงานได้เหมือนกันในราคาที่ถูกกว่า
  • Databases: AI อาจเลือก MySQL แต่มันไม่รู้ว่าเอนจินตัวไหนที่ผมจะสามารถจัดการได้ตอนตี 2 ในอีกหนึ่งปีข้างหน้า
  • Security: AI จะหยุดอยู่แค่ตรงที่ "ล็อกอินได้" แต่ความปลอดภัยที่แท้จริงต้องมีการเข้าถึงแบบมีเงื่อนไข (conditional access) และอุปกรณ์ที่เชื่อถือได้ (trusted devices) ซึ่งคุณไม่สามารถหาเรื่องพวกนี้ได้จากการใช้แค่ vibes
  • Networking: AI มักจะแนะนำให้เปิดพอร์ตสู่โลกอินเทอร์เน็ตทั้งหมด แต่ผมจะจำกัดการเข้าถึงเฉพาะเครือข่ายการจัดการ (management networks) ที่กำหนดไว้เท่านั้น

AI มองว่าเครือข่ายเป็นปัญหาของคนอื่น แต่มันไม่ใช่

วิธีแก้ปัญหาการเขียนความลับลงในโค้ดโดยตรง (hardcoded secrets) นั้นง่ายมาก แค่ใช้ environment variables: import os DATABASE_URL = os.environ["DATABASE_URL"]

โมเดลจะใส่ความลับลงในไฟล์ของคุณโดยตรง เว้นแต่คุณจะสั่งหยุดมัน

เหล่า Vibe coders ล้มเหลวเพราะพวกเขาคิดว่าโค้ดของแอปพลิเคชันคือระบบทั้งหมด แต่มันไม่ใช่ แอปพลิเคชันเป็นเพียงชั้นหนึ่งของอาคารเท่านั้น หากคุณไม่ได้เทฐานรากไว้ อาคารก็จะพังทลายลงมา

เมื่อผมใช้ AI ผมจะไม่เริ่มด้วยคำว่า "สร้าง X ให้หน่อย" เพราะนั่นจะทำให้ได้แค่เดโมที่พังเมื่อใช้งานจริง (production) ผมจะใช้เวลา 30 นาทีแรกในการพูดคุยถึงข้อจำกัด (constraints) และการแลกเปลี่ยน (tradeoffs) ก่อน จากนั้นผมจะให้โมเดลเขียนข้อกำหนด (spec) ตามตรรกะนั้น วิธีนี้จะช่วยป้องกันการต้องมาตามแก้ปัญหาหลายชั่วโมงในภายหลัง

ปัญหาไม่ใช่ที่เครื่องมือ แต่ปัญหาคือการเปลี่ยนแปลงโดยไม่ดูว่ามันไปกระทบกับอะไรบ้าง หากคุณเข้าใจรากฐาน การทำตาม vibes ก็เป็นเรื่องที่ปลอดภัย

เส้นแบ่งไม่ได้อยู่ที่ว่าคุณพิมพ์โค้ดมากแค่ไหน แต่อยู่ที่ว่าคุณเข้าใจสิ่งที่โค้ดของคุณวางอยู่บนนั้นหรือไม่

อะไรคือสิ่งที่คุณต้องคอยแก้ (override) อยู่เสมอ เพราะโมเดลทำผิดพลาดทุกครั้ง?

ที่มา: https://dev.to/kkierii/vibe-coding-isnt-the-problem-not-understanding-the-stack-is-4kif

ชุมชนแห่งการเรียนรู้ (เลือกเข้าร่วมได้): https://t.me/GyaanSetuAi