หลังจากทำงานด้านซอฟต์แวร์มาปีกว่าๆ สิ่งที่พบอย่างหนึ่งคือโลกธุรกิจซอฟต์แวร์บ้านเราถูกแบ่งออกเป็นสองขั้วโดยไม่มองหน้ากัน คือ โลกของ Managed Software อย่าง .NET และ Java กับโลกของ Native ที่มีสารพัดจะัใช้กันอยู่ ทั้งเครื่องยูนิกซ์รุ่นเก่าๆ มาจนถึงลินุกซ์
ที่น่ารำคาญใจที่สุดคงเป็นเรื่องของเมื่อเทคโนโลยีส่วนหนึ่งไม่สามารถตอบสนองได้ดีพอ ธุรกิจซอฟต์แวร์บ้านเรากลับกลัวที่จะขอความช่วยเหลือจากเทคโนโลยีอื่นๆ เพื่อลดอุปสรรค แต่กลับพยายามใช้เทคโนโลยีที่ไม่เหมาะสมเพื่อให้ได้ชื่อว่าซอฟต์แวร์ X ทำงานอยู่บนเทคโนโลยี Y ให้ได้
พอดีว่าอยู่ฝั่ง Native หลายครั้งที่อยากร้องขอเทคโนโลยีระดับสูงกว่า เพื่อมาลดงานที่น่าเบื่อ (แต่ต้องมาทำใน C/C++) โดยได้ประโยชน์ด้านประสิทธิภาพน้อยกว่าร้อยละ 1 แต่ก็ไม่ได้เพราะเหตุผลที่ว่าเราต้องการให้ซอฟต์แวร์เป็น Native
ขณะเดียวกันผมเชื่อว่าคนใช้เทคโนโลยีฝั่ง Managed ทั้งหลาย ก็หลีกเลี่ยงการเรียกฟังก์ชั่น Native ด้วยความกลัวว่ามันจะไม่ Portable หรือจะต้องรองรับเทคโนโลยีอื่นเพิ่มเติม ไปจนถึงปัญหาการเมืองอื่นๆ
ความกลัวที่ไม่เข้าท่าเหล่านี้สร้างความน่าเบื่อให้กับงานในโลกซอฟต์แวร์ไม่ใช่น้อย แทนที่เราจะใช้สิ่งที่สร้างขึ้นมาเพื่อแก้ปัญหาอย่างตรงตัว เรากลับอ้อมไปมาด้วยความกลัวเกินเหตุ
บทความนี้เขียนให้ตัวผมเองจำไว้ วันไหนมีอำนาจตัดสินใจแล้ว ก็อย่ากลัวที่จะเรียนรู้เทคโนโลยีที่เหมาะสมกับปัญหาแล้วกัน
ผมว่าจุดหนึ่งคือต้องการที่จะให้ทั้งโปรเจคหรือระบบโดยรวมเป็นแบบเดียวกันที่สุดมั้ง (น่าจะใช้คำว่า consistency)
แต่บางทีมันก็ไม่เหมาะสมอย่างที่ลิ่วบอก
ส่วนเรื่องมุมว่าเป็น Manage กับ Native ผมไม่เคยมองเลยแฮะ – -“