ในยุคปลายที่ DOS ครองโลก ผมเคยเขียนโปรแกรมเก็บข้อมูลผลการลงทะเบียนรายวิชา ของนักศึกษาที่ตัวเองดูแลอยู่ ตอนนั้นไม่ได้นึกสนใจ DBase เพราะคิดว่าไม่คุ้มที่จะหัดใหม่ เขียนโดยใช้ภาษาเบสิกล้วน ๆ
ตอนนั้นคิดรองรับเรื่องความยืดหยุ่น แยกโครงสร้างต่าง ๆ ถอดไปเก็บไว้ในรูปแบบ configuration file หมด ให้โปรแกรมเรียนรู้จาก configuration file อีกทีว่าจะทำตัวยังไง
เขียนอยู่ 2 เดือนเห็นจะได้ ด้วยภาษา Basic รุ่นใหม่ที่หน้าตาคล้าย VB ยุคนี้ (แต่ไม่มี object ให้ใช้)
พอเขียนเสร็จ ลองเอามาใช้ดู (กรอกข้อมูลเองครับ ผมบอกแล้ว ว่าเขียนโปรแกรมใช้เอง) ผมก็ต้องโยนทิ้งโปรแกรมนี้ไปทันทีโดยไม่อาลัยอาวรณ์แม้แต่น้อย เพราะเพิ่งเข้าใจความรู้สึกของการถูกทำรุณากรรม ด้วยการต้องกรอกข้อมูลดิบที่มีปริมาณมากมหาศาล
สมัยนี้ ปัญหาเดิมก็ยังอยู่
แม้ผมสามารถ download เกรดนักศึกษาที่ผมดูแลมาจากฐานข้อมูลของมหาวิทยาลัยได้ในรูปแบบ text file แต่ผมก็ยังรู้สึกเสียดายว่า ถ้าผมจะนำข้อมูลนั้นมาใช้ต่อ ก็ยังต้องเหนื่อยอีกมาก
คือถ้าเอามาใช้โดยตรง ผมก็ต้องคัดลอกมือใหม่หมด
หรือโดยอ้อม เช่น เขียนโปรแกรมเอง แต่ถ้าเจอ unstructured text file ผมก็คิดหนัก ถ้าต้องเขียนโปรแกรมยาว ๆ เพื่อสร้างระบบที่ใช้ได้แต่ตัวเอง ทำไปทำไม ? ทำให้คนอื่นใช้ งานต้องยุ่งยากคูณสิบเท่า สรุปแล้ว ทำมือคุ้มกว่า
ลองนึกดูนะครับ หากผมสามารถ download structured text file มาเข้าฐานข้อมูลตรง ผมสามารถ crosstab ดูได้เลยว่า มีใครลงทะเบียนต่างจากเพื่อน แล้วค่อยเจาะลึกตรวจสอบอย่างละเอียดอีกต่อ ก็จะทำให้การดูแลการลงทะเบียนทำง่ายขึ้น
พูดง่าย ๆ ก็คือ ต่อให้ระบบฐานข้อมูลเป็นที่โปรแกรมฉลาด แต่หากต้นทุนในการสวาปามข้อมูลมีสูงมาก เพราะต้องกรอกข้อมูลนานมาก ระบบนั้น ๆ ก็ไม่น่าจะใช้ประโยชน์ได้ยั่งยืน หรือเผลอๆ จะมีอายุการใช้งานสั้นมาก
บทเรียนที่ผมได้ก็คือ
Usability สำคัญกว่าความฉลาดของโปรแกรม !
มีตัวอย่างมากมายใน web ที่ยืนยันความข้อนี้
มี webpage มากมาย ที่แวบแรกที่เห็น เราจะรู้เลยว่าโปรแกรมเมอร์ฉลาดอัจฉริยะ แต่ผู้ใช้เข้าไปเยี่ยมเพียงครั้งเดียว แล้วสาปส่งไปตลอดชีวิต
ในมุมกลับ webpage ที่ดูง่าย ๆ ราวกับเด็กประถมออกแบบ เช่นกูเกิล ในหน้านั้นไม่มีอะไรเลย ไม่มีสคริปต์ แฟ้มก็กะจิดริด
แต่ลองนึกถึงข้อเท็จจริงว่าผู้ก่อตั้งกูเกิลรวยมหาศาลในทุกวันนี้ ก็ใช้แต่หน้า webpage กระจอก ๆ นั้นอยู่แบบเดียว ส่วนโปรแกรมเมอร์ที่ขียนโปรแกรมหน้า web อัจฉริยะเหล่านั้นก็ยังโนเนมเหมือนเดิม
ไม่ได้ยุให้ออกแบบหน้าเว็บเหมือนเด็กประถมทำนะครับ เพียงแต่จะบอกว่า ความฉลาด มีที่ใช้ในระดับลึกของโปรแกรม และยิ่งฉลาดมากถึงขั้นอัจฉริยะได้ก็ยิ่งดี เพราะจะทำให้โปรแกรมทำงานได้ดียิ่งขึ้น
แต่เมื่อเกี่ยวข้องกับผู้ใช้ ความฉลาดต้องพับเก็บไว้ก่อน เพราะมีเรื่องอื่นที่สำคัญกว่า และต้องมาก่อน นั่นคือการเข้าใจผู้ใช้ การมองเห็นในมุมมองของผู้ใช้
พูดง่าย แต่ทำยาก
มีอีกตัวอย่างหนึ่ง
ผมเคยช่วยเขียน user defined function ใน Excel ให้บุคลากรในคณะที่ต้องใช้ทำงานประจำบางอย่าง ที่ผมดู ๆ แล้ว ถ้าใช้ function หยั่งว่า..เอ๊ย..อย่างที่ว่า จะทุ่นแรงมากในการบันทึกข้อมูลการประชุมวิชาการ ตาม session ย่อย เพื่อคำนวณเวลาสำหรับคิดหน่วยกิตบรรยาย
สิ่งที่ผมทำ คือสร้างและสอนเขาเรียกใช้ฟังก์ชันทำนองนี้
=SmartHour(A5) เมื่อ A5 คือเซลล์ที่มีข้อความเวลา เช่น "8:30-9:15,9:30-10:45"
ก็จะส่งค่ากลับมาเป็น 2 (หน่วยชั่วโมง) มาให้ ทำให้ไม่ต้องมานั่งคำนวณเวลาให้วุ่นวายอีก
โปรแกรมแบบนี้ เขียนเดี๋ยวเดียวก็เสร็จ จนลืมไปแล้วว่าตัวเองเคยเขียน
ปรากฎว่า life cycle ของโปรแกรมนี้ยาวมากผิดคาด เพราะแม้ระบบปฏิบัติการจะเปลี่ยนไปยังไง ผมก็ยังต้องตาม support ย้าย platform ให้อยู่ตลอด
ผมเจอกรณีแบบนี้บ่อย โปรแกรมที่เขียนตามใจผู้ใช้ บางทีเขียนแบบง่าย ๆ แต่เขาใช้นานจนเราตกใจเมื่อรู้ว่าเขายังใช้โปรแกรมรุ่นโบราณนั้นอยู่ แต่โปรแกรมเขียนตามใจตัวเอง ไม่แน่ว่าใช้ครั้งเดียวก็ต้องทิ้ง
บทเรียนที่ผมได้ก็คือ
Usability คือสิ่งที่ช่วยให้คนทำงานกับข้อมูล ทำงานได้ง่ายขึ้น ไม่ใช่ทำงานได้ยากขึ้น และไม่มีอะไรเกี่ยวข้องกับความอัจฉริยะในการออกแบบโปรแกรมเลยแม้แต่น้อย
อ่านแล้วให้ได้ความคิดจริงๆ ครับ
จารุวัจน์ ครับ ที่แวะมาทักทาย
เห็นอย่างยิ่งครับ...ในฐานะเป็นคนเขียนโปรแกรมด้วย
ยิ่งง่ายยิ่งยาก ง่ายสำหรับคนใช้ แต่ยากสำหรับคนเขียน แต่ค่าแรงทำไมมันน้อยแสนน้อยสำหรับบ้านเรา เรียกว่ายิ่งง่าย ยิ่งราคาถูก.....ว่าไหมครับ? แต่ด้วยความรักในเทคโนโลยี วันนี้ก็ยังคงต้องทำต่อไปครับ
สวัสดีครับ คุณสติ