ฟังหาคำนาม
มีให้อ่านอีก 28 ภาษา
English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

โมดูลที่ 1 จาก 6 ในบท การสร้างโมเดลข้อมูลเพื่อความหมาย บทที่ 2 ของหลักสูตร Data Architect แต่ละโมดูลอ่านแยกกันได้ ก่อนหน้า: ภาพรวมของบท · ถัดไป: วาดความสัมพันธ์
คำถามที่โมดูลนี้ตอบ: จะหาจุดเริ่มต้นของโมเดลข้อมูลในบทสนทนาทางธุรกิจได้อย่างไร?
หนึ่งในสิ่งที่ผมทำในการคุยครั้งแรกกับลูกค้าคือการฟังหาคำนาม
ผมไม่ได้พูดถึงเซสชันออกแบบครั้งแรก ผมพูดถึงบทสนทนาตั้งต้นที่ผมยังพยายามเข้าใจธุรกิจและสิ่งที่พวกเขาพยายามทำให้สำเร็จ
พวกเขาพูด ผมฟัง
และผมฟังหาคำอย่างเช่น:
พันธมิตรค้าปลีก (Retail Partner) ผู้รับ (Recipient) ศูนย์กระจายสินค้า (Distribution Center) ใบรายการสินค้า (Manifest) การจัดส่ง (Delivery) เส้นทาง (Route) ทีมจัดส่ง (Crew) รถบรรทุก (Truck)
คำนามเหล่านั้นดึงความสนใจของผมทันที เพราะที่ไหนสักแห่งในบทสนทนานั้นคือจุดเริ่มต้นของโมเดลข้อมูลของผม
ผมไม่รอจนกว่าจะคิดว่าเข้าใจปัญหาอย่างสมบูรณ์ ผมเริ่มเห็นข้อมูลตั้งแต่ตอนที่ยังฟังอยู่: ผมได้ยินคำนาม เริ่มร่างว่ามันสัมพันธ์กันอย่างไร และร่างนั้นช่วยผมวางกรอบบทสนทนาครั้งถัดไป บางครั้งเมื่อจบการประชุมครั้งแรกกับลูกค้า ผมก็มีโมเดลข้อมูลส่วนตัวที่วาดไว้แล้ว
สำหรับผม ทุกอย่างเริ่มจากคำนาม
ลืม Salesforce ไปสักครู่
หัวข้อที่มีชื่อว่า “ลืม Salesforce ไปสักครู่ ”ตรงนี้คือจุดที่ผมอยากให้คุณต้านสัญชาตญาณที่แรงเป็นพิเศษถ้าคุณเป็นผู้ดูแลระบบ Salesforce มาสักพัก
ลูกค้าพูดว่า ลูกค้า แล้วคุณคิดว่า:
บัญชี
พวกเขาพูดว่า บุคคล แล้วคุณคิดว่า:
ผู้ติดต่อ
พวกเขาพูดว่า ศูนย์กระจายสินค้า แล้วคุณก็สงสัยแล้วว่าต้องใช้ออบเจกต์ที่กำหนดเองหรือเปล่า
อย่าเพิ่งทำแบบนั้น
ณ จุดนี้ ผมไม่สนใจว่าลูกค้าจะกลายเป็นบัญชี บัญชีบุคคล ออบเจกต์ที่กำหนดเอง หรืออย่างอื่นในที่สุด ผมอยากเข้าใจธุรกิจก่อน
นั่นคือความแตกต่างระหว่างการสร้างโมเดลของธุรกิจกับการตั้งค่า Salesforce ถ้าผมเริ่มจากออบเจกต์ Salesforce ผมก็จำกัดความคิดของตัวเองไว้กับการ implement แบบเดียวแล้ว ผมอาจลงเอยตรงที่คาดไว้พอดี แต่ผมอยากไปถึงที่นั่นเพราะธุรกิจพาผมไป ไม่ใช่เพราะบัญชีและผู้ติดต่อเป็นสองออบเจกต์แรกที่ผมรู้จัก
ดังนั้นลืม Salesforce ไปสักสองสามนาที ฟังว่าคนที่บริหารธุรกิจจริงๆ อธิบายโลกของพวกเขาอย่างไร
นั่ง คอย โมเดล
หัวข้อที่มีชื่อว่า “นั่ง คอย โมเดล ”ก่อนที่เราจะฟังธุรกิจ ลองฟังบางอย่างที่ทุกคนเข้าใจอยู่แล้ว เวลาผมสอนสด ผมเริ่มด้วยสุนัข
นี่คือสุนัขตัวหนึ่ง: Marcus เป็นเจ้าของ Bella คอก Maple Ridge Kennels เป็นผู้เพาะพันธุ์เธอ เธอเป็นลาบราดอร์ และเธอทำท่านั่ง คอย และยื่นมือได้
ฟังหาคำนาม: Marcus, Bella, Maple Ridge Kennels, ลาบราดอร์, นั่ง แต่สิ่งเหล่านั้นคือชื่อ: สิ่งที่เจาะจง สิ่งที่ผมต้องการคือประเภทของสิ่งที่แต่ละชื่อสังกัดอยู่ Bella เป็นสุนัข (Dog) Marcus เป็นเจ้าของ (Owner) Maple Ridge Kennels เป็นผู้เพาะพันธุ์ (Breeder) ลาบราดอร์เป็นสายพันธุ์ (Breed) นั่งเป็นท่า (Trick) คำนามห้าคำ กล่องที่เป็นไปได้ห้ากล่อง
แล้วก็คำถามที่ผมถามกับทุกคำนาม: มันคือคนที่กำลังทำงานหนึ่งอยู่ หรือเป็นชิ้นข้อมูล? Marcus เป็นคน แต่การเป็นเจ้าของ Bella ไม่ใช่งาน มันคือข้อเท็จจริงเกี่ยวกับ Bella และไม่ช้าก็เร็วจะมีคนถามว่า “ใครเป็นเจ้าของสุนัขตัวนี้?” เจ้าของจึงควรอยู่ในโมเดล ครูฝึกที่สอนให้ Bella ยื่นมือคือคนที่กำลังทำงานหนึ่งอยู่ และอาจไม่ต้องมีกล่องเลย เว้นแต่ธุรกิจจะเริ่มถามว่าใครสอนท่าไหน
และสังเกตคำว่า เป็นไปได้ (candidate) สายพันธุ์เป็นกล่องของตัวเองจริงหรือ หรือเป็นแค่คำที่เขียนไว้บนสุนัข? เก็บคำถามนั้นไว้ เราจะตอบมันตอนทำ normalization ในโมดูลที่ 4
นั่นคือเทคนิคทั้งหมด กับสิ่งเล็กๆ ทีนี้มาฟังธุรกิจจริงกัน
คำนามให้เอนทิตีที่เป็นไปได้
หัวข้อที่มีชื่อว่า “คำนามให้เอนทิตีที่เป็นไปได้ ”ลองฟัง Steve Trucking บริษัทครอบครัวที่เราจะใช้ตลอดหลักสูตรนี้ บริษัทจัดส่งสินค้าชิ้นใหญ่ (ตู้เย็น เครื่องซักผ้า ทีวี) จากศูนย์กระจายสินค้าของร้านค้าปลีกรายใหญ่ไปถึงบ้านของผู้คน และติดตั้งให้บางรายการ
ในบทสนทนาแรกเราได้ยิน:
- พันธมิตรค้าปลีก
- ผู้รับ
- ศูนย์กระจายสินค้า
- ใบรายการสินค้า
- การจัดส่ง
- เส้นทาง
- ทีมจัดส่ง
- รถบรรทุก
แค่นั้นก็มีประโยชน์แล้ว ผมเริ่มวางกล่องบนไวต์บอร์ดได้
ดังนั้นใส่คำนามลงในสี่เหลี่ยม ณ จุดนี้มันเป็นแค่นั้น: กล่อง ไม่มีเส้น ไม่มีสี ไม่มีอะไรที่บอกว่าเป็น Salesforce ภายหลังในหลักสูตร รูปร่างและสีจะเริ่มมีความหมาย สำหรับตอนนี้ สี่เหลี่ยมคือสิ่งที่ธุรกิจพูดถึงเท่านั้น
แล้วเริ่มจัดตำแหน่งพวกมัน เมื่อวางแต่ละกล่อง คุณควรคิดถึงสองเรื่อง: พวกมันสัมพันธ์กันอย่างไร และเป็นข้อมูลประเภทไหน บางส่วนเป็นข้อมูลลูกค้า: ธุรกิจและผู้คนที่เราทำงานด้วย บางส่วนเป็นข้อมูลธุรกรรม เช่น คำสั่งซื้อและรายการคำสั่งซื้อ: สิ่งที่เกิดขึ้นซ้ำแล้วซ้ำอีก และบางส่วนเป็นข้อมูลอ้างอิง เช่น ผลิตภัณฑ์หรือบริการที่ธุรกิจนำเสนอ: สิ่งที่งานต้องพึ่งพา
ที่ Steve Trucking พันธมิตรค้าปลีกและผู้รับเป็นข้อมูลลูกค้า ใบรายการสินค้า การจัดส่ง และเส้นทางเป็นธุรกรรม ศูนย์กระจายสินค้า ทีมจัดส่ง และรถบรรทุกเป็นสิ่งที่งานต้องพึ่งพา
แต่มีคำสำคัญคำหนึ่งตรงนี้: ที่เป็นไปได้ (candidate)
คำนามเป็นเบาะแส มันไม่ได้เป็นเอนทิตีโดยอัตโนมัติ และแน่นอนว่าไม่ได้เป็นออบเจกต์ Salesforce โดยอัตโนมัติ
เวลาผมอยู่ในเซสชันค้นหาความต้องการ ผมจดทุกคำนาม ทุกคำนามที่พวกเขาพูด ผมถามตัวเองข้อเดียว: นั่นคือคนที่ทำงานหนึ่ง หรือเป็นชิ้นข้อมูล? ผู้จัดการพัฒนาธุรกิจคือคนที่ทำงานหนึ่ง นั่นคือผู้ใช้ บทบาท อาจเป็นชุดสิทธิ์ คำสั่งซื้อ ใบแจ้งหนี้ รายการสินค้า: นั่นคือชิ้นข้อมูล ทั้งสองอย่างสำคัญ แต่ไปอยู่คนละที่ในการออกแบบ และการคัดแยกตั้งแต่เนิ่นๆ ช่วยไม่ให้ผมต้องวาดกล่องให้ทุกตำแหน่งงานในผังองค์กร
ทีนี้ คำนามบางคำจะเป็นคน ที่ Steve Trucking นั่นคือผู้รับที่รอตู้เย็นอยู่ คนที่พันธมิตรค้าปลีกที่ส่งใบรายการสินค้า และทีมจัดส่ง: คนขับและผู้ช่วยบนรถบรรทุก สิ่งเหล่านี้คือบทบาท และบทบาทอาจดูไม่เหมือนข้อมูล แต่เมื่อคนลงมือกับข้อมูล หรือเกี่ยวข้องกับข้อมูล พวกเขาเองก็ต้องถูกแทนไว้ในข้อมูลด้วย ใครเป็นคนจัดส่ง? ใครเซ็นรับ? ใครส่งใบรายการสินค้า? ดังนั้นบทบาทจำนวนมาก บางครั้งทั้งหมด ก็ลงเอยอยู่ในโมเดลด้วย
ฟังวิธีที่ Steve Trucking พูด แล้วคุณจะสังเกตเห็นบางอย่าง พวกเขาไม่เคยพูดแค่ว่า “ลูกค้า” มีลูกค้าสองแบบ พันธมิตรค้าปลีกคือร้านค้าปลีกรายใหญ่ที่ Steve Trucking จัดส่งให้: เป็นผู้ส่งใบรายการสินค้าและจ่ายเงินต่อการจัดส่ง ผู้รับคือคนที่ตู้เย็นถูกส่งไปถึง ผู้รับซื้อมันจากร้าน และอาจไม่เคยได้ยินชื่อ Steve Trucking เลย
ถ้าผมเขียนกล่องเดียวชื่อลูกค้า ผมก็จะผสมสองสิ่งที่ต่างกันโดยสิ้นเชิงเข้าด้วยกัน
บางทีศูนย์กระจายสินค้าอาจสำคัญพอที่จะมีเรกคอร์ด ประวัติ ความสัมพันธ์ และแอตทริบิวต์ของตัวเอง
บางทีคำนามอีกคำอาจกลายเป็นแค่แอตทริบิวต์ของอย่างอื่น
นั่นคือสิ่งที่เรากำลังพยายามค้นหา เรายังไม่ได้สร้างออบเจกต์ เรากำลังสร้างความเข้าใจในธุรกิจ
ทีนี้ฟังหาความสัมพันธ์
หัวข้อที่มีชื่อว่า “ทีนี้ฟังหาความสัมพันธ์ ”คำนามให้จุดเริ่มต้นแก่ผม แล้วผมก็ฟังว่าธุรกิจเชื่อมโยงมันอย่างไร
พันธมิตรค้าปลีกดำเนินงานศูนย์กระจายสินค้า
พันธมิตรค้าปลีกส่งใบรายการสินค้าสำหรับแต่ละ DC และแต่ละวันจัดส่ง
ใบรายการสินค้าระบุการจัดส่ง
การจัดส่งไปถึงผู้รับ
เส้นทางคือรอบวิ่งหนึ่งวันที่มีจุดแวะราวสิบจุด
ทีมจัดส่งสองคนประจำรถบรรทุกหนึ่งคัน
ตอนนี้มีบางอย่างเกิดขึ้น ผมไม่ได้มองรายการคำนามอีกต่อไป ผมเริ่มเห็นโมเดล
นี่ยังเป็นจุดที่คำถามเริ่มปรากฏ
พันธมิตรค้าปลีกมีศูนย์กระจายสินค้ามากกว่าหนึ่งแห่งได้ไหม?
การจัดส่งคือสิ่งเดียวกับจุดแวะหรือเปล่า?
จุดแวะหนึ่งจุดจัดส่งให้ผู้รับสองคนได้ไหม?
ทีมจัดส่งเป็นสองคนเดิมเสมอหรือเปล่า?
เราสนใจว่าเดือนที่แล้วทีมไหนใช้รถคันไหน หรือสนใจแค่ว่าวันนี้พวกเขาขับรถคันไหน?
สังเกตสิ่งที่เรากำลังทำ เรายังไม่ได้ถามคำถามเกี่ยวกับ Salesforce เรากำลังถามคำถามทางธุรกิจ และคำตอบเหล่านั้นจะขับเคลื่อนการออกแบบ Salesforce ในที่สุด
โมเดลแรกของคุณไม่จำเป็นต้องสมบูรณ์แบบ
หัวข้อที่มีชื่อว่า “โมเดลแรกของคุณไม่จำเป็นต้องสมบูรณ์แบบ ”ผมไม่คาดหวังว่ากล่องแรกที่ผมวาดจะรอดมาได้โดยไม่เปลี่ยนแปลง ที่จริง ถ้ามันรอด ผมจะสงสัยด้วยซ้ำ
จุดประสงค์ของโมเดลแรกไม่ใช่การถูกต้อง แต่คือการให้สิ่งที่เป็นรูปธรรมพอที่จะค้นพบว่าเราผิดตรงไหน
วางการจัดส่ง เส้นทาง ทีมจัดส่ง และรถบรรทุกบนกระดาน แล้วผู้คนจะมีปฏิกิริยากับมันได้
“จริงๆ แล้ว การจัดส่งไม่ได้มีสินค้าชิ้นเดียวเสมอไป อาจเป็นเครื่องซักผ้า เครื่องอบผ้า และการขนของเก่าทิ้ง”
ดีครับ เล่าต่ออีก
“เราไม่ได้มอบหมายทีมให้การจัดส่ง เรามอบหมายทีมให้เส้นทาง”
เยี่ยม แล้วในเส้นทางมีอะไรบ้าง?
“และถ้ามีการติดตั้ง ทีมจะปิดจุดแวะไม่ได้จนกว่าเช็กลิสต์และรูปถ่ายจะเสร็จ”
ตอนนี้เรากำลังเรียนรู้บางอย่างที่สำคัญ
ไดอะแกรมเปลี่ยนบทสนทนาที่คลุมเครือให้เป็นสิ่งที่เราท้าทายได้ นั่นคือหนึ่งในเหตุผลที่ผมชอบสร้างโมเดลตั้งแต่เนิ่นๆ ผมไม่ได้พยายามสร้างความประทับใจให้คนในห้องด้วยไดอะแกรมสวยๆ ผมพยายามเรียนรู้ให้เร็วขึ้น
โมเดลเป็นส่วนหนึ่งของบทสนทนา
นี่คือโมเดลเชิงแนวคิดของคุณ
หัวข้อที่มีชื่อว่า “นี่คือโมเดลเชิงแนวคิดของคุณ ”สิ่งที่เราเริ่มสร้างมีชื่อทางการ: โมเดลข้อมูลเชิงแนวคิด
ในระดับนี้ ผมสนใจสิ่งสำคัญที่ธุรกิจใส่ใจและความสัมพันธ์ระหว่างกัน ผมยังไม่กังวลเรื่องออบเจกต์มาตรฐานกับที่กำหนดเอง API name ของฟิลด์ lookup กับ master-detail ฟิลด์บังคับ อินเด็กซ์ ระบบอัตโนมัติ Apex หรือ Flow สิ่งเหล่านั้นสำคัญ และเราจะไปถึง แต่ถ้าเราตัดสินมันก่อนเข้าใจว่ากำลังสร้างโมเดลอะไร เราก็กำลังแก้ปัญหาผิดข้อก่อน
โมเดลเชิงแนวคิดควรเข้าใจได้สำหรับคนในห้องที่ไม่รู้จัก Salesforce นั่นเป็นบททดสอบที่มีประโยชน์ ถ้าผมต้องอธิบายว่า Delivery__c หมายถึงอะไรก่อนที่ผู้จัดการฝ่ายปฏิบัติการจะอ่านไดอะแกรมของผมได้ ผมก็กระโดดเข้าสู่การ implement เร็วเกินไป
ผมอยากให้พวกเขามองโมเดลแล้วพูดว่า:
“ใช่ ธุรกิจของเราทำงานแบบนั้น”
หรือดียิ่งกว่านั้น:
“ไม่ ไม่ได้ทำงานแบบนั้น”
เพราะตอนนี้ผมมีสิ่งที่ต้องแก้ไขแล้ว
เทคนิคเดียวกันใช้ได้แม้ไม่มีใครพูด
หัวข้อที่มีชื่อว่า “เทคนิคเดียวกันใช้ได้แม้ไม่มีใครพูด ”นี่ไม่ใช่สิ่งที่ผมใช้เฉพาะตอนค้นหาความต้องการกับลูกค้า มันยังใช้ได้เมื่อ “ลูกค้า” เป็นเอกสาร
เวลาผมไล่อ่านเอกสารความต้องการ ผมทำสิ่งเดียวกันเกือบทั้งหมด แนวคิดทางธุรกิจที่สำคัญคืออะไร? มีการอธิบายความสัมพันธ์อะไรบ้าง? อะไรปรากฏซ้ำๆ? อะไรมีวงจรชีวิตของตัวเอง ต้องระบุตัวได้ด้วยตัวเอง หรือต้องมีประวัติ? อะไรถูกสร้าง เปลี่ยน มอบหมาย โอน จัดตาราง หรือปลดระวาง?
สิ่งเหล่านี้คือสิ่งเดียวกับที่ผมฟังหาในการประชุมครั้งแรก บนหน้ากระดาษ เบาะแสเหล่านั้นเปลี่ยนย่อหน้าของความต้องการให้เป็นโมเดลที่ผมใช้เหตุผลได้ และเป็นคำถามที่ดีขึ้นสำหรับบทสนทนาครั้งถัดไป
โมเดลไม่ใช่แค่สิ่งที่คุณสร้างหลังจากแก้ปัญหาได้แล้ว มันเป็นหนึ่งในเครื่องมือที่คุณใช้แก้ปัญหา
สิ่งที่สถาปนิกต้องตัดสินใจในเรื่องนี้
หัวข้อที่มีชื่อว่า “สิ่งที่สถาปนิกต้องตัดสินใจในเรื่องนี้ ”เมื่อจบรอบแรกนี้ ผมพยายามตัดสินใจว่า:
- คำนามใดแทนเอนทิตีที่เป็นไปได้ที่มีความหมาย
- คำที่ต่างกันคำใดแทนแนวคิดทางธุรกิจเดียวกัน และคำเดียวคำใดที่ซ่อนแนวคิดสองอย่างไว้ (เช่น “ลูกค้า”)
- แนวคิดใดต้องมีเรกคอร์ดและวงจรชีวิตของตัวเอง
- แนวคิดหลักสัมพันธ์กันอย่างไร
- ธุรกิจต้องตอบคำถามอะไรบ้างก่อนที่ผมจะสร้างโมเดลได้อย่างมั่นใจ
ผมยังไม่ได้ตัดสินใจเรื่องการ implement บน Salesforce ก่อนอื่นเราต้องเข้าใจธุรกิจดีพอที่จะวาดมันออกมา และเมื่อมีคำนามอยู่บนกระดานแล้ว สิ่งถัดไปที่ผมอยากเข้าใจคือเส้นที่เชื่อมระหว่างพวกมัน
นอกเหนือจากการสอบ: AI เปลี่ยนอะไร ให้เอกสารความต้องการแก่เครื่องมือ AI แล้วมันจะหาคำนาม เสนอเอนทิตี และร่างความสัมพันธ์ได้ในไม่กี่วินาที ใช้มันเพื่อเร่งการค้นหาความต้องการ แต่อย่าจ้างคนอื่นมาเข้าใจแทน: มันไม่มีทางรู้ว่า “ลูกค้า” หมายถึงสองอย่างที่ต่างกันที่ Steve Trucking เว้นแต่ธุรกิจจะบอกคุณ นำโมเดลแรกของมันไปวางตรงหน้าคนที่บริหารธุรกิจแล้วถามว่า “ธุรกิจของคุณทำงานแบบนี้จริงๆ หรือเปล่า?”
