ถ้าจะพัฒนาซอฟท์แวร์ขึ้นมาสักตัว จะเขียนเองทั้งหมด หรือว่าจะใช้ชิ้นส่วนที่มีอยู่แล้วดี

คำถามนึงที่มักจะถูกยกขึ้นมาเวลาที่จะเริ่มต้นโปรเจคใหม่ก็คือ เราจะพัฒนาโปรแกรมในระดับไหน จะทำเองทั้งหมด หรือจะใช้ชิ้นส่วนที่มีอยู่แล้ว (และมากน้อยแค่ไหน)

ถ้าเป็นในอดีต คนส่วนใหญ่มักจะตอบว่า เขียนเองหมดเลย ด้วยเหตุผลประมาณว่าไม่เชื่อใจฝีมือคนอื่น เราเรียกความคิดนี้ว่ากลุ่มอาการ NIH (หรือ Not Invented Here Syndrome) ซึ่งในอดีตซอฟท์แวร์ไม่ได้มีขนาดใหญ่ มีความซับซ้อนไม่มาก การที่จะเขียนเองทั้งหมดในบ้าน (In-House … เอามันดื้อ ๆ นี่ล่ะ) ก็เป็นสิ่งที่ยังพอทำได้

แต่ในปัจจุบัน ใครที่ทำแบบนั้น ก็คงมีอยู่สองกลุ่ม ไม่โง่ ก็บ้า ….

สาเหตุก็คือในปัจจุบัน มีคนทำไลบราลีต่าง ๆ มากมายก่ายกอง มีเฟรมเวิร์คให้ใช้เป็นร้อย เราไม่มีความจำเป็นจะต้องทำในส่วนนี้เลย ถ้าเราเลือกเฟรมเวิร์คที่เหมาะสมเราจะสามารถทำงานในส่วนที่เป็นตัวงานจริง ๆ โดยไม่ต้องพะวงกับส่วนของเฟรมเวิร์ค เพราะมีคนดูแลอยู่แล้ว (ถ้ามันมีปัญหาก็เปิด Issue  ไปแล้วให้เขาจัดการ)

ปัญหาของการพัฒนาซอฟท์แวร์เองทั้งหมดตั้งแต่ 0 ก็คือเราจะมี Code Base ที่ใหญ่ ซับซ้อน ทำให้เราไม่สามารถดูแลมันได้อย่างทั่วถึง เราจะเจอกับบรรดาบั๊กทั้งหลายที่ไม่มีคนไปแก้ไขมัน และเมื่อเวลาผ่านไปนานเข้า พอมีคนสลับสับเปลี่ยนกันภายในทีม คนใหม่ ๆ ที่เข้ามาจะต้องมานั่งเรียนรู้ตัวโปรแกรมใหม่ทั้งหมด ซึ่งนอกจากจะเสียเวลาแล้ว มันยังยากกว่าการศึกษาโปรแกรมที่ใช้ชิ้นส่วนที่มีอยู่แล้วในตลาด

ยอมรับเถอะครับ เราไม่ได้มีคนมานั่งเขียนเอกสารสอนวิธีการใช้งานชิ้นส่วนโปรแกรมมันซะทุกชิ้นหรอก อันที่จริงจะมีสักชิ้นนึงก็เรียกสวรรค์ลงมาโปรดได้แล้ว

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

แต่การใช้ชิ้นส่วนสำเร็จรูปเองก็มีปัญหาบ้างเหมือนกัน อย่างเช่น เราไม่รู้วิธีการทำงานข้างในอย่างละเอีย หรือการเอาชิ้นส่วนสำเร็จรูปหลาย ๆ ตัวมาใช้ร่วมกันอาจจะเจอปัญหาเรื่องที่มันทำงานเข้ากันไม่ได้ หรือมีรูปแบบการเขียนโค๊ดที่แตกต่างกันในแต่ละชิ้นส่วน ซึ่งเราสามารถใช้ Design Pattern บางตัวมาปรับตรงนี้ได้เหมือนกันครับ

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

แต่ว่า ผมว่า ถ้าเกิดมาเขียนโค๊ดในส่วนนี้เองก็เป็นการยากที่จะทำให้ใช้งานได้ครับ ดังนั้นซื้อเอาคุ้มค่ากว่าน่ะ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.