predictions-figure-5
อ่านเจอบทความเรื่อง Please Stop Breaking the Build
ในบทความอธิบายว่า ทำไระบบงานของคุณ
ควรที่จะมีระบบ Continuous Integration
เมื่อมีแล้วก็ควรจะทำงานได้อย่างถูกต้อง หรือผลการ build ผ่านอยู่ตลอดเวลา
ซึ่งผลจากการ build มันบ่งบอกถึง
การพูดคุย การติดต่อสื่อสารของคนในทีม หรือ ในกลุ่มพัฒนานั่นเอง

เริ่มจากการตั้งคำถามว่า

ผลจากการ build ของพวก open source project นั้น
มีการอัตราการ build ที่ fail สูงกว่า งานที่เราๆ ท่านๆ พัฒนากันอยู่
ซึ่งมันจริง หรือ ไม่จริง นะ ?

ดังนั้นทางผู้เขียนบทความจึงทำการทดลอง
โดยสรุปข้อมูลจาก open source project บน github บางส่วน
และมีการ config ไว้ใน Travis CI ด้วย

ได้ผลออกมาดังรูป
reliability

คำอธิบาย
ทั้ง 40 project ที่เลือกมานั้น ล้วนให้ความสนใจกับ
การทดสอบ และการใช้งาน Travis CI ทั้งนั้น
ดังนั้น ไม่ต้องแปลกใจว่าทำไมข้อมูลจึงมี project แปลกๆ มาเยอะ

โดยมีเพียง 8 project เท่านั้น ที่มีน่าเชื่อถือสุด คือ 99% ขึ้นไป
หรือต่อเดือนจะ failได้ไม่เกิน 45 นาทีเท่านั้น

เรื่องของข้อมูลมันไม่สำคัญ หรือ ไม่ใช่ประเด็นเท่าไร

แต่ที่เราสนใจกันก็คือ ทำไมในงานของเราที่พัฒนากัน มัน build fail กันบ่อยมากๆ ?
Developer ไม่ชอบคนที่มาทำให้ระบบ build มันพัง !
Developer ไม่ชอบรอ
Manager ก็สามารถนั่งคำนวณได้เลยว่า developer ต้องรอเฉยๆ เพื่อให้ build ผ่านกี่นาที + จำนวนเวลาที่ต้องรอให้ระบบ build ซึ่งนั่นคือจำนวนค่าใช้จ่ายที่ต้องเสียไป !! มันแพงไหมนะ ?

แต่ถ้าเป็น open source project ล่ะ
ไม่เสียค่าใช้จ่ายอยู่แล้ว
แต่สิ่งที่ต้องเสียไปคือ เวลาในการ contribute ไงล่ะ

  • ไหนจะการ build
  • ไหนจะการ download dependency ต่างๆ
  • ไหนจะหา bug
  • ไหนจะแก้ไข
  • แล้ววนกลับไปข้อแรก

สุดท้ายก็ไม่อยากจะ contribute หรอกนะ !!
ไปหา project อื่นดีกว่า ว่าไหม

ดังนั้นทั้ง open source project และ งานที่เราพัฒนากันอยู่

ควรที่จะ

  • ให้ความสำคัญกับการทดสอบ และ เรื่องคุณภาพ
  • ให้ความสำคัญกับ Continuous Integration
  • ให้ความสำคัญกับสถานะของการ build ของระบบ Continuous Integration นั่นคือต้องผ่านอยู่ตลอดเวลา
  • ให้ความสำคัญต่อความถี่ในของการ check in code

เพราะว่าทั้งหมดนี้ มันคือ conversation หรือการพูดคุยของทีมพัฒนานั่นเอง
ยิ่งทีมมีขนาดใหญ่ หรือ มีจำนวนทีมเยอะ และ ห่างไกลกันเท่าไร
สิ่งที่ขาดไม่ได้เลยคือ test และ ระบบ Continuous Integration
เพื่อทำให้มั่นใจว่า คุณได้คุยกันอยู่ตลอดเวลา
เพื่อทำให้มั่นใจว่า คุณได้ integration กันอยู่ตลอดเวลา