จนถึงวันนี้มีเอกสารห้าหมื่นภาพอยู่ในระบบ เพื่อทดสอบและออกแบบการบันทึกบัญชีที่เริ่มต้นด้วยรูปภาพ ไม่เหมือนกับงานที่เคยผ่านมา มีรายละเอียดหลายอย่างทำให้เปลี่ยนวิธีคิดและนิยามขั้นตอนขึ้นมาใหม่
สำนักงานบัญชีเคยลงบัญชีตามเอกสารที่ได้รับ จึงออกแบบการทำงานโดยอ้างอิงเอกสารที่เป็นกระดาษ แต่กระดาษมีข้อจำกัดโดยเงื่อนไขของตัวมันเอง
หากเปลี่ยนกระดาษเป็นรูปภาพดิจิตัลที่แชร์ได้ เก็บรักษากระดาษไว้เป็นหลักฐาน ไม่ต้องหยิบไปใช้บันทึกบัญชีโดยตรง เพราะกระดาษอาจสูญหายหรือชำรุดระหว่างทางของการทำงานได้ รูปภาพช่วยข้ามข้อจำกัดที่ไม่ให้ใครเอาเอกสารออกจากสำนักงานไปทำงานที่บ้าน ข้ามข้อจำกัดที่ไม่สะดวกที่จะแบ่งกระจัดกระจายเป็นงานย่อยให้คนหลายคนช่วยกัน
ผมเริ่มเขียนโปรแกรม ตั้งแต่สมัยที่ใช้ทำงานบนคอมพิวเตอร์เครื่องเดี่ยว แล้วมาเป็นเน็ตเวิร์ค จนกระทั่งเป็นคลาวด์ในปัจจุบัน
ความแตกต่างของแต่ละยุคสมัยทำให้เทคนิคโปรแกรมซับซ้อนขึ้น จากโปรแกรมที่ใช้คนเดียว ไม่ต้องระวังอะไรมาก พอมาเป็นเน็ตเวิร์คทำงานร่วมกัน ต้องเพิ่มการตรวจสอบจังหวะที่คอมพิวเตอร์หลายเครื่องต้องการแก้ไขข้อมูลเดียวกัน
แต่นั่นไม่ใช่เรื่องที่ทำให้เปลี่ยนไปมากเท่ากับเมื่อต้องออกแบบให้ทำงานบนคลาวด์ เพราะการติดต่อกับเซิร์ฟเวอร์ที่อยู่ห่างไกล มีโอกาสเกิดสิ่งที่ไม่คาดฝัน กลายเป็นปัจจัยสำคัญที่เปลี่ยนวิธีการเขียนโปรแกรมไปสิ้นเชิง
สมัยก่อนโปรแกรมทำงานในระบบปิด อยู่ในคอมพิวเตอร์ของตัวเอง หรือเน็ตเวิร์คของตัวเอง เราสามารถออกแบบให้ทำงานตามลำดับทีละขั้นเรียกว่า Synchronous Process เพราะความเร็วในการติดต่อระหว่างคอมพิวเตอร์กับอุปกรณ์ต่าง ๆ ค่อนข้างคงที่สามารถควบคุมได้
พอเป็นคลาวด์ โปรแกรมทำงานในคอมพิวเตอร์เครื่องหนึ่ง ติดต่อเซิร์ฟเวอร์ที่อยู่ภายนอก ผ่านโครงข่ายอินเตอร์เน็ตอันซับซ้อน ปัจจัยความไม่แน่นอนเรื่องความเร็วในการสื่อสาร ขีดความสามารถของคอมพิวเตอร์ในการตอบสนองอาจช้าเร็วแตกต่างกันแล้วแต่โอกาส
เทคนิคในการเขียนโปรแกรมเพื่อรองรับความไม่แน่นอนบนคลาวด์จึงต้องใช้วิธีคิดแบบ Asynchronous Process ไม่ทำจบทีละงาน แต่พยายามทำหลายงานในเวลาเดียวกัน ติดต่อกับเซิร์ฟเวอร์หลายเรื่องพร้อมกัน หากเรื่องไหนตอบกลับมาได้ก่อนก็ทำงานนั้นก่อน
เทคนิค Asynchronous นี้เป็นการคิดแบบสามมิติ แขวนงานค้างไว้กลางอากาศ โดยไม่เสียเวลาหยุดรอว่าง ๆ สลับเอางานอื่นขึ้นมาทำต่อทันที งานแต่ละงานเขียนเหมือนทำสัญญาไว้ล่วงหน้า (Promise) ประกอบด้วย 2 ขั้นตอน เมื่อเริ่มต้นขั้นแรก เช่น ส่งคำขอไปหาเซิร์ฟเวอร์ ซึ่งจบที่แขวนพักทิ้งไว้แค่นั้นก่อน (Defer) ทำงานอื่นต่อไปโดยไม่ต้องหยุดรอ เมื่อมีความคืบหน้าเกิดขึ้น เช่น เซิร์ฟเวอร์ตอบกลับมาแล้ว จะกระตุ้นให้งานที่พักนั้น เข้าสู่เป็นขั้นตอน กลับไปทำงานส่วนที่เหลือให้จบ (Resolve)
สมัยที่เรามีโทรศัพท์บ้าน หากจะนัดเพื่อน 3-4 คน อาจใช้วิธีโทรหาทีละคน เสร็จจากคนหนึ่ง ก็โทรหาคนต่อไป กว่าจะนัดได้สำเร็จใช้เวลาเท่ากับเวลาที่โทรหาทุกคนรวมกัน
การสื่อสารด้วยข้อความผ่านแอป เปลี่ยนวิธีการสื่อสารไปไกลกว่านั้น ข้ามข้อจำกัดการสนทนาด้วยเสียงที่มีรูปแบบปฏิสัมพันธ์ 1 ต่อ 1 คุณสามารถตั้งคำถามไปถึงเพื่อนในกลุ่มทุกคนแล้วรอคำตอบ บางคนตอบกลับมาเร็ว บางคนอาจใช้เวลานาน เวลาที่ได้คำตอบจากทุกคนเท่ากับคนสุดท้ายที่ตอบ
การบันทึกบัญชีของสำนักงานบัญชี มีรูปแบบคล้ายกับการสื่อสารบนคลาวด์ ผู้ประกอบการส่งเอกสารมาให้แต่ละเดือน อาจช้าหรือเร็วคลาดเคลื่อนไปบ้าง ทำอย่างไรจึงรับมือกับความไม่แน่นอนตรงนี้ โดยไม่ต้องรอว่าง ๆ ระบบของสำนักงานจึงควรออกแบบให้ทำงานอยู่ภายใต้เงื่อนไขที่แตกต่างจากระบบบัญชีทั่วไปที่ใช้กันอยู่ทุกวันนี้
ยุคสมัยรุ่งเรืองของการสื่อสารด้วยเสียงผ่านโทรศัพท์ นวัตกรรมที่เอาชนะข้อจำกัด 1 ต่อ 1 นี้ คือ PABX นึกถึงการทำงานของคอลเซนเตอร์ ที่มีคนรอรับสายสนทนาอยู่จำนวนหนึ่ง รองรับสายที่ติดต่อเข้ามามากที่สุดเท่ากับจำนวนคนที่รอรับสาย หากคู่สายใดไม่ว่าง ก็จะโอนสายหาสายที่ว่างถัดไป
ผมนึกถึงวันเวลาที่เคยซัพพอร์ทโปรแกรมผ่านโทรศัพท์ เมื่อแก้ปัญหาวางสายจากผู้ใช้รายหนึ่ง แล้วก็ต้องรับอีกสายหนึ่ง เวลาที่สนทนากันไม่สามารถทำงานอย่างอื่นได้ บางเคสใช้เวลานาน ทำให้สายอื่นที่โชคร้ายต้องรอนาน แตกต่างจากซัพพอร์ทผ่านแชททุกวันนี้ คนหนึ่งคนสามารถดูแลแก้ไขปัญหาให้ผู้ใช้หลายรายพร้อมกันได้
Promisified Ledger เป็นข้อเสนอถึงการออกแบบกระบวนการบันทึกบัญชีที่ไม่ต้องเก็บงานไว้รอพิสูจน์คู่บัญชี เพื่อปลดล็อค ให้สามารถบันทึกบัญชีตามข้อเท็จจริง และกระจายงานให้หลายคนช่วยกันบันทึกบัญชีพร้อมกันได้
การจ่ายงานให้คนหลายคนช่วยกัน จากคนเดียวใช้เวลา 3 ชั่วโมง ทำให้เหลือ 1 ชั่วโมงเมื่อใช้ 3 คน แต่ก็ทำให้เกิดปัญหาใหม่ ไม่สามารถคาดหวังจะมีใครเข้าใจธรรมชาติของธุรกรรมในกิจการใด ๆ เหมือนกับการกำหนดให้มีคนดูแลอย่างเดิม ไม่มีใครเห็นภาพรวมที่ครบถ้วนของธุรกรรมที่มีทางเดินต่อเนื่องหลายจังหวะ
ตัวอย่างเช่น ขายสินค้าเครดิต ต้นทางบัญชีเกิดเหตุการณ์ขายสินค้าแต่ยังไม่ได้รับเงิน จนกว่าจะเกิดเหตุการณ์ที่ปลายทางรับชำระเป็นเงิน จะเกิดเอกสารใบส่งสินค้า ใบเสร็จรับเงิน และตามวันเวลาต่างกัน การบันทึกผ่านแยกประเภทจะเกิดสถานะชั่วคราวที่แปรเปลี่ยนจาก ลูกหนี้ เป็น เงินสดหรือเงินโอนหรือเช็ค และจบลงที่เงินเข้าบัญชีธนาคาร
วิธีการลงบัญชีรับชำระเป็นเงินโอน กระบวนท่าที่มักทำกัน คือบันทึกตอนรับชำระว่าเข้าบัญชีธนาคารไปเลย เพราะมองว่าเป็นเหตุการณ์เดียวกัน แต่เมื่อทำเช่นนี้การบันทึกบัญชีจาก Statement มีความยุ่งยากต้องรอตรวจสอบ เพื่อไม่ให้เกิดรายการเข้าบัญชีซ้ำซ้อน
หากเป็น P-Ledger จะใช้การหักล้างกันด้วยวิธีแยกประเภทแทน สมมติว่าเรามีคนสองคนช่วยบันทึกบัญชี คนหนึ่งมีใบเสร็จรับเงิน ที่ระบุว่ารับชำระเป็นเงินโอน ที่ไม่สามารถยืนยันได้ว่าโอนเงินเข้าบัญชีจริงหรือไม่ อีกคนหนึ่งมี Statement ธนาคาร ที่บอกว่ามีรายการเงินโอนเข้าบัญชี ที่ไม่สามารถบอกได้ว่ามาจากใบเสร็จรับเงินใบไหน
ฝั่งหนึ่งเห็นใบเสร็จจึงล้างลูกหนี้ กลายเป็น เงินโอนรอสะสาง โดยไม่ต้องรอตรวจว่าตรงกับ Statement
อีกฝั่งหนึ่งเห็น Statement จึงบันทึกเงินเข้าธนาคาร จาก เงินโอนรอสะสาง โดยไม่ต้องรอตรวจว่ารับจากไหน
ถ้าครบถ้วนถูกต้องทั้งสองฝั่ง ยอดของแยกประเภทเงินโอนรอสะสาง จะหักล้างกันอัตโนมัติ
เพราะเอกสารที่ส่งเข้ามาที่สำนักงานบัญชีอาจมาไม่พร้อมกัน การรอหลักฐานประกอบกันให้ครบเพื่อพิสูจน์ว่าเป็นเหตุการณ์เดียวกัน ทำให้เกิดงานคั่งค้างที่ต้องรอสะสางที่ตรวจสอบยาก ต้องใช้ความเชี่ยวชาญของนักบัญชี สืบจากหลักฐานหลาย ๆ ชิ้นมาประกอบกัน เพื่อพิจารณาว่ารายการไหนลงบัญชีแล้วยังไม่จบ ขณะที่ P-Ledger ยอดบัญชีรอสะสาง เป็นข้อเท็จจริงเชิงประจักษ์ที่พิสูจน์ผ่านยอดแยกประเภทที่หักล้างกันพอดี งานที่ต้องใช้ผู้เชี่ยวชาญตรวจสอบจะเหลือเฉพาะกรณีที่ยอดหักล้างกันไม่ครบ
ในวันที่ไม่มีมือถือ ไม่มีแอปแชท ไม่มีใครคิดว่าเราสามารถสื่อสารกันด้วยวิธีอื่นนอกจากโทรหากัน แล้ววันหนึ่งทางเลือกอื่นทำให้เงื่อนไขที่เป็นข้อจำกัดถูกข้ามไป
ความเปลี่ยนแปลงของยุคสมัยที่เกิดขึ้น ผมรู้สึกว่าเป็นมารยาทใหม่ หากต้องโทรหาเพื่อสนทนาใครโดยไม่จำเป็น อาจละเมิดเวลาอันมีค่าของผู้อื่น การส่งข้อความ เป็นการเคารพสิทธิเวลาที่สะดวกของเขา
ในอนาคตหากแนวทางบันทึกบัญชีใหม่รองรับการทำงานเป็นทีมได้สมบูรณ์ กลายเป็นไม่กลัวงานเยอะ แยกขั้นตอนรอสะสางได้ละเอียดขึ้น ไม่จำเป็นต้อง optimize เพื่อลดงานโดยยุบขั้นตอนบันทึกบัญชี การออกแบบผังบัญชีแยกประเภทอาจเปลี่ยนไป ให้ความสำคัญของการบันทึกโดยใช้บัญชีรอสะสาง เอกสารรายงานสรุปต่าง ๆ ไม่ว่าจะเป็น ยอดขายประจำวัน Statement ธนาคาร สามารถเอามาบันทึกเข้าระบบ กลายเป็นกลไกตรวจสอบผ่านแยกประเภท
Comments