วันนั้นในวงสนทนา คำว่า "แก่" ถูกหยิบยกมาใช้ประกอบคำอธิบายอยู่หลายครั้ง ประเด็นเกี่ยวกับ "ความรู้ที่หมดอายุ" เริ่มได้รับการรับฟังมากขึ้น หลังจากที่ก่อนนั้นเพียงแค่รับรู้และมองว่าเป็นเรื่องไกลตัว
ไม่นานมานี้มีผู้ใช้รายหนึ่งได้ตั้งคำถามว่า "โปรแกรมของเราแสดงกราฟได้ไหม?"
เป็นเรื่องที่ผมไม่เคยคิดมาก่อน โลกนี้มี Excel, Sheets ไปจนถึง Looker , Tableau และอีกมากมายที่ใช้ทำกราฟได้ดีอยู่แล้ว ก็แค่หาทางส่งข้อมูลให้โปรแกรมเหล่านั้นได้ ทำไมต้องไปทำอะไรซ้ำซ้อนในโปรแกรมตัวเองอีก แต่ผู้ใช้กลับไม่คิดเช่นนั้น อาจเพราะเห็นว่าโปรแกรมบัญชีรุ่นใหม่ต่างก็มีหน้าจอแสดงกราฟจนเป็นเรื่องที่ควรจะทำได้เหมือนกัน
ถึงแม้ว่าโปรแกรมของเราจะเตรียมส่วนเชื่อมต่อข้อมูลนอกจาก Excel ก็มี Google Sheets ที่สามารถใช้งานร่วมกับ Looker Studio เอาไว้แล้ว แต่ก็ยังเป็นความรู้สึกบางอย่างที่เรียกว่าไม่ใช่ seamless หรือดูได้ทันที ต้องสั่ง sync data ออกไปก่อน จึงได้ข้อมูลล่าสุด
เหมือนโลกยุคที่ผมเติบโตมาการเดินทางในกรุงเทพฯต้องใช้รถเมล์ หากไหว้พระ 9 วัดก็ต้องนั่งรถต่อเรือหลายทอด ทุกวันนี้มีรถไฟฟ้าเรียกว่าสะดวกกว่าเดิม แต่ไม่ใช่ความรู้สึกของคนที่เคยใช้บริการรถไฟฟ้าสิงค์โปร์
ในวาระพิเศษการได้ไปไหว้พระ 9 วัดบ้างก็ดี แต่ถ้าต้องเดินทางอย่างนั้นทุกวันอาจไม่ใช่ เหมือนกับมี Dashboard ใน Looker Studio ก็ดี แต่ก็ควรมีกราฟง่าย ๆ ในโปรแกรม
"ควรมีกราฟง่าย ๆ ในโปรแกรมหรือไม่?"
ก่อนจะนำไปสู่การตอบคำถามของผู้ใช้ว่า "โปรแกรมแสดงกราฟได้ไหม?" ในใจผมคิดถึงทางเลือกของความเป็นไปได้ที่มากมาย ไม่ใช่ประเด็นทางเทคนิคอย่างเดียว แต่เป็นเรื่องของเหตุผลด้านอื่นด้วย
เจตนาที่ถามเรื่องนี้จริงจังแค่ไหน? มีคนอื่นที่คิดแบบนี้อีกไหม? เป็นสัญญาณบ่งชี้ว่าโปรแกรมล้าสมัยจริงหรือไม่?
จะเป็นอย่างไรหากตอบว่าโปรแกรมไม่มีกราฟ (เชื่อว่าไม่จำเป็นเพราะ Looker Studio เพียงพอแล้ว)
จะต้องแลกกับอะไรบ้างหากพยายามพัฒนาโปรแกรมให้มีกราฟ (ความคุ้มค่าเมื่อต้องลงทุนคน เวลา ฯลฯ เพื่อทำสิ่งนี้ เป็นการโฟกัสไปกับเรื่องที่ไม่จำเป็นหรือไม่)
มีความเห็นหนึ่งในแง่มุมธุรกิจ หากถูกเปรียบเทียบความสามารถที่มองเห็นได้กับโปรแกรมอื่น ประเด็นนี้จะทำให้กลายเป็นความด้อยโดยไม่มีโอกาสนำเสนอข้อดีอื่น ๆ หรือไม่
อีกความเห็นหนึ่ง ในเรื่องหลักการ หากต่อไปมีเรื่องความสามารถโปรแกรมโน้นนี้มาอีก จะกลายเป็นบ้าไล่ตามเก็บงานไม่มีวันจบหรือไม่
สำหรับผมมองว่าโปรแกรมอายุเกือบ 10 ปีนี้อยู่ในสถานะ Legacy Code แล้ว ถ้าไม่จำเป็นก็ไม่อยากลงทุนพัฒนาอะไรเพิ่ม นอกจากดูแลให้ใช้งานได้ตามปกติ (Maintainance state) เหมือนพนักงานที่รอเกษียณ ไม่ควรส่งไปเรียนทักษะใหม่
ถ้าเทียบกับโปรแกรม ERP รุ่นเก่าทั้งหลายก็จะยังคงมีอายุใช้งานต่อไปอีกประมาณ 10–20 ปีเป็นอย่างน้อย รอให้คนรุ่นอายุ 50 ที่อยู่ในระดับอาวุโสส่วนใหญ่เกษียณกันหมด
ทำให้นึกภาพถึงวัฏจักรนี้ออกว่า ผู้พัฒนาโปรแกรมเหล่านั้นต้องทำอย่างไร ด้านหนึ่งก็ลงทุนพัฒนาเวอร์ชั่นใหม่ให้ทันสมัยเพื่อรองรับลูกค้าใหม่ อีกด้านหนึ่งก็ดูแลผู้ใช้เวอร์ชั่นเก่าที่ไม่ยอมเปลี่ยน เวลาผ่านไปต้นทุนดูแลเพิ่มขึ้นเรื่อย ๆ ตามอายุงานของทีมเก่าที่ต้องรักษาไว้เป็นรุ่นสุดท้ายกับ "ความรู้ที่หมดอายุ" ขณะที่จำนวนองค์กรที่คงใช้โปรแกรมที่หมดอายุเป็นตัวหารลดลงด้วย ดังนั้นต้นทุนเพื่อรักษาเวอร์ชั่นเก่าให้ใช้งานได้จึงเพิ่มขึ้นแบบก้าวกระโดด
ทุกอย่างเป็นต้นทุน จังหวะเวลาที่ไม่เหมาะสมก็เป็นต้นทุน ล้ำสมัยเกินไปไม่ได้ ล้าหลังเกินไปไม่ควร หากไม่สามารถเต้นรำให้เข้าจังหวะของความเปลี่ยนแปลงย่อมมีราคาที่ต้องจ่าย
ผมเลือกแนวทางลองสำรวจหาความเป็นไปได้ดูก่อน หากโชคดีไม่เสียเวลามากเกินไป อาจมีทางออกสำหรับทุกฝ่าย ข้อดีของ Legacy Code อยู่ตรงที่อาจมีใครเคยทำเรื่องนี้มาแล้ว เพียงต้องหาให้เจอ
เบื้องต้นลองทดสอบ Chart.js แบบคร่าว ๆ หากใช้ได้ดีอาจเอาจะมาเล่าให้ฟังต่อไป
เพิ่มเติมหลังจากที่รีวิวโปรแกรมให้ดูกันในกลุ่มเล็ก ๆ กับคำถามว่า “เราดูกราฟเพื่ออะไร?” ผมลองประมวลความคิดจากหลายมุมมองในวงสนทนา
กราฟเพื่อมอนิเตอร์ (ง่ายและเร็ว) ไม่เหมือนกราฟเพื่อวิเคราะห์เชิงลึก (มีมิติและยืดหยุ่น)
กราฟมอนิเตอร์ใช้ดูความปกติของปัจจุบัน
กราฟวิเคราะห์ใช้ดูอดีตเพื่อทำนายอนาคต
บางครั้งผู้ใช้ก็บอกไม่ได้ว่าต้องการดูกราฟเพื่ออะไร (อุ่นใจ)
บางครั้งผู้ใช้ต้องการใช้กราฟเพื่อพิสูจน์สมมติฐานอะไรบางอย่างของเขา (ค้นคว้า)
บางครั้งผู้ใช้ต้องการกราฟเพื่อติดตามวัดผลอะไรบางอย่างที่เขาสนใจ (เฝ้าดู)
บางครั้ง(บางคนเท่านั้น) ที่มี Dashboard ของตัวเองที่ใช้เป็น Command Center
นโยบายปฏิบัติงานที่ไม่ชัดเจน มีผลทำให้ข้อมูลมีขยะ (noise)
แต่ละคนแต่ละองค์กรมีขีดความสามารถการใช้ประโยชน์จากกราฟไม่เท่ากัน
คนที่ต้องการใช้ประโยชน์จากกราฟจริง ๆ มักจะไม่รอใช้จากโปรแกรม
การออกแบบกราฟที่ไม่ได้เป็นผู้ใช้เอง ต้องการ Story Telling ด้วย
อ้างอิง
Angular Chart https://jtblin.github.io/angular-chart.js/
Comments