poor-code-00
ทำไมในการพัฒนา software
ถึงมี bad code หรือ code ที่มันแย่ ๆ ขึ้นมาเพียบเลย ?
หรือว่าจำนวนนักพัฒนาที่สามารถเขียน code ให้มีคุณภาพมีน้อยกันนะ ?
หรือว่ามันมีเหตุผลอื่น ๆ อีกนะ ?
เราลองมาค้นหาคำตอบกันหน่อยสิ

สิ่งที่มักได้ยินตลอดมาก็คือ

code ที่แย่ ๆ มักถูกสร้างมาจากนักพัฒนาใหม่ ๆ ที่มีประสบการณ์น้อย
ดังนั้น เราจำเป็นต้องแก้ไขตรงนี้
คือ จ้างแต่นักพัฒนาที่มีประสบการณ์สูง ๆ !!

หรือไม่เช่นนั้น ต้องให้นักพัฒนาใหม่ ๆ
เรียนรู้เพิ่มเติม
ต้องสอนเพิ่มเติม
ต้องเก็บเกี่ยวประสบการณ์มากขึ้น
มันเป็นแนวทางที่ดูดีมีเหตุผลนะ
แต่เราไม่มีเวลา !!

ในการพัฒนา software เน้นเพียงทำให้เสร็จ ทำให้เสร็จ ทำให้เสร็จ !!

โดยเรื่องคุณภาพของ code มีสำคัญรองลงไป

ทำให้นักพัฒนาสนใจเพียงการทำงานให้เสร็จ ๆ ไป
ทำให้นักพัฒนาคิดว่า เขียนอย่างไรก็ได้ เพื่อให้งานเสร็จตามเวลา
นั่นหมายความว่า เราเริ่มต้นจากการสร้างของแย่ ๆ
และทุก ๆ คนที่เกี่ยวข้องก็เห็นดีเห็นงามไปด้วย
ผลลัพธ์ที่ออกมาจึงเป็นอย่างที่เห็นในทุกวันนี้นั่นเอง

poor-code-01

ดังนั้นสิ่งที่ควรแก้ไขคือ เรื่องของคุณภาพของ 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 ของภาษา

ซึ่งหนังสือเหล่านั้นสอนเพียงให้เข้าใจ syntax ของภาษา
เน้นเพียงให้ระบบทำงานได้อย่างถูกต้องตามที่ต้องการ
แต่ไม่ได้สอนให้เราเขียน code เพื่อให้คนอื่น ๆ อ่านเข้าใจ
เน้นเพียงให้เครื่องเข้าใจและทำงานได้อย่างถูกต้อง
แน่นอนว่า เป็นสิ่งที่ทำให้นักพัฒนาใหม่ ๆ เดินผิดทาง
เป็นสาเหตุหนึ่งที่คนส่วนใหญ่มักบอกว่า
นักพัฒนา software มันพูดกับคนอื่นไม่รู้เรื่อง

ดังนั้นหนังสือที่นักพัฒนาทุกคนควรอ่าน เรียนรู้ตั้งแต่เริ่มเขียน code คือ

สิ่งที่นักพัฒนาทุกคนควรใส่ใจ คือ

เรียนรู้การสร้าง code ที่มีคุณภาพที่ดี
ทั้งจากการเรียนรู้ด้วยตนเอง
ทั้งจากหนังสือต่าง ๆ
ทั้งจากการเรียนรู้จากผู้อื่น
ทั้งจากการ review code อยู่อย่างสม่ำเสมอ
แล้วจะทำให้ code มีคุณภาพสูงขึ้นอย่างต่อเนื่อง

วันนี้คุณสร้าง code แย่ ๆ ออกมามากน้อยเพียงใด ?