slide3_bg1

ในการพัฒนา software
ถ้าถาม developer ว่า ใช้เวลาส่วนใหญ่ทำอะไร ?
ส่วนใหญ่น่าจะตอบว่า เขียน code ไงล่ะ !!

แต่เมื่อลองไปนั่งสังเกตการทำงานของ developer
จะพบว่าใช้เวลาส่วนมากไปกับ การพยายามทำความเข้าใจกับ code
จากนั้นก็ทำการแก้ไข code เดิม
ส่วนที่น้อยมาก ๆ คือ การเขียน code ใหม่เข้าไป !!

แสดงดังรูป
6a0120a85dcdae970b0120a86d7477970b-pi

จากหนังสือ 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 มาใช้แล้วจะลดค่าใช้จ่ายในการดูแล

ดังนั้นเราควรสร้างสมดุลระหว่าง develop cost และ maintain cost
หรือพยายามทำให้ maintain cost ให้น้อยที่สุดเท่าที่จะทำได้
ด้วยการพัฒนา code ของระบบให้มีคุณภาพที่ดี

แต่เรากลับพบว่า code ของระบบงานส่วนใหญ่ มักจะมี maintain cost ที่สูงมาก !!

ทั้งเข้าใจได้ยาก
ทั้งแก้ไขได้ยาก
ทั้งทดสอบได้ยาก
ทั้ง deploy ได้ยาก
มันยังไงกันนะ รู้สึกแปลก ๆ กันไหม ?
แสดงดังรูป

maintenance_costs

และนี่คงเป็นสาเหตุว่าทำไม 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