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

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

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีการเดินทางจาก อำเภอกันทรลักษ์ จังหวัดศรีสะเกษ มา กรุงเทพ.
โดย phennapa จ 15 มิ.ย. 2020 5:12 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
61
จ 15 มิ.ย. 2020 5:12 pm โดย phennapa
อยากทราบว่าใส่รูปยังไงคะในกระทู้ค่ะ
โดย phennapa จ 15 มิ.ย. 2020 4:49 pm บอร์ด MindPHP News & Feedback
1
110
จ 15 มิ.ย. 2020 5:01 pm โดย thatsawan
ไม่สามารถใช้ route methods get ได้ ใน flask_classful
โดย bolue จ 15 มิ.ย. 2020 1:08 pm บอร์ด Programming - C/C++ & java & Python
2
130
จ 15 มิ.ย. 2020 3:28 pm โดย bolue
สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ
โดย bolue พฤ 11 มิ.ย. 2020 2:40 pm บอร์ด Programming - C/C++ & java & Python
7
256
จ 15 มิ.ย. 2020 8:52 am โดย bolue
การเรียกใช้ ฟังก์ชั่น ใน class เดียวกัน พร้อมส่งค่า โดย python
โดย bolue ส 13 มิ.ย. 2020 3:18 pm บอร์ด Python Knowledge
0
62
ส 13 มิ.ย. 2020 3:18 pm โดย bolue
เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน
โดย bolue ส 13 มิ.ย. 2020 2:37 pm บอร์ด Programming - C/C++ & java & Python
8
179
ส 13 มิ.ย. 2020 6:54 pm โดย bolue
pagination flask ใช้ไม่ได้ แต่อีกไฟล์ใช้ได้ ทั้งที่วิธีเขียนเหมือนกัน
โดย bolue ศ 12 มิ.ย. 2020 11:48 pm บอร์ด Programming - C/C++ & java & Python
3
130
ส 13 มิ.ย. 2020 12:18 pm โดย mindphp
การ ดึง url ในหน้าของ url ที่เราใส่เข้าไป มาทั้งหมด โดย Python
โดย bolue ศ 12 มิ.ย. 2020 1:38 pm บอร์ด Python Knowledge
0
137
ศ 12 มิ.ย. 2020 1:38 pm โดย bolue
การเขียน class object ของ python และให้ return เรียกใช้ บน html รูปแบบเป็นแบบไหนคะ
โดย bolue ศ 12 มิ.ย. 2020 1:07 pm บอร์ด Programming - C/C++ & java & Python
5
209
ส 13 มิ.ย. 2020 10:34 am โดย bolue
'Robinhood' ฟู้ดเดลิเวอรี สัญชาติไทย โดยธนาคารไทยพาณิชย์ พร้อมการันตีไม่เก็บ GP (Gross Profit) ส่วนแบ่งจากร้านอาหาร
โดย thatsawan ศ 12 มิ.ย. 2020 8:38 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
662
ศ 12 มิ.ย. 2020 8:38 am โดย thatsawan
การทำการขาย ในระบบ ERP
โดย natthanit.r2538 พฤ 11 มิ.ย. 2020 6:45 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
113
พฤ 11 มิ.ย. 2020 6:45 pm โดย natthanit.r2538
สอบถาม wrap ค่าใน value ทะลุหน้าจอ ของ python บน html ค่ะ
โดย bolue พฤ 11 มิ.ย. 2020 6:18 pm บอร์ด Programming - C/C++ & java & Python
2
163
ศ 12 มิ.ย. 2020 10:58 am โดย bolue
สอบถามวิธีการดึง link ทั้งหน้า มาจากใน link อีกที โดย python flask ทำยังไงคะ
โดย bolue พฤ 11 มิ.ย. 2020 11:12 am บอร์ด Programming - C/C++ & java & Python
0
169
พฤ 11 มิ.ย. 2020 11:12 am โดย bolue
เข้าหน้าจัดการส่วนของ admin ใน joomla ไม่ได้
โดย thatsawan พฤ 11 มิ.ย. 2020 10:49 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
2
165
พฤ 11 มิ.ย. 2020 12:00 pm โดย thatsawan
netbeans เชื่อมต่อ gitlab ไม่ได้ แก้ยังไงคะ
โดย bolue พ 10 มิ.ย. 2020 7:55 pm บอร์ด Programming - C/C++ & java & Python
0
95
พ 10 มิ.ย. 2020 7:55 pm โดย bolue
แชร์เว็บบอร์ดแล้วข้อมูลข้ึนกรอบรวมกันหลายๆอัน
โดย bolue พ 10 มิ.ย. 2020 3:27 pm บอร์ด MindPHP News & Feedback
2
110
พ 10 มิ.ย. 2020 4:55 pm โดย bolue
MJ Upgrade ค้างจังหวะดาวโหลด Joomla 3.9
โดย panas พ 10 มิ.ย. 2020 3:12 pm บอร์ด Joomla Development
3
120
ศ 12 มิ.ย. 2020 12:40 am โดย mindphp
ไม่สามารถสมัครสมาชิก Mindphp ได้
โดย bolue พ 10 มิ.ย. 2020 2:03 pm บอร์ด MindPHP News & Feedback
1
90
พ 10 มิ.ย. 2020 2:14 pm โดย mindphp
สิ่งที่เกิดขึ้นของ pgAdmin 4 v4.22
โดย bolue พ 10 มิ.ย. 2020 10:01 am บอร์ด Python Knowledge
0
61
พ 10 มิ.ย. 2020 10:01 am โดย bolue
netbeans เชื่อมกับ gitlab ไม่ได้
โดย bolue อ 09 มิ.ย. 2020 6:36 pm บอร์ด Programming - C/C++ & java & Python
1
103
พ 10 มิ.ย. 2020 10:04 am โดย bolue