AI Coding Agents ต้องการการทดสอบมากกว่า Prompt
ผมเขียนซอฟต์แวร์มา 25 ปีแล้ว เวิร์กโฟลว์ของผมเปลี่ยนไปในช่วงแปดเดือนที่ผ่านมามากกว่าตลอดทั้งอาชีพการทำงานของผมเสียอีก
เครื่องมือเขียนโค้ดด้วย AI เคยถูกใช้สำหรับงานเล็กๆ อย่างการ refactoring หรือการอธิบายข้อผิดพลาด การสร้างฟีเจอร์ขนาดใหญ่ด้วย AI เคยเป็นเรื่องที่น่าปวดหัว
แต่ตอนนี้สถานการณ์เปลี่ยนไปแล้ว เอเจนต์สมัยใหม่ทำงานตามลูปเฉพาะตัวดังนี้:
- อ่านโค้ด
- แก้ไขโค้ด
- รันคำสั่ง
- ดูว่าอะไรพัง
- แก้ไขมัน
- ทำซ้ำ
ลูปนี้ทรงพลังมาก แต่เอเจนต์ยังประสบปัญหาเรื่อง visual interfaces พวกมันไม่สามารถคลิกผ่าน UI เพื่อดูว่าปุ่มทำงานได้จริงหรือไม่ได้อย่างแม่นยำ
ผมจึงเปลี่ยนวิธีการทำงาน ผมสร้างฟีเจอร์ใหม่ๆ ให้สามารถทำงานผ่าน command line ได้ก่อนเป็นอันดับแรก
แทนที่จะสั่งให้เอเจนต์ "ดูหน้าจอนี้" ผมจะให้คำสั่งแทน:
npm run test:feature-xnode 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
