Pair Programming -- โปรแกรมเมอร์คู่สู้สิบทิศ

Pair Programming คือวิธีการเขียนโปรแกรมรูปแบบหนึ่งโดยให้โปรแกรมเมอร์ 2 คน
ช่วยกันทำงานบนเครื่องคอมพิวเตอร์เครื่องเดียว โดยคนหนึ่งจะทำหน้าที่เป็นผู้เขียน
ส่วนอีกคนจะเป็นผู้คอยตรวจสอบ

ในครั้งแรกที่ผมได้อ่านบทความเกี่ยวกับวิธีการทำงานแบบนี้ ซึ่งอยู่ใน Extreme Programming Method
ในใจผมแย้งขึ้นมาทันทีว่า เอ... มันจะมีประสิทธิภาพดีกว่าแยกกันเขียนหรือ?

และในบทความเดียวกันนั้นก็ได้ตอบคำถามผมในทันทีว่า

การที่ให้ 2 คนช่วยกันทำงานนั้น ทำให้หาบัคได้เร็วขึ้น งานที่ออกมาดีขึ้น
ทำให้ประสิทธิภาพโดยรวมสูงกว่าการแยกโปรแกรมเมอร์ 2 คนออกจากกัน

ทั้งนี้การใช้ Pair Programming ไม่ได้จำกัดว่าโปรแกรมเมอร์ 1 คนจะต้องเป็นคนเขียนไปตลอด

ในงานหนึ่ง ๆ เราอาจจะรับหน้าที่ในการเขียน แต่อีกงานหนึ่ง เราต้องเป็นผู้ตรวจสอบบ้างก็ได้

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

นอกจากประสิทธิภาพในการทำงานที่สูงขึ้นแล้ว เรายังได้ประโยชน์เพิ่มเติมจาก Pair Programming อีกหนึ่งอย่างคือ
ในงานเขียนโปรแกรมใด ๆ จะต้องมีผู้เข้าใจใน code นั้นอย่างลึกซึ้งอย่างน้อย 2 คน ทำให้เรามีตัวตายตัวแทนในการทำงาน

สมมติว่าวันหนึ่งผมติดธุระจนจำเป็นต้องลา โมดูลต่าง ๆ ที่ผมมีส่วนร่วมไว้ ก็จะมีอย่างน้อยอีก 1 คนเสมอ
ที่สามารถแก้ไขปรับปรุง code ได้อย่างทันท่วงที ไม่จำเป็นต้องรอผมกลับมาทำงานได้อีกครั้ง

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

ผมชอบบทความ For Writing Software, a Buddy System ที่เขียนโดย Jim Remsik มาก
เพราะเป็นประสบการณ์ตรงของผู้เขียนซึ่งทำงานในบริษัทที่ใช้ Pair Programming เป็นหลัก

ผมขอสรุปเนื้อหามาดังนี้ครับ

  • การจับคู่ครั้งหนึ่งจะต้องทำงานร่วมกันอย่างน้อยหนึ่งวัน แต่โดยมากจะกินเวลาหลายวัน
    และมักจะเปลี่ยนคู่เป็นประจำ เนื่องจากทุกคนต่างก็มีความถนัดเฉพาะด้าน
    การเปลี่ยนคู่ทำงานทำให้กระจายความถนัดของคนหนึ่งไปยังอีกหลาย ๆ คนได้ง่ายและรวดเร็ว
  • โปรแกรมเมอร์มือใหม่มักจะประหม่า เมื่อได้จับคู่กับ Senior หากเกิดเหตุการณ์เช่นนี้
    แนะนำให้มือใหม่เป็นผู้เขียน และ Senior เป็นผู้ตรวจสอบ ซึ่ง Senior จะเป็นผู้สอนที่ดี ทำให้มือใหม่
    มีประสบการณ์และทำงานได้เก่งขึ้น
  • Pair Programming ช่วยให้โปรแกรมเมอร์อยู่กับงานมากขึ้น มีระเบียบวินัยในการทำงานมากขึ้น
    เพราะถ้าทำงานอยู่คนเดียว เมื่อคิดไม่ออก ตัวอย่างของทางออกยอดนิยมก็คืออ่าน email, twitter หรือ facebook
  • Pomodoro (ภาษาอิตาเลียน แปลว่า มะเขือเทศ) คือวิธีการบริหารเวลาในการทำงาน โดยจะให้ทำงาน 25 นาที
    และพัก 5 นาที เวลาพักนี่แหล่ะคือเวลาที่สามารถอ่าน email, twitter และ facebook ได้

และระหว่างการเขียนได้ค้นหาข้อมูลอ้างอิงเพิ่มเติม ก็ได้เจอบทความของคุณอภิศิลป์ ตรุงกานนท์
(ซึ่งผม follow twitter ของคุณอภิศิลป์อยู่ด้วยโดยบังเอิญครับ) เกี่ยวกับ Pair Programming
ซึ่งคุณอภิศิลป์ก็มีประสบการณ์การใช้ Pair Programming (ร่วมกับเพื่อนของผม กรกฎ เชาวะวณิช -- นี่ก็เพิ่งรู้โดยบังเอิญเหมือนกัน)
จนสามารถ Commit code เข้าไปที่ MySQL ได้เลยทีเดียว

แม้ว่าจะเขียนไว้เมื่อเกือบ 2 ปีที่แล้ว แต่ผมคิดว่าเนื้อหาไม่ล้าหลังเลยครับ ลองอ่านดูได้ที่นี่ครับ Pair Programming จับคู่ซิ่งเขียนโปรแกรม

สำหรับการนำมาใช้งานจริงในประเทศไทยอาจจะต้องมีการปรับปรุงวิธีบ้าง หากผมคิดออกจะนำมาเสนอเป็นตอนต่อไปครับ

References

Comments

ขอบคุณครับ สำหรับเนื้อหา

ขอบคุณครับ สำหรับเนื้อหา น่าสนใจทีเดียว ไว้จะหาโอกาสไปลองดูบ้าง