การ estimate หรือการประเมินเวลาในการทำงานหนึ่งๆ นั้นมันยากมาก
ไม่ใช่เพียงโลกการพัฒนา software เท่านั้น
หลายคนบอกว่า developer เป็นสิ่งมีชีวิตที่ estimate ได้ห่วยแตกมากๆ
ดังนั้น ลองมาหาสาเหตุกันดีกว่า เพื่อที่จะทำการแก้ไขต่อไป
ใคร estimate ได้ดีก็ข้ามไปนะครับ
ตัวอย่างในชีวิตที่ผมเคยเจอ
เช่น โดนสั่งให้ไปทำความสะอาดห้อง
ผมก็บอกไปเลยว่า ไม่เกิน 15 นาที ทั้งๆ ที่ไม่เคยทำเลย
สุดท้ายใช้เวลาทำความสะอาดห้องไปหลายชั่วโมง
เมื่อกลับมามองในโลกการพัฒนา software คุณคิดว่าจะ estimate ได้ถูกต้องกันหรือ ?
เพราะว่า ในชีวิตคุณยังไม่สามารถ estimate ได้ถูกต้องเลย
มาดูกันดีกว่า ว่าเหตุผลที่ทำให้ developer ทำการ estimate ได้แย่มาจากอะไรบ้าง
1. ไม่รู้ว่าตัวเองไม่รู้
ในการพัฒนา software มีสิ่งที่เราไม่รู้เยอะมาก
บางอย่างที่เรารู้ว่าไม่รู้ ก็ไม่รู้ว่าจะจัดการหรือลงมือทำอย่างไร
ตัวอย่างเช่น
เมื่อเริ่มต้นพัฒนาระบบงาน
เราต้องการจัดเก็บข้อมูลลงในฐานข้อมูล
แต่เราไม่รู้ว่าจะทำอย่างไร
นี่คือ เรารู้ว่าเราไม่รู้อะไร
และเชื่อเถอะว่า เราไม่รู้ไปหมดทุกสิ่งทุกอย่างหรอก
ดังนั้น เราจำเป็นต้องรู้สิ่งที่เราไม่รู้ให้ได้เร็วที่สุด ด้วยการลงมือทำ
การ estimate ในสิ่งที่เรารู้ว่าเราไม่รู้ นั้น เป็นเรื่องที่ยากมากๆ
แต่เราก็สามารถทำได้ด้วยการเปรียบเทียบกับบางสิ่งบางอย่างที่ใกล้เคียง
หรือเคยเกิดขึ้นมาแล้ว
แล้วสิ่งที่เราไม่รู้ว่าเราไม่รู้ล่ะ เราจะ estimate มันอย่างไร ?
มันไม่มีวิธีการดีๆ หรอกนะ
แต่สิ่งที่ดีกว่า คือ การรู้ในสิ่งที่ไม่รู้ให้ได้อย่างรวดเร็ว
หรือ ทำการแก้ไขให้ได้อย่างรวดเร็ว ด้วยการลงมือทำ
2. ความยาวของช่วงเวลา
ในการ estimate ในการพัฒนา software นั้น
มักจะทำการ estimate แบบยาวๆ ไปทั้ง project มันเลย
ซึ่งนั่นคือปัญหา ที่น่ากลัวมากๆ
เพียงงานเล็กๆ ในช่วงสั้นๆ ยังไม่สามารถ estimate ได้ถูกต้อง
แล้วการ estimate เป็นครึ่งปี เป็นปี จะได้เรื่องหรือ ?
ยิ่งช่วงเวลายาวนาน การ estimate ให้ถูกต้องก็เป็นเรื่องยากมากเท่านั้น
ดังนั้น การ estimate ควรทำบ่อยๆ และมองให้ใกล้ๆ เข้าไว้
แต่ภาพรวมของระบบต้องรู้และเข้าใจนะครับ
และเวลาในการทำ estimate นั้นไม่ควรเกิน 2 ชั่วโมง
เพราะว่า ถ้าเกินไปแล้ว มักจะออกทะเล หรือ น่าเบื่อล่ะ
ไม่เชื่อก็ลองดูสิ หรือ ว่าคุณน่าจะทำอยู่ หรือ เป็นอยู่ หรือ รู้สึกอยู่ก็เป็นได้
3. มีความเชื่อมั่นมากเกินไป
สำหรับ developer มักจะมีความเชื่อว่า
สามารถ estimate ในสิ่งที่จะทำได้อย่างถูกต้อง
ยิ่งเป็นสิ่งที่มีความเชื่อมั่นมากๆ หรือ อยู่กับมันมานานๆ
และมักจะ estimate ออกไปแบบไปดูไร้เหตุผลในสายตาคนอื่น
ตัวอย่างเช่น
คำถาม จากหัวหน้า
feature นี้ต้องใช้เวลาในการพัฒนาเท่าไร ?
คำตอบ จาก developer
เฮ้ย feature นี้มันง่ายนะ ใช้เวลาไม่กี่ชั่วโมงหรอกนะ พรุ่งนี้เช้าก็เสร็จล่ะคำถาม จากหัวหน้า
เสร็จจริงๆ หรอ ทำการทดสอบแล้วใช่ไหม ไม่มีปัญหาอะไรตามมาแน่นะ ?
คำตอบ จาก developer
ชิวๆ มันง่าย ไม่มีปัญหาแน่นอน แค่เอาปุ่มตรงนี้ออก และหลังบ้านก็แก้ไขนิดเดียวเอง
แต่เมื่อ developer ลงมือทำงานจริงๆ
เรามักจะพบว่า มันไม่ได้ง่ายแบบที่เราพูด แบบที่เราคิด
เนื่องจากคุณลืมพิจารณาในบางสิ่งบางอย่างไป
นั่นคือ “ปัญหา”
และจากเหตุการณ์ แบบนี้ มักทำให้มันเกิดโรคเลื่อน กว่าจะส่งมอบงานได้
จากชั่วโมงเป็นวัน
จากวันเป็นหลายวัน
จากหลายวันเป็นสัปดาห์
จากสัปดาห์เป็นหลายสัปดาห์
จากหลายสัปดาห์เป็นเดือน
จากเดือนเป็นปี
ฟังดูแล้ว มันอาจจะดู over ไปนะ
แต่เชื่อว่า การเชื่อมั่นมากเกินไป มันคือปัญหาในการพัฒนา software
ยิ่งในเรื่องการ estimate แล้ว ยิ่งเป็นปัญหามากๆ
4. ขาดความเชื่อมั่น หรือ กลัวจนเกินไป
ความกลัวทำให้ เรา estimate ที่มัน over มากๆ
บางครั้งที่เราคิดว่ามันง่าย แต่ก็มักจะเผื่อเวลาไว้เสมอ
มันอาจจะมีเรื่องราว หรือ เหตุการณ์ อะไรเฉพาะทาง
ที่ทำให้คุณรู้สึกไม่มั่นใจ ด้วยการเผื่อเวลาไว้ดีกว่า
แต่ธรรมชาติของคนเรานั้น
มักจะมองว่า สิ่งที่ไม่เคยทำสำเร็จมาก่อน เป็นสิ่งที่ยาก
มักจะมองว่า สิ่งที่เคยทำสำเร็จมาก่อน เป็นสิ่งที่ง่าย
ดังนั้น ความกลัวเป็นเรื่องปกติของมนุษย์เรา สำหรับของใหม่ๆ หรือสิ่งที่ไม่รู้
สุดท้ายแล้ว
แล้วยังมีอะไรอีก ที่ทำให้เรา estimate เวลาในการพัฒนา software ได้แย่ ?
แล้วเราจะใช้วิธีการใด มาแก้ไข หรือ ช่วยทำให้การ estimate ดีขึ้น นะ ?
เช่น
- estimate งานบ่อยๆ ในช่วงสั้นๆ
- ทำในสิ่งที่ไม่รู้ก่อน เพื่อทำให้รู้
หรือว่า …