Screen Shot 2557-11-26 at 10.56.24 AM
ทาง Rebel Lab ทำการศึกษาและสรุปผล เรื่อง The State of Developer Productivity
ไว้อย่างน่าสนใจ ซึ่งในการศึกษาจะใช้แนวปฏิบัติต่างๆ จาก Extreme Programming เข้ามาใช้
เพื่อดูว่าส่งผลต่อเรื่อง predictivity และ quality ของการพัฒนา software อย่างไร
มาดูกันเลยดีกว่า

ในการวัด performance ของ developer นั้น
เป็นเรื่องที่ยาก ว่าจะใช้ metric อะไรใช้
ดังนั้นทาง Rebel Lab จึงได้ทำการศึกษา
โดยนำแนวปฏิบัติจาก Extreme Programming
รวมทั้งเครื่องมือต่างๆ มาใช้ในทุกๆ วัน
สามารถสรุปผลที่น่าสนใจได้ดังนี้

แนวปฏิบัติที่นำมาใช้ในการวัดผลประกอบไปด้วย

  • ให้ความใส่ใจในเรื่อง Technical Debt
  • ทำการใส่ใจ และ แก้ไขเรื่อง quality issue ต่างๆ
  • Automated testing
  • Pair programming
  • Review code

แน่นอนว่าแนวปฏิบัติเหล่านี้ล้วนช่วยทำให้คุณภาพของ softwareท ที่พัฒนาขึ้นมาดีขึ้น
แต่ว่าต้องมีค่าใช้จ่ายทั้งเงิน และ เวลาอย่างไรล่ะ ?
ดังนั้น เรื่องนี้จึงเป็นโจทย์ที่สำคัญของการศึกษาครั้งนี้

1. จัดการกับ Technical Debt กันอยู่อย่างสม่ำเสมอ

สามารถอ่านเรื่อง Technical Debt ได้
โดย Technical debt มันจะส่งผลต่องานที่เราทำโดยตรง
แต่ในบางครั้ง หรือ หลายๆ ครั้งเรามักไม่ใส่ใจ
สร้างมันขึ้นมาเรื่อยๆ จนสุดท้ายมันเป็นส่งผลงานที่จะทำต่อๆ ไปได้

จากการศึกษาพบว่า
ถ้าทำการค้นหาและตรวจสอบ Technical debt อยู่อย่างสม่ำเสมอ
และทำการแก้ไขไปตลอดเวลา จะพบว่าจำนวน และ ขนาดของ Technical debt จะเล็กน้อยมาก
แต่ผลที่ได้คือ code ของ software จะค่อยๆ ดีขึ้นอย่างต่อเนื่อง
รวมทั้งจำนวนงานที่พัฒนาก็จะสูงขึ้นด้วย

แสดงดังรูป
Screen Shot 2557-11-26 at 10.03.28 AM

2. ทำการตรวจสอบ และ แก้ไขพวก Quality issue ต่างๆ

นำเครื่องมือต่างๆ เข้ามาช่วยในการตรวจสอบ หรือ ระบุปัญหาให้ทีมรู้
ว่า code ส่วนไหนที่มันมีปัญหาเรื่อง Quality issue
ทำให้สามารถแก้ไขปัญหาได้อย่างรวดเร็ว

จากการศึกษาพบว่า
ถ้าทำการแก้ไขพวก Quality issue ต่างๆ อยู่อย่างเสมอ
จะเป็นการปรับปรุงในเรื่องคุณภาพ และ จำนวนงานที่ทำได้ให้ดีขึ้น
เนื่องจากมันทำให้ทีมพัฒนารู้ว่า โครงสร้างของระบบมันมีปัญหาอะไรบ้าง
ทำให้แก้ไขได้ทันที ไม่ต้องรอ

แสดงดังรูป
Screen Shot 2557-11-26 at 10.09.35 AM

3. Automated Testing

เรื่องนี้ว่าด้วย feedback ที่รวดเร็ว เพื่อให้รู้ว่าสิ่งที่ทำไปนั้น
มันถูกต้อง และ ส่งผลกระทบกับส่วนอื่นๆ หรือไม่

จากการศึกษาพบว่า
ถ้าใช้ Automated testing 100% นั้นจะส่งผลต่อคุณภาพ และ productivity ของทีมพัฒนาอย่างมาก
ซึ่งจากผลการศึกษา พบว่า Automated testing นั้นส่งผลมากที่สุดสำหรับการพัฒนา
ดังนั้น ถ้าทีมพัฒนาใดไม่มีหรือยังไม่ได้ทำ แนะนำว่าให้เริ่มทำได้ตั้งแต่วันนี้

จากรูปข้างล่าง จะเก็นได้ว่าถ้าทำ Automated testing ครอบคลุมประมาณ 0-10% นั้นจะพบว่า
คุณภาพของระบบจะตกลงไป นั่นหมายถึง เราเชื่อมั่นในการทดสอบมากเกินไป
ทั้งๆ ที่ครอบคลุมเพียง 0-10% ดังนั้น การแก้ไขคือ เพิ่มจำนวนการทดสอบให้ครอบคลุมมากขึ้นครับ

แสดงผลดังรูป
Screen Shot 2557-11-26 at 10.11.50 AM

4. Pair programming

แน่นอนว่าการทำงานมากกว่า 1 คน นั้นมันช่วยทำให้มีการ review code เกิดขึ้นอย่างอัตโนมัติ
ซึ่งมันส่งผลต่อเรื่องคุณภาพด้วยเช่นกัน

จากการศึกษาพบว่า
ถ้าทำการ pair programming บ่อยๆ ก็จะยิ่งดีนะครับ
ดังนั้น มาทำ pair programming กัน

แสดงผลดังรูป
Screen Shot 2557-11-26 at 10.23.18 AM

5. Code Review

จากการศึกษาพบว่า
การทำ code review เป็นประจำ หรือ ในทุกๆ commit นั้น ช่วยให้เราทำนายอนาคตได้ดีขึ้น
เช่น เรื่องการดูว่าการออกแบบนั้นมันดีไหม เหมาะสมไหม

แต่ส่งผลต่อเรื่องคุณภาพน้อยมาก
เนื่องจาก การทำ code review นั้นมันเน้นไปที่
การช่วย developer หาปัญหาหลักจากการออกแบบ
เพื่อที่จะทำการแก้ไข ให้ดีขึ้น
แต่ไม่ได้ช่วยหาปัญหาเล็กๆ เช่น bug เป็นต้น
ทำให้ส่งผลต่อคุณภาพไม่เยอะเท่าไร

แสดงผลดังรูป
Screen Shot 2557-11-26 at 10.23.45 AM

จากผลการศึกษาพบว่า

เรื่องของ Automated testing นั้นสำคัญมากต่อการพัฒนา software
เนื่องจากมันช่วยปรับปรุงทั้งเรื่องของคุณภาพและ productivity ของทีมพัฒนาให้สูงขึ้น
รวมทั้งเรื่องของการจัดการ Technical Debt และ Qulity issue อยู่อย่างเสมอก็สำคัญมากเช่นเดียวกัน

ส่วนเรื่องของการทำ pair programming และ code review นั้นจะทำให้เราเข้าใจสิ่งที่กำลังพัฒนาสูงขึ้น

ดังนั้น วันนี้ทีมพัฒนาของคุณทำอะไรบ้างใน 5 เรื่องนี้
ถ้ายังขาด ต้องเริ่มกันได้แล้วนะครับ