ในการพัฒนา software
ถ้าถาม developer ว่า ใช้เวลาส่วนใหญ่ทำอะไร ?
ส่วนใหญ่น่าจะตอบว่า เขียน code ไงล่ะ !!
แต่เมื่อลองไปนั่งสังเกตการทำงานของ developer
จะพบว่าใช้เวลาส่วนมากไปกับ การพยายามทำความเข้าใจกับ code
จากนั้นก็ทำการแก้ไข code เดิม
ส่วนที่น้อยมาก ๆ คือ การเขียน code ใหม่เข้าไป !!
แสดงดังรูป
จากหนังสือ Implement Pattern ทำการอธิบายเกี่ยวกับค่าใช้จ่ายในการพัฒนา software ไว้ดังนี้
Total cost = develop cost + maintain cost โดยที่ maintain cost นั้นมาจาก Maintain cost = understand cost + change cost + test cost + deploy cost
- Understand cost ถ้า code ที่เขียนขึ้นมามันสามารถอธิบายได้ดี เข้าใจได้ง่าย ดังนั้นน่าจะใช้ง่าย แก้ไขง่าย และลดค่าใช้จ่ายในการดูแล
- Change cost ถ้าเราลดความซับซ้อน และ ซ้ำซ้อนของ code ลงไป มันก็จะทำให้เข้าใจง่าย แน่นอนว่ามันทำให้เราแก้ไขได้รวดเร็วขึ้น นั่นคือลดค่าใช้จ่ายในการดูแล
- Test cost ถ้า code มันสามารถทดสอบได้ง่าย ยิ่งทดสอบได้แบบอัตโนมัติ แล้วจะลดค่าใช้จ่ายในการดูแล
- Deploy cost ถ้าเราสามารถ deploy ระบบงานแบบอัตโนมัติได้ เช่นการนำแนวปฏิบัติ Continuous Delivery มาใช้แล้วจะลดค่าใช้จ่ายในการดูแล
แต่เรากลับพบว่า code ของระบบงานส่วนใหญ่ มักจะมี maintain cost ที่สูงมาก !!
ทั้งเข้าใจได้ยาก ทั้งแก้ไขได้ยาก ทั้งทดสอบได้ยาก ทั้ง deploy ได้ยาก มันยังไงกันนะ รู้สึกแปลก ๆ กันไหม ? แสดงดังรูปและนี่คงเป็นสาเหตุว่าทำไม developer ใช้เวลาส่วนใหญ่ไปกับ การทำความเข้าใจกับ code ที่ developer เขียนขึ้นมาเอง !! คำถาม แล้วเราจะช่วยกันแก้ไขปัญหาเหล่านี้อย่างไรกันดี ?Reference Websites http://readwrite.com/2013/04/25/how-software-developers-really-spend-their-time http://blog.codinghorror.com/when-understanding-means-rewriting/ https://github.com/cezarcoca/sonar-toxicity-chart/blob/master/README.md