สารบัญ
ตอนที่แล้ว ถามก่อนว่าใครอยากได้ เราได้หน้า requirement หน้าเดียว
ตอนนี้เราจะได้แผนออกแบบหน้าเดียว
ตอนหน้าเราจะเปลี่ยนแผนนี้เป็นกฎที่ agent ต้องทำตาม
ทุกบทความในซีรีส์นี้มาจากการที่ผมคุยกับ AI แล้วค้นข้อมูลเพิ่มเติม ผมเป็นคนกำหนดทิศทาง ให้ AI ช่วยสรุป วิเคราะห์ และเรียบเรียงออกมาเป็นบทความครับ
เราอยู่ตรงไหนของแผนที่

ขั้นที่ 2 จาก 5 คือ Design
ชิ้นจิ๊กซอว์ของตอนนี้คือเรื่องที่ 3 บนแผนที่ ออกแบบ เลือก stack และ spec อยู่ในวงสร้าง
ทำไมสำคัญ
อะไรที่เราไม่ตัดสินใจ agent จะตัดสินใจแทน ด้วยค่าตั้งต้นของมันเอง
Amplifying ทำ การศึกษา ว่า Claude Code เลือกเครื่องมืออะไรเมื่อปล่อยให้มันเลือก ในรายงานเขียนไว้ว่า
“The tool it picks is the tool that ships.”
และ “Your default stack is increasingly shaped by what the agent knows, not what you researched.”
ถ้ามี agent สองตัว ก็อาจได้ค่าตั้งต้นสองแบบ
แผนออกแบบของตอนนี้ตอบแค่ 3 คำถาม
- ข้อมูลหน้าตาแบบไหน
- ใช้เครื่องมืออะไร เพราะอะไร
- ส่วนกลางไหนห้ามเปลี่ยนตามใจ
05/03 ของต้น
ต้นได้ requirement มาแล้ว ระบบจองคิวร้านตัดผม
สัปดาห์นั้นเขาเสียไปหนึ่งคืนกับการถาม X ว่าใช้ stack อะไรดี ได้สิบคำตอบ (ตัวอย่าง)
สุดท้ายเลยเปิด agent สองตัวทำพร้อมกัน
agent A ทำฟอร์มจอง เก็บวันที่เป็น dd/mm
agent B ทำระบบเตือน อ่านวันที่เป็น mm/dd
รวมงานแล้ว 05/03 กลายเป็นสองวัน ฝั่งหนึ่งคือ 5 มีนาคม อีกฝั่งคือ 3 พฤษภาคม
ลูกค้าคนหนึ่งได้ข้อความเตือนช้าไปสองเดือน (ตัวอย่าง) 555+
ไม่มี agent ตัวไหนเขียน code ผิดตามที่ตัวเองเข้าใจ
บั๊กนี้ไม่ได้อยู่ใน code ของใคร มันอยู่ในช่องว่างที่ไม่มีใครตัดสินใจ

ข้อมูลหน้าตาแบบไหน?
เริ่มจากของชิ้นเดียวที่สำคัญที่สุดในระบบ สำหรับต้นคือการจองหนึ่งครั้ง
การจองหนึ่งครั้งมีอะไรบ้าง (ตัวอย่าง)
- id
- ลูกค้า
- บริการ
- เวลาเริ่ม
- ระยะเวลา
- สถานะ
แล้วตัดสินใจเรื่องวันที่ครั้งเดียว ใช้ทั้งระบบ
เก็บเป็น ISO 8601 เช่น 2026-03-05 เวลาเก็บเป็น UTC แล้วค่อยแสดงตาม locale ของคนดู
ข้อสำคัญคือทำให้สถานะผิดเกิดขึ้นไม่ได้ตั้งแต่ต้น
วันที่ต้องเป็น date type จริง ไม่ใช่ string ที่ใครจะพิมพ์อะไรก็ได้
ส่วนการบังคับด้วย lint ไม่ให้ใครใช้ string วันที่ดิบๆ เป็นเรื่องของตอนหน้า
ทั้งหมดนี้เป็นแนวที่ใช้กันทั่วไป ไม่ได้มีใครคิดสูตรใหม่
ใช้เครื่องมืออะไร เพราะอะไร?
ข้อนี้ไม่ได้ถามแค่ว่าใช้อะไร แต่ให้เขียนเหตุผลไว้ข้างๆ ทุกตัว
ฝั่งหนึ่งคือแนวคิด Choose Boring Technology ที่ให้มองว่าทุกคนมี “innovation tokens” จำนวนจำกัด ใช้ของใหม่ได้ไม่กี่อย่าง ที่เหลือใช้ของน่าเบื่อที่รู้จักดี
อีกฝั่งคือ lauren ที่ เขียนว่า “one nice thing about agents is that i can now get to use the best tool/language for the job even if i hate the syntax”
ผมว่าสองข้อนี้ไปด้วยกันได้
agent ทำให้เขียนภาษาที่ไม่ถนัดได้ แต่ทุกภาษาหรือ database ที่เพิ่มมา คือของที่ต้องดูแลไปอีกนาน ทั้ง CI ทั้ง context ที่ agent ต้องรู้
ยิ่งมีหลาย project ส่วนพวกนี้ยิ่งเริ่มต่างกันไปเรื่อยๆ ตรงนี้จะเล่าในตอน 8
วิธีของต้นคือให้ agent เสนอตัวเลือกมา ต้นเป็นคนเลือก แล้วจดว่าเลือกเพราะอะไร
หน้าจอก็อยู่ในคำถามนี้ด้วย
ทำ UI sketch ถูกๆ ก่อนเลือก layout เช่น v0 หรือ Figma Make (แค่ตัวอย่างเครื่องมือ ไม่ได้แนะนำ)
lauren เองก็ให้ agent ทำ variation สองสามแบบไว้หลัง switcher ให้ลองกดเทียบ ตามที่เขียนไว้ใน The Complete Guide to pstack Pt. 2
ส่วนกลางไหนห้ามเปลี่ยนตามใจ?
ในแต่ละงาน agent ทำได้อิสระ แต่ตรงรอยต่อต้องเหมือนกันทุกที่
ของต้นมีสี่ส่วน database, รูปแบบข้อมูล, interface ระหว่างส่วน และ auth
แต่ละส่วนได้ decision record สั้นๆ ราวห้าบรรทัด บอกบริบท การตัดสินใจ และผลที่ตามมา
adr.github.io อธิบายว่า ADR คือบันทึกที่ “captures a single AD and its rationale” หรือการตัดสินใจหนึ่งเรื่องพร้อมเหตุผล
ของต้น (ตัวอย่าง)
| รหัส | เรื่อง | ตัดสินใจ |
|---|---|---|
| DR-01 | วันที่ | ISO 8601 เก็บเป็น UTC |
| DR-02 | database | Postgres ตัวเดียว |
| DR-03 | auth | ผู้ให้บริการ auth เจ้าเดียว |
| DR-04 | API | JSON shape เดียวทุก endpoint |
ถ้าวันหนึ่ง agent อยากเปลี่ยนเรื่องพวกนี้ ต้องมาแก้ record ก่อน ไม่ใช่แก้ code เงียบๆ
แผนสั้นแค่ไหนถึงพอ
ฝั่ง spec ก่อนมีเครื่องมือรองรับ เช่น Spec Kit ของ GitHub ที่ใช้คำว่า Spec-Driven Development
Kiro เขียนว่า “Every spec generates three key files” คือ requirements.md, design.md และ tasks.md
อีกฝั่งคือ lauren ที่เล่าว่าทีมเธอ “open a PR not a PRD”
ผมเลือกตรงกลาง
หน้าเดียวที่ตอบ 3 คำถาม ที่เหลือร่างเป็น code

มาตรฐานว่ายังไง
ใน 29110 Basic profile งานออกแบบอยู่ในส่วนออกแบบของ process Software Implementation และผลงานทั้งหมดเก็บไว้ใน project repository
ฝั่ง 12207 ของบริษัทใหญ่แยกเป็น process ของตัวเอง Architecture Definition (6.4.4), Design Definition (6.4.5) และ Decision Management (6.3.3)
ข้อนี้ผมเทียบเอง ไม่ใช่คำของมาตรฐาน decision record ของต้นก็คือ Decision Management ฉบับคนเดียวนั่นแหละครับ
จิ๊กซอว์ชิ้นที่เติมแล้ว
ชิ้น Design เติมแล้ว ตอนนี้แถบ 5 ขั้นมีสองชิ้นเต็ม Requirements กับ Design
ต้นมีแผนออกแบบหน้าเดียวกับ decision record สี่ใบ
แต่แผนที่เขียนไว้ agent ไม่อ่านถ้าไม่บังคับ
ชิ้นถัดไปคือกฎของบ้าน เปลี่ยนแผนนี้เป็นสิ่งที่ agent ต้องทำตาม
สิ่งที่ผมได้จากตอนนี้
ลองทำเอง
ใช้ repo ทิ้งได้เท่านั้น เขียนแผนออกแบบหน้าเดียวของไอเดียคุณ เขียน decision record สองใบ แล้วเปิด agent สอง session ให้ทำช่องวันที่เดียวกันจากแผนนี้ ดูว่าใช้รูปแบบเดียวกันมั้ย
ผมลองแล้ว: __ นาที ฿0 agent ทำตามแผน __/2 session ช่องที่ผมลืมตัดสินใจคือ __
เก็บศัพท์
| คำ | ความหมายสั้นๆ |
|---|---|
| data shape | หน้าตาของข้อมูล มีช่องอะไร แต่ละช่องเป็นชนิดไหน |
| ISO 8601 | รูปแบบวันที่สากล ปี-เดือน-วัน เช่น 2026-03-05 |
| innovation token | โควตาสมมติสำหรับใช้ของใหม่ มีจำกัด |
| decision record / ADR | บันทึกการตัดสินใจหนึ่งเรื่องพร้อมเหตุผล |
| ISO/IEC 29110 | ชุดมาตรฐานสำหรับองค์กรเล็กมาก |
จดบันทึก
อะไรที่เราไม่ตัดสินใจ agent ตัดสินใจแทน
ถ้าต้นเริ่มใหม่ เขาจะทำเรื่องนี้ตั้งแต่วันแรกไหม?
ทำครับ แผนหน้าเดียวกับ decision record สี่ใบ ใช้ราวสองชั่วโมง ฿0 (ตัวอย่าง) ทำตอนนี้ถูก ย้ายทีหลังแพง
ตอนต่อไป
v1 ใช้ได้แล้ว
แต่พอเปิด session ใหม่ agent ก็เขียนวันที่เป็น string อีกรอบ
แผนมีอยู่ แต่ไม่มีใครบังคับ
คำถามที่พบบ่อย
spec ต้องยาวไหม?
ไม่ต้องครับ ของต้นยาวหน้าเดียว ขอแค่ตอบ 3 คำถามได้
ให้ agent เลือก stack ให้เลยได้ไหม?
ให้เสนอได้ แต่ต้นควรเป็นคนเลือกและจดเหตุผล ไม่งั้นเราจะได้ค่าตั้งต้นของ agent โดยไม่รู้ตัว
ใช้หลายภาษาใน project เดียวได้ไหม?
ได้ ถ้ามีเหตุผลจดไว้ แต่ทุกภาษาที่เพิ่มคือของที่ต้องดูแลต่อ
ต้องทำตาม 29110 ครบทุกข้อไหม?
ไม่ต้องครับ ใช้เป็น checklist ว่าเรื่องออกแบบควรคิดอะไรบ้าง