จากบทความเรื่อง The SPACE of Developer Productivity
โดยอธิบายถึง Productivity ของนักพัฒนา และ ทีม
ซึ่งมีความซับซ้อนอย่างมาก
การจับวัดเพียงมุมใดมุมหนึ่ง คงไม่ใช่เรื่องที่ถูกต้อง
ดังนั้นจึงแนะนำแนวทางไว้ดังนี้

ก่อนอื่นต้องทำให้ชัดเจนก่อนว่า คืออะไร
มีการวัดอย่างไร
ทั้งบริษัท ทีม manager และ ตัวบุคคล
ซึ่งล้วนส่งผลต่อการส่งมอบ software
ด้านคุณภาพ และ ประสิทธิภาพ

ในการวัดผลนั้นได้นำข้อมูลในหลาย ๆ มุมมอง หรือ หลาย ๆ มิติ
โดยถูกสร้างมาเป็น framework ชื่อว่า SPACE

โดยคำว่า SPACE เป็นคำย่อ ประกอบไปด้วย

  • Satisfaction and well-being
  • Performance
  • Activity
  • Communication and Collaboration
  • Efficiency and Flow

มาดูรายละเอียดคร่าว ๆ ของแต่ละเครื่อง

Satisfaction and well-being

ว่าด้วยเรื่องความพึงพอใจของนักพัฒนา
ที่มีต่องาน ต่อทีม ต่อเครื่องมือ ต่อวัฒนธรรมขององค์กร
เรื่องของสุขภาพที่ดี แข็งแรง
เรื่องของงานที่ทำว่ามี impact อย่างไร

โดยทั้งสองเรื่องมีส่วนเกี่ยวข้องกับ productivity อย่างมาก

Performance

เรื่องของประสิทธิภาพมันคือ ผลลัพธ์ที่ออกมาจากขั้นตอนการทำงาน
ซึ่งยากมากต่อการวัดผล
เพราะว่า คนที่ทำเยอะ ใช่ว่าจะ performance ดี ถ้าไร้ซึ่งคุณภาพ
หรือคนทำน้อยก็ใช่ว่า performance จะไม่ดี
หรือทำไปอย่างดี แต่ผลที่รับคือ ผู้ใช้งานไม่ชอบ
แบบนี้ก็ไม่ดีต่อ business อีก
ดังนั้นดูตัดสินใจว่า จะดู performance ในมุมไหนบ้าง

ยกตัวอย่างเช่น

  • ด้านคุณภาพ ให้ดูเรื่องความเสถียรของระบบ จำนวน bug
  • ด้านสิ่งที่ทำมี impact อย่างไร ให้ดูที่ความพึงพอใจของลูกค้า การใช้งานของลูกค้า จำนวนการใช้งาน และ ช่วยลดค่าใช้จ่ายไปเท่าไร

Activity

ใช้วัดการทำงานต่าง ๆ ที่ออกมาจากนักพัฒนา
แต่ก็ไม่ง่าย
เพราะว่าว่าทำเยอะใช่ว่าจะดีเสมอไปอีกแล้ว
ดังนั้นก็จะมอง Activity ที่เกิดขึ้นในหลาย ๆ มิติ เช่น

  • มุมมองของการออกแบบระบบ เช่น เอกสาร spec ต่าง ๆ
  • มุมมองของการพัฒนาระบบ เช่น การ commit การเปิด PR และการทำ Code review เป็นต้น
  • มุมมองเรื่องของ CI/CD เช่น จำนวนการ build, test, deploy และการใช้งาน infrastructure ต่าง ๆ
  • มุมมองทางด้าน operation เช่นจำนวน incident/issue ต่าง ๆ ในแต่ละรอบการ deploy, หรือระดับความรุนแรงของปัญหาต่าง ๆ

Communication and Collaboration

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

ถ้าต่างทีมต่างทำ
ถ้าต่างทีมต่างมีแผนงานที่แตกต่างกัน
แต่ละคนหรือแต่ละทีมบอกว่าเสร็จแล้ว
แต่ยังไม่เคยเอามารวมกัน หรือ integrate กัน
แบบนี้ก็น่ากลัวมาก ๆ

การทำงานร่วมกัน แผนงานควรเป้นเป้นงานเดียวกัน
มีความโปร่งใสต่อกัน
เห็นว่า process การทำงานปัจจุบันเป็นอย่างไร

ตัวอย่างที่ใช้วัดในส่วนนี้ก็ไม่ว่ายเลย ยกตัวอย่างเช่น

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

Efficiency and Flow

เป็นการวัด หรือ ดูว่า ในการทำงานนั้น
มีสิ่งที่เข้ามารบกวน หรือ ทำให้เกิดความล้าช้าอะไรบ้าง
ตั้งแต่เริ่มต้น จนถึง สิ้นสุด หรือ ส่งมอบระบบงาน

เพราะมักพบว่า ยิ่งงานมีความซับซ้อนมากเท่าไร
สิ่งรบกวน หรือ สิ่งที่ทำให้ล่าช้า จะเยอะมาก ๆ
หรืออาจจะต้องรอยาวนานไปอีก (waste)

ดังนั้นจึงมีตัวอย่างของการวัดในส่วนนี้ ดังนี้

  • จำนวนขั้นตอนในการรับงานหนึ่งว่าเป็นอย่างไร ยิ่งเยอะ และเป็น manual ยิ่งไม่ดีใช่ไหม
  • จำนวนของสิ่งรบกวนเป็นอย่างไร ใช้เวลาเท่าไร และส่งผลต่อการพัฒนาหรือส่งมอบระบบงานอย่างไร
  • ทำการ tracking เวลาต่าง ๆ ไว้ให้ครบ หรือเยอะที่สุด เช่น เวลาทำงานหนึ่ง ๆ เวลาที่เพิ่มเข้ามา เวลาในการรอ เป็นต้น

ยกตัวอย่างของ Metric

เป็นอีกหนึ่ง framework ที่น่าสนใจ
และลองนำไปประยุกต์ใช้งานกันดูครับ