"ทำให้เสร็จนานแค่ไหน?"
"เปลี่ยนอย่างนี้ยากแค่ไหน?"
ถ้าเริ่มโกรธห挫折 คุณอาจเป็น software developer Estimation ปวด โดยเฉพาะตอนคนขอ estimate (เรียกว่า 'Bob') มีแค่ rough idea การปวดมากมาจากความแตกต่างระหว่าง Bob อยากได้ และสิ่งที่คุณคิดว่า Bob อยากได้
Estimates ไม่ใช่ goal
身為 developer ผมคิด estimate คือ "เฉลี่ยแล้วนานแค่ไหน accomplish task?" ผม frustrated เพราะมักไม่มี info พอตอบ และรู้ว่าจะถูก bind กับสิ่งที่พูด สมมติว่า ability hit estimate = indicator overall performance กดดันและโกรธ
มันคือ communication tool
Product ที่ ship มี dependencies ตามมา ขึ้นกับ company size อาจเป็น marketing, publicity, business analysis, future product planning หรืออีกเยอะ Bob ต้องการคำตอบคือ "เมื่อไหร่สามารถสมมติว่าจะเสร็จ เริ่ม plan things ที่ depend บนมัน?"
ผมตอบ "นี่ ควร เสร็จโดย..." แต Bob หา "นี่ จะ เสร็จโดย..."
David Bryant Copeland มีหนังสือ The Senior Software Engineer พูดเรื่องนี้ chapter แรก:
A senior software engineer is trusted and expected to do the most important work and to do it reliably. The way to accomplish that is to focus everything you do on the delivery of results.
คิดถึงนั่น 好去 meet Bob on his terms หมายถึง:
Estimates ควรทำที่ 90% confidence ไม่ใช่ 50%
Bob อยากรู้เมื่อไหร่ plan things ที่ depend งานเสร็จ ถ้าหมายถึง estimate ต้อง pad (น่าจะ) ok ถ้าต้องกลับบอกใน 1-2 ชั่วโมง ok
Estimates ควร based on time-to-ship ไม่ใช่ time-to-test-handoff หรือ time-to-deploy-queue
กลับไป focus on delivery of results Bob รอ project ship ไม่ช่วยอะไรถ้าค้าง QA มัก estimate ต้อง pad อีก ok
Best estimate บ่อยครั้งคือ "ตอบไม่ได้ตอนนี้ แตจะกลับบอก"
ง่ายไปที่ 90%-confidence time-to-ship estimate ถ้าแยกเป็นส่วนเล็กๆ แต่ละส่วนเข้าใจง่าย หนังสือมากพูด tactics accurate estimates แต out of scope
ถ้าบอกว่าไม่พอเร็ว?
ทุกที่ทำงาน บอกว่า management อยากเร็วขึ้น ไม่ว่า products delivered เร็วแค่ไหน แม้ sacrifice quality แม้ estimates insane แม้ work 20 hours/day management ยังอยากเร็วขึ้น งาน developer เห็นว่าแค่ wish และทำงาน keep fast but maintainable pace, predictable, deliver results, keep quality bar สูง
ตอน beat estimates ด้วยจำนวนเพحك และดูเหมือน padded incredibly?
ไม่เคยเห็นคน regularly overestimate ถูกปรับ และจ่ายตัวตอนโปรเจกต์ต่อไปนานกว่าคาด Overestimation ด้วยจำนวนหนึ่ง ดีกว่ามาก underestimation จำนวนเดียวกัน (คิดคล้าย Loss Aversion) มักมี backlog เริ่ม task ถัดไปก่อน ดี!
Target 50% case unexpected complications อาจ demolish entire product schedule ทำบ่อยครึ่ง! Target 90% case แม้แย่ schedule ที่เหลือทำงานได้ product ship on time everyone happy raises promotions และ reward ดีที่สุด: ทำ estimates ใหม่ได้!