แนวปฏิบัติต่างๆ จาก Extreme Programming (XP) ทั้ง

  • Test-Driven Development (TDD)
  • Pair Programming

เป็นแนวปฏิบัติที่มักโดนต่อต้านอย่างรุนแรง
จากทั้งทาง manager, developer, lead ไม่ว่าด้วยเหตุผลใดๆ ก็ตาม

แล้วเราจะมีเทคนิค และ วิธีการอะไรดีล่ะ
ที่จะช่วยทำให้คนเหล่านั้นสนใจ และ เข้าใจ
ในคุณค่าของ TDD และ Pair programming ขึ้นมาบ้าง

ตัวอย่างของ TDD

จากงาน Agile Singapore นั้นมีโอกาสเข้า TDD workshop ของคุณ James Grenning
โดยก่อนจะเริ่ม workshop นั้น มีการถามคำถาม 2 ข้อคือ

  • สิ่งที่คุณชอบในการพัฒนา software คืออะไร ?
  • สิ่งที่คุณไม่ชอบในการพัฒนา software คืออะไร ?

และเมื่อหลังจากการทำ TDD workshop แล้ว
ทุกๆ คน ได้เรียนรู้ว่า TDD นั้นช่วยทำให้เรา focus ในคำตอบจากคำถามข้อแรกอย่างมาก
ส่วนจากข้อสองนั้นน้อยมากๆ
ซึ่งมันช่วยทำให้เห็นคุณค่าที่ได้จาก TDD ชัดเจนมากๆ

ทำให้เห็นว่า การลงมือทำ มันสำคัญ และ จำเป็นมากๆ

แล้วการ Pair programming ล่ะ ทำยังไงดี ?

ผมมักจะบอกว่า Pair programming มันช่วยเราประหยัดเวลาในเรื่องต่างๆ นะ !!
แต่หลายๆ คนมักจะบอกว่า Pair programming

  • มันสิ้นเปลืองเวลา
  • มันไร้ค่า
  • มันลดจำนวนงานที่ทำได้

ซึ่งมันไม่ผิดอะไรเลยนะ !!!

แนวคิดของ Pair programming

For any programmer, no matter how good he or she is, if we get someone else to sit with them, the value of their work will double.

ลองมาฟังเหตุผลกันก่อนไหม ?
ในการพัฒนา software นั้น developer ทั้งหลายใช้เวลาไปกับอะไรกันบ้าง ? ตอบมาเดี๋ยวนี้ !!!
ถ้าสำหรับผม ผมจะตอบไปดังนี้

  • 70% ของเวลาทั้งหมด ใช้ในการอ่าน และ ทำความเข้าใจ code
  • 20% ของเวลาทั้งหมด ใช้ในการคิดหาทางแก้ไขปัญหา สร้างขั้นตอนการแก้ไข
  • 10% ของเวลาทั้งหมด ใช้เวลาในการเขียน code

ซึ่งแสดงให้เห็นชัดเจนดังรูป

PPEconomics

ลองคิดดูสิว่า คุณใช้เวลาไปในรูปแบบนี้ไหม ?
ถ้าใช่ มันอาจจะถึงเวลาแล้วที่ทั้ง manager และ developer
ต้องหาวิธีแก้ไขปัญหานี้นะ !!

เนื่องจาก เวลาส่วนใหญ่ไม่ใช่สร้างสิ่งใหม่ๆ ออกมาเลยนะ
ซึ่งคุณทำให้เวลามันผ่านเลยไป แบบไร้คุณค่า
หนึ่งในวิธีการแก้ไขปัญหา คือ Pair programming ไงล่ะ

แต่แน่นอนว่า
ยังไงก็ถูกต่อต้านจาก manager และ lead อยู่แล้ว
แต่ว่าคุณลองทำแบบถูกวิธีแล้วหรือยัง !!
หรือใช้เพียงความรู้สึกส่วนตัวมาตัดสิน !!

ถ้าคุณให้คนสองคนมานั่งทำงานด้วยกัน
จะพบว่าทั้งสองคนจะทำงานด้วยกัน และ มักจะได้งานเพิ่มขึ้นมาเสมอ ไม่มากก็น้อย
เนื่องจาก

  • คนสองคนจะช่วยกันศึกษา และ ทำความเข้าใจ code และระบบได้รวดเร็วขึ้น กล้าที่จะแก้ไข และ ไม่มีความรู้สึกโดดเดี่ยวอีกต่อไป
  • คนสองคนจะช่วยกันคิด และ หาทางแก้ไขปัญหา แน่นอนว่า มักจะมีวิธีการแก้ไขปัญหามากกว่า 1 ทางแน่นอน นั่นก่อให้เกิดประโยชน์อย่างมาก และ สามารถแก้ไขปัญหาได้อย่างรวดเร็ว
  • ในการทำงานร่วมกัน เมื่อคนหนึ่งพิมพ์ที่ keyboard อีกคนหนึ่งจะช่วยทำการ review code ไปด้วยตลอดเวลา ซึ่งนั่นก่อให้เกิดการควบคุมคุณภาพของสิ่งที่สร้างอยู่เสมอ และมักจะพบข้อผิดพลาดได้อย่างรวดเร็ว

มาถึงตรงนี้

ผมไม่มีเหตุผลอะไรมากไปกว่า ว่า คุณได้ลองฝึก TDD และ Pair programming แล้วหรือยัง
และต้องฝึกอย่างถูกวิธี
ก่อนที่คุณจะบอกว่า มันมีคุณค่า หรือ เสียเวลา นะครับ !!

เรียนรู้มันก่อนว่า คุณค่าที่ได้ จากแนวปฏิบัติต่างๆ มันคืออะไร ช่วยแก้ไขปัญหาอะไร
แต่คุณจะรู็ได้อย่างไรล่ะ ถ้าคุณไม่ลงมือปฏิบัติด้วยตัวคุณเองก่อน
ถึงจะเปลี่ยนแปลงใครไมม่ได้ ก็เปลี่ยนแปลงตัวเราเองก่อนครับ

Reference Website
http://c2.com/cgi/wiki?PairProgrammingEconomics
http://trustartist.com/2015/01/27/pair-programming-economics