Hybrid ERP ตอน 2: จุดเริ่มต้นของการแยก "ความจริง"
- Sathit Jittanupat
- 12 นาทีที่ผ่านมา
- ยาว 1 นาที
วันที่ผมรู้ว่า "ตัวเลขเดียว" ไม่เคยมีอยู่จริง
หลังจาก ERP ตัวแรกของผมเริ่มมีปัญหา
ผมเริ่มเจอคำถามแปลก ๆ มากขึ้นเรื่อย ๆ
คำถามเหล่านี้ไม่ได้มาจากคนกลุ่มเดียว
และที่สำคัญ มันไม่ได้ถามถึง "ตัวเลขเดียวกัน"

คลังถามผมว่า
"ตอนนี้ของเหลือเท่าไหร่จริง ๆ"
เขาไม่ได้สนใจงวดบัญชี
ไม่สนใจต้นทุน
ไม่สนใจรายงานสิ้นเดือน
เขาอยากรู้แค่ว่า
ถ้าเดินไปที่ชั้นวางของตอนนี้ จะหยิบได้กี่ชิ้น
ฝ่ายขายถามผมว่า
"ขายได้ไหม"
ไม่ใช่ว่ามีของหรือไม่
แต่คือ
ของที่ยังไม่ติดจอง
ของที่ไม่เสีย
ของที่ไม่ถูกล็อกไว้กับลูกค้าคนอื่น
ฝ่ายบัญชีถามผมว่า
"ยอดนี้จะไปลงงบเดือนไหน"
เขาไม่ได้ถามว่า ตอนนี้มีของกี่ชิ้น
แต่ถามว่า
ต้นทุนของเดือนนี้คือเท่าไหร่
ยอดยกไปถูกต้องหรือไม่
ปิดงบแล้วจะย้อนกลับมาแก้ได้ไหม
---
ตอนนั้นผมยังคิดแบบคนเขียนระบบรุ่นใหม่
ผมเชื่อว่า
ถ้าเราหาตัวเลขเดียวที่ถูกที่สุดได้ ทุกคนก็น่าจะพอใจ
ซึ่ง… ไม่เคยเกิดขึ้นจริงเลย
ความพยายามครั้งแรก: ทำให้ "ตัวเลขเดียว" ฉลาดขึ้น
ผมเริ่มจากสิ่งที่คุ้นเคย
เพิ่ม column
เพิ่ม flag
เพิ่ม status
เพิ่ม report
ผมพยายามทำให้ stock balance table
ตอบได้ทุกคำถาม
แต่ยิ่งเพิ่ม
ระบบยิ่งเปราะ
ตัวเลขเดียว ถูกตีความหลายแบบ
แก้เพื่อฝ่ายหนึ่ง อีกฝ่ายก็พัง
ไม่มีใครกล้าฟันธงว่า "อันนี้คือความจริง"
จนวันหนึ่ง
ผมเริ่มตั้งคำถามกับตัวเองว่า
หรือปัญหาไม่ใช่ตัวเลข แต่เป็น ความคาดหวัง ว่าทุกคนควรใช้ตัวเลขเดียวกัน
จุดเริ่มต้นของการแยก "ความจริง"
สิ่งแรกที่ผมยอมรับ คือ
คนแต่ละฝ่าย ไม่ได้ต้องการความจริงแบบเดียวกัน
คลังต้องการ ความเร็ว
ฝ่ายขายต้องการ ความพร้อมขาย
บัญชีต้องการ ความนิ่งและตรวจสอบได้
ผมเริ่มทดลองแยกระบบ IC ออกเป็นสองส่วน
ไม่ใช่เพราะอ่านเจอจากตำรา
แต่เพราะไม่มีทางเลือกอื่นแล้ว
ส่วนที่หนึ่ง: Realtime Stock
เพื่อคนที่ต้องตัดสินใจ "เดี๋ยวนี้"
ผมสร้างกลไกที่
เมื่อมี transaction สินค้าเข้า–ออกเกิดขึ้น
ระบบจะคำนวณ ยอดคงเหลือล่าสุดแบบ realtime
ไม่สนใจงวด
ไม่สนใจต้นทุน
ไม่พยายามฉลาดเกินไป
หน้าที่เดียวของมันคือ
บอกให้ได้ว่า ณ วินาทีนี้ ระบบคิดว่าของเหลือเท่าไหร่
คลังเริ่มทำงานลื่นขึ้น
ฝ่ายขายเริ่มเชื่อข้อมูลมากขึ้น
แต่ผมรู้ดีว่า
ตัวเลขชุดนี้ ยังไม่เหมาะกับบัญชี
ส่วนที่สอง: Daily Stock
เพื่อคนที่ต้อง "สรุปเรื่องราว"
ผมแยกอีกส่วนหนึ่งออกมา
ให้ทำงานต่างออกไปโดยสิ้นเชิง
แทนที่จะคำนวณทุกครั้งที่มี event
ส่วนนี้จะ
ดึง transaction มาประมวลผลแบบ on-demand
สรุปเป็นยอดรายวัน
ทำ accumulation ต้นทุนเป็นงวดเดือน
มันไม่ต้อง realtime
แต่มันต้อง อธิบายได้
บัญชีเริ่มปิดงบง่ายขึ้น
ผมเริ่มตอบคำถามว่า
"ตัวเลขนี้มาจากไหน"
ได้โดยไม่ต้องเปิดโค้ด
วันที่ผมเลิกถามว่า "ตัวเลขไหนถูก"
หลังจากแยกสองส่วนนี้ออกจากกัน
คำถามในทีมเปลี่ยนไป
จาก
"ตัวเลขนี้ถูกหรือเปล่า"
กลายเป็น
"ตัวเลขนี้ มาจากระบบไหน และใช้เพื่ออะไร"
และนั่นคือวันที่ผมเริ่มเข้าใจจริง ๆ ว่า
Inventory ไม่ได้มี single truth แต่มี single source of events ที่ถูกเล่าออกมาในหลายมุม
บทเรียนที่ผมได้จากตอนนี้
ผมไม่ได้ออกแบบระบบให้ "ซับซ้อนขึ้น"
ผมแค่เลิกบังคับให้ทุกคนมองโลกแบบเดียวกัน
Realtime stock
ไม่ต้องนิ่ง
แต่ต้องเร็ว
Daily stock
ไม่ต้องเร็ว
แต่ต้องอธิบายได้
และทั้งสองอย่าง
ไม่ควรถูกบังคับให้เป็นสิ่งเดียวกัน
ตอนถัดไป
ตอนที่ 3: ผมเลิกออกแบบระบบจาก 'ตารางยอดคงเหลือ' เมื่อไหร่
ผมจะเล่าต่อว่า
ทำไมการคิดจากยอดคงเหลือ
ทำให้ผม debug ระบบไม่ได้
และอะไรคือสิ่งที่ผมเริ่มบันทึกแทนมัน



ความคิดเห็น