การประมาณการ คือการประเมินเชิงปริมาณของความพยายามที่จำเป็นในการทำงานให้สำเร็จ พัฒนาฟีเจอร์ หรือส่งมอบโปรเจกต์โดยรวม ในการพัฒนาแอปมือถือ การประมาณการถูกใช้เพื่อการวางแผนสปรินต์ การกำหนดต้นทุน และการจัดการความคาดหวังของลูกค้า ตามข้อมูลของ Project Management Institute, 2024 ความคลาดเคลื่อนของการประมาณการในระยะแรกของโปรเจกต์อาจสูงถึง 100% ทำให้การประมาณการเป็นหนึ่งในศาสตร์ที่ยากที่สุดในการพัฒนา
ประเด็นสำคัญ
การประมาณการ (จากภาษาอังกฤษ estimate — การประเมิน) คือการคาดการณ์ปริมาณเวลาหรือความพยายามที่จำเป็นในการทำงานให้สำเร็จ ในการพัฒนาแอปมือถือ การประมาณการสามารถแสดงเป็นชั่วโมง วัน สตอรีพอยต์ หรือในรูปของเงินตรา วัตถุประสงค์ของการประมาณการไม่ใช่การคาดการณ์ที่แม่นยำ แต่เป็นการลดความไม่แน่นอนสำหรับการตัดสินใจ
การประมาณการ คือการคาดการณ์ที่มีความคลาดเคลื่อน คำมั่นสัญญา คือคำสัญญาที่จะทำงานให้เสร็จภายในวันที่กำหนด ความแตกต่างนั้นสำคัญ: การประมาณการบอกว่า "อาจจะ 5 วัน" คำมั่นสัญญาบอกว่า "เราจะทำให้เสร็จใน 5 วัน" ผู้จัดการมักจะสับสนแนวคิดทั้งสองนี้ เปลี่ยนการประมาณการให้กลายเป็นเส้นตายที่ไม่มีพื้นที่สำหรับความผิดพลาด
กระบวนการการประมาณการนั้นสำคัญไม่น้อยไปกว่าผลลัพธ์ของมัน เมื่อทีมพูดคุยเกี่ยวกับการประมาณการของงาน ความต้องการที่ซ่อนอยู่ การพึ่งพา และความเสี่ยงจะถูกเปิดเผย แม้ว่าตัวเลขสุดท้ายจะไม่แม่นยำ แต่การสนทนาทำให้ผู้เข้าร่วมทุกคนเข้าใจงาน นั่นคือเหตุผลที่วิธีการประมาณการแบบรวมหมู่ (Planning Poker) มีประสิทธิภาพมากกว่าวิธีการแบบเดี่ยว
มีวิธีการประมาณการหลายวิธี แต่ละวิธีเหมาะสมกับระยะของโปรเจกต์และระดับรายละเอียดที่แตกต่างกัน การเลือกวิธีขึ้นอยู่กับข้อมูลที่มีอยู่และความแม่นยำที่ต้องการ
| วิธีการ | ประเภท | ความแม่นยำ | เมื่อใดควรใช้ |
|---|---|---|---|
| Planning Poker | ผู้เชี่ยวชาญ, รวมหมู่ | สูง (ในสปรินต์) | การประมาณงานสำหรับสปรินต์ |
| T-Shirt sizing | ผู้เชี่ยวชาญ, รวดเร็ว | ปานกลาง | การประมาณ Epic เบื้องต้น |
| การประมาณแบบเปรียบเทียบ | อิงประวัติ | ปานกลาง | งานที่คล้ายกันในอดีต |
| สามจุด (PERT) | เชิงความน่าจะเป็น | สูงกว่าปานกลาง | งานที่มีความไม่แน่นอนสูง |
| พารามิเตอร์ | อิงสูตร | ขึ้นอยู่กับข้อมูล | งานที่วัดได้และทำซ้ำได้ |
Planning Poker เป็นวิธีการประมาณการที่ได้รับความนิยมมากที่สุดใน Agile นักพัฒนาแต่ละคนได้รับสำรับไพ่ที่มีหมายเลขฟีโบนัชชี (1, 2, 3, 5, 8, 13, 21) หลังจากพูดคุยเกี่ยวกับงานแล้ว ทุกคนจะเปิดไพ่พร้อมกัน หากการประมาณการแตกต่างกัน นักพัฒนาที่มีค่าประมาณต่ำสุดและสูงสุดจะอธิบายเหตุผลของตน จากนั้นจึงลงคะแนนใหม่ วิธีนี้จะขจัดอคติจากอำนาจและให้การประมาณการที่แม่นยำยิ่งขึ้น
T-Shirt sizing คือการประมาณการคร่าวๆ ตามขนาดเสื้อยืด: XS, S, M, L, XL, XXL วิธีนี้ใช้สำหรับการประมาณการงานขนาดใหญ่ (Epic) อย่างรวดเร็วในระยะแรกเมื่อยังไม่ทราบรายละเอียด ต่อมา งานแต่ละชิ้นจะถูกแยกย่อยและประมาณการใน Planning Poker T-Shirt sizing ใช้เวลา 5-10 นาทีต่องาน แต่ให้เพียงลำดับของขนาดเท่านั้น
PERT ใช้การประมาณการสามค่า: มองโลกในแง่ดี (O), มองโลกในแง่ร้าย (P), และเป็นไปได้มากที่สุด (M) การประมาณการสุดท้ายคำนวณโดยสูตร: (O + 4M + P) / 6 วิธีนี้คำนึงถึงความไม่แน่นอนและให้ผลลัพธ์ที่สมจริงยิ่งกว่าการประมาณการค่าเดียว PERT มีประโยชน์อย่างยิ่งสำหรับงานที่มีความเสี่ยงสูงหรือเทคโนโลยีใหม่
ความแม่นยำของการประมาณการ ขึ้นอยู่กับระยะของโปรเจกต์และปริมาณข้อมูลที่ทราบ ยิ่งประมาณการเร็วเท่าใด ความคลาดเคลื่อนก็ยิ่งมากขึ้นเท่านั้น — ซึ่งเป็นเรื่องปกติและควรนำมาพิจารณาในการวางแผน
กรวยแห่งความไม่แน่นอน (Cone of Uncertainty) เป็นแบบจำลองที่อธิบายว่าความคลาดเคลื่อนของการประมาณการลดลงอย่างไรเมื่อโปรเจกต์ดำเนินไป ในระยะแนวคิด ความคลาดเคลื่อนอยู่ที่ 400% (งานอาจใช้เวลา 1 ถึง 4 เดือน) เมื่อถึงระยะสปรินต์ จะอยู่ที่ 20% (1-1.2 เดือน) การเข้าใจแบบจำลองนี้ช่วยให้ไม่เรียกร้องการประมาณการที่แม่นยำในระยะแรก
การประมาณการแบบสัมพัทธ์ (ในสตอรีพอยต์) แม่นยำกว่าการประมาณการแบบสัมบูรณ์ (ในชั่วโมง) เพราะมนุษย์เปรียบเทียบงานได้ดีกว่าการประมาณเวลา "งานนี้ซับซ้อนเป็นสองเท่าของงานนั้น" เป็นการตัดสินที่เชื่อถือได้มากกว่า "งานนี้จะใช้เวลา 8 ชั่วโมง" การประมาณการแบบสัมพัทธ์ไม่ขึ้นอยู่กับนักพัฒนาเฉพาะคน และคงความแม่นยำไว้เมื่อผู้ปฏิบัติงานเปลี่ยน
ความแม่นยำของการประมาณการสามารถปรับปรุงได้ด้วยแนวทางที่เป็นระบบ การอภิปรายร่วมกัน และการวิเคราะห์ข้อผิดพลาดในอดีต มีแนวปฏิบัติที่พิสูจน์แล้วหลายประการ
งานใดๆ ที่ประมาณการเกิน 2 วัน ควรถูกแยกย่อยเป็นงานย่อย หลักการ: หากไม่สามารถประมาณการงานด้วยความแม่นยำมากกว่า 50% แสดงว่างานนั้นใหญ่เกินไป แบ่งมันเป็นขั้นตอน ซึ่งแต่ละขั้นตอนเข้าใจได้และประมาณการได้ หลังการแยกย่อย การประมาณการรวมมักจะมากกว่าการประมาณการเริ่มต้น 1.5-2 เท่า
เก็บประวัติการประมาณการและเปรียบเทียบกับความพยายามจริง ตัวอย่าง: "งานที่ประมาณการไว้ที่ 3 สตอรีพอยต์ โดยเฉลี่ยแล้วใช้เวลา 4 วัน ไม่ใช่ 2 วัน" ใช้ velocity ของทีมในการคาดการณ์: หากทีมทำ 20 สตอรีพอยต์ต่อสปรินต์ อย่าวางแผน 30 การวิเคราะห์ความแม่นยำของการประมาณการในอดีตคือการฝึกฝนทักษะการประมาณการที่ดีที่สุด
การยึดติด เป็นผลทางจิตวิทยาที่การประมาณการครั้งแรกที่พูดออกมามีอิทธิพลต่อผู้เข้าร่วมทั้งหมด เพื่อหลีกเลี่ยงการยึดติดใน Planning Poker ทุกคนควรเปิดไพ่พร้อมกัน ไม่ใช่ทีละคน การปรับเทียบ คือการเปรียบเทียบการประมาณการกับผลลัพธ์จริงอย่างสม่ำเสมอ: หลังจาก 10-20 สปรินต์ ทีมจะเรียนรู้ที่จะประมาณการได้แม่นยำยิ่งขึ้นผ่านผลตอบรับ
ทุกงานมีความเสี่ยงแฝง: การเจ็บป่วยของนักพัฒนา ปัญหากับ API การเปลี่ยนแปลงความต้องการ เพิ่มปัจจัยปรับตามความเสี่ยงในการประมาณการของคุณ: สำหรับงานที่มีความเสี่ยงสูง ใช้ตัวคูณ 1.5-2; สำหรับความเสี่ยงต่ำ 1.1-1.2 แสดงให้ลูกค้าเห็นอย่างโปร่งใสว่าความเสี่ยงใดถูกนำมาพิจารณาและส่งผลต่อกำหนดการอย่างไร
ข้อผิดพลาดในการประมาณการเกิดขึ้นซ้ำแล้วซ้ำเล่าในทีมส่วนใหญ่ ไม่ว่าทีมจะเติบโตแค่ไหน การรู้ข้อผิดพลาดเหล่านี้คือก้าวแรกในการแก้ไข
ข้อผิดพลาดที่พบบ่อยที่สุด คือการประมาณการตามสถานการณ์ที่ดีที่สุด: "ถ้าทุกอย่างสมบูรณ์แบบ เราจะทำใน 3 วัน" ในความเป็นจริง ไม่มีอะไรที่สมบูรณ์แบบ: บั๊ก คำถามเกี่ยวกับความต้องการ งานที่ต้องพึ่งพา วิธีแก้: ประมาณการตามสถานการณ์ที่เป็นไปได้มากที่สุด ไม่ใช่ในแง่ดี ใช้ PERT เพื่อคำนึงถึงความแปรปรวน
เมื่อผู้จัดการพูดว่า "ต้องการภายในวันศุกร์" นักพัฒนาจะปรับการประมาณการให้เข้ากับเส้นตายนั้นโดยไม่รู้ตัว การประมาณการภายใต้ความกดดัน มักจะต่ำเกินไปและนำไปสู่การพลาดกำหนดส่ง วิธีแก้: การประมาณการควรมาก่อนเส้นตาย ไม่ใช่ในทางกลับกัน อันดับแรกทีมประมาณการ จากนั้นฝ่ายต่างๆ ตกลงเรื่องกำหนดการ
ความซับซ้อนของงาน (ต้องคิดมากแค่ไหน) และเวลา (ต้องทำมากแค่ไหน) เป็นเมตริกที่แตกต่างกัน งานอาจเรียบง่ายแต่ใช้เวลานาน (สร้าง 10 หน้าจอ) หรือซับซ้อนแต่รวดเร็ว (หาบั๊กในโค้ดเก่า) สตอรีพอยต์มักจะประมาณการความซับซ้อน ในขณะที่เวลาได้มาจาก velocity ของทีม
นักพัฒนาไม่ได้ทำงาน 8 ชั่วโมงติดต่อกันในงานเดียว: การประชุม การตรวจสอบโค้ด การช่วยเหลือเพื่อนร่วมงาน และงานธุรการกินเวลา 30-50% ของเวลาทำงาน การเปลี่ยนบริบท ต้องถูกนำมาพิจารณาในการประมาณการ: ในความเป็นจริง นักพัฒนาเขียนโค้ดวันละ 3-4 ชั่วโมง
คำถามที่พบบ่อย
การพัฒนา เป็นกระบวนการสร้างสรรค์ที่มีความไม่แน่นอนสูง แตกต่างจากการก่อสร้างหรือการผลิตที่ทุกขั้นตอนรู้ล่วงหน้า ในสายไอทีแต่ละงานมีความเป็นเอกลักษณ์ สิ่งที่ไม่รู้จักที่ไม่รู้ (unknown unknowns) เป็นสาเหตุหลักของความไม่แม่นยำ แม้แต่ทีมที่มีประสบการณ์ก็ยังผิดพลาดใน 30-50% ของการประมาณการ นี่เป็นเรื่องปกติและควรนำมาพิจารณาในการวางแผน
สตอรีพอยต์ เหมาะกว่าสำหรับการวางแผนสปรินต์เพราะเป็นเชิงสัมพัทธ์และไม่ขึ้นอยู่กับผู้ปฏิบัติงาน ชั่วโมง จำเป็นสำหรับสัญญาและการรายงานภายนอกแต่แม่นยำน้อยกว่า การผสมผสานที่เหมาะสมที่สุด: งานถูกประมาณการเป็นสตอรีพอยต์ และกำหนดเวลาจะถูกแปลงผ่าน velocity ของทีมเป็นวันตามปฏิทิน
สำหรับงานที่มีเทคโนโลยีที่ไม่รู้จัก ให้ใช้ Spike (การวิจัยแบบจำกัดเวลา) ก่อน หลังการวิจัย ทีมจะเข้าใจความซับซ้อนและสามารถให้การประมาณการที่สมจริง ใช้ตัวคูณ 2-3 กับการประมาณการปกติ และเพิ่มบัฟเฟอร์ 50% สำหรับปัญหาที่ไม่คาดคิด
แสดงการแยกย่อย — แบ่งงานออกเป็นงานย่อยพร้อมการประมาณการแต่ละส่วน อธิบายว่าเวลาประกอบด้วยอะไรบ้าง: การพัฒนา การทดสอบ การตรวจสอบโค้ด เอกสาร เสนอทางเลือก: ลดขอบเขต ทำให้ฟังก์ชันง่ายขึ้น หรือแบ่งเป็นระยะ อย่าลดการประมาณการโดยไม่เปลี่ยนความต้องการ
การประมาณการใหม่ จำเป็นเมื่อมีข้อมูลใหม่เกี่ยวกับงานเกิดขึ้น: ค้นพบความต้องการเพิ่มเติม พบข้อจำกัดทางเทคนิค หรือลำดับความสำคัญเปลี่ยนไป ภายในสปรินต์ งานจะไม่ถูกประมาณการใหม่ — จุดสนใจอยู่ที่การทำให้เสร็จ ระหว่างสปรินต์ แบ็คล็อกจะถูกประมาณการใหม่ในระหว่างการ grooming
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม