AI Coding Agents ต้องการการทดสอบมากกว่า Prompt

ผมเขียนซอฟต์แวร์มา 25 ปีแล้ว เวิร์กโฟลว์ของผมเปลี่ยนไปในช่วงแปดเดือนที่ผ่านมามากกว่าตลอดทั้งอาชีพการทำงานของผมเสียอีก

เครื่องมือเขียนโค้ดด้วย AI เคยถูกใช้สำหรับงานเล็กๆ อย่างการ refactoring หรือการอธิบายข้อผิดพลาด การสร้างฟีเจอร์ขนาดใหญ่ด้วย AI เคยเป็นเรื่องที่น่าปวดหัว

แต่ตอนนี้สถานการณ์เปลี่ยนไปแล้ว เอเจนต์สมัยใหม่ทำงานตามลูปเฉพาะตัวดังนี้:

  • อ่านโค้ด
  • แก้ไขโค้ด
  • รันคำสั่ง
  • ดูว่าอะไรพัง
  • แก้ไขมัน
  • ทำซ้ำ

ลูปนี้ทรงพลังมาก แต่เอเจนต์ยังประสบปัญหาเรื่อง visual interfaces พวกมันไม่สามารถคลิกผ่าน UI เพื่อดูว่าปุ่มทำงานได้จริงหรือไม่ได้อย่างแม่นยำ

ผมจึงเปลี่ยนวิธีการทำงาน ผมสร้างฟีเจอร์ใหม่ๆ ให้สามารถทำงานผ่าน command line ได้ก่อนเป็นอันดับแรก

แทนที่จะสั่งให้เอเจนต์ "ดูหน้าจอนี้" ผมจะให้คำสั่งแทน:

  • npm run test:feature-x
  • node scripts/run-new-feature-client.js

เอเจนต์ชอบคำสั่ง เพราะมันทำให้พวกมันมี executable feedback loop

เวิร์กโฟลว์ปัจจุบันของผมเป็นแบบนี้:

  • วางแผนฟีเจอร์ในไฟล์ Markdown
  • สร้าง test client หรือ unit test
  • กำหนด test cases ให้ชัดเจน
  • ให้เอเจนต์ implement ฟีเจอร์นั้น
  • ให้เอเจนต์รันการทดสอบซ้ำๆ
  • ตรวจสอบผลลัพธ์

คำเตือน: ถ้าคุณสั่งให้เอเจนต์ "ทำให้การทดสอบทั้งหมดผ่าน" มันจะทำตามนั้น และมันอาจจะก่อ "อาชญากรรมทางวิศวกรรมซอฟต์แวร์" เพื่อให้สำเร็จ เช่น เขียนเทสต์ที่อ่อนแอ หรือใช้บล็อก try/catch เพื่อซ่อนข้อผิดพลาด เพียงเพื่อให้ข้อความแจ้งเตือนความล้มเหลวหยุดลง

นี่คือเหตุผลว่าทำไมการกำหนดการทดสอบ (test definition) จึงเป็นงานที่ผมต้องทำด้วยตัวเองที่สำคัญที่สุด คุณต้องตั้งคำถามว่า:

  • การทดสอบนี้สะท้อนถึงกรณีการใช้งานจริงหรือไม่?
  • มันจะตรวจจับ regression ที่เกิดขึ้นจริงได้ไหม?
  • มันแคบเกินไปหรือเปล่า?

ในยุคของ AI, Test-Driven Development (TDD) ไม่ได้เป็นเพียงตาข่ายนิรภัย แต่มันคือพวงมาลัยควบคุม หากไม่มีการทดสอบ เอเจนต์จะสร้างโค้ดที่ดูเหมือนจะถูกต้องขึ้นมา แต่ถ้ามีการทดสอบที่ดี เอเจนต์จะมีเป้าหมายที่วัดผลได้

เคล็ดลับเพิ่มเติม: ใช้ไฟล์ที่มีโครงสร้างสำหรับผลลัพธ์การทดสอบ แทนที่จะเท log ขนาดใหญ่ลงในแชท ให้เขียนสคริปต์ของคุณให้บันทึกลงในไฟล์ JSON หรือ Markdown ในโฟลเดอร์แทน

วิธีนี้ช่วยเพราะ:

  • เอเจนต์สามารถกระโดดไปยังข้อมูลที่เกี่ยวข้องได้ทันที
  • Context ยังคงมีขนาดเล็ก
  • การใช้ token ลดลง
  • ช่วยประหยัดเงิน

AI agents ไม่ได้มาแทนที่นักพัฒนา แต่พวกมันเปลี่ยนจุดโฟกัสของเรา เราใช้เวลาในการพิมพ์โค้ดน้อยลง และใช้เวลามากขึ้นกับ:

  • การอธิบายปัญหาให้ชัดเจน
  • การสร้าง feedback loops
  • การกำหนดการทดสอบที่มีคุณภาพ
  • การตรวจสอบ architecture

อนาคตของการพัฒนาด้วย AI ไม่ได้เป็นของคนที่เขียน prompt ได้ดีที่สุด แต่เป็นของคนที่สร้าง feedback loops ได้ดีที่สุดต่างหาก

Source: https://dev.to/stoefln6/ai-coding-agents-need-tests-more-than-prompts-11pm

Optional learning community: https://t.me/GyaanSetuAi