จากการทำงานในส่วนการพัฒนา software นั้น
มีแนวปฏิบัติที่ดีมากมาย แต่พบว่า developer ส่วนใหญ่
ไม่ค่อยนำไปปฏิบัติ หรือ ใช้งานกันท่าไร ซึ่งมันก็แปลกดีนะ
แต่พบเจอจนไม่น่าจะใช่เรื่องแปลกแล้วมั้ง
แต่คนที่นำไปใช้นั่นสิกลับแปลก !!
ตัวอย่างของแนวปฏิบัติที่ดี และ น่านำไปใช้ในการพัฒนา software มีดังต่อไปนี้
1. Test-Driven Development หรือ Test-Driven Design ( TDD )
แนวคิดนี้ หัวใจคือ การออกแบบระบบที่ต้องการสร้าง หรือ แก้ไขปัญหา
ส่วนเรื่องการทดสอบ คือ สิ่งที่ได้ตามมากเท่านั้นเอง
ในปัจจุบันมีทั้ง TDD, BDD และ ATDD มันเยอะมากเลยนะ เลือกเอาสักอย่างก่อน
แต่พบว่า developer ส่วนใหญ่มักไม่นำไปใช้งาน
และมักจะมีเหตุผลต่างๆ นาๆ เพียบ เพื่อที่จะไม่ทำ
2. Refactoring
developer มักจะมา refactoring code เมื่อ code นั่นมีปัญหา
แต่ไม่ชอบถามแบบ small step หรือทำไปทีละเล็กละน้อย
สุดท้าย ก็ต้องเขียนใหม่ ซึ่งไม่น่าจะเป็นทางที่ดี
แต่ developer ส่วนใหญ่ก็เลือกที่จะทำ
3. Distributed Version Control System
เชื่อว่า developer ส่วนใหญ่ยังใช้ Version Control System แบบ centralise หรือ แบบ client-server อยู่
developer เหล่านั้นมักจะ เจอเหตุการณ์ Merge hell
developer เหล่านั้นมักจะ เจอเหตุการณ์ server พัง แล้วไม่สามารถทำงานได้
ดังนั้น developer ควรหันมาลองใช้งาน Distributed Version Control System กัน เช่น Git, Mercurial HG เป็นต้น
4. Continuous Integration
ข้อนี้มันคือ ความจริงที่น่าเศร้าใจยิ่งนัก
ในโลกการพัฒนา software ที่ต้องทำงานเป็นทีมนั้น
คุณจะทำงานได้อย่างไร ถ้าไม่รวม code หรือ รวม feature ต่างๆ จากคนในทีมกันบ่อยๆ
คุณจะรู้ได้อย่างไร ว่า code ที่เขียนขึ้นมามันทำงานได้ถูกต้อง
คุณจะรู้ได้อย่างไร ว่า code ที่เขียนขึ้นมาไม่ไปทำให้งานส่วนอื่นๆ ทำงานผิดพลาด
คุณจะรู้ได้อย่างไร ว่าระบบทั้งหมดคุณทำงานได้อย่างถูกต้อง ตามที่คาดหวัง
คุณจะรู้ได้อย่างไร ว่า ….
แต่เชื่อไหมว่า ทีมพัฒนา software ไม่ได้นำแนวคิด Continuous Integration ไปใช้เลย
ทำให้ไม่มีระบบ Continuous Integration อีก …
และระบบ Continuous Integration นั้นต้องมี 3 ข้อข้างต้นด้วยนะ
คำถามคือ ทำไมนะ developer จึงไม่นำไปใช้งาน หรือ ปฎิบัติ ?
มีอะไรอีกบ้างไหม ที่มันดี แต่ developer ไม่ยอมทำ ?
เช่น ไม่เข้าใจ requirement แต่ developer ก็สามารถสร้างมันขึ้นมาได้ มันก็ดูงงๆ ดีนะ
ใครมีแนวปฏิบัติดี แนะนำกันได้นะครับ
วันนี้คุณในฐานนะ Developer ได้ลองหัด ฝึก ปฏิบัติ และ นำไปใช้งานแล้วหรือยัง
ถ้ายัง … ถึงเวลาแล้วล่ะนะ …
ไม่เช่นนั้น จะกลายเป็นภาระของลูกหลานนะครับ