pair-the-social-network-for-two-launches-an-android-app-1ef3c9524a
ในการอธิบายประโยชน์ของ Pair programming
ให้ใครสักคนเข้าใจ และ ยอมรับมัน เป็นเรื่องที่ยากมาก ๆ
ในเบื้องต้นอาจจะเข้าใจได้
แต่เมื่อต้องนำ developer 2 คนมาทำงานชิ้นเดียวกัน
มันเป็นเรื่องที่ยอมรับได้ยากมาก !!

คำถามที่โดนถามกลับมาเสมอ คือ
ทำไมเราต้องทำแบบนี้ด้วยล่ะ ?
มันจะคุ้มหรอ ?

แล้วเราจะอธิบายอย่างไรดีล่ะ เพื่อให้เห็นภาพชัดเจนขึ้น ?

ไปอ่านเจอบทความเรื่อง Swiss cheese model

โดย Swiss Cheese Model นั้นเป็น model
ที่ถูกใช้ในวงจรการจัดการและวิเคราะห์ความเสี่ยงต่าง ๆ

แนวคิดคือ
มี layer การทำงานต่าง ๆ เข้าช่วยเพื่อลดความเสี่ยง
เหมือนกับการมีด่านป้องกัน ด่านกรองข้อมูล หลาย ๆ ชั้นดังรูป

Swiss_cheese_model_of_accident_causation

โดย Swiss cheese แต่ละชิ้นจะมีรู หรือ ความผิดพลาดเสมอ

ถ้าเป็น developer หมายความว่า
developer ทุกคนล้วนมีจุดแข็ง
developer ทุกคนล้วนมีจุดอ่อน นั่นคือรูปบน cheese นั่นเอง

ดังนั้นเพื่อลดจุดอ่อน และ ข้อผิดพลาดต่าง ๆ ลงไป
จึงต้องใช้ cheese หลาย ๆ ชิ้นมาช่วยกัน
ถ้าเทียบกับการพัฒนา software ก็คือ
การทำ pair programming นั่นเอง
เพื่อช่วยลดข้อผิดพลาดต่าง ๆ ที่อาจจะเกิดขึ้นใน software ลงไป

อาจจะยังงง ๆ กันอยู่ มาดูว่าปกติเราทำงานแบบต่างคนต่างทำ

จะแสดงดังรูป

two-sandwiches

คำอธิบาย
Swiss cheese คือ developer นั่นเอง
ต่างคนต่างทำงานของตัวเองไป
โดยงานก็คือแซนวิส
จะเห็นได้ว่า มีรู หรือจุดอ่อน หรือ ข้อผิดพลาดที่เกิดขึ้นจำนวนมาก

ดังนั้นเราสามารถลดความผิดพลาดต่าง ๆ เหล่านี้

ด้วยการนำ developer ทั้งสองคนมาทำงานเดียวกัน
จะแสดงดังรูป

one-sandwich-two-slices

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

ดังนั้น ถ้าเรารู้ว่าจุดอ่อนของแต่ละคนเป็นอย่างไร อะไรบ้าง
เราก็สามารถเรียนรู้จากคู่ pair ของเราได้
มันยิ่งช่วยให้ developer แต่ละคนพัฒนาความสามารถขึ้นไปอีก
นั่นคือช่วยเติมเต็มในสิ่งที่ขาดนั่นเอง

ดังนั้นการทำงานร่วมกัน
มันช่วยให้เราสร้าง software/product ที่มีคุณภาพดีขึ้นกว่าเดิม
พร้อมกับลดความเสี่ยงในเรื่องต่าง ๆ อีกมากมาก

วันนี้คุณเริ่มทำ Pair programming กันหรือยัง ?