สวัสดีเช้าวันอังคารที่ 14 กรกฎาคม 2558
เช้านี้รถไม่ติดมากเท่าไร แต่อากาศร้อนน่ะ
วันนี้สลับมาเป็นผู้ช่วยสอน Test Driven Development (TDD) บ้างละ
เริ่มช่วยสอนแบบมึนๆ เหมือนสมองไม่ทำงานเลย นิ่งเฉยๆมากเลย ไม่ไหวๆ
ใช้โจทย์ FizzBuzz แบบง่ายๆ ก่อนโดยทำกันเอง
แล้วต่อด้วยการให้รู้จัก JUnit กันต่อ
เอา FizzBuzz ง่ายๆที่ทำไปแล้วมาใส่เป็น JUnit ละ
ก็จะได้ Test Case ที่เป็นไปตาม Business Requirement ละ แต่ก็มีเกินกันบ้าง เนื่องจากเผื่อผิดพลาดจากการ key input เข้ามา
ต่อมาเพิ่มเงื่อนไขเข้าไปว่า contain 3 ให้ Fizz เพิ่มไป แต่ถ้า Fizz อยู่แล้วไม่ต้อง
contain 5 ให้ Buzz เพิ่มไป แต่ถ้า Buzz อยู่แล้วไม่ต้อง
เช่น
3,6,9,12 => Fizz
5,10,20 => Buzz
15,30,35,51,53,54 => FizzBuzz
พอเจอแบบนี้แล้วเริ่มยากแล้วสิ คิดกันใหญ่เลยละ
แต่เอ๊ะ สังเกตุเห็นว่า JUnit ไม่ใช้กันละ กลับไปใช้ run main กันอีกแล้ว
แล้วสังเกตุทีมที่ไม่ได้ทำ JUnit น่ะว่าจะเห็นเข้า run main ซ้ำแล้วซ้ำเล่าใน case Data Input เดิมๆเลยละ
มาต่อบ่ายกัน
โดน interrupt ไปคุยกับพี่อีกคนเรื่อง TDD, ATDD นั้นสำคัญฉไหน
แล้วกลับมาห้องสอนอีกที
กำลังสอนทฤษฎี TDD อยู่เลยละ
เอา FizzBuzz มาเริ่ม step การทำงานแบบ TDD (Fail,Pass,Refactor) , Simple Rule Design
ตอนสอนต้องแนะนำว่า โจทย์ business นี้เราเข้าใจแล้ว เราก็จะไม่ทำในสิ่งที่ง่ายๆ แล้ว เพราะเรารู้แล้ว
แต่ตอนนี้เรากำลังฝึกอยู่ก็ไม่ค่อยจะมองข้ามสิ่งเล็กๆนี้ และควรจะทำแบบนี้ก่อน แล้วเมื่อไรที่เราเข้าใจดีแล้วก็มองข้ามตรงนี้ได้ แต่ต้องมั่นใจน่ะว่า ข้ามได้จริงๆ
จงทำให้เกิดการทำงานซ้ำๆ หรือ เหมือนกัน 3 ครั้งขึ้นไปแล้วเริ่มยุบให้เหลือ 1 เดียวน่ะ
การสอนเด็ก Junior นี้ น้องๆจะไม่ค่อยถามกันเลย เพราะอาจจะยังไม่เจอของยาก
บางคนก็ไม่ยอมทำ step เล็กๆเลย กระโดด step ตลอดเวลา
บางคนคิดวกไปวนมา เหมือน Business ไม่ clear
ต่อโจทย์ Prime factor ส่วนใหญ่ ลืมกันหมดละคิดเลขกันยังไงหน่อ
แล้วต้องมาทำบน Cyber- Dojo ด้วย คือไรเนี่ย จะได้ไหมหว่า
ทำกันไป error syntax กันไป
ช่วง รีวิว สนใจกันดีน่ะ แต่เหมือนบางคนงงๆเลยอ่ะ
สุดท้ายก่อนกลับก็ให้ทุกคนเขียน
GOOD BAD TRY
Time box คุมเวลา
Dead air ช่วงเงียบ
CCC=card,conversation, confirmed
Tdd เริ่มว่า คิดว่าจะทำอะไร,เขียนเทส,เขียนโค้ต
ตั้งเวลาทำงาน จบเวลา retrospective กันเพื่อจะได้สอนว่าที่ทำมีปัญหาอะไร
จะทำยังไงให้รู้จัก small step
ตั้งเทสเคสให้เข้าใจก่อน เพื่อให้สื่อถึงปัญหา
แล้วค่อยหาว่าจะทำอย่างไรที่ง่ายๆและเร็ว
What => How <=> Small step
Simple design rules แน้นเรื่อง Duplicate
คนเรียนมาไม่ครบคู่ ควรให้ ta , co train ลงไปทำให้ครบคู่
ควรสลับคู่ด้วยเพื่อให้ได้เรียนรู้ แต่ต้องดูจังหวะนะ
เช่น ยกทั้งคู่ไปอีกเครื่องเพื่อให้รู้จัก legacy
คุมเวลาให้ดี หมดคือหมด เสร็จไม่เสร็จไม่เป็นไร แต่ทำอะไรไหม
พยายามลดเวลาคุยแล้วทำ เพื่อให้เกิดการเริ่มด้วยสิ่งเล็กๆ
Feedback for TDD workshop (2015/07/14)
เรื่องของ Timebox ต้องชัดเจน
ตอนให้แต่ละกลุ่มอธิบาย ต่อขึ้นจอเลย
จอไม่ชัด ก็เขียนขึ้นกระดานเลย !!
3C Card Conversation Confirmation
TDD เริ่มด้วยการ THINK ในทุกๆ รอบ
เรื่องการอธิบายให้เข้าใจถึง TDD
ให้เน้นเรื่องแนวคิด Small Step
- โชว์ให้เห็น ในแต่ละโจทย์
Simple Design Rule เน้นในเรื่อง
Pairing programming ถ้าขาดคู่ ผู้ช่วยสอนต้องไป pair ด้วยเสมอ