ในการพัฒนาระบบงานนั้น
ถ้า requirement และ specification ของระบบไม่ชัดเจน
ถึงแม้จะใช้คน หรือ AI หรือ AI Agent ใด ๆ ก็ได้ผลไม่ตรงตามที่ต้องการแน่ ๆ
ดังนั้นสิ่งที่สำคัญคือ การสร้างความต้องการให้ชัดเจน ไม่คลุมเครือ
รวมทั้งไม่ใช่เอกสารที่เปลี่ยนแปลงไม่ได้
แต่ควรเป็นเอกสารที่มีชีวิต หรือ ปรับเปลี่ยนไปได้ตามสิ่งที่เปลี่ยนไปเสมอ
หรือ living documentation นั่นเอง

โดยในโลกของ AI as assist coding นั้น

การเขียน spec ให้ชัดเจนจึงเป็นสิ่งที่สำคัญมาก ๆ ไม่ใช่แค่เขียน prompt เท่านั้น
เช่น

  • Cursor เขียนใน MDC file อยู่ใน cursor rules
  • VSCode Copilot เขียนใน MD file ใน .github/instructions ได้
  • Kiro สร้างมาเพื่อสาย specification-driven development (SDD)
  • ใช้งาน Task master เพื่อสร้าง task list จาก product requirement documentation (PRD)

อีกแนวทางที่น่าสนใจคือ Spec-Kit จาก GitHub
มาลองใช้งานเล่นกัน

โดยแนวคิดของ Specification-driven development (SDD) นั้น

เพื่อลดปัญหาเดิม ๆ คือเขียน code ก่อน แล้วค่อยทำเอกสารตามหลัง
เปลี่ยนมาเขียน specification หรือ requirement ก่อน
แต่เป็นการเดาแบบมีหลักการ และ ที่มาที่ไปกว่าลงมือเขียน code เลย
น่าจะช่วยให้ผลที่ออกมาชัดเจนและตรงมากยิ่งขึ้น
และลดการดากเดา หรือการตีความต่าง ๆ ลงไป

ปล. ปกติเรามีขั้นตอนการพัฒนากันอย่างไรนะ ?

มาลองใช้งาน Spec-Kit กันหน่อยสิ ว่าทำตามแนวคิด SDD อย่างไร

มีขั้นตอนดังนี้

  • ทำการติดตั้งและสร้าง specification ขึ้นมา เพื่อเขียนและกำหนดรายละเอียดต่าง ๆ
  • ทำการสร้างและเขียน check list ต่าง ๆ ออก
  • ทำการแตก task ออกมา หรือการทำ planning (เพลน ต้องไม่นิ่งนะ สามารถปรับเปลี่ยนได้)
  • ทำการสร้าง code ตาม task ต่าง ๆ ต่อไป
  • โดยทุก ๆ ขั้นตอนจะต้องทำการ validate ก่อนเสมอ ว่าเป็นไปตาม checklist หรือ ความต้องการหรือไม่

มาเริ่มกันเลย (Specify -> Plan -> Task -> Implementation)

ขั้นตอนที่ 1 สร้าง project ขึ้นมาด้วย Spec-Kit ขึ้นมา

โดนสามารถเลือกได้ว่าจะใช้ AI Agent ตัวไหน

  • Copilot
  • Claude Code
  • Gemini CLI

จากนั้นทำการสร้างสิ่งต่าง ๆ เหล่านี้ขึ้นมาให้


ขั้นตอนที่ 2 ทำการเปิด project ที่สร้างขึ้นมาใน Text editor

เพื่อทำการแก้ไขพวก specification เพื่อเริ่มงานของเราได้เลย

ขั้นตอนการง่าย ๆ ทั้งการกำหนด spec, plan และ task breakdown เช่น

  • /specify Build web application to manage order in each shops in e-commerce system that can search by order id and display with paging (size =10)
  • /plan Create web application with Vite and react with minimal number of libraries and use vanilla HTML, CSS, and JavaScript as much as possible
  • /task

ตัวอย่างการใช้งาน

การสร้าง specification นั้น เมื่อสั่งไป จะทำการ run script ใน project ให้
และทำการสร้างไฟล์ spec.md ให้ ดังรูป

ไฟล์ Specification ที่ได้ ซึ่งเราต้องทำการ validate และเขียนเพิ่มเติมเข้าไป

สังเกตว่า มันคือการทำงานเหมือนเดิมเลย
ไม่ว่าใช้คน หรือ AI !!
ปกติเราทำกันไหมนะ !!

จากนั้นทำการ plan งาน ซึ่งเริ่มเป็น technical detail กัน

ซึ่งจะทำการ run script setup-plan.sh นั่นเอง
และจะอ่านข้อมูลจาก specification มาเพื่อทำการวางแผน
และจะมีการทำ research ให้ด้วย ว่าแต่ละ technology ที่จะใช้งานเป็นอย่างไร
ผลที่ได้อยู่ในไฟล์ plan.md และ research.md เป็นดังนี้

ไม่พอนะ ถ้าเป็นพวก REST API ก็จะทำการออกแบบ

  • Data model
  • Swagger/OpenAPI ให้อีกด้วย
  • ขั้นตอนการสร้าง project

เมื่อทุกอย่างเรียบร้อยก็ เข้าสู่การแตก task

โดยจะอ่านข้อมูลจากการวางแผนมานั่นเอง
จะได้ task ต่าง ๆ ออกมา

เมื่อได้ task เรียบร้อย ก็เข้าสู่ขั้นตอนการ implement
ซึ่งทำการ assign ให้คน หรือ AI Agent ทำก็ได้ต่อไป

Back-to-Basic ครับ เรื่อง requirement ต่าง ๆ มันควรชัดเจนเสมอ
ไม่ว่าจะให้คน หรือ AI Agent ทำให้
และควรต้องเปลี่ยนแปลงไปพร้อม ๆ กัน
และในแต่ละขั้นตอนจำเป็นต้องทำการ validate ด้วยคนเสมอ ว่าตรงตามที่ต้องการหรือไม่

Reference websites