divide
ในปัจจุบันนั้น developer ทุกคนรู้ว่า
การ commit code แบบเล็กๆ และ บ่อยๆ นั้น
เป็นแนวปฏิบัติที่ดีในการพัฒนา software

ซึ่งมันทำให้เรารู้ว่ามีอะไรเปลี่ยนแปลงบ้าง
ที่สำคัญมันสามารถ tracking หรือ ติดตามได้ง่ายอีกด้วย
สามารถทำการย้อนกลับไปยังจุดที่ต้องการได้

รวมทั้งเรื่อง commit message มันก็ยิ่งช่วยเรา
ในการอธิบายเป้าหมายของการเปลี่ยนแปลงอีกด้วย

และถ้าคุณทำการ commit บ่อยๆ
มันช่วยทำให้ทีมของคุณพูดคุยกันมากขึ้น
มันช่วยทำให้คุณรู้ปัญหาได้เร็วขึ้น
ทำให้เราแก้ไขปัญหาได้เร็วขึ้นอีกด้วย

คำถาม
วันนี้คุณ commit code บ่อยหรือไม่ อย่างไร ?

การ commit บ่อยๆ และ เล็กๆ

มันยังส่งผลดีต่อกระบวนการพัฒนา software อีกด้วย เช่น

  • ทำให้การ review code ทำได้ง่าย
  • ทำการ integrate หรือ merge เข้าไปยัง main development branch (feature branch) ได้ง่าย เพราะว่าทำครั้งละเล็กๆ
  • ระบบ Continuous Integration สามารถทำงานได้สบาย แต่ต้องมี test คลุมด้วยนะ

ใช่ว่า ทุกๆ project ทุกๆ บริษัท จะทำได้เหมือนกันหมดนะ
อันนี้ก็แล้วแต่ความเหมาะสมก็แล้วกัน

แต่ผมเชื่อว่าแนวปฏิบัตินี้ มันเข้ามาช่วยแก้ไขปัญหา

ของการ commit การเปลี่ยนแปลงครั้งละใหญ่ๆ
ซึ่งมันก่อให้เกิดปัญหามากมาย
หนึ่งในนั้น เช่น

  • มีขั้นตอนที่เรียกว่า merge code ซึ่งใช้เวลานาน
  • การ merge code มักจะพบเจอปัญหาของ code ชนกันมากมาย
  • การ merge code ทำให้ feature หาย และ bug ที่เคยแก้ไขแล้วกลับมาอีกครั้ง
  • และอื่นๆ อีกมากมาย

ดังนั้นมาทำการ commit แบบเล็กๆ กันนะครับ

ลองมาดูข้อดีของแนวปฎิบัตินี้หน่อยสิ ว่ามีอะไรบ้าง ?

ในการ review code มันทำให้ผู้ review นั้น
รู้ได้ทันทีว่า code ที่ commit มานั้น มันไปในทิศทางที่ถูกต้องหรือไม่
รู้ได้ทันทีว่า code มันอาจจะมีความผิดพลาดอะไรบ้าง
นั่นคือ ง่ายต่อการ review นั่นเอง

ลองคิดดูสิว่า
ถ้าคุณทำงานคนเดียวมาตลอดทั้งสัปดาห์
จากนั้นคุณทำการ commit code ทั้งหมดที่ทำขึ้นมาครั้งเดียว
เมื่อทำการ review code มันจะยุ่งยากเพียงใด
ถ้าเกิดมีข้อผิดพลาดขึ้นมา นั่นหมายความว่า
ตลอดทั้งสัปดาห์ เราได้เสียเวลาไปโดยเปล่าประโยชน์
รวมทั้งใช้เวลาในการ review สูงอีกด้วย

ช่วยทำให้เรารู้สถานะของ project ด้วยว่า
มีการพัฒนาไปถึงไหนอย่างไร
มันคือการเปิดให้เห็นไปเลยว่า ทีมพัฒนากำลังทำอะไรอยู่บ้าง

เคยไหม ที่ผ่านมาสัก 1-2 สัปดาห์ แล้ว
ทีมพัฒนาเดินมาบอกว่า สิ่งที่ได้รับมอบหมายมันไม่เสร็จ
โดยที่คุณไม่เคยเห็นสถานะของงานนั้นๆ เลย
ความรู้สึกของคุณมันจะเป็นอย่างไรล่ะ ?

การเปลี่ยนแปลง code ที่ละเล็กละน้อย
มันทำให้เราสามารถควบคุมเรื่องคุณภาพของ code ได้ดีขึ้น
และพัฒนาให้ดีขึ้นอย่างต่อเนื่อง
ตลอดจนถ้าพัฒนาด้วย Test-Driven Development (TDD) ด้วยแล้ว
จะทำให้คุณมีความมั่นใจมากยิ่งขึ้น

ถ้าทีมพัฒนามาระบบ Continuous Integration ด้วยแล้ว
จะพบว่าการที่เรา commit และ push code บ่อยๆ
มันช่วยทำให้เราหาข้อผิดพลาดได้ง่าย
และทำให้การแก้ไขปัญหารวดเร็วขึ้นมาก

ช่วยลดความขัดแย้งต่างๆ ลงไปอีกด้วย
ทั้ง code ที่ชนกัน
ทั้งความไม่เข้าใจต่างๆ
นั่นคือ มันคือการพูดคุยของทีมพัฒนานั่นเอง
ปัจจุบันคุณพูดคุยกัยบ่อยเพียงใด

ดังนั้น สิ่งที่คุณต้องรู้ และ เข้าใจคือ

คุณกำลังพัฒนา Software ไม่ใช่ Hardware
ดังนั้น code ที่คุณสร้างมันจึงต้อง SOFT ด้วยเช่นกัน
นั่นคือ พร้อมรับต่อการเปลี่ยนแปลง

การ commit เล็กๆ และ บ่อยๆ มันทำให้เรา
พัฒนา code ที่มัน SOFT พร้อมรับต่อการเปลี่ยนแปลง
และยังสามารถแก้ไขได้ง่ายอีกด้วย

วันนี้คุณทำการ commit เล็กๆ และ บ่อยๆ แล้วหรือยังครับ ?