Ubiquitous Language คืออะไร แล้วมันเกี่ยวกับ Event Storming ยังไง
จาก Session Ubiquitous Language ของพี่รูฟ, Twin Panitsombat, Software Stylist At ODDS
เปิดมาด้วยคำพูดแรกของพี่รูฟ ด้วยประโยคที่ว่า “การทำงานระหว่างทีม Discovery กับทีม Delivery มันมี Gap ที่น่าสนใจ ที่มีความเป็นไปได้ที่ทำให้การดูแลซอฟต์แวร์ระยะยาวน้อยลงเกิดขึ้นจากอะไร”
Lingua Franca ชื่อพาสต้า หรือ?
“ยกตัวอย่างให้เห็นภาพคราวๆ เช่น ประเทศจีนเนี่ยเป็นประเทศที่ใหญ่มาก และแต่ละพื้นที่ก็มีภาษาถิ่นของตัวเอง แต่อะไรล่ะ! ที่ทำให้พวกเขาสามารถสื่อสารกันได้ เขาจึงได้ค้นคิดภาษากลางขึ้นมา เพื่อให้การสื่อสารได้เข้าใจตรงกันมากที่สุด นั้นคือ ภาษาจีนกลาง หรือ mandarin”
ความรู้เพิ่มเติม : Lingua Franca หรือเรียกอีกอย่างคือ common language, trade language, หรือ link language ที่ทำให้คนที่ต่างเผาพันธุ์สามารถสื่อสารกันได้
Missing Language คือ?
สมมุติว่าเราทำ Todo Application เนี่ย โดยปกติทั่วไปจะเริ่มจากการทำ UX Process ที่ไปทำ Research , Empathize , Testing จนได้ของมาเป็น Low fidelity wireframe หรือ High fidelity wireframe
“จากตรงนี้งาน design ก็จะถูกส่งต่อให้ delivery team และหลังจากนี้เจอกันอีกทีตอน review ระหว่างการทำงานของ develop เนี่ยเราก็ต้องเอาของจาก design มา map ต่อเพื่อให้เกิดเป็น function และ structure ซึ่งตรงนี้แหละที่ทำให้ Gap ของทีมนั้นห่างกันออกเรื่อยๆ ”
Pain point key — Language Miss Match
- UX : ออกแบบ user flow, ส่งต่อ Design Language
- Dev : รับ Design มาทำต่อ และออกแบบ function
ซึ่งเคสแบบนี้มันทำให้ความรู้สึกว่า มันไปคนละทิศคนละทาง เพราะ UX ออกแบบ Flow อีกแบบหนึ่ง และ Dev เองก็ตีความออกไปอีกแบบหนึ่ง
“ถ้า Process การ Design ยังทำแค่ part ของ user แต่มันไม่ได้ถูก Cover มาถึงฝั่ง Delivery team มันเหมือนมีอะไรบ้างอย่างกั้นอยู่ แต่มันมีเครื่องมือบางอย่างที่สามารถทำได้”
มาแล้ว Event Storming
โดยเจ้า Event Storming ถูกคิดโดยคุณ Alberto Brandolini และปัจจัยหลักๆ ของ Event Storming นั้นมีไว้สำหรับการแก้ปัญหาโดยเฉพาะ
- Improve organization process
- Envision start up, new businesses
- Explore new service , collaborative service
- Design software behaviour processes
Event Storming flow
โดยเริ่มจาก Event (default past tense) ให้เราคิดก่อนเสมอว่าของที่จะทำนั้นมันเกิดอะไรขึ้นบ้าง และเขียนมันออกมาเป็น Event แล้วนำมาเรียงเป็น Journey เราจะค่อยๆ เห็นสิ่งที่มันส่งผลไปสู่การทำงานของ Developer
หากเรามองย้อนกลับไปจะเห็นได้ว่า Event ไม่สามารถเกิดขึ้นได้เลย และสิ่งที่จะทำให้เกิด Event ได้ เราจะเรียกมันว่า Command แต่ก่อนจะส่ง Command ไปได้อาจจะต้องพึ่ง Data หรือ External System ที่มันเกี่ยวข้องด้วย
เมื่อ Ux, Business User, Developer มาช่วยกันออกแบบ Event Storming flow จะให้ทีมสื่อสารเป็นภาษาเดียวกันมากขึ้น ถ้าหากเรา Map Event กับ Code ที่เขียนได้ก็สามารถทำได้ดังนี้
“สรุปได้ว่า Domain Event เท่ากับ Ubiquitous Language ที่ทำให้เราสื่อสารกันได้ระหว่างทีม Discovery กับทีม Delivery”