(เขียนบทความนี้สำหรับ newsletter เดิม ถ้าอยากอ่านเพิ่ม สมัครรับได้เลย!)
ชุมชน Rails เน้น testing โดยเฉพาะ TDD วัฒนธรรมทดสอบนี้เป็นสิ่งดีที่สุดของ Rails แตแรงกดดันต้องทดสอบ และทดสอบถูกต้อง ทำให้มือใหม่ท่วมท้น
ถ้ามาจากที่ไม่ทดสอบเลย TDD ยากมาก คิดดูสิ่งที่ต้องรู้เพื่อ TDD ถูก:
- รู้ features ที่อยาก implement
- ระบุส่วนของแต่ละ feature ที่ควรทดสอบ
- เรียนรู้ testing tool
- รู้เขียนทดสอบสำหรับแต่ละส่วน
- รู้เขียนทดสอบโดยไม่ดูโค้ดก่อน
- รู้เขียน 'simplest thing that could possibly work'
- เรียนรู้用ทดสอบเพื่อพัฒนา design ของโค้ด
เขียนออกมาหน้าตาแบบนี้ ผมจะไม่แปลกใจถ้าคุณ ไม่ ทุกข์ มันชัดว่าไม่ไปจากศูนย์สู่ TDD ในขั้นเดียวได้ ดังนั้นทำยังไง? เรียน TDD โดยไม่ ท่วมท้น?
แยกมันออก!
ตอนรู้สึกเผชิญหน้ากับงานเป็นไปไม่ได้ หรือไม่รู้ทำต่อ ให้ดูว่ามีอะไรง่ายกว่าที่เรียนได้ מקרבไปเป้าหมาย
เช่น เรียน TDD กับ RSpec แยกได้แบบนี้:
เขียน exploratory code สำหรับ feature โดยไม่มีทดสอบ (ได้ experience สร้างและเขียน features)
ศึกษาโค้ด เขียนว่าอาจแตกยังไงกับ input ต่างๆ (เรียนรู้ว่าทดสอบอะไร และยังไง)
เขียนทดสอบสำหรับโค้ดที่มีอยู่ 用 minitest built-in ของ Ruby (เรียน minitest และ testing พื้นฐาน โดยไม่ต้องเรียน TDD และ RSpec หรือต่อสู้ติดตั้ง gems และ setup RSpec environment)
Test-drive โค้ด用 TDD และ minitest (โฟกัส TDD โดยไม่จัดการ gem dependencies หรือเรียน RSpec เพราะรู้เขียนทดสอบแล้ว เหลือแค่เรียนเขียนทดสอบก่อน)
Test-drive โค้ด用 RSpec (หลังฝึก TDD แล้ว โฟกัส setup RSpec และเรียน API และ culture)
แต่ละขั้นเป็น skill เล็กที่ฝึกแยกได้ โฟกัสฝึกขั้นแรก ต่อขั้นถัดไป แทนที่จะกระโดดสู่ TDD กับ RSpec ทันที คุณสามารถ โต ไปสู่มัน
ดูมากกว่างานเดิม แตคุณจะเรียนแต่ละ skill เร็วกว่าพยายามเรียน TDD จากศูนย์ และมี foundation ดีกว่าตอน testing style ใหม่มาช่วย
โฟกัสอย่างเดียวในเวลาเดียวกัน
กุญแจคือโฟกัสฝึกสิ่ง แค่ ข้างนอก comfort zone โดยไม่พยายามกระโดดไปขั้นสุดท้าย แต่ละขั้นมีค่าเอง แม้หยุดหลังขั้นแรก ก็เรียนรู้ได้ แตสร้างต่อกัน ให้โฟกัสเรียน อย่างเดียว ให้ดี แทนหลายอย่างโยนมาพร้อมกัน เรียนโดยไม่ท่วมท้นและไม่ยอมแพ้
ตอนผ่านกระบวนการนี้ ให้อนุญาตตัวเองทำผิดได้ กำลังเรียน ไม่เป็นไร! จะง่ายขึ้นตอนทำบ่อย ฝึกอย่างสม่ำเสมอและมีเหตุผล และไปถึงระดับหนึ่งข้างบนสิ่งที่รู้อยู่ และคุณจะถึงที่นั่น