Pair Programming คืออะไร ??
การ Pair Program ถ้าแปลความหมายตรงตัวคือ การเขียนโปรแกรมเป็นคู่ ซึ่งวิธีการทำก็อาจจะแตกต่างกันไปในแต่ละที่ แต่ละองค์กร แต่สิ่งที่เหมือนกันสำหรับทุกๆ ที่ในการทำ pair program คือ คนสองคน จะทำงานเดียวกัน ร่วมกัน ด้วย work station เดียวกัน
Pair Program มักจะถูกใช้กับทีมหรือองค์กรที่ประยุกต์ใช้หลักการของ Agile Development
แล้วมันจะไม่ช้ากว่าแยกกันทำเหรอ ?
เป็นคำถามที่หลายๆ คน ในหลายๆ องค์กรที่ไม่เคยใช้การ Pair Program เลยมักจะถามอยู่เสมอๆ คำตอบคือ มัน “อาจจะ” ช้ากว่าแยกกันทำ “นิดหน่อย” ในช่วงๆ แรกๆ เพราะ การทำงานคู่กัน ต้องคำนึงถึงความแตกต่างระหว่าง ความรู้ ความสามารถ วุฒิภาวะ สมาธิ ของแต่ละคนด้วย แต่เมื่อคู่หูที่ทำงานด้วยกัน สามารถจูนกันติดแล้ว ผลลัพธ์ที่ออกมาจากการ Pair Program นั้น มีแนวโน้มที่จะดีกว่า การแยกกันทำงานคนเดียวแน่นอน
แล้วทำไมมันถึงจะดีกว่าแยกกันทำล่ะ?
มักจะเป็นคำถามลำดับถัดมาเสมอ จากคนกลุ่มเดิมที่ถามคำถามที่แล้ว
คำตอบของคำถามนี้สามารถตอบแยกเป็นมุมมองทางด้านทีม ด้านตัวบุคคล และด้านการบริหารจัดการได้ดังนี้
ข้อดีกับทีม
- ส่งเสริมการทำงานร่วมกันในทีม
- ถ่ายทอดความรู้อย่างรวดเร็ว ให้ทุกๆ คนในทีม
- ทำให้สามารถมองเห็นปัญหา หรือสิ่งที่ทำงานร่วมกันอยู่ได้จากหลายมุมมอง ซึ่งอาจนำไปสู่วิธีการแก้ปัญหาที่ดีขึ้นได้
- เพิ่มทักษะของคนในทีมดีขึ้น ไปพร้อมๆ กัน
- ลด Truck Factor ทำให้ไม่ต้องมี Hero Programmer หรือ คนที่ต้องคอยฉุดขึ้นมาในทีม
ข้อดีกับโปรแกรมเมอร์
- ลดความผิดพลาดในการทำงาน เพราะมีสองคน ช่วยกันดู ความผิดพลาดง่ายๆ มักจะถูกพบ และได้รับการแก้ไขก่อนนำไปใช้งานจริง
- มีสมาธิและโฟกัสในการทำงานมากขึ้น เพราะเมื่อทำงานด้วยกัน พร้อมกันสองคน เราก็จะเสียสมาธิได้ยากขึ้น ทำให้ flow ในการทำงานราบรื่นขึ้น
- เรียนรู้งานได้เร็วขึ้น นึกว่าถ้าเราเข้ามาทำงานใหม่ แล้วต้องมานั่งแกะโค้ดเดิม ในระบบเดิมที่มีอยู่แล้ว จากตัวซอร์สโค้ดเอง หรือจาก documentation ที่อาจจะ outdated ไปแล้วหรือเปล่าก็ไม่รู้ เทียบกับมีคนไกด์ให้เรา สอนเทคนิคต่างๆ หรือหลุมพรางที่อาจจะเจอเสียตั้งแต่แรก
- ได้เห็นแนวคิดใหม่ๆ และวิธีต่างๆ ในการแก้ปัญหา แลกเปลี่ยนความคิดจากคู่หูที่ Pair Program อีกด้วย
ผลดีในด้านการบริหารจัดการ
- ลดการผลัดวันประกันพรุ่งของคนในทีม เพราะนั่งทำงานกันอยู่สองคน ถ้าจะอู้หรือผลัดงานออกไป ก็คงยังไงๆ อยู่
- เน้นคุณค่าไปที่ตัวบุคคล การเพิ่มความรู้ ความสามารถให้แต่ละคนในองค์กร เป็นการลดการพึ่งพา “ผู้เชี่ยวชาญ” หรือ Specialist ที่อาจจะมีเพียงคนเดียว
- กังวลเรื่องการลาออกของพนักงานได้น้อยลง จากเหตุผลข้อที่แล้ว แม้มีการลาออกจากสมาชิกที่ฝีมือเยี่ยมที่สุด ก็มีผลกระทบไม่ มากมายเท่าเสีย Specialist เพราะความรู้ของสมาชิก ควรจะอยู่ในระดับใกล้เคียงกัน
- หมดกังวลเรื่องการบริหารเทคโนโลยี ที่อาจไม่มีใครเข้าใจ ถ้าคนในทีมมีคนที่ทำ/ใช้ เทคโนโลยีเป็นอยู่แล้ว ทำให้เราไม่ต้องกังวลว่า จะต้องเสียเวลามานั่งศึกษาอะไรต่างๆ ตั้งแต่ต้นใหม่หมด
- สามารถเอาใจใส่กับ Attitude (ทัศนคติ) และ Aptitude (ความสามารถ) ของคนในองค์กรได้มากขึ้น (สืบเนื่องจากเหตุผลข้อที่แล้ว) ซึ่งเป็นเรื่องที่ละเอียดอ่อน และต้องการการเอาใจใส่มากกว่าเทคโนโลยีเป็นไหนๆ