top of page
ค้นหา

Hybrid ERP ตอน 2: จุดเริ่มต้นของการแยก "ความจริง"

  • รูปภาพนักเขียน: Sathit Jittanupat
    Sathit Jittanupat
  • 12 นาทีที่ผ่านมา
  • ยาว 1 นาที

วันที่ผมรู้ว่า "ตัวเลขเดียว" ไม่เคยมีอยู่จริง


หลังจาก ERP ตัวแรกของผมเริ่มมีปัญหา

ผมเริ่มเจอคำถามแปลก ๆ มากขึ้นเรื่อย ๆ

คำถามเหล่านี้ไม่ได้มาจากคนกลุ่มเดียว

และที่สำคัญ มันไม่ได้ถามถึง "ตัวเลขเดียวกัน"


ree


คลังถามผมว่า

"ตอนนี้ของเหลือเท่าไหร่จริง ๆ"

เขาไม่ได้สนใจงวดบัญชี

ไม่สนใจต้นทุน

ไม่สนใจรายงานสิ้นเดือน


เขาอยากรู้แค่ว่า


ถ้าเดินไปที่ชั้นวางของตอนนี้ จะหยิบได้กี่ชิ้น


ฝ่ายขายถามผมว่า

"ขายได้ไหม"

ไม่ใช่ว่ามีของหรือไม่

แต่คือ


  • ของที่ยังไม่ติดจอง

  • ของที่ไม่เสีย

  • ของที่ไม่ถูกล็อกไว้กับลูกค้าคนอื่น



ฝ่ายบัญชีถามผมว่า

"ยอดนี้จะไปลงงบเดือนไหน"

เขาไม่ได้ถามว่า ตอนนี้มีของกี่ชิ้น

แต่ถามว่า


  • ต้นทุนของเดือนนี้คือเท่าไหร่

  • ยอดยกไปถูกต้องหรือไม่

  • ปิดงบแล้วจะย้อนกลับมาแก้ได้ไหม


---


ตอนนั้นผมยังคิดแบบคนเขียนระบบรุ่นใหม่

ผมเชื่อว่า


ถ้าเราหาตัวเลขเดียวที่ถูกที่สุดได้ ทุกคนก็น่าจะพอใจ

ซึ่ง… ไม่เคยเกิดขึ้นจริงเลย



ความพยายามครั้งแรก: ทำให้ "ตัวเลขเดียว" ฉลาดขึ้น


ผมเริ่มจากสิ่งที่คุ้นเคย


  • เพิ่ม 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 ระบบไม่ได้

และอะไรคือสิ่งที่ผมเริ่มบันทึกแทนมัน

 
 
 

ความคิดเห็น


Post: Blog2_Post
  • Facebook

©2020 by Scraft On Cloud. Proudly created with Wix.com

bottom of page