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

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

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีการ Insert , edit ,delete โดยผ่านตัว Model Laravel Framework
โดย makup ส 24 ต.ค. 2020 3:44 pm บอร์ด PHP Knowledge
1
17
ส 24 ต.ค. 2020 3:59 pm โดย makup
ติดปัญหาการค้นหาข้อมูล Listbox ให้เลือกค่าเก่าค้างไว้
โดย makup พฤ 22 ต.ค. 2020 8:05 pm บอร์ด Programming - PHP
7
69
อ 25 ต.ค. 2020 7:28 pm โดย mindphp
อยากทราบว่า ตรงที่แสดงข้อมูล URL จะให้แสดงเฉพาะ id แค่ตัวเลข ต้องทำอย่างไงครับ
โดย makup พฤ 22 ต.ค. 2020 8:05 pm บอร์ด Programming - PHP
3
34
พฤ 22 ต.ค. 2020 8:16 pm โดย mindphp
วิธีการ Upload file ภาพ ขึ้น Server
โดย makup พฤ 22 ต.ค. 2020 5:41 pm บอร์ด PHP Knowledge
1
37
พฤ 22 ต.ค. 2020 5:54 pm โดย makup
ปัญหา phpBB Error ในหน้า admin vsprintf(): Too few arguments
โดย mindphp พ 21 ต.ค. 2020 5:36 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
0
30
พ 21 ต.ค. 2020 5:36 pm โดย mindphp
สอนเขียนวิธี Upload File Laravel ขึ้น Server
โดย makup พ 21 ต.ค. 2020 3:41 pm บอร์ด PHP Knowledge
2
53
พ 21 ต.ค. 2020 5:25 pm โดย makup
สอบถาม การขึ้นบรรทัดใหม่ ด้วย การนับ len และตัดแบบเต็มคำยังไงคะ
โดย bolue อ 20 ต.ค. 2020 7:22 pm บอร์ด Programming - C/C++ & java & Python
2
53
อ 20 ต.ค. 2020 8:15 pm โดย mindphp
วิธีการทำระบบค้นหา ใน Laravel Framework
โดย makup อ 20 ต.ค. 2020 12:57 pm บอร์ด PHP Knowledge
0
51
อ 20 ต.ค. 2020 12:57 pm โดย makup
เจอปัญหา Publishing failed. You are probably offline. ปัญหาใน Wordpress 5.x
โดย mindphp อ 20 ต.ค. 2020 6:03 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
35
อ 20 ต.ค. 2020 6:30 am โดย mindphp
แสดงสินค้าที่ขายได้ล่าสุด ด้วย Module Latest Sold Products ใน MooZiiCart
โดย bolue จ 19 ต.ค. 2020 6:53 pm บอร์ด MindPHP News & Feedback
0
109
จ 19 ต.ค. 2020 6:53 pm โดย bolue
ติดปัญหาเรื่อง การทำปุ่ม ค้นหา ที่มีการเชื่อมความสัมพันธ์ Laravel Framework
โดย makup จ 19 ต.ค. 2020 6:23 pm บอร์ด Programming - PHP
3
140
อ 20 ต.ค. 2020 1:32 pm โดย mindphp
วิธีการกำหนด Routing ใน Laravel Framework
โดย makup จ 19 ต.ค. 2020 7:15 am บอร์ด PHP Knowledge
0
139
จ 19 ต.ค. 2020 7:15 am โดย makup
วิธีแสดงพิกัดบนแผนที่ OpenStreetMap ด้วย Laravel Framework
โดย makup อ 18 ต.ค. 2020 6:21 pm บอร์ด PHP Knowledge
0
108
อ 18 ต.ค. 2020 6:21 pm โดย makup
เจอปัญหา ในฐาน Joomla Out of resources when opening file '/tmp/#sql_7059_0.MAD' (Errcode: 24 "Too many open files")
โดย mindphp อ 18 ต.ค. 2020 5:34 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
108
อ 18 ต.ค. 2020 5:41 pm โดย mindphp
Re: Mysql เช็คerror ฟิลซ้ำ แสดงข้อความ(PHP)
โดย kimmyth ศ 16 ต.ค. 2020 11:26 pm บอร์ด Programming - PHP
1
107
ส 17 ต.ค. 2020 10:02 am โดย mindphp
Mysql เช็คerror ฟิลซ้ำ แสดงข้อความ
โดย kimmyth ศ 16 ต.ค. 2020 11:22 pm บอร์ด Programming - PHP
0
85
ศ 16 ต.ค. 2020 11:22 pm โดย kimmyth
อยากทราบว่า มีตัวอย่าง OpenstreetMap ในการใช้งานร่วมกับ MySQL , PHP บ้างไหมครับ
โดย makup ศ 16 ต.ค. 2020 7:25 pm บอร์ด Programming - PHP
2
120
ศ 16 ต.ค. 2020 7:48 pm โดย makup
การคำนวณต้นทุนสินค้า แบบ FIFO และ Weighted Average
โดย bolue ศ 16 ต.ค. 2020 6:53 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
129
ศ 16 ต.ค. 2020 6:53 pm โดย bolue
วิธีการเชื่อมความสัมพันธ์ข้อมูล one to many บน Laravel Framework
โดย makup ศ 16 ต.ค. 2020 6:40 pm บอร์ด PHP Knowledge
0
153
ศ 16 ต.ค. 2020 6:40 pm โดย makup
Function Validate Laravel Framework
โดย makup ศ 16 ต.ค. 2020 4:22 pm บอร์ด PHP Knowledge
0
144
ศ 16 ต.ค. 2020 4:22 pm โดย makup