traffic-jam
จากหนังสือ Programming Beyond Practices (Be more than just a code monkey)
ได้แนะนำขั้นตอนการ review code ที่น่าสนใจดังนั้น
ลองคิดดูสิว่า ถ้าเราเป็นลูกค้า หรือ ผู้ว่าจ้าง
โดยที่รู้ด้วยว่าการเปลี่ยนแปลง code ต่าง ๆ จะเกิดผลกระทบ หรือ มีความเสี่ยงอะไรบ้าง ?
เราน่าจะลดขั้นตอนการ review ต่าง ๆ ลงไป
แล้วมาพยายามส่งมอบระบบงานให้ได้บ่อย ๆ ดีกว่าไหม ?

เป้าหมายคือลดขั้นตอนการ review code ลง

ทั้งวิธีการเขียน code
ทั้งโครงสร้างของ code
ทั้งชุดการทดสอบ
ทั้งเรื่องของเอกสารต่าง ๆ
สุดท้ายคือ ไม่มีสิ่งต่าง ๆ เหล่านี้เลย !!

คำถามคือเริ่มอย่างไรดีล่ะ ?

เริ่มต้นด้วย Production Testing

มันคือสิ่งที่สำคัญมาก ๆ และเป็นสิ่งแรกเลย
นั่นคือการสร้าง code ที่สามารถทำงานบน
production environment หรือคล้าย ให้ได้เร็วที่สุด

เพราะว่าสิ่งที่ต้องการคือ feedback ที่เหมือนจริง
ไม่ใช่พัฒนาด้วยระบบหนึ่ง
แต่พอตอนส่งมอบก็ออกระบบหนึ่ง !!

มันจะทำให้เราเห็นว่า
สิ่งที่คิด
สิ่งที่ออกแบบ
สิ่งที่สร้าง
มันสามารถทำงานบน environment จริง ๆ ได้หรือไม่ ?
หรือว่ามันเหมาะสมหรือไม่ ?

ผลที่ได้รับคือ เรากล้าที่จะเปลี่ยนแปลงและแก้ไข feature ต่าง ๆ อีกด้วย
รวมทั้งรู้ความเสี่ยงต่าง ๆ อีกด้วย
เช่นจากการ deploy ระบบเป็นต้น

สิ่งที่ต้องเน้นคือ Product มากกว่าการ review code

ดังนั้นสิ่งที่ต้องพูดคุยกันก่อนจะมาดู issue ต่าง ๆ ของ code คือ
คุณภาพของ product และความสามารถต่าง ๆ เช่น

  • การเปลี่ยนแปลงนี้มันแก้ไขปัญหาของลูกค้าจริง ๆ ใช่ไหม ?
  • วิธีการนี้มันเสถียรและครอบคลุมแล้วใช่ไหม ?
  • ปัญหาที่จะตามมาจากการแก้ไขคืออะไรบ้าง ?
  • ต้องทำการ migrate ระบบกันอย่างไรบ้าง ?
  • สามารถ rollback การเปลี่ยนแปลงกัลบได้ง่ายไหม ถ้าเกิดข้อผิดพลาดขึ้นมา ?
  • ค่าใช้จ่ายที่ตามมาในการดูแลเป็นอย่างไร ?

คำถามเหล่านี้
มันจะช่วยให้เรารู้ปัญหาต่าง ๆ ก่อน
ที่จะมาทำการ review code จริง ๆ
ทั้ง code ดีหรือไม่ ?
ทั้งโครงสร้างดีหรือไม่ ?
ทั้งต้อง refactor code ไหม ?
ทั้งการเขียน automated testing ?

มันเป็นการวิเคราะห์ปัญหาแบบ outside-in
นั่นคือการมองภาพของ product
จากมุมมองของลูกค้าและผู้ใช้งาน

ดังนั้นเริ่มต้นด้วยความต้องการของลูกค้า

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