เรียน Rails/TDD ผ่าน Remote Pair Programming

January 21, 2014

ด้วยความที่ผมเป็นคนที่ชอบอ่านบล็อกของพี่ๆที่อยู่สายคอมพิวเตอร์ วันนึงก็ได้ไปเจอบล็อกของที่ @visibletrap เข้าแล้วไปสะดุด widget ด้านขวาของบล็อกอันนึงนั่นคือ **Pair with me** โดยผมอยากเรียน TDD อยู่เป็นทุนเดิมอยู่แล้วจึงไม่รอช้าจัดการ email หาพี่แท็ป จนนัดวันกันเรียบร้อย

## ครั้งแรก
พี่แท็ปอธิบายว่า TDD มีวิธีทำอยู่คร่าวๆดังนี้

  1.  เขียน Test ก่อนเขียนโปรแกรม
  2.  รัน Test ให้ไม่ผ่าน
  3.  ทำยังไงก็ได้ให้ Test ผ่าน (แม้แต่ return ค่านั้นไปเลยก็ได้)
  4.  ถ้าเจอ code ที่ซ้ำกันหรือให้ผลลัพธ์เดียวกันให้ refactoring มันซะ
  5.  วนกลับไปทำข้อ 1 ใหม่

หลังจากเรียนรู้วิธีทำเบื้องต้นแล้วผมจึงต่อ tmux/vim โดยผม ssh เข้าไปที่เครื่องพี่แท็ป โดยใช้โจทย์ FizzBuzz เป็นตัวอย่างในการเรียน

โดยใช้เวลารวมทั้งสิ้นราวๆ 1 ชั่วโมง หลังจากได้ลองเรียนรู้ TDD แล้วเนี่ยผมรู้สึกว่าสามารถเขียน Code ได้อย่างเป็นระบบมากขึ้น Code สวยขึ้นและมั่นใจได้ว่ามันจะรันผ่านในเงื่อนไขของ FizzBuzz ทุกข้อ

## ครั้งที่สอง
พี่แท็ปให้เลือกว่าอยากเรียนแก้ไขปัญหาโจทย์แบบเดิมหรือว่าจะลองเขียน Test ใน Rails จริงๆเลย ซึ่งผมเลือกที่จะเรียน Rails โดยเราจะเขียนระบบที่คล้ายๆกับ Hacker News โดยมีระบบโหวตข่าว โพสต์ข่าว และแสดงข่าวทั้งหมด ซึ่งเราสามารถทำเสร็จได้ภายในเวลา 2 ชั่วโมง (ไม่เขียน css เลย)

โดยนี่เป็น Code ที่เขียนกันวันนั้นครับ

Controller

Views

Specs

หลังจากเขียนเสร็จแล้วผมทึ่งในความง่ายของ Rails มากเลยมันสามารถ Post หรือดึงข้อมูลจาก Databse ด้วยคำสั่งแค่บรรทัดเดียว ซึ่งจะทำให้การพัฒนาเว็บไซต์มีความเร็วมากๆ แต่ในระยะยาวแล้วถ้ามีคนใช้งานหลัก 10k up ก็คงต้องหาวิธีทำให้มันไวโดยอาจจะตัดแบ่ง service หรือย้ายไปใช้ภาษาอื่นแทน

ขอบคุณพี่แท็ปมากครับ ที่ให้ความรู้เรื่อง TDD/Rails กับผม
ใครที่สนใจอยากจะ Remote Pair Programming กับพี่แท็ปก็ติดต่อพี่เค้าได้ที่ @visibletrap เลยนะครับ
ส่วนใครสนใจอยากจะ Pair Programming กับผมก็ติดต่อเข้ามาทาง @lifez ได้เลยนะครับ 🙂

Share and Enjoy

Email
Print