Pair Programming by heha
24
May1
May1
Pair Programming เป็นการจับคู่กันเขียน code โดยมีผู้ code เพียงคนเดียว(Driver) ส่วนอีกคนคอยทำหน้าที่บางอย่างเพื่อสนับสนุนการทำงานของคน code(Navigator) แม้จะเป็นการใช้ man hour สองเท่า แล้ว productivity เพิ่มขึ้นไม่ถึง 2 เท่า แต่มีประโยชน์แอบแฝงอื่นๆ มากมาย มักมีเก้าอี้สองตัว จอสองจอช่วยกันดู แบ่งออกเป็น 3 ประเภทได้แก่
- Driver – Navigator : เป็นการจับคู่โดยมี Driver เป็นผู้ลงมือ coding และ Navigator เป็นผู้ Review code และ planning สิ่งที่จะต้องทำต่อไป
- Mouse-Keyboard : เป็นการจับคู่โดยมีคนหนึ่งจับ Mouse อีกคนจับ Keyboard เพื่อเป็นการเตือนสติว่า “อีกคนยังทำงานอยู่”
- Ping-Pong : เป็นการจับคู่โดยมี Driver เป็นผู้ลงมือ coding และ Navigator เป็นผู้ Review code + ทำ Unit Test ของ code ส่วนนั้น
ประโยชน์
- ช่วยเร่ง productivity ขึ้นเป็นประมาณ 1.6-1.8 เท่า (ไม่ถึง 2 เท่า) ในเวลาเท่าเดิม
- ช่วยลดเปอร์เซ็นต์การเกิด bug ที่จะต้องตามแก้ทีหลัง(โดยเฉพาะอย่างยิ่ง bug โง่) ลงได้เป็นอย่างมาก
- สร้างเสริมความสัมพันธ์ ความสามัคคีในองค์กร (Team work)
- ลดเวลาการ training Novice ลงเนื่องจากใช้ในการทำงานจริงเลย
- Novice จะมีความภาคภูมิใจที่ได้เป็นส่วนหนึ่งของการทำงานจริง และ code ของตัวเองได้ถูกนำไปใช้จริง ช่วยสร้างความฮึกเหิมและความมั่นใจได้ดี เพื่อส่งผลต่อการทำงาน และทัศนคติที่ดี ลดความกลัวที่จะทำพลาดลงในอนาคต
- เป็นเจ้าของ code ทั้งคู่ ทำให้เมื่อต้องเปลี่ยนแปลงแก้ไขในอนาคต ให้ 1 ใน 2 คน ใครก็ได้เป็นคนแก้ (ถึงจะหายตัวไปคนก็ไม่เป็นไร)
- ลดการ interrupt เช่นเล่น MSN, เล่นเกม ระหว่างการทำงาน ลงได้ เพราะต้องเกรงใจ partner ด้วย
- ป้องกันการหลับของ partner ได้ง่าย (ใครหลับ อีกคนก็ตบหัวให้ตื่นได้)
หลักปฏิบัติทั่วไป
- ควรสลับหน้าที่ระหว่าง Driver และ Navigator ทุกๆ 1 ชั่วโมงเพื่อไม่ให้ซ้ำซาก จำเจ เบื่อ แต่อาจสลับทุก 6-8 ชั่วโมงก็ได้ตามแต่ความเหมาะสม
- ควรเปลี่ยน partner (คนที่จับคู่ทำ Pair) ทุกๆ iteration (ในงาน ผู้พูดกล่าวว่า 1 iteration ของที่รอยเตอร์มีความยาว 2 อาทิตย์)
- เน้นการ Communication มากๆ ระหว่างคู่ จะต้องไม่มี Ego ต่อกัน ควรทำความตกลงเรื่องนิสัยส่วนตัวของแต่ละคนในขณะทำงาน ก่อนเริ่มใช้จริง เพื่อจะได้ไม่เกิดปัญหาภายหลัง
- หาก Expert คู่กับ Novice ควรเลือก feature ที่ง่ายๆ มาทำ และ Expert จะต้องไม่ข่ม Novice โดยระหว่างที่ Novice เป็นคน code Expert ก็แนะนำสิ่งที่จะต้องทำทั่วไป แต่ระหว่างที่ Expert เป็นคน code Novice จะต้องคอยถาม Expert อยู่ตลอดว่าตรงนี้ทำเพื่ออะไร หรือตรงนั้นอ่าน code แล้วไม่เข้าใจ อ่านยาก Expert จะต้องไม่มี Ego และต้องยอมปรับ code แบ่งสัดส่วนให้ Novice อ่านรู้เรื่อง เพื่อเป็นการบ่งบอกว่า “code ส่วนนั้น อ่านง่ายสำหรับคนทั่วไป ไม่ซับซ้อน”
- การจับคู่ทำงานใน 3-4 ครั้งแรกจะค่อนข้างทำงานได้ช้ากว่าแยกกันทำพอสมควร หลังจากนั้นไปแล้วจึงจะเห็นผลจากการจับคู่การทำงาน
Enjoy this article?
Consider subscribing to our RSS feed!
1 ความเห็น
ใส่ความเห็น
Who are we?
LevelUp! Studio aim to be the world-wide first-class web-based social gaming company.
Contact Us
contact (at) levelup.in.th
หมวดหมู่
ป้ายกำกับ
3d
android
animation
as3
beginner
browser
bug
color
css
database
document
excel
facebook
facebook api
flash
flex
game
game design
google
Graphic
html
illustrator
ios
javascript
marketing
mobile
mysql
ngui
node.js
performance
photoshop
php
programming
query
review
sai
Server
social game
spine
tools
tutorial
ui
Unity
unity3d
เรื่องง่ายแต่กูไม่รู้
บันทึกเก่า
- พฤษภาคม 2017
- กุมภาพันธ์ 2017
- มกราคม 2017
- ธันวาคม 2016
- พฤศจิกายน 2016
- ตุลาคม 2016
- กันยายน 2016
- สิงหาคม 2016
- กรกฎาคม 2016
- มิถุนายน 2016
- พฤษภาคม 2016
- เมษายน 2016
- มีนาคม 2016
- กุมภาพันธ์ 2016
- มกราคม 2016
- ธันวาคม 2015
- พฤศจิกายน 2015
- ตุลาคม 2015
- กันยายน 2015
- สิงหาคม 2015
- กรกฎาคม 2015
- มิถุนายน 2015
- พฤษภาคม 2015
- เมษายน 2015
- มีนาคม 2015
- กุมภาพันธ์ 2015
- มกราคม 2015
- ธันวาคม 2014
- พฤศจิกายน 2014
- ตุลาคม 2014
- กันยายน 2014
- สิงหาคม 2014
- กรกฎาคม 2014
- มิถุนายน 2014
- พฤษภาคม 2014
- เมษายน 2014
- มีนาคม 2014
- กุมภาพันธ์ 2014
- มกราคม 2014
- ธันวาคม 2013
- พฤศจิกายน 2013
- ตุลาคม 2013
- กันยายน 2013
- สิงหาคม 2013
- กรกฎาคม 2013
- มิถุนายน 2013
- พฤษภาคม 2013
- เมษายน 2013
- มีนาคม 2013
- กุมภาพันธ์ 2013
- มกราคม 2013
- ธันวาคม 2012
- พฤศจิกายน 2012
- ตุลาคม 2012
- กันยายน 2012
- สิงหาคม 2012
- กรกฎาคม 2012
- มิถุนายน 2012
- พฤษภาคม 2012
- เมษายน 2012
- มีนาคม 2012
- กุมภาพันธ์ 2012
- มกราคม 2012
- ธันวาคม 2011
- พฤศจิกายน 2011
- ตุลาคม 2011
- กันยายน 2011
- กรกฎาคม 2011
- มิถุนายน 2011
- พฤษภาคม 2011
- เมษายน 2011
- มีนาคม 2011
- กุมภาพันธ์ 2011
- มกราคม 2011
- ธันวาคม 2010
- พฤศจิกายน 2010
- ตุลาคม 2010
- กันยายน 2010
- สิงหาคม 2010
- กรกฎาคม 2010
- มิถุนายน 2010
- พฤษภาคม 2010
- เมษายน 2010
- มีนาคม 2010
- กุมภาพันธ์ 2010
- มกราคม 2010
- ธันวาคม 2009
- พฤศจิกายน 2009
- ตุลาคม 2009
- กันยายน 2009
- สิงหาคม 2009
- กรกฎาคม 2009
- มิถุนายน 2009
- พฤษภาคม 2009
- มีนาคม 2009
19:07 on May 13th, 2010
ขอบคุณสำหรับบทความครับ