checkin-often
กฎเหล็กของการใช้งาน Source Control หรือ Version Control System ทั้งหลายก็คือ

Check In Early, Check In Often

แต่นักพัฒนาส่วนใหญ่
มักทำการเขียน code ยาวนาน เช่นทั้งวัน ทั้งสัปดาห์ ทั้งเดือน ทั้งปี
โดยไม่ทำการ check in หรือส่งการเปลี่ยนแปลงไปยัง Source Control เลย
… มันมีปัญหาไหมนะ ?

ซึ่งบ่อยครั้งมักพบว่า แนวปฏิบัตินี้

จะนำไปสู่ปัญหาเมื่อ คุณ และ ทีมต้องทำการรวม code ทั้งหมด
หรือมี phase ของการ merge code
หรือมีปัญหาว่า feature หาย ไม่ครบ
หรือมีปัญหาว่า bug มันกลับมาอีกแล้ว

คุณเจอปัญหาเหล่านี้กันบ้างไหมนะ ?

ทำไมนักพัฒนาถึงไม่อยาก check in code บ่อยๆ นะ ?

นักพัฒนาน่าจะ ไม่ต้องการให้ code ที่เราเขียนขึ้นมานั้น
ไปกระทบ หรือ ส่งผลกระทบ ต่อคนอื่นๆ และ ต่อระบบ

นักพัฒนาน่าจะไม่ต้องการโดยตราหน้าว่า
เป็นคนทำให้ระบบมันพัง หรือ ทำงานไม่ได้

นักพัฒนาน่าจะทำงานที่มันใหญ่มากๆ

มีเหตุผลอื่นๆ อีกไหมนะ ?
แต่ไม่ว่าจะเหตุผลใดๆ ก็ตาม มันนำมาซึ่งปัญหาอื่นๆ !!

ตัวอย่างเช่น

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

ปัจจุบัน คุณมีปัญหาเกี่ยวกับเรื่องนี้ไหมนะ ?
ถ้ามี ก็ยังทำแบบเดิมๆ เจอปัญหาแบบเดิมๆ ใช่ไหม ?
ทำไม ?

ดังนั้น ให้ทำการ check in code ครั้งละเล็กๆ และ บ่อยๆ มันจะดีกว่าไหมนะ ?

เนื่องจาก ถ้าคุณไม่ check in code สักที
มันก็เหมือนไม่มีอะไรเกิดขึ้น ใช่หรือไม่ ?

นักพัฒนาบางคน ก็มักจะพูดแก้ตัว เมื่อ code มันมีปัญหา ก็คือ
บนเครื่องของฉัน มันทำงานได้นะ !!

ลด ละ เลิก การกระทำแบบนี้เถอะนะครับ

แนวปฏิบัติที่ขอแนะนำให้ลองไปปฏิบัติก็คือ

ให้เริ่มพัฒนางานแบบเล็กๆ และ check in ไปยัง Source Control บ่อยๆ
รวมทั้งมีการทำ Continuous Integration ด้วย
จะช่วยให้เรา และ ทีม รู้ปัญหาได้อย่างรวดเร็ว
เพื่อทำการแก้ไข และ ปรับปรุงมันอยู่เสม่ำเสมอ

ลองคิดดูว่า ถ้า code ที่คุณสร้างต่อ 1 การ check in มันเยอะ
ปัญหาที่ตามมา จำนวน bug ก็เยอะใช่ไหม ?

ดังนั้น คุณในฐานะนักพัฒนา software

ควรที่จะเรียนรู้ และ ปฏิบัติ ตามกฏ Check In Early, Check In Often
คุณจะได้ feedback กลับมาอยู่อย่างบ่อยๆ
คุณจะได้ทำการรวม code ในระบบอยู่บ่อยๆ
คุณจะได้ทำการ review ระบบอยู่บ่อยๆ
คุณจะได้ทำการทดสอบอยู่บ่อยๆ
แล้วมันจะทำให้คุณรู้อยู่เสมอว่าระบบของคุณมีสุขภาพอย่างไร

เริ่มทำกันเถอะครับ Check In Early, Check In Often