อย่าทำ TDD ถ้า…

อย่าทำ TDD ถ้า…

ไม่นานมานี้ ขณะที่เก๋ไปสอนสกรัมที่ม. วลัยลักษณ์ ผมได้ร่วมสอนคอร์ส Test-Driven Development (TDD) โดยปอนด์กับจั๊วะ

ปรกติคอร์สนี้ราคาที่ละ 7,500 บาท/คน แต่ครั้งนี้เหลือ 399 เพราะ พี่รูฟบอกว่า

ความรู้ควรเข้าถึงง่าย ด้วยราคาหมูกระทะ

ขณะที่กำลังสอน ก็มีคำถามที่น่าสนใจมากจากผู้เรียนท่านหนึ่ง ชื่อ ภวิน ถามว่า

ภ: พี่ขาย TDD ให้ business ซื้อได้ยังไง?

จ: ถามส่วนที่เป็นโค้ชของจั๊วะ หรือถามส่วนที่เป็นโปรแกรมเมอร์ของจั๊วะ?

ส่วนที่เป็นโค้ชของจั๊วะตอบว่า ผมไม่ขาย TDD ให้ business

ผมขาย Automate Aceeptance Test ครับ โดยเฉพาะตอนที่ regression test มันเริ่มกินเวลาเป็นอาทิตย์ ตอนนั้นแค่บอกว่า ลองลงทุนทำสัก test case นึงนะ จะได้ run ซ้ำ ๆ ไปตลอด life time ของ product เลย ตอนนั้นขายง่ายมากเลย

แล้วอาทิตย์ถัดมา business มักจะมาปรึกษาว่าทำไงดี โปรแกรมเมอร์ใช้เวลาเกือบทั้งหมด นั่ง debug หาว่า Automate test ที่มีมันพังตรงไหน ไม่มีเวลาทำอย่างอื่นเลย ตอนนั้นผมค่อยบอกว่า ถ้าทำ TDD จะไม่ต้องเสียเวลา debug (กลับไปอ่านบทความที่ก่อนนี้ ชื่อ ประสบการณ์ TDD เพิ่มเติมได้นะครับ) ตอนนั้นแหละ ผมถึงจะ introduce concept TDD ให้ business รู้จัก

ส่วนที่เป็นโปรแกรมเมอร์ของจั๊วะตอบว่า อย่าทำ TDD ถ้า…

การที่คุณทำ TDD มันยังช้ากว่าการที่คุณเขียนโค้ดแบบเดิม ๆ

ผมเชื่อว่าลูกค้าเค้าจ้างผมมา perform เค้าไม่ได้จ้างผมมา practice ผมคิดว่าการที่นักกีตาร์กดคอร์ดแล้วบอดบนเวที แล้วหัวเราะแหะ ๆ ว่ากำลังฝึกกดวิธีที่ถูกหลักการอยู่มันไม่โอเค

ถ้าผมโชคดี บังเอิญได้อยู่ในที่ ๆ. business ยอมได้ของช้าลงเพราะเค้าสนับสนุนให้ผมทำ TDD เพื่อเปิดพื้นที่ให้ผมได้ฝึกฝนไปด้วย ทำงานไปด้วยได้ ผมจะซาบซึ้งมากว่าองค์กรกำลังลงทุนกับความเก่งของผม เค้าเห็นคุณค่าในตัวผมมาก ๆ และผมจะจงรักภักดีกับที่นั่นไม่ไปไหน

ถ้าผมไม่ได้โชคดีแบบนั้น ผมจะไม่น้อยใจอะไร เพราะศิลปินอาชีพไหน ๆ การฝึกฝนเป็นสิ่งที่ต้องทำนอกเวลางานอยู่แล้ว

เล่าถึงตรงนี้ผมก็อิงถึง vdo ของ Bob Martin เรื่อง “What Killed Smalltalk Could Kill Ruby, Too”

9 ปีที่แล้ว vdo ที่ยาว 1 ชั่วโมงนี้ ทำให้ผมเริ่มฝึกทำ TDD วันละชั่วโมงหลังเลิกงาน ผมซื้อ wristband มาใส่ ตามลุงบ๊อบ และเอา assignment ทั้งหมดที่ผมนึกออกตอนเรียนป. ตรีมาทำใหม่ด้วย TDD เมื่อไหร่ที่ผมแหกกฎ เช่นเขียนเทสเกินโค้ด หรือเขียนโค้ดเกินเทส หรือเขียนโค้ดไป refactor ไป ผมจะดึง wristband ดีดแขนตัวเอง (เหมือนใน vdo นาทีที่ 54) “เจ็บ ร่างกายจะได้จำ” แล้ว undo กลับไปตรงที่มันเขียวครั้งสุดท้าย แล้วเริ่มใหม่ ผมทำแบบนี้อยู่ 1 เดือน ร่างกายผมก็จำกฎ 3 ข้อของ TDD ได้เข้าเส้น

คำว่า “เข้าเส้น” เช่น ระหว่างที่สอนคอร์สที่แล้ว ขณะที่ผมกำลัง live code ให้ทุกคนดู ผมแก้โค้ด แล้วก็พลาดข้ามไปเขียนเทสเพิ่มเลย แล้วก็มีน้องกะตั๊กที่นั่งเรียนอยู่ถามว่า “พี่ไม่ run test เหรอคะ?” ผมเจ็บแปล๊บที่ข้อมือเลย ทั้ง ๆ ที่ wristband อันนั้นมันขาดไปตั้งแต่ 5 ปีก่อนแล้ว

นั่นแหละครับ ถ้าผมไม่ได้อยู่ในที่ ๆ เค้าสนับสนุนให้ผมทำ TDD ผมฝึกเองด้วยวิธีนี้ไม่เกินเดือน ผมควรจะถึงจุดที่สามารถทำ TDD ได้เร็วกว่าเขียนโค้ดแบบเดิมแล้ว และจากจุดนั้น ผมไม่ต้องไปขออนุญาตใครแล้ว เพราะถ้าผมทำงานเร็วกว่าเดิม business ไม่สนใจหรอกว่าผมทำวิธีการอะไร เค้าแค่จะบอกให้ผมทำต่อไป และผมก็จะสามารถ practice และ perform ไปพร้อม ๆ กันได้ :)

ถ้าไม่ได้ดูลุงบ๊อบเล่าวันนั้น วันนี้ผมจะเป็นยังไงนะ วันนี้กลับมาย้อนมองดูแล้วอดทึ่งไม่ได้ว่า 1 ชั่วโมงนั้นจะมีผลกระทบกับชีวิตผมขนาดนี้ ผมรู้สึกโชคดีมาก ๆ เลย ที่ได้ฟังลุงบ๊อบ ใครที่รักการเขียนโค้ด ผมแนะนำให้ลองดูวีดีโอนะ มันเจ๋งมาก

Credits

  • ภวิน ที่ถามคำถามจุดประกายทำให้เกิดบล็อกนี้
  • พี่รูฟ ที่ทักว่าควร capture ความคิดนี้ไว้ในบทความ
  • กะตั๊กที่ทำให้นึกถึง wristband ขึ้นมา
  • Bob Martin. This talk of you have me started practicing TDD. It has immensely impact my coding skill.

Read more

ความหมายของที่ซ่อนอยู่ใน Just In Time

ความหมายของที่ซ่อนอยู่ใน Just In Time

วันหนึ่ง มีเด็กน้อยคนหนึ่ง กำลังจะขึ้นเครื่องบิน เด็กน้อยร้องไห้กระจองอแง อยู่ตรง security check เพราะว่าปลาทองที่เค้าจับมาได้ 2 ตัวนั้น ไม่สามารถเอาขึ้นเครื่องได้ เพราะมีน้ำอยู่ ยิ่งเด็กร้องนาน พ่อแม่ก็ยิ่งเครียด แล้วก็

By Chokchai
Boring tasks -> Purpose

Boring tasks -> Purpose

วันก่อน มีเพื่อน ScrumMaster โทรมาให้ช่วยคิดท่า retro สำหรับเติมไฟให้กับทีม (ใครอยากรู้บ้างยกมือขึ้น ^-^/) ก็เลยแชร์ที่นึกออกเร็ว ๆ ไปสองท่า หนึ่งในนั้นคือการโยงจาก boring tasks ไป purpose เริ่มจากให้สมาชิกแต่ละคนเอากระดาษ A4 แนวนอนมาแผ่นนึ

By Chokchai
ทำไมคนมีลูกถึกกันจัง?

ทำไมคนมีลูกถึกกันจัง?

ย้อนกลับไปปี 2013 มันเป็นเวลา 3 เดือนก่อนที่ผมจะตัดสินใจด้วยกันกับภรรยาว่าจะมีลูก แม่ยายคุยกับเราสองคนว่า… แม่ยาย: อายุก็เยอะขึ้นเรื่อยๆแล้วนะ ถ้าจะมี ก็ต้องมีตอนนี้แหละ ช้ากว่านี้ พอแก่ตัวไป มันจะมีผลกับพั

By Chokchai
คิดบวก .. ฝึกได้

คิดบวก .. ฝึกได้

ช่วงนี้อ่านหนังสือ The happiness advantage ของ Shawn Achor อยู่ เป็นหนังสือเล่มนึงที่ชอบมาก เพราะมันทำให้ผมเห็นทั้งประโยชน์ของการมีความสุข และทักษะที่เราสามารถฝึกฝนได้ เพื่อให้แต่ละวันในชีวิตมีความสุขมากขึ้น ทักษะนึงที่จะทำให้เรามีความสุขก็คื

By Chokchai