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

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

ที่มาคือ บ.ที่ผมทำงานอยู่ มีโปรแกรมเมอหลายคนและเกิดความกังวลว่า โค้ดที่เขียนขึ้นมาจากคนๆ หนึ่ง คนอื่นๆ จะอ่านไม่รู้เรื่อง ถึงแม้ว่าเราได้ใช้และเน้น เรื่อง 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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
google photos เพิ่มฟีเจอร์ Memories นำภาพถ่ายหรือวิดีโอเก่า ๆ ของเรามาแสดง
โดย jamepiyawat ศ 13 ก.ย. 2019 6:08 pm บอร์ด Share Knowledge
1
95
จ 16 ก.ย. 2019 12:05 pm โดย markjohn
Microsoft เปลี่ยนชื่อ Microsoft To-Do เป็น To Do หวังให้ใช้งานแทน Wunderlis
โดย chatee supasand ศ 13 ก.ย. 2019 6:05 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
64
ศ 13 ก.ย. 2019 6:05 pm โดย chatee supasand
วิธีการ Export ข้อมูลมาเป็นไฟล์ Excel โดย phpbb
โดย Ittichai_chupol ศ 13 ก.ย. 2019 4:24 pm บอร์ด PHP Knowledge
1
96
จ 30 ก.ย. 2019 1:16 pm โดย thatsawan
อยากทราบวิธีการแก้ไข Undefined index ใน phpbb
โดย Ittichai_chupol ศ 13 ก.ย. 2019 3:26 pm บอร์ด Programming - PHP
1
111
ศ 13 ก.ย. 2019 3:36 pm โดย บุคคลทั่วไป
อยากทราบวิธีทำให้ path way มีลูกศรชี ครับ
โดย jamepiyawat ศ 13 ก.ย. 2019 2:53 pm บอร์ด Joomla Development
1
80
ศ 13 ก.ย. 2019 2:55 pm โดย tsukasaz
สอบถามครับ RML สร้างเส้นตาราง แบบนี้ยังไงอะครับ
โดย chatee supasand ศ 13 ก.ย. 2019 10:28 am บอร์ด Programming - C/C++ & java & Python
2
111
ศ 13 ก.ย. 2019 11:03 am โดย chatee supasand
Google Assistant สามารถอ่านข้อความและตอบกลับได้บนแอพTelegram, Slack และ WhatsApp
โดย jamepiyawat พฤ 12 ก.ย. 2019 6:42 pm บอร์ด Share Knowledge
0
80
พฤ 12 ก.ย. 2019 6:42 pm โดย jamepiyawat
แสดงสินค้าโดยที่ให้ สินค้าแสดงแบบสุ่ม และแสดงแค่ 3 อย่าง ทำอย่างไรครับ
โดย Patipat พฤ 12 ก.ย. 2019 6:13 pm บอร์ด Joomla Development
1
89
พฤ 12 ก.ย. 2019 6:28 pm โดย tsukasaz
Windows 10 สามารถใช้โปรแกรม PowerToys ได้แล้ว
โดย chatee supasand พฤ 12 ก.ย. 2019 6:12 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
67
พฤ 12 ก.ย. 2019 6:12 pm โดย chatee supasand
ดึงชื่อรูปภาพ และนำชื่อมาแสดงเป็นภาพอย่างไรครับ
โดย Patipat พฤ 12 ก.ย. 2019 5:13 pm บอร์ด Joomla Development
2
88
พฤ 12 ก.ย. 2019 5:20 pm โดย Patipat
ปุ่ม Remove กดแล้วไม่ยอมลบสินค้าให้ครับ
โดย jamepiyawat พฤ 12 ก.ย. 2019 4:20 pm บอร์ด Programming - PHP
4
109
พฤ 12 ก.ย. 2019 5:57 pm โดย jamepiyawat
ทำยังไงให้ hover ใน แท็ก div แล้วตัวอักษรใน แท็ก div มันเปลี่ยนสีครับ
โดย jamepiyawat พฤ 12 ก.ย. 2019 3:49 pm บอร์ด HTML CSS
4
99
พฤ 12 ก.ย. 2019 4:13 pm โดย jamepiyawat
การบันทึกบัญชีค่าเบี้ยประกันภัยกลุ่ม
โดย EyePornnipa พฤ 12 ก.ย. 2019 2:39 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
1
101
ส 14 ก.ย. 2019 10:25 am โดย Amp_Audit
ใช้งานฟังก์ชันแล้วขึ้นเออเร่อครับ
โดย Patipat พฤ 12 ก.ย. 2019 2:19 pm บอร์ด Joomla Development
6
117
พฤ 12 ก.ย. 2019 3:27 pm โดย Patipat
5 เหตุผล รับเขียนเนื้อหาของบทความ เพราะเหตุใดจะต้องว่าจ้างคนเขียนบทความ
โดย articleheros พฤ 12 ก.ย. 2019 11:26 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
77
พ 09 ต.ค. 2019 4:27 pm โดย LEG
ใครติดตั้ง mjupgrade ไม่ได้ เจอ Error ตอนติดตั้ง Extension com_mjupgrade
โดย mindphp พฤ 12 ก.ย. 2019 11:24 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
81
พฤ 12 ก.ย. 2019 11:32 am โดย mindphp
สอบถามเกี่ยวกับการทำ log เก็บการเข้าใช้งานของโปรแกรม wed serviec
โดย jirawoot พฤ 12 ก.ย. 2019 11:19 am บอร์ด Programming - C/C++ & java & Python
1
78
พฤ 12 ก.ย. 2019 11:58 am โดย tatiya
อยากทราบวิธีการใช้งาน unserialize() กับ serialize() ใน phpbb
โดย Ittichai_chupol พฤ 12 ก.ย. 2019 11:04 am บอร์ด Programming - PHP
0
67
พฤ 12 ก.ย. 2019 11:04 am โดย Ittichai_chupol
อยากทราบวิธ๊การแก้ไขการ Export ไฟล์ Excel แล้วเป็นภาษาต่างดาว phpbb
โดย Ittichai_chupol พฤ 12 ก.ย. 2019 10:59 am บอร์ด Programming - PHP
0
78
พฤ 12 ก.ย. 2019 10:59 am โดย Ittichai_chupol
md gallery สามารถ สร้าง ลบ ในหน้าเว็บได้ไหมครับ
โดย Jahari Aum พ 11 ก.ย. 2019 11:47 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
116
พฤ 12 ก.ย. 2019 12:28 am โดย mindphp