กับดัก (2) Storypoint และ Velocity

เมื่อวานนี้มีน้อง(สาว?) คนหนึ่งถามผมว่า ที่ผมบอกว่าคนเรานั้นในการทำงานชิ้นเดียวกันถ้าต่างคนทำก็จะใช้เวลาไม่เท่ากัน ถ้าอย่างนั้นในการทำงานเราจะทำอย่างไรเพื่อรักษา velocity ให้คงทีได้ หรือว่าจะต้อง assign งานให้คนที่ทำได้ดี คือชำนาญหรือเก่ง จะได้ใช้เวลาน้อยกว่าให้คนอื่นทำ

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

Velocity เป็น “ผล” ไม่ใช่ “เหตุ”

คือ ในอไจล์ทีมนั้นถ้าทีมไหนมี velocity คงที่ย่อมหมายความว่าทีมนั้นมี maturity สูง คือเป็นทีมที่มีคุณภาพสูงนั่นเอง แต่ในทางกลับกันการจะทำทีมให้มีคุณภาพสูงนั่นไม่ใช่ว่าต้องตั้งเป้าว่าเราจะต้องรักษา velocity เพราะมันไม่ถูก ยกตัวอย่าง velocity นั้นก็คงจะเหมือนกับอุณภูมิหรือความดันเลือด ร่างกายคนที่ปกติมีสุขภาพแข็งแรง จะมีอุณภูมิประมาณ 37 C และความดันประมาณ 120/70 แต่ไม่มีใครที่ต้องการมีสุขภาพดีจะตั้งเป้าหมายว่า ฉันจะต้องมีความดัน 120/70 มันไม่ใช่เป้าหมายแต่เป็น indicator แสดงความผิดปกติมากกว่า กล่าวคือ การรักษา velocity ไม่ใช่เป้าหมายของ Agile แต่ Velocity จะเป็นตัวบอกว่า Agile ทีม มีความผิดปกติเกิดขึ้นหรือไม่ เพื่อให้เราสามารถเข้าไปจัดการแก้ไขได้โดยเร็ว เหมือนกับที่เราวัดความดันหรืออุณภูมิดูว่าเราเป็นไข้หรือไม่สบายหรือไม่นั่นเอง

ถ้าอย่างนั้น Agile team ที่มี maturity สูงสามารถรักษา velocity ได้อย่างไร ในเมื่องานแต่ละชิ้นเมื่อต่างคนทำก็จะใช้เวลาไม่เท่ากัน ตรงนี้เองที่ Agile practices ต่างๆ จะเป็นตัวลดช่องว่างของความต่างเหล่านั้น

1. Fibonacci numbers การ estimate story นั้น story point ที่มีความไม่แน่นอนสูงจึงถูกทำให้แน่นอนขึ้น เพราะเราใช้ตัวเลขที่ไม่แน่นอนในการประมาณนั่นเอง เหมือนแทนที่เราจะพูดว่า ตึกA สูงเป็น 50% ของตึกB ซึ่งถ้า A สูง 10 ชั้น B จะต้องสูง 20 ชั้น เท่านั้น แต่ถ้าเราพูดว่า A สูงประมาณครึ่งหนึ่งของ B; A อาจจะสูงแค่ 8 ชั้น หรือ 12 ชั้นก็ไม่ผิด

2. Self Assigning การเลือก story เพื่อนำไปทำนั้นควรให้ทีมเป็นคนเลือกเอง โดยธรรมชาติแล้วเราจะเลือก story ที่เหมาะสมกับตัวเราและในเรื่องที่เราถนัด ทำให้สามารถทำเสร็จในเวลาที่เหมาะสมได้ ความจริงผมไม่ได้บอกให้ทำแบบนี้ แต่มันจะเกิดขึ้นโดยธรรมชาติ (ที่ถูกต้องแล้วเราควรเลือกเรื่องโดยไม่สนใจว่าเราถนัดหรือไม่ตาม Priority ที่ตกลงกันไว้ แต่ก็อีกนั่นแหละ เราฝึนธรรมชาติไม่ได้หรอก)

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

แต่อย่างที่บอกไปแล้วในตอนแรกว่า velocity เป็นผลไม่ใช่เหตุ เราจะต้องไม่นำมันไปใช้ในการตั้งเป้าหรือวัดผลใดๆ นอกจากใช้เพื่อเป็น indicator สำหรับดูว่าสุขภาพของทีมยังสมบูรณ์ดีหรือไม่เท่านั้น

Advertisements

ใส่ความเห็น

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s