เมื่อวานนี้มีน้อง(สาว?) คนหนึ่งถามผมว่า ที่ผมบอกว่าคนเรานั้นในการทำงานชิ้นเดียวกันถ้าต่างคนทำก็จะใช้เวลาไม่เท่ากัน ถ้าอย่างนั้นในการทำงานเราจะทำอย่างไรเพื่อรักษา 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 สำหรับดูว่าสุขภาพของทีมยังสมบูรณ์ดีหรือไม่เท่านั้น