ประสบการณ์เล็กๆของการทำระบบอนุมัติงาน

Posted by on July 23, 2014

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

roleonapproval (1)

 

พอเจอ workflow ลักษณะนี้ มันไม่ง่ายเลยที่จะสื่อสารให้น้องในทีมที่ไม่เคยทำ workflow มาก่อน ทำระบบแบบนี้ขึ้นมา ผมเลยแก้ไขปัญหาโดยทำการวาดทุกอย่างใส่กระดาษ และอธิบายอย่างละเอียด รวมถึง ออกแบบวิธีเขียนว่า ควรแบ่งงานกันอย่างไร ซึ่งผมเลือกที่จะให้ 1 คนทำ workflow ด้วย Stored Procedure และอีก 1 คน ทำหน้า UI ให้รองรับกับ flow

test1.moc

ทีนี้พอทำจริง คนที่ทำ Stored Procedure ทำเสร็จได้เร็วกว่าคนที่ทำ UI ปัญหาต่อมาคือ เริ่มทำ Integration Test ไม่ได้ ได้แต่ทำ Unit Test ง่ายๆบน Stored Procedure ทำให้ปวดหัวเงิบขึ้นมาอีกรอบ เพราะเริ่มจะเลยกำหนดส่งงานแล้ว

ที่นี่เราใช้ Agile  Process เน้นงานออกเร็ว แต่ปัญหาคือมี SA 1 คน + น้องอายุงาน 1.5 ปี 2 คน ดูเหมือนคนจะไม่สอดคล้องกับ Process เท่าไร เพราะ Agile มันเน้นเอาคนเก่งมาแก้ไขปัญหา คือไม่ใช่ว่าน้อง 2 คนไม่เก่ง แต่น้องยังประสบการณ์น้อยอยู่ ในจุดนี้ ผมก็แก้ปัญหาโดย เข้าไปนั่งดูน้องเขียน Source code ไปเลย คือถ้าเค้าติดอะไรกัน เราก็ชี้จุด และช่วยแนะนำการแก้ไขให้ทันที ซึ่งช่วยลดเวลา น้องจะไม่ติดปัญหาอยู่นานจนเกินไป เป็นข้อได้เปรียบของการเขียนโปรแกรมด้วย ASP.NET ที่ทำให้ทุกอย่างมีระบบระเบียบ ทั้ง 3 คนเขียน  code เป็นรูปแบบเดียวกัน ทำให้ทุกคน อ่านโค๊ดของแต่ละคนได้ แต่ถ้าใครจะพยายามเขียนนอกกรอบ ไม่ตาม coding standard ที่ตั้งไว้ ผมก็จะแนะนำให้เขียนใหม่ดีกว่า

สุดท้ายแล้ว มันก็เริ่มเข้าที่เข้าทาง ขณะที่เขียนบทความนี้ ผมกำลังจะเริ่มทำ Integration Test ได้แล้ว ไว้ทำเสร็จเดี๊ยวมาเขียนเล่าให้ฟังใหม่