code-review-2
เรื่องที่สองที่นักพัฒนาควรรู้ และ เข้าใจก็คือ Code Review
เป็นเรื่องที่ทีมพัฒนาควรจะต้องทำกันเลย

คำถาม
ทำไมเราถึงต้องทำล่ะ ?
คำตอบ
เพราะว่าเราต้องการเพิ่มคุณภาพของ code และลดจำนวน defect/bug ลงไงล่ะ
แต่เหตุผลมันคงไม่เพียงพอมั้ง เพราะว่านักพัฒนาส่วนใหญ่ก็ไม่ทำกัน !!

ความเข้าใจผิด

ผมเชื่อว่าหลายๆ คนคงมีประสบการณ์ที่ไม่ดีนักสำหรับการทำ code review
และนักพัฒนาบางคนอาจจะไม่ชอบการทำ code review เลย

เนื่องจากหลายๆ องค์มีการทำ code review แบบเป็นทางการมากๆ
เช่นมีแผนก หรือ หน่วยงาน หรือ กลุ่มคน ที่ทำการ review code เลย
เหมือนว่าเป็น gate of code quality หรือ audit เพื่อคอยจับผิด
ก่อนที่จะทำการ deploy code ไปยัง production server

และมักจะพบว่าคนที่ทำหน้าที่ review code จะเป็นกลุ่มคนในตำแหน่ง Architect หรือ Tech Lead
การ review code จะมีเพียงมุมมองเดียวตามคนที่ทำการ review
การ review code มักจะทำหลังจากการพัฒนาเสร็จสิ้น
มักจะใช้เวลาในการ review code นั้นสูงมาก
และงานในส่วนนี้มักจะกลายเป็นปัญหาคอขวดอีก ..

สิ่งที่ควรทำความเข้าใจใหม่

การ review code นั้นไม่ใช่เพื่อค้นหาสิ่งที่ไม่ถูกต้อง
แต่เป้าหมายที่แท้จริงก็คือ การแบ่งปันความรู้ของคนภายในทีมพัฒนา
และช่วยกันสร้างแนวทางในการ coding ของทีม หรือกลายเป็นมาตรฐานที่ทุกๆ คนช่วยกันสร้าง

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

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

ในแต่ละคน หรือ ตำแหน่ง ควรที่จะมีมุมมองหลากหลายในการ review
เพื่อทำให้การ review เกิดประโยชน์สูงสุด เช่น

  • บางคนมองในเรื่องของเอกสาร
  • บางคนมองในเรื่องของการจัดการ exception ต่างๆ
  • บางคนมองในเรื่องของแต่ละ feature

ช่วงเวลาใดเหมาะสม ?

โดยปกติจะทำอย่างน้อยสัปดาห์ละ 1 ครั้ง ครั้งละ 1-2 ชั่วโมง
สำหรับคน review ให้สุ่ม หรือ หมุนเวียนไปในทุกๆ ครั้ง
และในแต่ละคนให้ลองเปลี่ยนมุอมอง หรือ role การ review ไปในทุกๆ ครั้ง
ยิ่งคนที่มีประสบการณ์น้อยๆ หรือเพิ่งจบมา ยิ่งต้องเข้าร่วม code review ด้วย
เนื่องจากจะได้เห็นการ review ในมุมมองที่แตกต่างออกไป
รวมทั้งคนที่มีประสบการณ์ และ ความรู้ ก็จำเป็นเช่นเดียวกัน

ถ้าในทีมพัฒนามีการ pair programming กันอยู่แล้ว
จะช่วยให้การ review code ลื่นไหลมากขึ้นไปอีก

ในการ review code จะลื่นไหล และ ง่ายมากๆ
ถ้าทีมมีเครื่องมือช่วยตรวจสอบเรื่อง coding standard
ดังนั้นจะไม่มีการพูดคุย หรือ ถกเถียงเรื่องการจัดรูปแบบของ code กันอีกเลย
ส่งผลให้การ review code มีประสิทธิภาพสูงมากๆ

สิ่งที่สำคัญมากๆ

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

กิจกรรมนี้ไม่ควรมีรูปแบบเป็นทางการ
เนื่องจากเป้าหมายของมันคือ การแบ่งปันความรู้ของคนภายในทีม
หยุดการพูด comment แบบดูถูก เสียดสี
เปลี่ยนเป็นการพูดคุยแบบสนุกสนาน และ เอาขนมและอาหารต่างๆ มานั่งกินแบบสบายๆ ดีกว่านะ

วันนี้คุณทำ Code review แล้วหรือยัง ?