พจนานุกรมข้อมูลคืออะไรกันแน่ และทำไมโครงการ BI ส่วนใหญ่จึงมองข้าม
ผมเคยเห็นผู้บริหารสองคนเถียงกันว่าบริษัทมีลูกค้ากี่ราย ทั้งคู่เป็นผู้บริหารระดับสูง ทั้งคู่มองรายงาน Power BI ฉบับเดียวกัน บนจอเดียวกัน ในที่ประชุมรายไตรมาส คนหนึ่งบอกว่าบริษัทมีลูกค้าที่ยังใช้งานอยู่ 4,200 ราย อีกคนบอกว่า 3,600 ราย รายงานเดียวกัน ระบบต้นทางเดียวกัน บ่ายวันเดียวกัน
ทั้งสองคนไม่ได้พูดผิดเลย ตรงนี้แหละที่คนส่วนใหญ่มองข้าม
คนแรกนับทุกบัญชีที่มีสัญญาอยู่ในระบบ คนที่สองนับเฉพาะบัญชีที่ซื้อของภายในเก้าสิบวันที่ผ่านมา รายงานมีการ์ดเขียนว่า "ลูกค้าที่ยังใช้งานอยู่" แต่ไม่เคยมีใครเขียนนิยามไว้ว่าคำว่า "ยังใช้งานอยู่" หมายถึงอะไร รายงานจึงแสดงตัวเลขเดียว แล้วแต่ละคนก็เอาตัวเลขนั้นไปจับกับนิยามในหัวของตัวเอง สิ่งที่เถียงกันไม่ใช่เรื่องข้อมูล แต่เป็นเรื่องของคำคำเดียว
ถ้าเรื่องนี้ฟังดูคุ้น ปัญหาของท่านไม่ใช่เรื่องรายงาน แต่เป็นข้อตกลงที่หายไป และสิ่งที่บันทึกข้อตกลงนั้นมีชื่อเรียกที่ไม่ค่อยมีใครอยากพูดถึง เพราะฟังดูน่าเบื่อ นั่นคือ พจนานุกรมข้อมูล (Data Dictionary)
พจนานุกรมข้อมูลคืออะไรกันแน่ มันไม่ใช่เอกสารที่เขียนทีหลัง ไม่ใช่ไฟล์เทคนิคที่เก็บอยู่ในโฟลเดอร์ของทีม BI แต่เป็นบันทึกภาษาธรรมดาว่าแต่ละคำในธุรกิจหมายถึงอะไร คำนวณอย่างไร ข้อมูลมาจากไหน และใครเป็นคนตัดสิน คำว่า "ลูกค้าที่ยังใช้งานอยู่" มีหนึ่งบรรทัด บรรทัดนั้นเขียนว่า บัญชีที่มีการสั่งซื้ออย่างน้อยหนึ่งครั้งในเก้าสิบวันล่าสุด ดึงจากตารางคำสั่งซื้อ มีหัวหน้าฝ่ายขายเป็นเจ้าของ แค่นั้น หนึ่งบรรทัดของข้อตกลงที่ยุติการเถียงกันอีกร้อยครั้งในอนาคต
หลายคนคิดว่าสิ่งนี้มีอยู่แล้วที่ไหนสักแห่ง ความจริงมักไม่มี สิ่งที่มีคือความรู้ที่กระจัดกระจายอยู่ในตัวคน ฝ่ายการเงินรู้ว่าการเงินนับรายได้อย่างไร ฝ่ายปฏิบัติการรู้ว่าปฏิบัติการนับงานที่เสร็จแล้วอย่างไร แต่ละทีมสอดคล้องกันภายในทีมเอง แต่มองไม่เห็นกัน ความรู้อยู่ในหัวคน และอยู่ในสูตรที่ฝังลึกในสเปรดชีตที่มีพนักงานสามคนเข้าใจ และไม่มีใครจดไว้
แล้วทำไมโครงการ BI ถึงข้ามขั้นตอนนี้ เพราะมันเป็นส่วนที่ดูไม่หวือหวาที่สุด และเลื่อนออกไปได้ง่ายที่สุด ภาพรายงานน่าตื่นเต้น พจนานุกรมข้อมูลคือการนั่งประชุม พอโครงการเร่งเข้าหาเส้นตาย พจนานุกรมข้อมูลก็เป็นสิ่งแรกที่ถูกตัดทิ้ง ด้วยข้อสันนิษฐานว่าทุกคนเห็นตรงกันอยู่แล้ว ข้อสันนิษฐานนี้แทบไม่เคยถูกตรวจสอบ จนกระทั่งรายงานออกใช้งานจริง แล้วผู้บริหารสองคนอ่านการ์ดเดียวกันได้คนละความหมาย
ยังมีอีกเหตุผลที่เงียบกว่านั้น การเขียนพจนานุกรมข้อมูลบังคับให้ต้องตัดสินใจในเรื่องที่บางคนอยากปล่อยให้คลุมเครือไว้ ทันทีที่ท่านเขียนนิยามเดียวของคำว่า "ลูกค้าที่ยังใช้งานอยู่" ลงไป จะมีคนเสียประโยชน์ ตัวเลขในสเปรดชีตของเขาจะไม่ใช่ตัวเลขทางการอีกต่อไป ความคลุมเครือปกป้องเวอร์ชันของทุกคน พจนานุกรมข้อมูลถอดการปกป้องนั้นออก ซึ่งเป็นเหตุผลว่าทำไมมันถึงมีค่า และทำไมถึงถูกหลีกเลี่ยง
ผมอยากย้ำให้ชัดว่านี่ไม่ใช่เอกสารเชิงเทคนิค พจนานุกรมข้อมูลที่แย่ที่สุดคือฉบับที่ทีม BI เขียนขึ้นเองตามลำพัง สุดท้ายมันแม่นยำแต่ไร้ความหมายต่อองค์กร เพราะทีม BI อธิบายได้ว่าตัวเลขคำนวณอย่างไร แต่ตัดสินไม่ได้ว่าธุรกิจควรเชื่อวิธีคำนวณแบบไหน การตัดสินใจนั้นไม่ใช่หน้าที่ของเขา พจนานุกรมข้อมูลต้องสร้างขึ้นโดยมีคนที่เป็นเจ้าของคำนั้นอยู่ในห้องด้วย นักพัฒนาเป็นคนจับปากกา ธุรกิจเป็นคนตัดสิน
สิ่งที่ต้องใส่ลงไปน้อยกว่าที่คนกลัวกัน สำหรับแต่ละคำที่สำคัญ ท่านบันทึกนิยามภาษาธรรมดา ตรรกะการคำนวณ ระบบต้นทาง เจ้าของ และกรณีพิเศษที่รู้อยู่ กรณีพิเศษคือที่ที่ความเห็นต่างซ่อนตัวอยู่จริง คำสั่งซื้อที่คืนเงินไปแล้วยังนับเป็นยอดขายไหม การโอนภายในนับเป็นรายได้ไหม ลูกค้าที่เลิกไปแล้วกลับมาใหม่ นับเป็นลูกค้าใหม่หรือลูกค้าเก่า ท่านไม่ต้องมีเป็นร้อยคำ ท่านต้องการแค่ยี่สิบถึงสามสิบคำที่ปรากฏบนรายงานที่คนใช้ตัดสินใจจริง
ผลตอบแทนไม่ใช่ความเป็นระเบียบ แต่คือการที่การเถียงกันครั้งต่อไปไม่เกิดขึ้นเลย เมื่อมีคนตั้งคำถามกับตัวเลข ท่านไม่ต้องกลับไปถกนิยามใหม่ ท่านชี้ไปที่บรรทัดนั้น บทสนทนาเปลี่ยนจาก "ตัวเลขนี้ดูผิดนะ" ไปเป็น "เราอยากเปลี่ยนวิธีนับเรื่องนี้ไหม" ซึ่งเป็นการตัดสินใจทางธุรกิจจริง ไม่ใช่ความเข้าใจผิด ท่านเปลี่ยนเสียงรบกวนให้กลับมาเป็นสัญญาณ
ทุกรายงานที่ท่านสร้างก่อนที่องค์กรจะตกลงกันว่าคำต่าง ๆ หมายถึงอะไร คือการสร้างบนเวลาที่ยืมมา ความเห็นต่างมีอยู่แล้ว นั่งเงียบ ๆ อยู่ในสเปรดชีตแยกของแต่ละคน รายงานไม่ได้สร้างมันขึ้นมา รายงานเปิดโปงมันออกมา และมักเปิดต่อหน้าคนที่ท่านอยากให้เห็นน้อยที่สุด
ดังนั้น ถ้าท่านกำลังจะเริ่มโครงการ BI ลองถามคำถามเดียวก่อนที่ใครจะเปิด Power BI ขึ้นมา เรามีนิยามที่เขียนไว้และมีเจ้าของสำหรับคำต่าง ๆ บนรายงานนี้แล้วหรือยัง ถ้าคำตอบคือยัง นั่นคือสิ่งส่งมอบชิ้นแรกของท่าน ไม่ใช่ตัวรายงาน แต่เป็นพจนานุกรมข้อมูล
ทุกรายงานที่สร้างก่อนที่องค์กรจะตกลงกันว่าคำต่าง ๆ หมายถึงอะไร สุดท้ายจะให้ตัวเลขที่ขัดกัน นั่นไม่ใช่ความล้มเหลวทางเทคนิค แต่เป็นข้อตกลงที่หายไป ซึ่งจะโผล่ขึ้นมาในจังหวะที่เลวร้ายที่สุด ทั้งในห้องประชุมบอร์ด ในรอบปิดบัญชี หรือในการตรวจสอบ การพูดคุยแบบมีโครงสร้างเพียงครั้งเดียวก็สร้างพจนานุกรมข้อมูลที่ทีมของท่านยอมรับร่วมกันได้ หากท่านพบกับความท้าทายในลักษณะนี้ในองค์กรของท่าน ทีมงาน WizEmp ยินดีพูดคุยเพื่อแลกเปลี่ยนประสบการณ์ → เริ่มต้นสร้างพจนานุกรมข้อมูล
ตกลงเรื่องคำให้ชัดก่อน
ทุกรายงานที่สร้างก่อนที่องค์กรจะตกลงกันว่าคำต่าง ๆ หมายถึงอะไร คือการสร้างบนเวลาที่ยืมมา หนึ่ง session ที่มีโครงสร้างจะบันทึกนิยาม เจ้าของ และกรณีพิเศษที่ทีมของท่านยอมรับร่วมกัน
นัด Discovery Call 30 นาทีคำถามที่พบบ่อย
พจนานุกรมข้อมูลกับเอกสารข้อมูล (data documentation) เหมือนกันไหม?
ไม่เหมือน และความต่างนี้สำคัญ เอกสารข้อมูลอธิบายว่าสิ่งหนึ่งถูกสร้างขึ้นอย่างไร ส่วนพจนานุกรมข้อมูลบันทึกว่าคำหนึ่งหมายถึงอะไรและใครเป็นคนตัดสิน ท่านอาจมีเอกสารที่อธิบายการคำนวณได้สมบูรณ์แบบ แต่เป็นการคำนวณที่ธุรกิจไม่เคยตกลงด้วย พจนานุกรมข้อมูลคือตัวข้อตกลงที่เขียนเป็นภาษาธรรมดา ไม่ใช่คำอธิบายเชิงเทคนิคของโค้ด
ใครควรเป็นเจ้าของพจนานุกรมข้อมูล?
ธุรกิจเป็นเจ้าของ แต่ละคำมีเจ้าของที่ระบุชื่อชัดเจนและรับผิดชอบต่อนิยามนั้น มักเป็นคนที่ดูแลฟังก์ชันที่ใช้คำนั้น ทีม BI ดูแลเอกสารและนำนิยามไปใช้งาน แต่ไม่ได้เป็นคนตัดสินนิยาม พจนานุกรมข้อมูลที่ทีม BI เขียนและเป็นเจ้าของเองตามลำพัง มักถูกต้องในทางเทคนิคแต่องค์กรไม่ได้ใช้
พจนานุกรมข้อมูลต้องมีกี่คำ?
น้อยกว่าที่คนส่วนใหญ่คิด ท่านไม่ต้องบันทึกทุกฟิลด์ในทุกตาราง ท่านบันทึกคำที่ปรากฏบนรายงานที่คนใช้ตัดสินใจ บวกกับคำที่เคยทำให้เกิดการเถียงกันมาก่อน สำหรับองค์กรส่วนใหญ่คือยี่สิบถึงสี่สิบคำ และกรณีพิเศษภายในคำเหล่านั้นคือที่ที่งานจริงอยู่
องค์กรเรามีรายงานอยู่แล้ว สายเกินไปไหมที่จะเขียน?
ไม่สาย และมักเป็นจังหวะที่ดีที่สุด เพราะตอนนี้ท่านมีตัวอย่างจริงว่านิยามชนกันตรงไหน ดึงคำออกมาจากรายงานที่มีอยู่ หาคำที่สองทีมจะตอบต่างกัน แล้วเริ่มจากตรงนั้น การเขียนพจนานุกรมข้อมูลทีหลังยากกว่าการทำตั้งแต่แรก แต่ถูกกว่าการอยู่กับตัวเลขที่ขัดกันไปเรื่อย ๆ มาก