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

ทำไม System Analyst ถึงไม่เชื่อ Design จากทีม

ทำไม System Analyst ถึงไม่เชื่อ Design จากทีม

บ่อยครั้งที่ผมได้ยินน้อง ๆ ออดส์ทีม (ODT) เล่าว่า งานที่ทำอยู่ไม่ท้าทายเลย เพราะเพียงได้รับ Specification มาจาก System Analyst (SA) หรือ Tech Lead ที่เป็นพนักงาน แล้วน้องก็มีหน้าที่เขียนโค้ดตามนั้นไปอย่างเดียว บ่

By Chokchai
เวลาอู้

เวลาอู้

ผมกำลังอ่านหนังสือ Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency ของ Tom DeMarco ซึ่งได้ให้มุมมองใหม่เกี่ยวกับ Slack time หรือเวลาอู้งานกับผม แต่ก่อนจะเล่าว่าผมเห็นอะไร ผมของแบ่งปันมุมมองเวลาผมดูองค์กรก่อนนะ สายการผลิต คนในองค์กรมารวมตั

By Chokchai
สุดยอดทีม (Extraordinary Team)

สุดยอดทีม (Extraordinary Team)

ท้ายหนังสือ Teamwork is an Individual Skill ของ Christopher Avery ได้กล่าวถึงสมการของสุดยอดทีมไว้ดังนี้ครับ Extraordinary Collaboration = Exchange + Expansion + Integrity ผมใช้เวลาอ่านตรงนี้ และอีก 3 บทที่ขยายความเรื่อง Exchange, Expansion และ Integrity อยู่เกือบ 2 สัปดาห์กว่าจะพอเข้าใจมันอย่

By Chokchai