ข้าม​ไป​ยัง​เนื้อหา

Big Picture Event Storming — สำรวจ​ทั้ง​สาย​ธุรกิจ​ใน​ห้อง​เดียว

ลอง​นึก​ภาพ​ห้อง​ประชุม​ที่​ผนัง​ยาว​สิบ​เมตร​ถูก​คลุม​ด้วย​กระ​ดาษบรูฟ ทั้ง​ทีม​พัฒนา คน​จาก​ฝ่าย​ขาย ฝ่าย​บัญชี เจ้าของ​ร้าน และ​คน​ดูแล​ไร​เด​อร์ ยืน​ออ​กัน​อยู่​หน้า​ผนัง มือถือ​ปากกา​เมจิก​คนละ​แท่ง มี Post-it สี​ส้ม​เป็นปึกๆ วาง​กอง​อยู่ นี่​คือ​ฉาก​เปิด​ของ Big Picture EventStormingBig Picture EventStormingเวิร์กช็อป EventStorming รอบ​แรก​และ​กว้าง​ที่สุด เชิญ​คน​จาก​ทุก​ฝ่าย​มาระดม domain event ของ​ทั้ง​สาย​ธุรกิจ​ลง​บน​ไทม์​ไลน์​เดียว เป้าหมาย​คือ​เห็น​ภาพ​รวม ค้น​พบ​รอย​ต่อ​และ​จุด​ที่​ยัง​ไม่รู้ ไม่​เน้น​รายละเอียดProcess — เวิร์กช็อป EventStormingEventStormingเวิร์กช็อป​สำรวจ domain แบบ​ร่วมมือ​กัน​ทั้ง​ทีม คิดค้น​โดย Alberto Brandolini ใช้ Post-it สี​ส้ม (domain event) แปะ​บน​ผนัง​ยาว ๆ เพื่อ​ดึง​ความ​รู้​จาก​หัว​คน​หลาย​ฝ่าย​ออก​มา​ให้​เห็น​พร้อม​กัน​ภายใน​ไม่​กี่​ชั่วโมงProcess รอบ​แรก​และ​กว้าง​ที่สุด ที่ Alberto Brandolini ออกแบบ​มา​เพื่อ​ดึง “ความ​รู้​ที่​กระจาย​อยู่​ใน​หัว​คน​หลาย​ฝ่าย” ออก​มา​วาง​บน​ผนัง​เดียว​ให้​เห็น​พร้อม​กัน​ภายใน​ไม่​กี่​ชั่วโมง

บท​ที่​แล้ว​เรา​รู้จัก Post-it สี​ต่างๆ กัน​ไป​แล้ว บท​นี้​จะ​ลงมือ “จัด​เวิร์กช็อป​จริง” รอบ​แรก แล้ว​เดิน​ไป​ด้วย​กัน​ที​ละ​ขั้น จน​ได้​ไทม์​ไลน์​ของธุรกิจฟู้ด​เดลิ​เวอรี​เต็ม​เส้น​บน​ผนัง

หัวใจ​ของ​รอบ​นี้​มี​คำ​เดียว​คือ กว้าง ไม่ใช่ ลึก เรา​อยาก​เห็น​ทั้ง​สาย​ธุรกิจ​ตั้งแต่​ต้น​จน​จบ​ใน​ภาพ​เดียว ไม่ใช่​เจาะ​รายละเอียด​ของ feature ใด feature หนึ่ง เป้าหมาย​ที่แท้​จริง​มี​สาม​อย่าง:

  • เห็น​ภาพ​รวม — ให้​ทุก​คนใน​ห้อง​เห็น​เรื่องราว​เดียวกัน คน​ฝ่าย​บัญชี​ได้​เห็น​ว่า​ไร​เด​อร์ทำงาน​ยังไง คน​เขียน code ได้​เห็น​ว่า​เงิน​ไหล​ตรง​ไหน
  • ค้น​พบ​รอย​ต่อ​และ​สิ่ง​ที่​ยัง​ไม่รู้ — จุด​ที่​สอง​ฝ่าย​เล่า​ไม่​ตรง​กัน หรือ​จุด​ที่​ทุก​คน​เงียบ​เพราะ​ไม่มี​ใคร​รู้​จริง คือ​ทองคำ​ที่​เรา​มา​ขุด
  • ไม่​เน้น​รายละเอียด — เรา​ยัง​ไม่​วาด CommandCommandความ​ตั้งใจ​หรือ​การ​ตัดสิน​ใจ​ที่ “สั่ง​ให้​เกิด” domain event เขียน​เป็นกริยา​คำ​สั่ง (เช่น PlaceOrder) แทน​ด้วย Post-it สี​ฟ้า มัก​มี actor เป็น​ผู้​ลงมือTactical Design, AggregateAggregateกลุ่ม​ของ object ที่​ถือ​กฎ​ความ​สอดคล้อง (invariant) ไว้​ด้วย​กัน ใน EventStorming คือ “สิ่ง​ที่​รับ command แล้ว​ปล่อย event ออก​มา” (เช่น Order, Payment) แทน​ด้วย Post-it สี​เหลือง​แผ่น​ใหญ่Tactical Design หรือ PolicyPolicyกฎ​เชิง​ปฏิกิริยา​แบบ “whenever X → do Y” ที่​คอย​ฟัง event หนึ่ง​แล้ว​สั่ง command ต่อ​โดย​อัตโนมัติ (เช่น เมื่อ PaymentCaptured → แจ้ง​ร้าน​ให้​กด​รับ) แทน​ด้วย Post-it สี​ม่วง​อ่อนProcess ใน​รอบ​นี้ (นั่น​เป็น​งาน​ของ Process Modeling และ Design-Level ในบทถัดๆ ไป) รอบ​นี้​เอา​แค่ “เกิด​อะไร​ขึ้น​บ้าง เรียง​ตาม​เวลา”
🍔 กติกา​ข้อ​เดียว​ที่​ต้อง​จำ

รอบ Big Picture เรา​สนใจ​แค่ Domain EventDomain Eventสิ่ง​ที่ “เกิด​ขึ้น​แล้ว” และ​มี​ความหมาย​ต่อ​ผู้เชี่ยวชาญ​ธุรกิจ เขียน​เป็นกริยา​อดีต (เช่น OrderPlaced, PaymentCaptured) แทน​ด้วย Post-it สี​ส้ม เป็น​หน่วย​ตั้งต้น​ของ EventStorming ทุก​แบบTactical Design — สิ่ง​ที่ “เกิด​ขึ้น​แล้ว” เขียน​เป็นกริยา​อดีต เช่น OrderPlaced, FoodDelivered แปะ​ด้วย Post-it สี​ส้ม อย่าง​อื่น​ค่อย​ว่า​กัน​ทีหลัง ถ้า​ใคร​เผลอ​เขียน​ปุ่ม​หรือ​หน้า​จอ ให้ facilitator ค่อยๆ ดึง​กลับ​มา​ที่​คำถาม​เดิม​เสมอ: “แล้ว​มัน เกิด​อะไร​ขึ้น ใน​ธุรกิจ?”

Brandolini มี​หลักการ​เลือก​คน​เข้า​เวิร์กช็อป​ที่​จำ​ง่าย​มาก: เชิญ​คน​ที่ “มี​คำถาม” กับ​คน​ที่ “รู้​คำ​ตอบ” มา​อยู่​ห้อง​เดียวกัน สำหรับฟู้ด​เดลิ​เวอรี​ก็​คือ​คน​เขียน code (มี​คำถาม​เยอะ) มา​ยืน​ข้าง​เจ้าของ​ร้าน คน​ดูแล​ไร​เด​อร์ และ​ฝ่าย​บัญชี (รู้​คำ​ตอบ​ที่ code เด​อร์ไม่​เคย​รู้) พลัง​ของ​เวิร์กช็อป​เกิด​ตรง​รอย​ต่อ​ระหว่าง​สอง​กลุ่ม​นี้​เอง

ของ​ที่​ต้องเตรียม​ก็​ตรง​ไป​ตรง​มา แต่​มี​ข้อ​ที่​คน​มอง​ข้าม​บ่อย:

  • พื้นที่ model แบบ​ไม่​จำกัด — ผนัง​ยาว​ที่สุด​เท่า​ที่​หา​ได้ ปู​กระ​ดาษบรูฟ​ให้​ยาว​เป็น​สิบ​เมตร ถ้า​ผนัง​สั้น ความคิด​ของ​คน​จะ​ถูก​บีบ​ให้​สั้น​ตาม
  • Post-it สี​ส้ม​เยอะๆ — เยอะ​จน​รู้สึก​ว่า “เกิน​แน่ๆ” นั่น​คือ​พอดี ของ​ขาด​กลางคัน​คือ​ตัว​ฆ่า​โมเมนตัม
  • ปากกา​เมจิก​คนละ​แท่ง — ทุก​คน​ต้อง​เขียน​ได้​เอง ไม่มี​เลขา​คอย​จด​แทน เพราะ​การ​เขียน​เอง​คือ​การ​คิด​เอง
  • ยืน ไม่​นั่ง — คน​ยืน​มี​ส่วนร่วม​มากกว่า​คน​นั่ง และ​เดิน​ไป​หยิบ Post-it มา​แปะ​ได้​คล่อง​กว่า

เวิร์กช็อป​ทั้ง​รอบ​ไหล​ตาม​ลำดับ​ห้า​ขั้น​นี้ ขั้น​ต้นๆ เน้น​ระเบิด​ความ​รู้​ออก​มา​ให้​มาก​ที่สุด ขั้นหลังๆ ค่อย​จัด​ระเบียบ​และ​ชี้​จุด​ที่​ต้อง​คุย​ต่อ

flowchart TD
  S1["1. Chaotic Exploration (ระดมทุก event แบบไม่เรียง)"] --> S2["2. จัดเส้นเวลา (Enforce the Timeline)"]
  S2 --> S3["3. หา Pivotal Event ขีดเส้นแบ่งช่วง"]
  S3 --> S4["4. ปัก Hotspot สีแดงตรงที่ยังไม่ชัด"]
  S4 --> S5["5. เติม Actor / External System และมองหา Opportunity"]

ขั้น​แรก​ดู “มั่ว” ตั้งใจ facilitator แค่​ประกาศโจทย์กว้างๆ เช่น “ตั้งแต่​ลูกค้า​เปิด app จน​กิน​ข้าว​เสร็จ มี​อะไร​เกิด​ขึ้น​บ้าง?” แล้ว​ปล่อย​ให้​ทุก​คน เขียน Domain EventDomain Eventสิ่ง​ที่ “เกิด​ขึ้น​แล้ว” และ​มี​ความหมาย​ต่อ​ผู้เชี่ยวชาญ​ธุรกิจ เขียน​เป็นกริยา​อดีต (เช่น OrderPlaced, PaymentCaptured) แทน​ด้วย Post-it สี​ส้ม เป็น​หน่วย​ตั้งต้น​ของ EventStorming ทุก​แบบTactical Design เป็นกริยา​อดีต แปะ​บน​ผนัง​พร้อม​กัน โดย​ยัง​ไม่​ต้อง​สนใจ​ลำดับ

จะ​ซ้ำ​กัน​ก็​ช่าง จะ​แปะ​ทับ​กัน​ก็ได้ จะ​เรียงมั่วๆ ก็​ไม่​เป็นไร ช่วง​นี้​เสียง​ปากกา​เขียน​กระดาษดังรัวๆ คือ​สัญญาณ​ที่​ดี เพราะ​ความ​รู้​ที่​เคย​อยู่​แต่​ใน​หัว​แต่ละ​คน​กำลัง​ไหล​ออก​มา​เป็น​วัตถุ​ที่​จับ​ต้อง​ได้​บน​ผนัง

กับดัก: รีบ​จัด​ระเบียบ​เร็ว​เกิน​ไป

ธรรมชาติ​ของ​คน​ทำงาน​คือ​เห็น​ของรกๆ แล้ว​อยาก​จัด แต่​ถ้า facilitator รีบ​ให้​ทุก​คน​เรียง event ตั้งแต่​นาที​แรก คน​จะ​เริ่ม “ตัดสิน” ว่า​อัน​ไหน​ถูก อัน​ไหน​ควร​อยู่​ตรง​ไหน แล้ว​คน​ที่​ไม่​มั่นใจ​จะ​เงียบ — ความ​รู้​บาง​ส่วน​จะ​ไม่มี​วัน​ออก​มา ปล่อย​ให้​มัน​รก​ไว้​ก่อน จัด​ทีหลัง​ได้​เสมอ

พอ Post-it สี​ส้ม​เต็ม​ผนัง​แล้ว facilitator ถึง​เริ่ม​ชวน​ทั้ง​ห้อง จัด​เส้น​เวลาEnforce the timelineเทคนิค​ของ facilitator ที่​คอย​จัด event ให้​เรียง​ตาม​เวลา​ให้​ถูกต้อง เมื่อ​เส้น​เวลา​ชัด ความ​ขัดแย้ง​และ​ช่องว่าง​ของ​ความ​เข้าใจ​จะ​โผล่​ออก​มา​เองProcess — ค่อยๆ เลื่อน Post-it ให้​เรียง​ตาม​เวลา​จริง​จาก​ซ้าย​ไป​ขวา event ที่​เกิด​ก่อน​อยู่​ซ้าย event ที่​เกิด​ทีหลัง​อยู่​ขวา ผลลัพธ์​คือ TimelineTimelineการ​เรียง domain event จาก​ซ้าย​ไป​ขวา​ตาม​ลำดับ​เวลา​ที่​เกิด​ขึ้น​จริง เป็น​แกน​หลัก​ที่​ทำให้​ทั้ง​ทีม​เห็น​เรื่องราว​ของ​ธุรกิจ​ร่วม​กัน​บน​ผนัง​เดียวProcess เส้น​เดียว​ที่​เล่า​เรื่อง​ธุรกิจ​ตั้งแต่​ต้น​จน​จบ

ความ​มหัศจรรย์​อยู่​ตรง​นี้: พอ​เรา​บังคับ​ให้​ทุก​อย่าง​เรียง​ตาม​เวลา “ช่องว่าง” และ “ความ​ขัดแย้ง” จะ​โผล่​ออก​มา​เอง มี​คน​ถาม​ว่า “เอ๊ะ ตรง​นี้​จ่าย​เงิน​ก่อน​หรือ​ร้าน​กด​รับ​ก่อน?” — คำถาม​แบบ​นี้​แหละ​คือ​ของ​มี​ค่า มัน​แปล​ว่า​คน​สอง​ฝ่าย​เข้าใจ​กระบวนการ​ไม่​ตรง​กัน และ​เรา​เพิ่ง​จับ​มัน​ได้

🍔 บทบาท​ของ Facilitator

FacilitatorFacilitatorผู้​ดำเนิน​เวิร์กช็อป คอย​ตั้ง​คำถาม รักษา​พลังงาน​กลุ่ม จัด​เส้น​เวลา และ​กัน​ไม่​ให้​วง​คุย​ไหล​ลง​รายละเอียด​เร็ว​เกิน​ไป — บทบาท​ชี้​เป็น​ชี้​ตาย​ของ EventStorming ที่​ดีProcess ไม่ใช่​คน​ที่​รู้​คำ​ตอบ แต่​เป็น​คน​ที่ “รักษา​เส้น​เวลา” และ​คอย​ตั้ง​คำถาม เมื่อ event สอง​อัน​เรียง​ขัด​กัน facilitator ไม่​ตัดสิน​เอง แต่​ถาม​กลับ​ไป​ที่​ห้อง​ว่า “จริงๆ แล้ว​อัน​ไหน​เกิด​ก่อน?” แล้ว​ปล่อย​ให้​ผู้เชี่ยวชาญ​ธุรกิจ​เถียง​กัน​จน​ตกผลึก — นี่​คือ​ช่วง​ที่ Ubiquitous LanguageUbiquitous Languageภาษา​กลาง​ที่​ทีม​และ​ผู้เชี่ยวชาญ​ธุรกิจ​ใช้​ร่วม​กัน EventStorming เป็น​เครื่องมือ​ชั้น​ดี​ใน​การ “ขุด” ภาษา​นี้​ออก​มา เพราะ​ทุก​คำ​บน Post-it ถูก​เถียง​และ​ตกลง​กัน​สด ๆStrategic Design เริ่ม​ก่อ​ตัว

พอ​ไทม์​ไลน์​เรียงตัว​แล้ว จะ​สังเกต​เห็น​ว่า​มี event บาง​ตัว “สำคัญ​เป็น​พิเศษ” — มัน​เป็น​จุด​ที่​ธุรกิจ​เปลี่ยน​สถานะ​ครั้ง​ใหญ่ ก่อนหน้า​กับ​หลัง​จาก​นั้น​แทบ​เป็น​คนละ​โลก event แบบ​นี้​เรียก​ว่า Pivotal EventPivotal Eventdomain event สำคัญ​ที่​แบ่ง​ไทม์​ไลน์​ออก​เป็น​ช่วง ๆ (เช่น OrderPlaced, FoodDelivered) มัก​ขีด​เส้น​แนว​ตั้ง​กำกับ ใช้​เป็น​เบาะแส​ของ​ขอบเขต bounded context ใน​ภายหลังProcess

จะ​ขีด​เส้น​แนว​ตั้ง​กำกับ pivotal event เพื่อ​แบ่ง​ไทม์​ไลน์​ยาวๆ ออก​เป็น “ช่วง” ใน​ตัว​อย่างฟู้ด​เดลิ​เวอรี pivotal event ที่​ชัดเจน​คือ OrderPlaced (ลูกค้า​ตัดสิน​ใจ​สั่ง​จริง), PaymentCaptured (เงิน​เข้า​กระเป๋า​แล้ว) และ FoodDelivered (ของ​ถึง​มือ ภารกิจ​สำเร็จ) เส้น​แบ่ง​พวก​นี้​ไม่ใช่​แค่​สวยงาม — มัน​คือ​เบาะแส​แรก​ของ Bounded ContextBounded Contextขอบเขต​ที่ model และ ubiquitous language หนึ่ง​ใช้ได้​และ​มี​ความหมาย​แน่นอน ใน EventStorming มัก​ค้น​พบ​ขอบเขต​นี้​จาก pivotal event และ​กลุ่ม event ที่​เกาะ​กลุ่ม​กันStrategic Design ที่​จะ​ไป​เจาะ​ใน​บท​ที่ 6

ระหว่าง​ทาง​จะ​มี​จุด​ที่​ห้อง​เงียบ จุด​ที่​สอง​ฝ่าย​เถียง​กัน​ไม่​จบ หรือ​คำถาม​ที่​ยัง​ไม่มี​ใคร​ตอบ​ได้ อย่า​ฝืน​หา​คำ​ตอบ​ตรง​นั้น ให้​แปะ HotspotHotspotจุด​ที่​เป็น​ปัญหา ข้อ​ขัดแย้ง หรือ​คำถาม​ที่​ยัง​ตอบ​ไม่​ได้​ระหว่าง​เวิร์กช็อป แทน​ด้วย Post-it สี​แดง​วาง​เฉียง ๆ เก็บ​ไว้​กลับ​มา​คุย​ทีหลัง​โดย​ไม่​ขัดจังหวะ​การ​ไหล​ของ​กลุ่มProcess — Post-it สี​แดง​วาง​เฉียงๆ — คร่อม​ไว้​ตรง​จุด​นั้น แล้ว​เดิน​หน้า​ต่อ

hotspot คือ​วิธี “จอด​ปัญหา​ไว้​ข้าง​ทาง” โดย​ไม่​ให้​มัน​ดูด​พลัง​ทั้ง​ห้อง​ไป​กับ​เรื่อง​เดียว ในฟู้ด​เดลิ​เวอรี hotspot คลาสสิก​คือ​คำถาม​อย่าง “ร้าน​ไม่​กด​รับ​ใน 5 นาที ทำ​ยังไง?” และ “ยกเลิก​หลัง​จ่าย​เงิน​แล้ว คืน​เงิน​ยังไง?” — คำถาม​ที่​ตอบ​ไม่​ได้​ใน​สาม​วินาที แต่​สำคัญ​เกิน​กว่า​จะ​ลืม

ขั้น​สุดท้าย​เรา​เติม​บริบท​ให้​ไทม์​ไลน์​รวย​ขึ้น​อีก​นิด (แต่​ยัง​ไม่​ลง​ลึก​ถึง code):

  • ActorActorคน/บทบาท​ที่​ออก command (เช่น ลูกค้า ร้าน​อาหาร ไร​เด​อร์) แทน​ด้วย Post-it สี​เหลือง​แผ่น​เล็ก​แปะ​มุม​ของ command ช่วย​ตอบ​ว่า “ใคร​เป็น​คน​ทำ”Process — ใคร​เป็น​คน​ทำให้ event นี้​เกิด? ลูกค้า ร้าน​อาหาร หรือ​ไร​เด​อร์? แปะ Post-it เหลือง​เล็กๆ กำกับ
  • External SystemExternal Systemระบบ​ภายนอก​ที่​เรา​ไม่​ได้​ควบคุม​แต่​ต้อง​คุย​ด้วย (เช่น Payment Gateway, บริการ​แจ้ง​เตือน, แผนที่) แทน​ด้วย Post-it สีชมพู ช่วย​ชี้​จุด​เชื่อม​ต่อ​และ​ความ​เสี่ยงArchitecture — event ไหน​เกิด​จาก​ระบบ​ที่​เรา​ไม่​ได้​คุม​เอง? เช่น PaymentCaptured พึ่ง Payment Gateway ภายนอก แปะ Post-it สีชมพู
  • OpportunityOpportunityจุด​ที่​มอง​เห็น​โอกาส​ปรับปรุง​หรือ​สร้าง​คุณค่า​ใหม่​ระหว่าง​สำรวจ domain มัก​ใช้​คู่​กับ hotspot (ปัญหา) เพื่อ​ให้​เวิร์กช็อป​เห็น​ทั้ง​ความ​เสี่ยง​และ​โอกาสProcess — จุด​ไหน​ที่​เห็น​โอกาส​ทำให้​ดี​ขึ้น หรือ​สร้าง​คุณค่า​ใหม่? แปะ​ไว้​คู่​กับ hotspot เพื่อ​ให้​ห้อง​เห็น​ทั้ง “ปัญหา” และ “โอกาส” ไป​พร้อม​กัน

หลาย​คน​สงสัย​ว่า​ทำไม​ไม่​ให้​ทุก​คน​ช่วย​กัน​เรียง​ไทม์​ไลน์​ตั้งแต่​แรก​เลย จะ​ได้​ไม่​เสีย​เวลา คำ​ตอบ​อยู่​ที่ “พลวัต​ของ​กลุ่ม” — การ​เรียง​คือ​การ​ตัดสิน​ใจ และ​การ​ตัดสิน​ใจ​ร่วม​กัน​ตั้งแต่​ยัง​ไม่มี​ข้อมูล​ครบ จะ​ทำให้​เสียง​ของ​คน​ที่​มั่นใจ​น้อย​หาย​ไป

การ​ปล่อย​ให้​ระเบิด​ความ​รู้​ออก​มา​ก่อน (chaotic) แล้ว​ค่อย​จัด (enforce) จึง​เป็น​ลำดับ​ที่​จงใจ: ขั้น​แรก​เน้น ปริมาณ​และ​ความ​หลากหลาย ของ​ความ​รู้ ขั้น​หลัง​เน้น โครงสร้าง​และ​ความ​ถูกต้อง ถ้า​สลับ​ลำดับ จะ​ได้​ไทม์​ไลน์​ที่ “เรียบร้อย​แต่​ตื้น” เพราะ​มัน​สะท้อน​แค่​มุมมอง​ของ​คน​ที่​พูด​เสียง​ดัง​ที่สุด​ใน​ห้อง

flowchart LR
  A["ระเบิดความรู้ (Chaotic)"] --> B["จัดเส้นเวลา (Enforce)"]
  B --> C["ไทม์ไลน์ที่ลึกและครบ"]
  D["รีบเรียงตั้งแต่แรก"] --> E["ไทม์ไลน์ที่เรียบร้อยแต่ตื้น"]
  classDef good fill:#86efac,stroke:#15803d,color:#1a1a1f;
  classDef bad fill:#f87171,stroke:#b91c1c,color:#1a1a1f;
  class C good;
  class E bad;

หลัง​จบ​เวิร์กช็อป ผนัง​ของ​เรา​จะ​ได้​ไทม์​ไลน์​แบบ​นี้ — Post-it สี​ส้ม​เรียง​จาก​ซ้าย​ไป​ขวา โดย​มี pivotal event สาม​ตัว (OrderPlaced, PaymentCaptured, FoodDelivered) เน้น​ด้วย​กรอบ​หนา เป็น​หมุด​แบ่ง​ช่วง​ของ​เรื่องราว

flowchart LR
  E1["ItemAddedToCart"] --> E2["OrderPlaced"]
  E2 --> E3["PaymentCaptured"]
  E3 --> E4["OrderAcceptedByRestaurant"]
  E4 --> E5["FoodPrepared"]
  E5 --> E6["RiderAssigned"]
  E6 --> E7["FoodPickedUp"]
  E7 --> E8["FoodDelivered"]
  E8 --> E9["OrderRated"]
  classDef evt fill:#e8743b,stroke:#b45309,color:#1a1a1f;
  classDef piv fill:#e8743b,stroke:#f87171,stroke-width:4px,color:#1a1a1f;
  class E1,E4,E5,E6,E7,E9 evt;
  class E2,E3,E8 piv;

อ่าน​ไทม์​ไลน์​นี้​เป็น​ภาษา​คน​ได้​ว่า: ลูกค้า​หยิบ​ของ​ใส่​ตะกร้า → กด​สั่ง (จุด​เปลี่ยน​ที่ 1) → จ่าย​เงิน​สำเร็จ (จุด​เปลี่ยน​ที่ 2) → ร้าน​กด​รับ → ทำ​อาหาร​เสร็จ → จับ​คู่​ไร​เด​อร์ → ไร​เด​อร์รับ​ของ → ส่ง​ถึง​มือ (จุด​เปลี่ยน​ที่ 3) → ลูกค้า​ให้​คะแนน ทั้ง​เรื่อง​เล่า​จบ​ใน​เส้น​เดียว และ​ทุก​คนใน​ห้อง​เห็น​ตรง​กัน

จำ pivotal event PaymentCaptured กับ OrderAcceptedByRestaurant ได้​ไหม? ช่องว่าง​ระหว่าง​สอง​ตัว​นี้​แหละ​คือ​จุด​ที่​ห้อง​มัก​เงียบ เพราะ​ไม่มี​ใคร​ตอบ​ได้​ว่า “ถ้า​จ่าย​เงิน​แล้ว​แต่​ร้าน​ไม่​กด​รับ​สัก​ที จะ​ทำ​ยังไง?” เรา​ไม่​หยุด​เวิร์กช็อป​เพื่อ​แก้​ปัญหา​นี้​ตรง​นั้น แต่​ปัก hotspot สี​แดง​คร่อม​ไว้​แล้ว​เดิน​หน้า​ต่อ

flowchart LR
  A["PaymentCaptured"] --> B["OrderAcceptedByRestaurant"]
  H["ร้านไม่กดรับใน 5 นาที ทำยังไง?"] -.-> A
  H -.-> B
  classDef evt fill:#e8743b,stroke:#b45309,color:#1a1a1f;
  classDef hot fill:#f87171,stroke:#b91c1c,color:#1a1a1f;
  class A,B evt;
  class H hot;

เมื่อ​จบ​วัน จะ​ได้​ผนัง​ที่​เต็ม​ไป​ด้วย​ไทม์​ไลน์​สี​ส้ม เส้น​แบ่ง pivotal สอง​สาม​เส้น และ​จุด​แดง hotspot ประปราย นั่น​คือ “แผนที่​ความ​เข้าใจ​ร่วม” ของ​ทั้ง​ทีม พร้อม​รายการ​คำถาม​ที่​ต้อง​ไป​หา​คำ​ตอบ​ต่อ — ซึ่ง​มี​ค่า​มากกว่า​เอกสาร requirement หนา​เป็น​ปึก​ที่​ไม่มี​ใคร​อ่าน

  • Big Picture Event Storming เป็น​รอบ กว้าง ไม่​ลึก — เป้า​คือ​เห็น​ทั้ง​สาย​ธุรกิจ​ใน​ภาพ​เดียว ค้น​พบ​รอย​ต่อ​และ​สิ่ง​ที่​ยัง​ไม่รู้
  • ห้า​ขั้นตอน: ระเบิด​ความ​รู้ (chaotic) → จัด​เส้น​เวลา → หา pivotal event → ปัก hotspot → เติม actor / external system และ​มอง​หา opportunity
  • ทำ chaotic ก่อน enforce ทีหลัง โดย​จงใจ เพื่อ​ให้​ทุก​หัว​ปล่อย​ความ​รู้​ออก​มา​ก่อน​ที่​การ​ตัดสิน​จะ​ทำให้​คน​เงียบ
  • pivotal event และ​เส้น​แบ่ง​ช่วง คือ​เบาะแส​แรก​ของ bounded context ที่​จะ​พา​เรา​ไป​ต่อในบทหลังๆ

บท​ถัด​ไป​จะ​ซูม​เข้าไป​อีก​ขั้น เพิ่ม command, actor, aggregate และ policy เข้า​มา​บน​ไทม์​ไลน์​เดิม เพื่อ​เริ่ม​เห็น “กลไก” ที่​ทำให้​แต่ละ event เกิด​ขึ้น​จริง

🔗 อ้างอิง​เพิ่มเติม​ใน DevIQ

เจาะ​ลึก​แนวคิด​ต่อ​ได้ที่​คลัง​อ้างอิง DevIQ:

  • Event Storming — ภาพ​รวม​เทคนิค​และ​รูปแบบ​ของ EventStorming ทั้งหมด ต่อยอด​จาก​ขั้นตอน Big Picture ที่​บท​นี้​พา​ลงมือ​ทำ
  • Subdomain — กลุ่ม event ที่​เกาะ​กลุ่ม​กัน​บน​ไทม์​ไลน์​มัก​เป็น​เบาะแส​ชี้​ไป​ยัง subdomain ที่​ซ่อน​อยู่
  • Bounded Context — pivotal event และ​เส้น​แบ่ง​ช่วง​คือ​จุด​ตั้งต้น​ของ​การ​ค้นหา​ขอบเขต bounded context ที่​จะ​ลง​ลึก​ใน​บท​ที่ 6

เช็กความเข้าใจ — บทที่ 2

ข้อ 1 / 3

ขั้น chaotic exploration ทำไปเพื่ออะไร?