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

คิดบวก .. ฝึกได้

คิดบวก .. ฝึกได้

ช่วงนี้อ่านหนังสือ The happiness advantage ของ Shawn Achor อยู่ เป็นหนังสือเล่มนึงที่ชอบมาก เพราะมันทำให้ผมเห็นทั้งประโยชน์ของการมีความสุข และทักษะที่เราสามารถฝึกฝนได้ เพื่อให้แต่ละวันในชีวิตมีความสุขมากขึ้น ทักษะนึงที่จะทำให้เรามีความสุขก็คื

By Chokchai
นำคนโดยไม่ใช้ไม่ใช้รางวัล

นำคนโดยไม่ใช้ไม่ใช้รางวัล

ก่อนหน้านี้ผมเคยแบ่งปันสิ่งที่ผมได้เรียนรู้จากหนังสือ Punished by rewards ของ Alfie Kohn ว่าการให้รางวัลหรือการลงโทษ เป็นเครื่องมือเพื่อใช้บังคับคน ซึ่งจะทำให้เราได้ความร่วมมือ แต่ไม่มีทางนำไปสู่ความสมัครใจ แม้ผมจะเห็นด้วยแบบนี้ ก็ยั

By Chokchai
วิธีทำ Dry martini

วิธีทำ Dry martini

อาจารย์สอนว่า Dry martini ที่ดี มีคุณสมบัติ 2 ข้อคือ เย็นเจี๊ยบ และไม่จืด เริ่มจากแช่แก้วให้เย็นก่อน ระหว่างนั้นก็มาทำของประดับ ซึ่งตอนอาจารย์สอน เค้าใช้เปลือกเลม่อน โดยเอาอุปกรณ์ตามรูปข้างล่างมาค่อยๆฝานเปลือกเลม่อนเป็

By Chokchai
For Godsakes, talk like a human being

For Godsakes, talk like a human being

จาก The FLIP manifesto ของ Daniel H. Pink บทที่ 13 ชื่อตอนว่า “For Godsakes, talk like a human being” ในบทนั้น เค้าพยายามชี้ให้เห็นว่าหลายองค์กรสื่อสารกับลูกค้า โดยใส่ความเป็น professional (ดูดี) เข้าไป จนกระทั่งภาษามันไม่เป็นธรรมชาติแล้ว มันดู

By Chokchai