test_today-resized-600
อ่านบทความเรื่อง It’s not about the unit tests จาก 2 ที่คือ

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

เริ่มต้นด้วย “การทดสอบมันยากมาก”

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

แต่ก่อนที่คุณจะบอกว่า เราจะไม่ทดสอบด้วย unit test หรอกนะ
คุณได้ลองเริ่มทำการศึกษาว่า unit test
ของแต่ละภาษา แต่ละ framework มันเป็นอย่างไร
ทำอย่างไร เขียนอย่างไร ดีอย่างไร มีประสิทธิภาพอย่างไร
คุณลงทุนเพื่อเรียนรู้ก่อนตัดสินใจหรือไม่ ?

บางคนอาจจะบอกว่า unit test มันดีนะ แต่มันยากนะ !!
คำพูดนี้มันหมายถึงอะไรบ้างล่ะ ?
มันหมายถึง ไม่รู้ว่าทดสอบมันอย่างไรหรือไม่ ?
ถ้าใช่ แสดงว่า คุณยังไม่ลงทุนเพื่อศึกษาและทำความเข้าใจมันก่อนนะครับ

แนวคิดที่น่าจะต้องมีไว้เสมอสำหรับ technical practice ก็คือ

รู้ว่าแต่ละอย่างมันคืออะไร ?
รู้ว่าเมื่อไรจึงจะนำมาใช้งาน ?
รู้ว่าจะใช้งานอย่างไร ?

ดังนั้น เป้าหมายของ unit test มันไม่ใช้การเขียน unit test แต่
มันคือการเรียนรู้ เพื่อให้เข้าใจ
ว่าสิ่งนั้นมันเป็นอย่างไร ใช้อย่างไร
แล้วจัดเก็บไว้ในชุดของเครื่องมือที่เราสามารถนำมาใช้งานได้ (Toolbox)
เมื่อถึงเวลา และ สถานการณ์ที่เหมาะสม
เราจะสามารถนำเครื่องมือเหล่านั้น ออกมาใช้ได้ทันที
และนำมาใช้ได้อย่างดี และ มีประสิทธิภาพ

ลองคิดดูสิ ถ้าปราศจาคความเข้าใจแล้ว
คุณจะสามารถนำมาใช้งานให้ดีได้อย่างไร !!

สำหรับผมนั้น เชื่อว่า

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

ดังนั้น คุณต้องลงทุนในเรื่องการเรียนรู้นะครับ

Testing can be hard, but debugging is hard too

ปิดท้ายด้วยแนวคิด การเรียนการสอนเกี่ยวกับ technical practice

ประกอบไปด้วย

  • ผู้สอนต้องทำให้เห็นว่า technical practice ต่างๆ ใช้งานอย่างไร
  • ผู้สอนต้องอธิบายว่า technical practice เข้ามาช่วยหรือมีประโยชน์อย่างไร
  • ผู้เรียนต้อง ฝึก ฝึก ฝึก
  • ผู้สอนต้องเชื่อมันในการตัดสินใจของผู้เรียน ว่าเมื่อไรควรใช้หรือไม่ควรใช้