image8
เรื่องที่ 34 ที่นักพัฒนาควรรู้ และ เข้าใจก็คือ Check Your Code First before Looking to Blame Others
ก่อนที่จะโทษคนอื่นหรือสิ่งอื่น ให้ลองมองตัวเองก่อนดีไหม ?

บ่อยครั้งมักพบว่า

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

  • ใคร deploy อะไรไปหรือเปล่า ?
  • Server ทำงานผิดพลาดหรือเปล่า ?
  • Network มีปัญหาหรือเปล่า ?
  • Database ถูก lock หรือเปล่า ?
  • เป็น bug ของ compiler หรือเปล่า ?
  • OS มีปัญหา หรือ update หรือยัง ?
  • ใครมาแก้ไข code หรือเปล่า ?
  • ข้อมูลผิดหรือเปล่า ?
  • เกิด conflict เรื่องของ version หรือเปล่า ?
  • ลองที่เครื่องอื่นหรือยัง ?
  • clear cache หรือยัง ?
  • และอื่นๆ อีกมากมาย

คำถาม
แปลกใจไหม ที่คำถามเหล่านั้น ไม่มีเกี่ยวกับตัวเราเองเลย ?

เขาบอกว่า มันไม่แปลกหรอกนะ
เนื่องจากมันคือ Personal rule อยู่แล้ว กล่าวคือ

Bug อะไรก็ตามที่ไม่สามารถระบุได้ว่าเกิดจากอะไร ตรงไหน
สิ่งที่เราคิดก่อนเลยก็คือ สิ่งอื่นๆ ที่ไม่ใช่ตัวเราเอง

เมื่อเราตั้งสมมุติฐานแล้ว

เราก็เริ่มลงมือค้นหาปัญหา
เพื่อพิสูจน์ให้ได้ว่า มันคือปัญหาจริงๆ นะ
วิธีการต่างๆ ที่เรามักใช้งาน เช่น

  • การ debug
  • การแยกส่วนการทำงานออกจากกัน
  • การ stub ส่วน dependency ต่างๆ
  • การทดสอบส่วนต่างๆ
  • ตรวจสอบ library ต่างๆ ที่ใช้งาน
  • version ของสิ่งต่างๆ ที่ใช้งาน
  • ลองไป run บน environment อื่นๆ หรือ เครื่องอื่นๆ

แต่ลองหยุดคิด กันก่อนไหม ?

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

  • ทำไมต้องมา debug ล่ะ ?
  • ทำไมต้องมานั่งทดสอบล่ะ ?
  • ทำไมต้องมาตรวจสอบ library ล่ะ ?
  • ทำไมต้องมาตรวจสอบ version ของสิ่งต่างๆ ที่ใช้งาน ล่ะ ?

ลองตอบตัวเองก่อนสิว่า

ตัวเราเองต้องเขียนชุดการทดสอบไว้ไหม ? เช่น unit test, integration, system test ?
ชุดการทดสอบเหล่านั้น สามารถทำงานแบบอัตโนมัติได้ไหม ?
ทดสอบบ่อยไหม ? อย่างน้อยต้องทุกๆ วัน หรือ ทุกๆ การเปลี่ยนแปลงกันไหมเลย ?

ลองคิดดูหน่อยสิว่า
ถ้าคุณทดสอบสิ่งที่ทำอยู่บ่อยๆ
ถ้าคุณทดสอบทั้งระบบอยู่บ่อยๆ
ถ้าคุณ deploy ระบบงานอยู่บ่อยๆ
คุณก็จะเจอปัญหาบ่อยๆ ครั้งละเล็กๆ
จะได้ทำการแก้ไขอย่างรวดเร็ว

ลองคิดดูสิว่า คุณจะเจอปัญหาน้อยลงไปไหม ?

ตอบได้เลยว่า คุณไม่รู้หรอกนะ จนกว่าคุณจะลงมือทำด้วยตัวเอง
เพื่อหาคำตอบจากการลงมือทำ
แต่ว่า เมื่อไรคุณจะเริ่มลงมือทำล่ะ ?
หรือมัวแต่ evaluate อยู่นั่นแหละ จึงไม่ได้ลงมือทำสักที !!!

ดังนั้น ก่อนจะไปโทษสิ่งอื่นๆ ลองกลับมามองตัวเราเองก่อนนะครับ

Blame yourself first —