ให้เรตสมาชิก: 0 / 5

ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

วันนี้ ขอเขียนบทความเรื่องแนวทางในการพัฒนา โปรแกรม และ พัฒนาคน (โปรแกรมเมอร์ไปพร้อมๆกัน)

ที่มาคือ บ.ที่ผมทำงานอยู่ มีโปรแกรมเมอหลายคนและเกิดความกังวลว่า โค้ดที่เขียนขึ้นมาจากคนๆ หนึ่ง คนอื่นๆ จะอ่านไม่รู้เรื่อง ถึงแม้ว่าเราได้ใช้และเน้น เรื่อง Coding Standard (จาก Pear PHP) แล้วก็ตาม และ อยากพัฒนาระดับความสามารถของโปรแกรมเมอร์ให้เก่งขึ้น เขียนเป็นระเบียบขึ้น แบบรวดเร็ว เพราะระดับความสามารถของโปรแกรมเมอร์ ยังห่างกันมาก ก็เลยต้องหาทางจูนและสอนกันแบบ (Learning-by-doing) หลังจากก่อนหน้านี้ได้มีการสอน แบบ Step-by-Step ไปแล้ว

หลักการของ Pair Programming ซึ่งเป็น แนวทางหนึ่งของ agile software development คือให้ โปรแกรมเมอร์ 2 คนได้เขียนโค้ดงานๆเดียวกัน 

ไม่ว่าแต่ละคนจะมีความสามรถ เท่าๆ กันหรือต่าง กันมากก็ตาม ได้ทำงานในชิ้นเดียวกัน (แค่ส่วนย่อยๆ ของโปรแกรม!) ไม่ใช่ให้นั่งเขียนคู่กัน ทั้งโปรเจ็คใหญ่ๆนะครับ (เดี๋ยวมีการตีกันตายก่อนงานเสร็จ ยิ่งเป็oโปรแกรมเมอร์คนไทยด้วยกันแล้วด้วย อีโก้(คา) ก็มีมากเหลือ )

โจทย์ ที่จะลองวันนี้ คือจะทำการ แปลงลิงค์ เป็น SEF โดยผมจะใช้ มีทรัพยากร โปรแกรมเมอร์ 2 คน (มีความสามารถต่างกัน)

ตามหลักการ Pair Programming คือจะให้ โปรแกรมเมอร์ สองคนเขียนงานชินเดียวกัน โดยที่ จะมีคีย์บอร์ด ให้ 1 อัน แต่ใช้มันสมอง สองคนช่วยกันคิดออกมา โดยให้คนที่เก่งกว่า เป็นคนดู คนที่อ่อนกว่า ได้ลงมือเขียนจริง (กรณีที่ความสามารถของโปรเมอร์ต่างกัน) แต่ถ้าโปรแกรมเมอร์แต่ละคนมีความสามารถใกล้เคียงกัน ให้ใครเป็นคนเขียนก็ได้ อีกคนก็คอยดู คนที่คอยดูเรียกว่า คนนำทาง (navigator) คนที่ทำหน้าที่พิมพ์ลงบน คีย์บอร์ดเรียกว่า คนขับ (Driver)

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

ภาพ Pair programming

แนวทางการเขียนโปรแกรมแบบนี้ใช้ได้หลายกรณี เช่น

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

- ต้องการพัฒนาโปรแกรมเมอร์ใหม่เพื่อเข้าทีมพัฒนา คนขับก็จะได้รู้ระดับความสามารถ และ แนวทางการเขียนโค้ดของคนขับ ได้

- โปรแกรมที่อยากให้มีข้อผิดพลาดน้อย มากๆ ก็ใช้แนวทางนี้ได้เหมือนกัน เพราะโค้ดโปรแกรมที่ผ่านแนวทางนี้รับประกันได้ว่า โค้ดจะมี bug น้อยกว่าเขียนเองคนเดียวแน่นอน

ประโยชน์

- เกิดความสัมพันธ์ที่ดีภายในทีม

- ลด Bug ของโปรแกรม

- ได้โค้ดโปรแกรมที่ทำงานได้ดีกว่าคิดคนเดียว (คุณภาพดี)

- ได้ไอเดียใหม่ๆ ในการพัฒนา

- ลดอาการวอกแวกตอนเขียนโปรแกรมของแต่ละคน

- ประหยัดค่าไฟ เพราะใช้คอมพิวเตอร์เครื่องเดียว แต่ใช้สองหัวสช่วยกันคิด *-*

ข้อเสีย

- ทำให้ได้งานจากโปรแกรมเมอร์ สองคนน้อยลง

- ใช้เวลาทำแบบนี้นานๆ จะทำให้รู้สึกล้ากว่าปกติ

ข้อมูลเพิ่มเติม http://en.wikipedia.org/wiki/Pair_programming

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การทำงานแบบ สืบทอด class บน Python
โดย tatiya อ 14 ส.ค. 2018 7:16 pm บอร์ด Python Knowledge
0
8
อ 14 ส.ค. 2018 7:16 pm โดย tatiya
วิธีลบริ้วรอยด้วย Photoshop
โดย tai14 อ 14 ส.ค. 2018 7:05 pm บอร์ด Graphic design
0
9
อ 14 ส.ค. 2018 7:05 pm โดย tai14
วิธีสร้างตัวอักษรนูนด้วย Photoshop
โดย tai14 อ 14 ส.ค. 2018 5:02 pm บอร์ด Graphic design
0
25
อ 14 ส.ค. 2018 5:02 pm โดย tai14
ประโยชน์ของ VPN
โดย anuwat somsakul อ 14 ส.ค. 2018 4:58 pm บอร์ด IOT - Internet of things
0
7
อ 14 ส.ค. 2018 4:58 pm โดย anuwat somsakul
การใช้งาน ตัวแปร golbal บน ภาษา Python
โดย tatiya อ 14 ส.ค. 2018 3:01 pm บอร์ด Python Knowledge
0
3
อ 14 ส.ค. 2018 3:01 pm โดย tatiya
Backup database Mysql
โดย acomscie อ 14 ส.ค. 2018 2:54 pm บอร์ด SQL - Database
0
9
อ 14 ส.ค. 2018 2:54 pm โดย acomscie
วิธีโคลนนิ่งภาพด้วย Photoshop
โดย tai14 อ 14 ส.ค. 2018 12:09 pm บอร์ด Graphic design
0
13
อ 14 ส.ค. 2018 12:09 pm โดย tai14
ตัวช่วยในการแสดงตัวเลขเคลื่อนไหวด้วย Plugin M Animate Number ใน Joomla
โดย Parichat อ 14 ส.ค. 2018 11:10 am บอร์ด PHP News
0
6
อ 14 ส.ค. 2018 11:10 am โดย Parichat
ขอสูตรคำนวณมือ Nper แบบไม่ติด log ค่ะ
โดย pprn อ 14 ส.ค. 2018 10:39 am บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
12
อ 14 ส.ค. 2018 10:39 am โดย pprn
งานประจำวันที่ 14 สิงหาคม 2561
โดย anuwat somsakul อ 14 ส.ค. 2018 10:27 am บอร์ด M067 - นายอนุวัฒน์ สมสกุล
1
7
อ 14 ส.ค. 2018 7:15 pm โดย anuwat somsakul
งานประจำวันที่ 14 สิงหาคม 2561
โดย prakon อ 14 ส.ค. 2018 10:20 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
15
อ 14 ส.ค. 2018 10:27 am โดย prakon
งานประจำวันที่ 14 สิงหาคม 2561
โดย Lamduan อ 14 ส.ค. 2018 10:16 am บอร์ด M066 - นางสาวลำดวน พันโอดเบี้ย
0
3
อ 14 ส.ค. 2018 10:16 am โดย Lamduan
งานประจำวันที่ 14 สิงหาม 2561
โดย tatiya อ 14 ส.ค. 2018 10:14 am บอร์ด M065 - ตติยะ นาชัย
1
6
อ 14 ส.ค. 2018 7:29 pm โดย tatiya
งานที่ต้องทำประจำวันที่ 14 สิงหาคม 2561
โดย tai14 อ 14 ส.ค. 2018 10:11 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
9
อ 14 ส.ค. 2018 7:27 pm โดย tai14
งานประจำวันที่ 14 สิงหาคม 2561
โดย pprn อ 14 ส.ค. 2018 10:09 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
1
8
อ 14 ส.ค. 2018 7:23 pm โดย pprn
วิธีกำหนดให้ หลายๆ IP และ Localhost เชื่อมต่อ มาที่ PostgreSQL Server ได้
โดย mindphp จ 13 ส.ค. 2018 6:00 pm บอร์ด PostgreSQL
1
37
จ 13 ส.ค. 2018 8:19 pm โดย ชินวัฒน์ วาทศิลป์
วิธีเมิร์ชเลเยอร์ทั้งหมดในครั้งเดียว ใน Photoshop
โดย anuwat somsakul ส 11 ส.ค. 2018 6:48 pm บอร์ด CSS Knowledge
0
23
ส 11 ส.ค. 2018 6:48 pm โดย anuwat somsakul
การใช้งาน โมดูล radom ในการสุ่มคำ
โดย tatiya ส 11 ส.ค. 2018 6:41 pm บอร์ด Programming - C/C++ & java & Python
0
20
ส 11 ส.ค. 2018 6:41 pm โดย tatiya
รูปแบบการนำส่งข้อมูลภาษีเงินได้หัก ณ ที่จ่ายยื่นด้วยสื่อบันทึกข้อมูลในระบบคอมพิวเตอร์ หรืออินเทอร์เน็ต
โดย thatsawan ส 11 ส.ค. 2018 4:49 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
29
ส 11 ส.ค. 2018 4:49 pm โดย thatsawan
B - ฐานเทส User กด Preferences ระบบแจ้งข้อความ error
โดย rinrada ส 11 ส.ค. 2018 2:46 pm บอร์ด Hachanna - Testter
0
6
ส 11 ส.ค. 2018 2:46 pm โดย rinrada