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

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

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Tile ผู้ผลิตอุปกรณ์ Tracker สำหรับตามหาสิ่งของหายสามารถสั่งการได้ด้วย Google Assistant
โดย jamepiyawat อ 10 ก.ย. 2019 5:10 pm บอร์ด Share Knowledge
0
69
อ 10 ก.ย. 2019 5:10 pm โดย jamepiyawat
E-Bidding คืออะไร
โดย EyePornnipa อ 10 ก.ย. 2019 4:19 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
74
อ 10 ก.ย. 2019 4:19 pm โดย EyePornnipa
จากฟังก์ชันเรียกใช้รูปภาพ ใช้งานอย่างไรครับ
โดย Patipat อ 10 ก.ย. 2019 3:37 pm บอร์ด Joomla Development
2
72
อ 10 ก.ย. 2019 4:06 pm โดย Patipat
เรียกใช้ อาเรย์ forech อย่างไรครับ
โดย Patipat อ 10 ก.ย. 2019 11:53 am บอร์ด Joomla Development
4
111
อ 10 ก.ย. 2019 3:14 pm โดย Patipat
ฟีเจอร์ Ambient Mode ฟีเจอร์ใหม่ของ Google Assistant ที่จะเปลี่ยนมือถือ-แท็บเล็ตให้เป็นหน้าจออัจฉริยะ
โดย jamepiyawat จ 09 ก.ย. 2019 6:48 pm บอร์ด Share Knowledge
0
69
จ 09 ก.ย. 2019 6:48 pm โดย jamepiyawat
อยากทราบวิธีการ เคลียแคช bbocode
โดย Ittichai_chupol จ 09 ก.ย. 2019 5:54 pm บอร์ด Programming - PHP
4
115
จ 09 ก.ย. 2019 6:10 pm โดย Ittichai_chupol
อากทราบวิธีการเปิด Activate ผู้ใช้งาน ใน phpbb
โดย Ittichai_chupol จ 09 ก.ย. 2019 5:42 pm บอร์ด Programming - PHP
0
60
จ 09 ก.ย. 2019 5:42 pm โดย Ittichai_chupol
ต้องการปิดส่วนรายละเอียดของเนื้อหา บนเว็บไซต์ต้องทำยังไงค่ะ
โดย thatsawan จ 09 ก.ย. 2019 4:05 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
2
72
จ 09 ก.ย. 2019 4:13 pm โดย mindphp
insert ข้อมูลลงดาต้าเบสไม่ได้
โดย Anonymous อ 08 ก.ย. 2019 1:43 pm บอร์ด Programming - PHP
0
90
อ 08 ก.ย. 2019 1:43 pm โดย บุคคลทั่วไป
ทำความรู้จักกับ SDL Trados Studio
โดย MiyukiEamrucksa ส 07 ก.ย. 2019 5:47 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
83
ส 07 ก.ย. 2019 5:47 pm โดย MiyukiEamrucksa
อยากทราบวิธีเรียกใช้ค่าของ Array ครับ
โดย Patipat ส 07 ก.ย. 2019 5:25 pm บอร์ด Joomla Development
1
73
ส 07 ก.ย. 2019 5:33 pm โดย thatsawan
Q - ฟังก์ชันสร้าง แคชไม่ได้ครับ
โดย Patipat ส 07 ก.ย. 2019 4:09 pm บอร์ด Joomla Development
2
79
อ 10 ก.ย. 2019 11:44 am โดย Patipat
Q - ทำไม css ใช้งานไม่ได้ path ถูกไหมครับ
โดย Patipat ส 07 ก.ย. 2019 2:12 pm บอร์ด Joomla Development
3
121
ส 07 ก.ย. 2019 2:52 pm โดย Patipat
คุณสมบัติของนักแปล
โดย MiyukiEamrucksa ส 07 ก.ย. 2019 12:03 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
84
ส 07 ก.ย. 2019 12:03 pm โดย MiyukiEamrucksa
รวมข้อมูลของ แจ็ค หม่า ผู้ก่อตั้งกลุ่มอาลีบาบา ที่คุณอาจไม่เคยรู้มาก่อน ฺBy Drivemate
โดย nemo413 ส 07 ก.ย. 2019 8:09 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
77
ส 07 ก.ย. 2019 4:53 pm โดย nemo413
แจกโค้ดหน้าเว็บด้วย HTML และ css
โดย jamepiyawat ศ 06 ก.ย. 2019 6:44 pm บอร์ด CSS Knowledge
0
119
ศ 06 ก.ย. 2019 6:44 pm โดย jamepiyawat
Microsoft เอาอีกแล้ว ซื้อกิจการ Movere เสริมความแข็งแกร่งให้ Azure Migrate
โดย chatee supasand ศ 06 ก.ย. 2019 6:32 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
49
ศ 06 ก.ย. 2019 6:32 pm โดย chatee supasand
สร้างหน้าเว็บด้วย HTML และ css
โดย jamepiyawat ศ 06 ก.ย. 2019 6:02 pm บอร์ด CSS Knowledge
0
57
ศ 06 ก.ย. 2019 6:02 pm โดย jamepiyawat
Google Assistant สามารถสั่งพิมพ์ข้อความผ่านหน้าจอ Lock Screen ได้ โดยไม่ต้องปลดล็อคเครื่อง
โดย jamepiyawat ศ 06 ก.ย. 2019 5:21 pm บอร์ด Share Knowledge
0
53
ศ 06 ก.ย. 2019 5:21 pm โดย jamepiyawat
wireframe คืออะไร
โดย aninthana ศ 06 ก.ย. 2019 4:36 pm บอร์ด Web Hosting Review - Free Host Share Host VPS
0
48
ศ 06 ก.ย. 2019 4:36 pm โดย aninthana