ทำไมในการพัฒนา software
ถึงมี bad code หรือ code ที่มันแย่ ๆ ขึ้นมาเพียบเลย ?
หรือว่าจำนวนนักพัฒนาที่สามารถเขียน code ให้มีคุณภาพมีน้อยกันนะ ?
หรือว่ามันมีเหตุผลอื่น ๆ อีกนะ ?
เราลองมาค้นหาคำตอบกันหน่อยสิ
สิ่งที่มักได้ยินตลอดมาก็คือ
code ที่แย่ ๆ มักถูกสร้างมาจากนักพัฒนาใหม่ ๆ ที่มีประสบการณ์น้อย ดังนั้น เราจำเป็นต้องแก้ไขตรงนี้ คือ จ้างแต่นักพัฒนาที่มีประสบการณ์สูง ๆ !! หรือไม่เช่นนั้น ต้องให้นักพัฒนาใหม่ ๆ เรียนรู้เพิ่มเติม ต้องสอนเพิ่มเติม ต้องเก็บเกี่ยวประสบการณ์มากขึ้น มันเป็นแนวทางที่ดูดีมีเหตุผลนะ แต่เราไม่มีเวลา !!ในการพัฒนา software เน้นเพียงทำให้เสร็จ ทำให้เสร็จ ทำให้เสร็จ !!
โดยเรื่องคุณภาพของ code มีสำคัญรองลงไป ทำให้นักพัฒนาสนใจเพียงการทำงานให้เสร็จ ๆ ไป ทำให้นักพัฒนาคิดว่า เขียนอย่างไรก็ได้ เพื่อให้งานเสร็จตามเวลา นั่นหมายความว่า เราเริ่มต้นจากการสร้างของแย่ ๆ และทุก ๆ คนที่เกี่ยวข้องก็เห็นดีเห็นงามไปด้วย ผลลัพธ์ที่ออกมาจึงเป็นอย่างที่เห็นในทุกวันนี้นั่นเองดังนั้นสิ่งที่ควรแก้ไขคือ เรื่องของคุณภาพของ code
มันต้องเป็นสิ่งที่มาพร้อมกับนักพัฒนาตั้งแต่เริ่มต้น เหมือนกับการของแพทย์ คุณจะไว้ใจและยอมรับให้แพทย์ที่ไม่มีมาตรฐานมารักษาหรือผ่าตัดหรืออย่างไร ? แน่นอนว่า คุณย่อมไม่ไว้ใจ เหมือนกับการบิน คุณจะไว้ใจและยอมรับให้นักบินที่ไม่เคยนำเครื่องบินลงอย่างปลอดภัยมาขับหรือไม่ ? แน่นอนว่า คุณย่อมไม่ไว้ใจ ดังนั้นในการพัฒนา software ก็เช่นกัน คุณจะไว้ใจและยอมรับให้มี code แย่ ๆ กันหรือไง ? แน่นอนว่าไม่คำถามที่น่าสนใจ คือ แล้วทำไมนักพัฒนาถึงสร้าง code แย่ ๆ ออกมาล่ะ ?
สาเหตุเกิดจากอะไรบ้าง ? เมื่อย้อนกลับไปดูที่หนังสือสมัยเรียน Programming ช่วงเริ่มต้น พบว่ามันประกอบไปด้วย code ที่แย่ ๆ จำนวนมาก ตัวอย่างเช่น- การตั้งชื่อที่มีแต่ a,b,c,i,j,k,x,y,z
- การตั้งชื่อ class เช่น Sample1, Class1
- การทำงานอยู่ใน main method ทั้งหมด
- ตัวอย่าง code ที่แย่ ๆ เช่นการ validation ข้อมูล และการจัดการ error ต่าง ๆ รวมทั้งการใช้งาน if-else และ switch-case แบบเยอะ ๆ
- หนังสือส่วนใหญ่เน้นสอนแต่เรื่องของ syntax ของภาษา
ดังนั้นหนังสือที่นักพัฒนาทุกคนควรอ่าน เรียนรู้ตั้งแต่เริ่มเขียน code คือ
สิ่งที่นักพัฒนาทุกคนควรใส่ใจ คือ
เรียนรู้การสร้าง code ที่มีคุณภาพที่ดี ทั้งจากการเรียนรู้ด้วยตนเอง ทั้งจากหนังสือต่าง ๆ ทั้งจากการเรียนรู้จากผู้อื่น ทั้งจากการ review code อยู่อย่างสม่ำเสมอ แล้วจะทำให้ code มีคุณภาพสูงขึ้นอย่างต่อเนื่องวันนี้คุณสร้าง code แย่ ๆ ออกมามากน้อยเพียงใด ?