Pair programming 4 แบบ

เวลาผมสอนเรื่อง pair programming ปรกติผมจะเล่าคร่าว ๆ ว่า pair programming มี 2 แบบที่ผมใช้บ่อย ๆ คือ ping pong ที่ใช้เวลาคู่ pair ชำนาญพอ ๆ กัน กับ driver-navigator ที่ใช้เวลาความชำนาญต่างกัน

ช่วงนี้มีโอกาสได้ pair กับสมาชิกในทีมบ่อย ๆ และบ่อยครั้งก่อนเริ่ม pair ผมจะตกลงกับคู่ pair ว่าเราจะใช้ท่าไหนดี? ทำมาหลาย ๆ ครั้งผมถึงจับ pattern ได้ว่า จริง ๆ แล้วรูปแบบที่ผมเห็นบ่อย ๆ มีตั้ง 5 แบบ!

Ping Pong แบบ timebox

Photo by Geran de Klerk on Unsplash

คือ ping pong แบบจับเวลา พอครบ 5 นาทีก็สลับเป็นต้น ถ้าเข้าคู่กับการทำ pomodoro technique ด้วย สลับ 5 ทีก็พักทีนึงพอดีเลย

Ping Pong แบบ Red/Green

สมมติว่าคู่ pair ทำ TDD ด้วย ก็ให้คนนึงเขียน failing test แล้วก็ส่งคีย์บอร์ดให้อีกคนแก้ แล้วก็ refactor ด้วยกัน แล้วค่อยสลับ

IDE Controller (โกเลม)-Navigator

Photo by Geran de Klerk on Unsplash

เป็นรูปแบบหนึ่งของ driver-navigator โดยรูปแบบนี้ driver ห้ามคิด รอฟังคำสั่งจาก navigator อย่างเดียว เพราะแบบนี้ บางทีผมถึงเรียก driver ว่าโกเลม ด้วยรูปแบบนี้ ownership ของงานจะยังอยู่ที่ navigator ส่วน driver มีหน้าที่ control IDE เฉย ๆ มองอีกมุมคือให้ navigator ทำงานด้วยเสียงนั่นแหละ รูปแบบนี้เหมาะกับ driver ที่ใหม่กับเรื่องนั้นมาก ๆ ยังทำอะไรไม่เป็นเลย ขาดทั้งความรู้ ทักษะ และความมั่นใจที่จะทำงานนั้นให้สำเร็จตามลำพัง

Driver-ศาลพระภูมิ

อีกรูปแบบของ driver-navigator ที่ ownership ของงานย้ายมาอยู่ที่ driver รูปแบบนี้ driver จะเป็นคนคิดและทำหมดเลย โดย navigator จะนั่งดูเฉย ๆ ปล่อยให้ driver ล้มลุกคลุกคลานเองและหยุด driver แค่ตอนที่ driver กำลังจะสร้างความเสียหายระดับที่เอากลับมาไม่ได้แล้วเท่านั้น

หน้าที่ที่ 2 ของ navigator ในรูปแบบนี้คือ ตอบคำถามของ driver เมื่อ driver ถาม ทำให้ driver สามารถทำงานต่อได้โดยไม่ติด

รูปแบบนี้เหมาะ เวลา driver มีทักษะที่จะทำงานนั้นให้สำเร็จด้วยตัวเองแล้ว แต่ยังขาดความรู้บางส่วนและความมั่นใจอยู่ ใช้รูปแบบนี้ซักพัก พอ navigator ไม่ต้องทำอะไรเลยจริง ๆ ซักครั้ง หลังจากนั้นก็ไม่ต้องเฝ้าแล้ว สามารถขยับไป ping pong ได้เลย

สิง

Photo by Toa Heftiba on Unsplash

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

ถ้าเราอยากให้เกิดการเรียนรู้มันต้องไปด้วยความเร็วที่น้องใหม่ตามทัน เพราะการเรียนรู้แบบ fast forward มันใช้ท่องเก็บคะแนนสอบในโรงเรียนได้เท่านั้น ถ้าจะหวังองค์ความรู้ที่ยั่งยืนเอาไปต่อยอดได้ เรารีบเรียนไม่ได้ กระบวนการที่สมองสร้างเส้นทางนิวรอนตอนพักผ่อนมันต้องใช้เวลาของมันและเราเร่งกระบวนการนี้ไม่ได้

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

นี่แหละ รูปแบบ pair programming ที่ผมใช้บ่อย 4 แบบ และ anti-pattern ที่ผมเจอบ่อย ๆ อีก 1 แบบ ใครมีรูปแบบอื่น ๆ เอามาแบ่งปันกันบ้างนะครับ

บทความที่เกี่ยวข้อง

เยอะไปหน่อย แต่ผมชอบมัน เลยตัดไม่ลง :P

Pomodoro

What is Pair Programming?

Pair Programming Guide

แพร์โปรแกรมมิ่ง

Introvert กับ Extravert

Read more

การสร้างทีม

การสร้างทีม

เคยไหม ที่เรามารวมตัวกับทีมเพื่อทำอะไรสักเรื่องที่ยาก ๆ แล้วพอทำ ๆ ไปก็เริ่มกังวลว่า เอ๊ะ นี่ทุกคนยังอยากทำสิ่งนี้อยู่ไหมนะ ทุกคนในทีมเต็มในทำมันหรือเปล่า ความลังเลตรงนี้มักจะทำให้เราไม่กล้าใส่แรงสุดกับงานนั้้น แล้วเริ่มแบ่งกำลั

By Chokchai
Long lived team

Long lived team

ทุกวันนี้สกรัมเป็นที่นิยมมากในทีมพัฒนาซอฟต์แวร์ จากประสบการณ์ที่ผมพบเจอทีมหลากหลาย มีน้อยทีมนักที่จะทราบว่า สกรัมออกแบบมาให้ทีมอยู่กันเป็น long lived team และน้อยคนยิ่งกว่านั้นที่จะเข้าใจทั้งความหมายของคำว่า long lived และคำว่าทีม Team ทีมไม่ใช่

By Chokchai
เสน่ห์ของ ScrumMaster

เสน่ห์ของ ScrumMaster

บางครั้งผมจะได้ยินคำถามเวลาไปงานแลกเปลี่ยนความรู้กับวง ScrumMaster ว่า ทำไงดี ทีมไม่เปิดใจให้ เข้าถึงทีมยาก ตอนผมนั่งในวงนั้น ผมก็ไม่รู้จะตอบยังไง เพราะผมไม่มีปัญหานี้ วันก่อน มีเพื่อนร่วมงานให้ feedback ผมว่า ผมมีพลังพิเศษ ทำให้คนไว้ใจ อยากเข้ามาปรึ

By Chokchai
ความหมายของที่ซ่อนอยู่ใน Just In Time

ความหมายของที่ซ่อนอยู่ใน Just In Time

วันหนึ่ง มีเด็กน้อยคนหนึ่ง กำลังจะขึ้นเครื่องบิน เด็กน้อยร้องไห้กระจองอแง อยู่ตรง security check เพราะว่าปลาทองที่เค้าจับมาได้ 2 ตัวนั้น ไม่สามารถเอาขึ้นเครื่องได้ เพราะมีน้ำอยู่ ยิ่งเด็กร้องนาน พ่อแม่ก็ยิ่งเครียด แล้วก็

By Chokchai