54816288

ในปัจจุบัน developer หลายๆ คนเริ่มที่จะศึกษา และ เขียน unit test มากขึ้น
แต่ว่า เมื่อลองเริ่มเขียนแล้วจะรู็สึกได้ว่า unit test ทำให้ทำงานช้าลง
ซึ่งนั่นจึงเป็นเหตุผลที่เหมาะสม
สำหรับการไม่ทดสอบ code ที่เขียนขึ้นมา

ยิ่งหัวหน้าทีม ก็ใช้เหตุผลนี้ เพื่ออ้างว่า
ให้ทำงานให้เสร็จๆ ก่อน
ทำให้ developer ไม่เขียน unit test สำหรับทดสอบ code
หรือ ถ้าจะเขียน ก็รู้สึกว่า ไม่ได้รับอนุญาตให้เขียนอีก !!

คำถาม
คุณต้องได้รับอนุญาตให้เขียน unit test เพื่อทดสอบ code ที่คุณเขียนด้วยหรือ ?
คำตอบ …
คุณต้องได้รับอนุญาตในการเขียน code ไหม ?
คุณต้องได้รับอนุญาตในการแก้ไข code ไหม ?
คุณต้องได้รับอนุญาตในการ compile code ไหม ?
คุณต้องได้รับอนุญาตในการ package software ไหม ?

แล้ว คุณต้องขออณุญาตในการเขียน unit test ด้วยหรือ ?

คำถาม
มันจำเป็นด้วยหรือ ? ไอ้การทดสอบเนี่ย ?
คำตอบ
Developer มักจะพูดว่า เราไม่ได้เขียน unit test หรอก
เพราะว่า ไม่สามารถพูดเพื่อโน้มน้าวให้หัวหน้า และ คนในทีม หรือ manager
ให้เห็นถึงความจำเป็น และ สำคัญของมันได้

หรือ อาจจะบอกไปถึงว่า manager หรือ หัวหน้า ไม่ได้ต้องการ unit test หรอกนะ
ต้องการให้งานมันเสร็จในเวลาที่กำหนดไว้เท่านั้นเอง !!

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

คำถามคือ จะขออนุญาตทำไม ?
ในเมื่อมันคือสิ่งที่คุณต้องทำอยู่แล้วนะ

จะมีใครสนใจไหมว่า
ถ้าคุณไม่เขียน unit test จะมี technical debt มากเท่าไร ?
จะสนใจไหมว่า technical debt มันมากหรือน้อย จะกระทบอะไร ?

แต่จะสนใจเพียงว่า
เมื่อไรที่ project มันจะเสร็จ ?
แต่เมื่อไรที่คุณบอกว่าเสร็จแล้ว
project ของคุณ มันทำงานได้ตามที่คาดหวังหรือไม่ ?
project ของคุณ มันมี bug เยอะไหม ?
project ของคุณ ทำการแก้ไข bug ไปแล้วเท่าไร ? และไม่กระทบส่วนอื่นๆ ใช่ไหม?

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

ดังนั้น สิ่งที่เราต้องคิด ก็คือ

ทำไม developer จึงคิดว่า unit test คืองานเพิ่ม หรือ งานเสริม ล่ะ ?

  • มันใช้เวลานานขึ้น
  • เขาไม่ทำกัน
  • มันไม่ใช่ standard ของเรา
  • process การทำงานมันเยอะ
  • มันยาก
  • ไม่รู้จะทำอย่างไร

แล้วมันมีเหตุผลอื่นๆ อีกไหมนะ ในการไม่ทดสอบ
code ที่มีอยู่ หรือ Legacy code มันทดสอบยากมากๆ !!
ใครไปเตะ มีภัยทุกคนไป …