กว่าจะ WoW!!! TDD
ในสมัยที่ผมทำงานช่วงแรกๆ ชีวิตก็จะวนเวียนอยู่กับการเขียน HTML ง่อยๆ มีเขียน CGI ในยุคที่ ASP ยังไม่ฮิต จนมาถึงยุค VB6 อยู่หลายปี ตามมาด้วย Siebel ชีวิตผมไม่เคยรู้จักการเขียน unit test มาก่อน จนกระทั่งในช่วงปี 2014 พี่รูฟ Twin Panichsombat เป็นคนที่พาผมนั่งเขียนภาษา Go และสอนผมเขียน unit test โดยใช้ Ginkgo เป็นครั้งแรกที่ได้เปิดโลกการเขียนเทส
แต่ว่า หลังจากนั้นความ งง ก็ติดอยู่ในหัวมาอีกเป็นเดือน เพราะไม่เข้าใจว่าเขียนเทสไปเพื่อ!!!
ผมใช้เวลาอยู่ในโปรเจคที่มี Working Agreement และ DoD ว่าต้องมี unit test เสมอ โดยที่ไม่รู้อิโหน่อิเหน่เลยว่า การเขียนเทสที่ดีมันต้องเป็นยังไง ดังนั้น สิ่งที่ได้ออกมาก็คือ มีเทสเพื่อให้มันมี มันจะเทสตะบักตะบวยอะไรก็ได้ เรียกฟังก์ชันเฉยๆก็ได้
มีเทสเพียงเทสเดียวที่ไม่ assert หอกอะไรเลยก็ได้ด้วย
ก็มันยังไม่เข้าใจนี่นา แต่ว่า มันจะมีอยู่วันนึงที่นั่งๆเขียนไปแล้วเหมือนมีแสงวาบมาในหัว แล้วก็ร้องอ๋อดังๆในใจว่า เฮ้ย! เริ่มจะเข้าใจหน่อยๆละ ว่าทำไมต้องเขียนเทส ซึ่งอาการนี้ Anuchit Prasertsang ให้คำนิยามว่า WoW!!
ผมบอกได้ว่า ผมมีอาการ WoW นี้หลายครั้งมากๆ โดยเฉพาะตอนที่ฝึกทำ TDD (Test Driven Development) ยิ่งฝึก ยิ่ง WoW ไปทีละขั้น
ไอ้คำถามที่เคยถามตอนไม่รู้เรื่องว่า
- ทำไมต้อง TDD
- เขียนเทสต้องละเอียดแค่ไหน
- ทำไมห้ามลบเทสคนอื่น
ถ้าถามว่า WoW คืออะไร ก็ต้องบอกว่า อธิบายได้ แต่ไม่รู้จะเข้าใจไหม แต่ถ้าอยากจะ WoW ทางที่ได้แน่ๆคือ ฝึกมันเยอะๆครับ ยิ่งถ้ามีคน Pair ด้วย แล้วเขาประสบการณ์สูงพอ รับรองว่าสนุก และได้ประโยชน์มากๆๆ แน่ๆ