สอน TDD, Rails ผ่าน Remote Pair Programming

ผมจำไม่ได้แล้วว่าผมแปะประกาศรับคนที่สนใจ TDD, Ruby, Rails มา pair ด้วยกันไว้ที่แถบด้านขวาของบล็อกและใน profile ของผมตั้งแต่เมื่อไหร่ น่าจะซักครึ่งปีได้ละมั้ง ตลอดเวลาที่ผ่านมาไม่เคยมีใครติดต่อมาเลยจนกระทั่งเมื่อ 3 อาทิตย์ก่อน มีผู้ขยันและกล้าหาญติดต่อมาคนแรก น้องวินปี 1 ลาดกระบังฯ ติดต่อมาว่าอยากจะศึกษา TDD เรานัดตอนหัวค่ำของวันนึงใช้ Google Hangout คุยกัน

ก่อนหน้านี้เคย remote pair ที่ไม่ใช่ตอนทำงานอยู่บ้างกับพี่รูฟ แต่ครั้งนี้จะเป็นครั้งแรกที่จะ remote pair กับคนที่ไม่เคยเขียน TDD มาเลย ช่วงนั้นเห็นพี่รูฟและหลายๆ คนเล่นโจทย์ Fizzbuzz กัน ก็เลยเอาโจทย์นี้แหละ

วันนั้นเราใช้ tmux/vim กัน โดยน้อง ssh เข้ามาที่เครื่องผม นี่คือโค้ดที่ได้จากวันนั้น

เราใช้เวลาประมาณ 1 ชั่วโมงครึ่ง ผมพบว่าภายในโจทย์ข้อเดียววินจับทักษะพื้นฐานและวินัยของ TDD ได้หมดเลย หลังโค้ดคุยกันนิดหน่อยวินบอกว่าได้ประโยชน์ ส่วนตัวผมก็รู้สึกว่าทั้งสองคนสนุก ถือว่าวันนี้สอบผ่านไปได้อย่างดี อันนี้คือ tweet ของน้องหลัง session นั้น เรานัด pair กันอีกในอาทิตย์ต่อมา

ก่อนถึงเวลานัด pair ครั้งที่ 2 ผมยังไม่รู้เลยว่าจะทำอะไรกันดี ง่ายสุดก็ไปหาโจทย์ Kata ซักอันมาทำ แต่ก็คิดอยู่ตลอดว่าจากวันนั้นน้องมีระเบียบวินัยในขั้นตอนของ TDD ดีมาก ถ้าเอาโจทย์เล่นๆ ธรรมดามาอีกก็อาจจะไม่ได้ประโยชน์ในด้านการศึกษา TDD เท่าไหร่ เลยคิดว่าเอาโจทย์ที่คล้ายงานจริงเลยละกัน ผมเลยชวนวินเขียน Rails app ด้วย TDD กันเลย วันนั้นเพื่อความรวดเร็วเพราะน่าจะมีอะไรที่ต้องอธิบายเยอะ ผมเลยเลือกใช้ ​RubyMine โดยใช้ screehero ในการ pair กัน

เราทำ app ลักษณะคล้าย Hacker News ที่ให้ผู้ใช้งานโพสข่าวมาได้ vote ขึ้นลงได้และลบได้ ภายในเวลา 2 ชั่วโมง (แน่นอนว่าไม่มีการ style html เลย) ส่วนตัวผมรู้สึกว่าเราทำได้เร็วมาก นี่รวมกับเวลาที่เสียไปช่วงติดตั้ง Rails app ใหม่ในตอนต้นแล้วด้วย

นี่คือโค้ดหลักๆ ที่เขียนกันวันนั้น

controller
views
specs

ช่วงก่อนที่จะเริ่ม session นี้ผมยังไม่มั่นใจว่าน้องจะชอบหรือเปล่า เพราะว่ามันไม่ได้เป็นการสอนแค่ TDD ที่เค้าตั้งใจตอนติดต่อมา แต่ผมสอนแบบผูกกับเทคโนโลยีไปด้วย ซึ่งถ้าน้องเค้าไม่สนใจศึกษา Rails มันก็จะมองได้ว่าเสียเวลาเปล่า แต่วินบอกว่าชอบสไตล์ทำของจริงแบบวันนี้มากกว่า นี่คือ tweet ของเค้าหลังจากจบวันนี้ครับ

น้องวินเก่งมากครับ อีก 3 ปีเตรียมมาจีบไปทำงานได้เลย (ถ้าเค้ายังจะอยู่ประเทศไทยนะ) มานึกย้อนกลับไปในช่วงเวลานี้ของปี ตอนที่ผมยังอยู่ปีหนึ่ง ตอนนั้นกำลังเพิ่งจะหัดเขียนโปรแกรมวนลูป java อยู่เลย เห็นได้ชัดเจนเลยว่าโปรแกรมเมอร์อย่างเราๆ ทำไมถึงโดนรุ่นน้องแซงกันอย่างง่ายๆ ถ้าเราหยุดเมื่อไหร่ก็โดนแซงเมื่อนั้นครับ

ผมตั้งใจไว้ว่าจะใช้เวลาประมาณอาทิตย์ละ 1 – 2 ชั่วโมง pair กับคนอื่นนอกเวลางานครับ ถ้าอยู่ใกล้ๆกัน pair แบบเจอตัวกันก็ดี แต่ถ้าอยู่ไกล remote ก็สะดวกและง่ายครับ จะอยากเริ่มต้นกับ TDD (ผมถนัด Ruby เขียน Java ได้บ้างต้องช่วยกระตุ้นความจำผม), ศึกษา Rails, มีโค้ดอยากมาปรึกษาว่าจะทำ test อย่างไร, ใครที่เป็นแล้วอยากมา pair เล่นเฉยๆ (ภาษาอะไรก็ได้สอนผมด้วย) หรือใครอยากมาเล่น Clojure กับผม ติดต่อมาได้ครับ

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s