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

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

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ต้องการให้ เลือก select tag แล้วแสดงผลลัพธ์ทันที แล้วให้เก็บค่าในตัวแปร php
โดย bankjittapol อ 05 พ.ย. 2019 11:30 am บอร์ด JavaScript & Jquery Ajax
1
51
พ 06 พ.ย. 2019 1:27 pm โดย tsukasaz
หลักในการทำ Infographic
โดย numtan5839 อ 05 พ.ย. 2019 11:25 am บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
1
30
พ 06 พ.ย. 2019 2:24 pm โดย numtan5839
อยากทราบว่าถ้ามีการแจ้งบิลการจ่ายชำระเงินในอีเมล แต่ไม่ได้แจ้งชื่อบริษัท จะหาข้อมูลหรือสืบค้นได้จากที่ไหน
โดย nnamfon.26 อ 05 พ.ย. 2019 11:21 am บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
28
อ 05 พ.ย. 2019 11:21 am โดย nnamfon.26
อ้างอิง Link ใต้รูปภาพ
โดย numtan5839 อ 05 พ.ย. 2019 11:02 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
74
อ 05 พ.ย. 2019 1:42 pm โดย numtan5839
อยากทราบวิธีการที่ที่จะส่งค่าเมนู tools ไปเเสดงบน part way ของ phpbb
โดย Ittichai_chupol อ 05 พ.ย. 2019 10:35 am บอร์ด Programming - PHP
1
50
อ 05 พ.ย. 2019 10:38 am โดย thatsawan
งานประจำวันที่ 5 พฤศจิกายน 2562
โดย numtan5839 อ 05 พ.ย. 2019 10:13 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
1
12
อ 05 พ.ย. 2019 6:04 pm โดย numtan5839
สอบถามการตั้งค่าใบปริ้นปะหน้าซองในระบบERP ให้มีเลขที่สาขาย่อย ต้องทำยังไงคะ
โดย nnamfon.26 อ 05 พ.ย. 2019 10:03 am บอร์ด OpenERP - MD-ERP (Main)
3
11
พฤ 07 พ.ย. 2019 6:35 pm โดย mindphp
เครื่องวัดอุณหภูมิร่างกายสำหรับวัดไข้
โดย LEG อ 05 พ.ย. 2019 9:58 am บอร์ด Share Knowledge
0
24
อ 05 พ.ย. 2019 9:58 am โดย LEG
insert ข้อมูล แบบ array ลงฐานข้อมูล
โดย bankjittapol จ 04 พ.ย. 2019 11:27 pm บอร์ด PHP Knowledge
0
57
จ 04 พ.ย. 2019 11:27 pm โดย bankjittapol
การสร้าง foreign key ใน MySQL ด้วย phpmyadmin สำหรับ ตารางที่เป็น innodb
โดย bankjittapol จ 04 พ.ย. 2019 10:57 pm บอร์ด SQL Knowledge
1
515
อ 05 พ.ย. 2019 3:19 am โดย mindphp
4 กลยุทธ์ที่จะช่วยให้ธุรกิจประสบผลสำเร็จ (4PS)
โดย numtan5839 จ 04 พ.ย. 2019 5:54 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
66
พ 06 พ.ย. 2019 2:33 pm โดย numtan5839
ทำให้ช่องทั้งสองขึ้นเป็นปีให้เลือกได้ทั้
โดย mstsksmstsks จ 04 พ.ย. 2019 5:16 pm บอร์ด HTML CSS
1
81
จ 04 พ.ย. 2019 5:17 pm โดย mstsksmstsks
6 จุดเช็กอินในเชียงใหม่ หน้าหนาวนี้ ต้องไปเยือน
โดย Meygrand จ 04 พ.ย. 2019 4:46 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
32
จ 04 พ.ย. 2019 4:46 pm โดย Meygrand
ทดสอบ
โดย mindphp จ 04 พ.ย. 2019 4:40 pm บอร์ด Programming - PHP
0
90
จ 04 พ.ย. 2019 4:40 pm โดย mindphp
แหล่งท่องเที่ยวในจังหวัดสุพรรณบุรี
โดย numtan5839 จ 04 พ.ย. 2019 4:00 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
83
พ 06 พ.ย. 2019 2:36 pm โดย numtan5839
การสร้างปีภาษีสำหรับการบัญทึกบัญชี
โดย nnamfon.26 จ 04 พ.ย. 2019 3:36 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
34
จ 04 พ.ย. 2019 3:36 pm โดย nnamfon.26
รวมรายการลดหย่อนภาษี ปี 62 แค่วางแผนให้ดี ก็มีเงินเหลือแน่นอน!
โดย promotion จ 04 พ.ย. 2019 3:35 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
42
จ 04 พ.ย. 2019 3:35 pm โดย promotion
อยากทราบวิธีการส่งค่าเมนู ไปแสดงที่ part way ของ phpbb
โดย Ittichai_chupol จ 04 พ.ย. 2019 3:02 pm บอร์ด Programming - PHP
1
50
จ 04 พ.ย. 2019 3:09 pm โดย thatsawan
วิธีการใช้ textwarp เพื่อทำการนำข้อความที่ยาวเกินไปมาขึ้นบรรทัดใหม่
โดย jirawoot จ 04 พ.ย. 2019 2:57 pm บอร์ด Python Knowledge
0
62
จ 04 พ.ย. 2019 2:57 pm โดย jirawoot
ต้องการ เลือก ข้อมูลใน select tag แล้ว block เปลี่ยนตำแหน่งไปตามนั้น
โดย bankjittapol จ 04 พ.ย. 2019 11:51 am บอร์ด JavaScript & Jquery Ajax
1
66
จ 04 พ.ย. 2019 12:02 pm โดย tsukasaz