วันศุกร์, มกราคม 29, 2553

Case Study โปรแกรม ERP : ความกังวลเรื่องชื่อกับเวลา

ลูกค้าที่จ่ายเงินแพงมักคาดหวังมากกว่าเสมอ ดังนั้นผู้พัฒนาระบบ ERP สำหรับองค์กรขนาดใหญ่ ย่อมต้องคิดมากกว่าองค์กรขนาดเล็ก หลังจากผมลองผิดลองถูกกับบริษัทลูกค้ามาพักใหญ่ :p ทำให้จับได้หลายจุดที่คิดว่า "ถ้าเป็นโปรแกรมสำหรับบริษัทขนาดเล็กหรือกลาง ผมไม่มีทางทำแบบนี้แน่ๆ" และเมื่อผมต้องทำโปรแกรม ERP อีกครั้งอาจจะลืมสิ่งเหล่านี้ไปแล้วก็ได้ อย่ากระนั้นเลย บันทึกไว้ซะหน่อย

กรณีศึกษาแรกคือเรื่องของการเปลี่ยนชื่อ, ที่อยู่ หรือข้อมูลในเอกสาร

ปัญหา

เมื่อลูกค้าหรือคู่ค้าเปลี่ยนชื่อหรือที่อยู่ ถ้าเอกสารในโปรแกรมของเราอ้างอิงลูกค้าผ่านระหัสของลูกค้า โดยไม่เก็บชื่อเก่าเอาไว้ เมื่อเวลาผ่านไป ลูกค้าย้อนกลับมาดูเอกสาร ชื่อหรือที่อยู่ในเอกสารจะเปลี่ยนไปด้วย

 
ภาพตัวอย่างเมื่อลูกค้า Orange เปลี่ยนชื่อเป็น True

ในภาพเมื่อลูกค้าย้อนกลับมาพิมพ์เอกสาร หรือกลับมาตรวจค้นเอกสาร โดยนำกระดาษมาเป็นตัวสืบค้น ลูกค้าจะเกิดความสับสนทันทีว่าอะไรคือค่าที่ถูกต้อง เอกสารในมือลูกค้าเขียนว่า "Orange" แต่ในโปรแกรมกลับแสดงคำว่า "True" ความไม่เท่ากันเกิดจากความผิดพลาดของโปรแกรม หรือเกิดจากการกรอกข้อมูลที่ไม่ถูกต้องกันแน่ แล้วแบบนี้ตอนรายงานจะถูกหรือเปล่า แล้วเอกสารอื่นๆ ล่ะ etc.

ทางแก้

เวลาที่เราเก็บข้อมูลนอกจากจะเก็บรหัสอ้างอิงแล้ว เราต้องเก็บตัวข้อมูลเอาไว้ด้วย แต่ไม่ใช่เก็บทุกอย่าง แต่เลือกเก็บเฉพาะข้อมูลที่อยู่บนรายงานของลูกค้า หรือข้อมูลที่คาดว่าจะอยู่ในอนาคต

ปัญหาที่ตามมามีสองข้อ

  1. เอกสารที่ยังไม่ได้พิมพ์ หรือลูกค้ายังไม่ได้นำไปออกรายงาน ลูกค้าจะมีความเชื่อว่าเมื่อเปลี่ยนชื่อลูกค้า ใน Address book แล้ว เอกสารทุกใบที่กำลังจะพิมพ์ควรเปลี่ยนตามให้ด้วย (ลูกค้าลืมปัญหาแรกของเราไปแล้ว) จุดนี้ต้องตกลงกันให้ดีว่า ลูกค้าจะตามไปแก้เอกสารทุกใบเปลี่ยนเอง หรือจะให้โปรแกรมเปลี่ยนให้ตามเงื่อนไข เช่น ถ้า Project ของเอกสารนั้นยังไม่ปิด ให้นำข้อมูลใหม่มาพิมพ์เสมอ หรือมีปุ่มให้ลูกค้ากดในหน้า Project หรือในหน้าเอกสาร เพื่อเปลี่ยนเอกสารทั้งหมดให้เป็นชื่อใหม่

    ผมมีประสบการณ์ว่าถ้าเงื่อนไขซับซ้อน เราควรจะเปลี่ยนข้อมูลโดยให้ลูกค้าเป็นคนตัดสินใจ แต่อาจจะอำนวยความสะดวกด้วย ปุ่ม [update data] ในหน้าเอกสาร หรือในหน้า Project
  2. เอกสารที่ตามมา เช่น Invoice ออกมาตาม Quotation จำเป็นต้องมีชื่อที่อยู่เหมือนใบ Quotation หรือไม่ อันนี้ต้องคุยกับลูกค้าให้ดีครับ เพราะเมื่อลูกค้าเปลี่ยนชื่อ อย่างกรณี Orange -> True ใบ Quotation ของเราเขียนว่า Orange แต่ถ้าออก Invoice ใบใหม่ เราจะเขียน True หรือ Orange ดี ตรงนี้ต้องแล้วแต่ลูกค้า บางรายก็อยากให้เราแก้ Quotation  ให้เป็น True เพราะ Job นี้ยังไม่ปิด บางรายก็ให้ copy ข้อมูลจาก Quotation มาให้หมดแล้วเค้าจะแก้เอง

    ผมมีประสบการณ์ว่าลูกค้าเปลี่ยนแปลงบ่อย ตรงนี้เราควรกำหนดไว้ใน config file หรือกำหนดไว้ในจุดที่เปลี่ยนวิธีได้ง่ายๆ สำหรับเรา
ทางแก้ในด้าน GUI

ให้แสดงข้อมูลทั้งสองตัวบนหน้าเอกสาร โดยเลือกซ่อนข้อมูลชุดใด ชุดหนึ่งเอาไว้ แนะนำให้ซ่อนชุดที่เป็น reference เพราะลูกค้ามันจะเทียบสิ่งที่ตัวเองพิมพ์ กับหน้าจอเสมอ


แนะนำทางเทคนิค

เมื่อโปรแกรมของเรามีเอกสารมากกว่า 1 เอกสาร ให้จำไว้ว่า "Don't repeat your self" อย่าให้มี code ซ้ำซ้อนกัน อย่าเอาง่ายโดยการ copy logic นี้ไว้ในเอกสารทุกตัว ถ้าไม่สามารถทำได้ หรือทำได้ยากให้ลองอ่านพวก Enterprise Software หรือถ้าใช้ Rails ให้ลองอ่าน Enterprise Rails ด้านล่าง จะช่วยให้ท่ายากๆ ทำได้ง่ายขึ้น

blog comments powered by Disqus