บ่ายวันหนึ่งระหว่างเดินไปร้านกาแฟ บังเอิญเจอเพื่อนร่วมทางที่ไม่เคยรู้จักกันมาทักทาย เขาเป็นสุนัขขนเกรียน เนื้อแน่นแข็งแรง เหมือนกินดีอยู่ดี ถึงแม้จะไม่มีปลอกคอ แตกต่างจากเพื่อนข้างถนนตัวอื่นที่เคยเจอ
เอายังไงดี เพื่อนเราคงไม่ทานกาแฟ ผมไม่กล้าชวนเข้าในร้าน เลยนั่งรอกันอยู่ข้างนอกให้พักหายหอบแดด ท่านั่งประชิดแต่หันหน้าออกไประแวดระวังภายนอก เหมือนกำลังทำหน้าที่อารักขา
เดือนที่แล้ว ตอนเฝ้าไข้คุณพ่อที่โรงพยาบาล เราไม่สามารถพูดคุยกัน นอกจากอาการหลงลืมแล้วโควิดทำให้ต้องครอบออกซิเจนไว้ตลอด นึกถึงอ.ประมวลที่เล่าเรื่องไปกราบเยี่ยมพระภิกษุชราแล้วขอนวดเท้า ผมเพิ่งเข้าใจตอนนี้เอง การนวดไม่จำเป็นต้องเพื่อรักษา แต่เป็นการสื่อสารให้รับรู้ว่าไม่ได้ถูกทอดทิ้ง ถ้อยคำกลายเป็นสิ่งฟุ่มเฟือย เพื่อผ่านช่วงเวลาตรงนั้นทำให้ผมได้คิดถึงอะไรหลายอย่าง
"ข้าพเจ้าสามารถคิด รอ และอด" สิทธารถะบอกกมลา
เกือบ 30 นาที ผมสามารถรอพร้อมกับเฝ้าสังเกตเงียบ ๆ โดยไม่รู้สึกร้อนใจ บางทีปฏิสัมพันธ์ก็ไม่จำเป็น ถ้าเราอยากจะเข้าใจหมาสักตัวหนึ่ง เคยผ่านประสบการณ์อย่างไร เคยถูกทำร้ายหรือเจอแต่คนเมตตา ทำได้แต่เฝ้ามองแล้วรับรู้
สักพักหายเหนื่อยจึงลุกขึ้น แสดงอาการชวนให้เดินต่อ บริเวณหน้าร้านมีเด็กเล็กเล่นอยู่ ถึงแม้เขาไม่ได้แสดงอาการอะไร แต่ผมก็ไม่ค่อยวางใจ จึงพาเดินไปด้วยกันทะลุซอยอีกด้านไปออกถนนใหญ่
ใครเคยมีหมาเป็นเพื่อนเดินไปด้วยกัน อาจจะพอนึกออก ไม่ใช่การเดินตามกันไปเซื่องๆ แต่เป็นบรรยากาศร่วมทางแบบอิสระ ผลัดกันเดินนำ ผลัดกันตาม บางทีก็ซอกแซกเลี้ยวหายไปสำรวจทางฝั่งซ้ายหรือฝั่งขวา แล้วก็โผล่กลับมา หน้าที่ของผมคือ กำหนดทิศทาง เดินไปเรื่อย ๆ ให้อยู่ในระยะสายตา
บางทีจุดหมายปลายทางก็ไม่สำคัญเท่ากับรับรู้ว่าเราไปด้วยกัน ไม่รู้ว่าจะเดินไปไกลถึงไหน ไม่รู้ว่าจะแยกกันเมื่อไหร่ แต่ผมกำหนดแผนไว้ในใจแล้ว ระหว่างที่ไปด้วยกันก็คอยสังเกตว่าตื่นกลัว ล่อกแล่กขนาดไหน บางทีระหว่างทางเขาอาจจะจำทางที่เป็นถิ่นเก่า หรืออาจจะเจอบ้านคนที่ให้อาหารประจำ ภาระกิจของผมสิ้นสุดเมื่อเดินไปถึงคลองสายหนึ่งที่ลอดผ่านถนน แล้วเขาเลี้ยวหายไปตามทางเลียบคลองนั้น
สามารถคิด รอ และอด..
หลายครั้งผมมักคิดคำนวณฉากจบของเรื่องราวว่ามันจะลงเอยอย่างไร ใช้มันเป็นปัจจัยหนึ่งประกอบการตัดสินใจถึงทางเลือกชีวิต แล้วเตรียมเงื่อนไขรอวาระที่จะมาถึง สิ่งนี้สะท้อนอยู่ในโปรแกรมที่ตัวเองเขียน เคยผ่านประสบการณ์เห็นโปรแกรมที่นิยมใช้ในยุคสมัยหนึ่ง แล้วสูญสิ้นคุณค่าหายไปไม่มีใครเอ่ยถึง จึงเชื่อว่าโปรแกรมของเราก็มีชะตากรรมไม่ต่างกัน
ผมเคยอ่านนิยายเรื่องที่ชายคนหนึ่งได้รับพรให้เป็นอมตะ เมื่อใดที่เขาตาย เพียงลมพัดก็ฟื้นขึ้นมาได้
ไม่รู้ว่าจะหัวเราะหรือร้องไห้ดี ไม่รู้ว่าเป็นพรหรือคำสาป
สามสิบปีที่แล้ว..
ผมเขียนโปรแกรมสำเร็จรูปขายครั้งแรก และไม่คาดคิดว่าอีกสามสิบปีต่อมายังคงมีผู้ใช้โปรแกรมนี้อยู่ และแจ้งปัญหาว่าเขาทำเอกสารล่วงหน้า ลงวันที่ปี 2570 ไม่ได้ นับเป็นเรื่องที่เหนือความคาดหมาย
โปรแกรมนี้ทำงานบน DOS ระบบปฏิบัติการที่เก่ากว่า Windows version 1 เสียอีก ใช้เมาส์ไม่ได้ หน้าจอทำงานแสดงผลเป็นตัวอักษรขนาด 80x25 และ Windows XP คือ version สุดท้ายที่รองรับโปรแกรมนี้ (End of life 2013 - Microsoft)
ผมจำปี พ.ศ. 2535 ได้แม่นยำ ประเทศไทยเริ่มใช้ระบบภาษีมูลค่าเพิ่ม และเป็นปีเดียวกับที่ผมทำโปรแกรมช่วยบันทึกรายงานภาษีออกมา
คอมพิวเตอร์พีซีราคาถูก IBM PC Compatible ก็เป็นเครื่องที่นำเข้ามาจากไต้หวัน ใช้ระบบปฏิบัติการเป็น DOS ต้องใส่แผ่นดิสก์ที่เป็นแผ่นบูท เพื่อให้คอมพิวเตอร์เริ่มทำงาน หลังจากนั้นอยากใช้โปรแกรมอะไรก็เปลี่ยนเอาแผ่นดิสก์ของโปรแกรมนั้นใส่เข้าไปแทน พิมพ์คำสั่งเพื่อให้โหลดโค้ดโปรแกรมนั้นเข้าไปทำงานในหน่วยความจำ ซึ่งถูกจำกัดไม่เกิน 640 KB
ภายหลังเมื่อมีฮาร์ดดิสก์ติดตั้งอยู่ในเครื่อง จึงเปลี่ยนไปเก็บโปรแกรมที่ใช้บ่อย ๆ ไว้ในฮาร์ดดิสก์แทน ไม่ต้องคอยหาแผ่นดิสก์โปรแกรมสับเปลี่ยนไปมา
จากโปรแกรมเวิร์ดโปรเซสเซอร์ ผมเห็นการเข้ามาแทนที่ จนกระทั่งพิมพ์ดีดไฟฟ้าถูกยกออกไปจากโต๊ะทำงาน สิ่งเหล่านี้เกิดขึ้นช้า ๆ จากสำนักงานหนึ่งไปสู่สำนักงานหนึ่ง พนักงานอาวุโสถูกแทนที่ด้วยคนรุ่นใหม่ที่ใช้โปรแกรมเหล่านั้นเป็น
คอมพิวเตอร์เองก็มีพัฒนาการรอบด้านด้วยความเร็วที่เพิ่มขึ้นเรื่อย ๆ จากจอภาพ Monochrome ความละเอียดต่ำที่แสดงได้แค่ตัวอักษร กลายเป็นจอสีแสดงภาพกราฟฟิกความละเอียดสูง ระบบปฏิบัติการเปลี่ยนจาก DOS มาเป็น Windows ที่เป็น Hybrid คือ ทำงานได้ทั้งโหมด DOS และ Windows จนกระทั่งสุดท้าย DOS Compatible ก็ถูกทิ้งไว้ข้างหลังกับ Windows XP ที่เป็นรุ่นสุดท้าย ด้วยเหตุผลเรื่องความปลอดภัย และประสิทธิภาพการทำงานของ Windows รุ่นใหม่ ไม่เปิดให้ DOS เข้าถึง Interrupt Service ของ Hardware BIOS ได้อีกต่อไป
ฮาร์ดดิสก์ราคาแพง จึงออกแบบโปรแกรมให้เก็บค่าปี พ.ศ. สองหลัก
ผมเลือกเก็บข้อมูลวันที่ด้วยขนาด 3 bytes เหตุผลในตอนนั้นคือ ฮาร์ดดิสก์ราคาแพง ความจุเป็นหน่วย MB (น้อยกว่ามือถือปัจจุบันหลายเท่า) ดังนั้นการออกแบบโปรแกรมจึงให้ความสำคัญเรื่องประหยัดพื้นที่ ข้อมูลขนาด 1 byte (8 bits) สามารถเก็บค่าได้ตั้งแต่ 0–255 เพียงพอสำหรับค่าวันและเดือน ส่วนค่าปีถ้าเลือกเก็บแค่ค่าของเลข 2 ตัว เช่น ปี 2535 ก็เก็บเป็นค่า 35 ก็พอแล้ว ดูแล้วสมเหตุสมผลกับโปรแกรมภาษีมูลค่าเพิ่ม ขณะเดียวกันก็ไม่เลือกบันทึกเป็นปี ค.ศ. 1992 เพราะอีกไม่นานจะเกิดปัญหา Y2K ในปี 2000 ค่าปีจะวนกลับมาที่ 0 ทำให้การเรียงลำดับไม่ถูกต้อง
โดยทางเทคนิคโปรแกรมนี้ก็ไม่ได้ออกแบบให้ข้ามผ่านศตวรรษได้ แต่ถ้าจะทำจริง ๆ ก็สามารถ hack ได้เพราะเก็บค่าได้ถึง 255 ดังนั้นถ้าเอาศตวรรษ 2500 มาเป็นฐาน ค่าปี 100 ก็คือ 2600 ที่จริงแล้วผมคิดว่าที่สั้นกว่าโปรแกรมนั้นคือ อายุของคอมพิวเตอร์ที่สามารถติดตั้ง DOS หรือ Windows XP มาใช้งานในสำนักงาน
ออกแบบโปรแกรมให้ป้อนวันที่ได้สองระบบ กลายเป็นข้อจำกัด
ประเทศไทยเป็นประเทศส่วนน้อยในโลกที่ใช้ระบบปี พ.ศ.และประเทศไทยเป็นประเทศเดียวในโลกที่ใช้ระบบปีศักราช (พุทธและคริสต์) ปนกันอย่างเป็นธรรมชาติที่สุด แทบไม่มีคนไทยคนไหนรู้สึกว่ามีปัญหาเมื่ออ่านวันที่ 31/12/2565 หรือ 31/12/2022 หรือแม้แต่กระทั่งย่อปี 31/12/65 หรือ 31/12/22 และสิ่งนั้นก็ปรากฏอยู่บนเอกสารทางบัญชีและธุรกิจต่าง ๆ ด้วย
สมัยนั้นยังไม่มีทฤษฏีเรื่อง UX/UI เพียงแต่เห็นว่า ผู้ใช้มีโอกาสได้รับบิลหรือเอกสารที่ลงวันที่เป็นปี ค.ศ. หรือ พ.ศ. ก็ได้ เพราะโปรแกรมมาจากต่างประเทศส่วนใหญ่แล้วเขาไม่ได้ปรับให้เป็นปีไทย
ดังนั้นจึงออกแบบโปรแกรมให้ตีความเลขปีที่ป้อนเข้ามา ครั้งแรกตอนเริ่มทำโปรแกรมเป็นช่วงคาบเกี่ยวระหว่างปี 19xx - 20xx จึงกำหนดช่วงเป็น 00 - 20 หมายถึงปี ค.ศ. 20xx และ 60 - 99 เป็นปี 19xx ส่วนค่าระหว่าง 21 - 59 เป็นปี พ.ศ. 25xx
ในทางลอจิก โปรแกรมนี้จึงใช้งานได้ไม่ถึงปี 2560 เพราะรับอินพุทวันที่ได้ไม่เกินนั้น
เมื่อเวลาใกล้มาถึงประมาณ ปี 2558–2559 ยังมีผู้ใช้โปรแกรมอยู่มากพอประมาณ และไม่ทันรับรู้ถึงปัญหาการป้อนวันที่ไม่ได้ จำเป็นขุดซอร์สโค้ดโปรแกรมเก่าขึ้นมาแก้ ก่อนที่จะสุดขอบปี 2559 ซึ่งเป็นปีสุดท้ายที่รับปี พ.ศ. หลังจากนั้นถ้าใส่ปี 60 จะกลายเป็น 1960 เทียบเท่ากับ 2503 ผมขยับกรอบตีความปี ค.ศ. ใหม่เป็น 70
หลังผ่าตัดต่ออายุโปรแกรมก็เริ่มนับเวลาถอยหลังอีกครั้ง สามารถป้อนวันที่ได้ไม่ถึงปี 2570 ทอดเวลาอีกสิบกว่าปีหลังจาก Windows XP end of life และแจ้งสิ้นสุดการซัพพอร์ตไว้บนหน้าเว็บ
นั่นคือ ฉากจบที่สมบูรณ์แบบ ผมไม่รู้สึกติดค้างใด ๆ อีก
โกงความตาย..
ผมอาจเข้าใจผิดก็ได้ ที่คิดว่าคนเราถ้ารู้ว่ามีเวลาเหลืออยู่ไม่เกิน 10 ปี น่าจะคิดคำนวณวางแผนว่าเริ่มทำหรือเลิกทำอะไร ถ้าเป็นคนที่เจ็บเจียนตาย แล้วบังเอิญรอดมาได้ก็ต้องปรับเปลี่ยนพฤติกรรม คิดถึงความเสี่ยงหากยังใช้ชีวิตเหมือนเดิม
สิ่งที่ไม่คาดคิด คือ เทคโนโลยีคอมพิวเตอร์ปัจจุบัน มีประสิทธิภาพสูงจนสามารถจำลองตัวเองเป็นคอมพิวเตอร์รุ่นเก่า (VM - Virtual Machine) จนใช้งานได้เทียบเท่าฮาร์ดแวร์จริง กลายเป็นว่ามีคอมพิวเตอร์ที่ติดตั้ง Windows XP ได้ผ่าน VM โกงความตายให้ใช้โปรแกรมนี้ได้ต่อไป
ยังไม่ตัดสินใจว่าจะเลือกทางไหน จะออกแบบฉากจบคราวนี้ยังไง ขุดศพโปรแกรมมาต่อชีวิตอีกรอบ (ไม่มั่นใจ เก่ามากแล้ว) หรือพยายามชวนให้ย้ายมาอยู่บนคลาวด์ (โปรแกรมคลาวด์มีรอมาเกือบสิบปีแล้ว) ความท้าทายไม่ต่างจาก SAP ที่พยายามเคลียร์ให้ลูกค้าย้ายจาก ECC (สิ้นสุดการซัพพอร์ตปี 2570 เช่นกัน) มาเป็น HANA ลองดูว่าใครจะหมดแรงก่อนกัน
"Ohana แปลว่า ครอบครัว, ครอบครัว แปลว่า เราจะไม่ทิ้งใครไว้ข้างหลัง"
..แต่เราก็ไม่สามารถปลุกคนที่ไม่อยากตื่น
อ้างอิง
Windows XP lifecycle https://learn.microsoft.com/en-us/lifecycle/products/windows-xp
SAP ERP 6.0 maintenance timelines https://blogs.sap.com/2022/09/20/maintenance-timelines-for-sap-erp-6.0/
Comments