تخمین — ارزیابی کمی هزینه نیروی کار برای انجام وظیفه، توسعه قابلیت یا اجرای کل پروژه است. در توسعه موبایل، تخمینها برای برنامهریزی اسپرینتها، تعیین هزینه و مدیریت انتظارات مشتری استفاده میشوند. طبق دادههای Project Management Institute, 2024، خطای تخمین در مراحل اولیه پروژه میتواند به ۱۰۰٪ برسد که تخمین را به یکی از دشوارترین رشتهها در توسعه تبدیل میکند.
نکات اصلی
تخمین (از انگلیسی estimate) — پیشبینی مقدار زمان یا تلاش لازم برای انجام یک وظیفه است. در توسعه موبایل، تخمینها بر حسب ساعت، روز، استوریپوینت یا معادل پولی بیان میشوند. هدف تخمین پیشبینی دقیق نیست، بلکه کاهش عدم قطعیت برای تصمیمگیری است.
تخمین — پیشبینی با حاشیه خطا است. تعهد (commitment) — قول انجام وظیفه تا تاریخ مشخص است. تفاوت بحرانی است: تخمین میگوید «احتمالاً ۵ روز»«، تعهد میگوید «»در ۵ روز انجام میدهیم»«. مدیران اغلب این مفاهیم را اشتباه میگیرند و تخمین را به مهلتی بدون حق خطا تبدیل میکنند.
فرآیند تخمینزنی به اندازه نتیجه آن مهم است. وقتی تیم درباره ارزیابی وظیفه بحث میکند، نیازهای پنهان، وابستگیها و ریسکها آشکار میشوند. حتی اگر رقم نهایی نادقیق باشد، بحث به همه شرکتکنندگان درک وظیفه را میدهد. بنابراین روشهای جمعی ارزیابی (Planning Poker) مؤثرتر از روشهای فردی هستند.
چندین روش تخمین وجود دارد که هرکدام برای مراحل مختلف پروژه و سطوح جزئیات مناسب هستند. انتخاب روش به دادههای موجود و دقت مورد نیاز بستگی دارد.
| روش | نوع | دقت | زمان استفاده |
|---|---|---|---|
| Planning Poker | کارشناسی، جمعی | بالا (در اسپرینت) | ارزیابی وظایف اسپرینت |
| T-Shirt sizing | کارشناسی، سریع | متوسط | ارزیابی اولیه اپیکها |
| تخمین مشابه | بر اساس تاریخچه | متوسط | وظایف مشابه در گذشته |
| Three-point (PERT) | احتمالی | بالاتر از متوسط | وظایف با عدم قطعیت بالا |
| پارامتریک | فرمولی | بستگی به داده دارد | وظایف همگن قابل اندازهگیری |
Planning Poker — محبوبترین روش ارزیابی در Agile است. هر برنامهنویس دستهای از کارتها با اعداد فیبوناچی (۱، ۲، ۳، ۵، ۸، ۱۳، ۲۱) دریافت میکند. پس از بحث درباره وظیفه، همه همزمان کارت خود را نشان میدهند. اگر ارزیابیها متفاوت باشند — برنامهنویسان با کمترین و بیشترین ارزیابی منطق خود را توضیح میدهند، سپس رأیگیری مجدد انجام میشود. این روش تأثیر افراد بانفوذ را حذف کرده و ارزیابی دقیقتری ارائه میدهد.
T-Shirt sizing — ارزیابی تقریبی بر اساس اندازه پیراهن: XS، S، M، L، XL، XXL. این روش برای ارزیابی سریع وظایف بزرگ (اپیکها) در مراحل اولیه که جزئیات نامشخص هستند استفاده میشود. بعداً هر یک از این وظایف تجزیه شده و در Planning Poker ارزیابی میشود. T-Shirt sizing برای هر وظیفه ۵-۱۰ دقیقه زمان میبرد اما فقط مرتبه بزرگی را نشان میدهد.
PERT از سه ارزیابی استفاده میکند: خوشبینانه (O)، بدبینانه (P) و محتملترین (M). ارزیابی نهایی با فرمول محاسبه میشود: (O + 4M + P) / ۶. این روش عدم قطعیت را در نظر گرفته و نتیجه واقعیتری نسبت به ارزیابی تکی ارائه میدهد. PERT به ویژه برای وظایف با ریسک بالا یا فناوریهای جدید مفید است.
دقت تخمین به مرحله پروژه و میزان اطلاعات موجود بستگی دارد. هرچه ارزیابی زودتر انجام شود، حاشیه خطا بیشتر است — این طبیعی است و باید در برنامهریزی لحاظ شود.
مخروط عدم قطعیت (Cone of Uncertainty) — مدلی که توصیف میکند چگونه حاشیه خطای تخمین با پیشرفت پروژه کاهش مییابد. در مرحله مفهوم، حاشیه خطا ۴۰۰٪ است (وظیفه میتواند ۱ تا ۴ ماه طول بکشد). در زمان اسپرینت — ۲۰٪ (۱-۱.۲ ماه). آگاهی از این مدل کمک میکند تا در مراحل اولیه خواستار ارزیابیهای دقیق نباشیم.
ارزیابی نسبی (بر حسب استوریپوینت) دقیقتر از ارزیابی مطلق (بر حسب ساعت) است، زیرا افراد در مقایسه وظایف بهتر از تخمین زمان عمل میکنند. «این وظیفه دو برابر آن یکی پیچیده است»« قضاوت قابلاعتمادتری نسبت به «»این وظیفه ۸ ساعت طول میکشد»« است. ارزیابیهای نسبی به برنامهنویس خاص وابسته نیستند و با تغییر مجری دقت خود را حفظ میکنند.
دقت تخمین را میتوان با رویکرد سیستماتیک، بحث جمعی و تحلیل اشتباهات گذشته افزایش داد. چندین روش اثباتشده وجود دارد.
هر وظیفهای که بیش از ۲ روز ارزیابی شده باید تجزیه شود. اصل: اگر نمیتوان وظیفه را با دقت ۵۰٪ ارزیابی کرد، یعنی بیش از حد بزرگ است. آن را به مراحلی تقسیم کنید که هرکدام قابلدرک و قابلارزیابی باشند. پس از تجزیه، ارزیابی کل اغلب ۱.۵-۲ برابر بزرگتر از ارزیابی اولیه است.
تاریخچه ارزیابیها را ثبت کرده و با هزینههای واقعی مقایسه کنید. مثال: «وظایف ارزیابیشده با ۳ استوریپوینت به طور متوسط ۴ روز طول میکشند، نه ۲ روز»«. از velocity تیم برای پیشبینی استفاده کنید: اگر تیم در هر اسپرینت ۲۰ استوریپوینت را تکمیل میکند، ۳۰ را برنامهریزی نکنید. تحلیل دقت ارزیابیهای گذشته بهترین تمرین برای مهارت تخمینزنی است.
لنگراندازی — اثر روانشناختی که در آن اولین ارزیابی مطرحشده بر همه شرکتکنندگان تأثیر میگذارد. برای جلوگیری از لنگراندازی، در Planning Poker همه همزمان کارتها را نشان میدهند، نه به نوبت. کالیبراسیون — تطبیق منظم ارزیابیها با واقعیت: پس از ۱۰-۲۰ اسپرینت، تیم به لطف بازخورد دقیقتر ارزیابی میکند.
هر وظیفه حاوی ریسکهای پنهان است: بیماری برنامهنویس، مشکل با API، تغییر نیازمندیها. عامل تعدیلشده با ریسک (risk-adjusted factor) را به ارزیابی اضافه کنید: برای وظایف با ریسک بالا — ضریب ۱.۵-۲، با ریسک پایین — ۱.۱-۱.۲. به طور شفاف به مشتری نشان دهید چه ریسکهایی در نظر گرفته شده و چگونه بر زمانبندی تأثیر میگذارند.
اشتباهات در تخمین در اکثر تیمها، صرفنظر از میزان بلوغشان، تکرار میشوند. آگاهی از این اشتباهات اولین گام برای رفع آنهاست.
رایجترین اشتباه — ارزیابی بر اساس بهترین سناریو: «اگر همه چیز ایدهآل پیش برود، در ۳ روز انجام میدهیم»«. در واقعیت هیچ چیز ایدهآل پیش نمیرود: باگها، سوالات درباره نیازمندیها، وظایف وابسته. راهحل: بر اساس محتملترین سناریو ارزیابی کنید، نه خوشبینانه. از PERT برای در نظر گرفتن تغییرپذیری استفاده کنید.
وقتی مدیر میگوید «تا جمعه لازم است»«، برنامهنویس ناخودآگاه ارزیابی را با این مهلت تطبیق میدهد. ارزیابی تحت فشار همیشه کمتر از واقعیت است و به تأخیر منجر میشود. راهحل: ارزیابی باید مقدم بر مهلت باشد، نه برعکس. ابتدا تیم ارزیابی میکند، سپس طرفین درباره زمانبندی توافق میکنند.
پیچیدگی وظیفه (چقدر فکر کردن) و زمان (چقدر انجام دادن) — معیارهای متفاوتی هستند. یک وظیفه میتواند ساده اما وقتگیر باشد (کدنویسی ۱۰ صفحه). یا پیچیده اما سریع (پیدا کردن باگ در legacy). در استوریپوینتها معمولاً پیچیدگی ارزیابی میشود و زمان از velocity تیم استخراج میگردد.
برنامهنویس ۸ ساعت متوالی روی یک وظیفه کار نمیکند: جلسات، بازبینی کد، کمک به همکاران، امور اداری ۳۰-۵۰٪ زمان کار را میگیرد. تغییرات زمینه باید در تخمین لحاظ شود: در واقعیت برنامهنویس روزانه ۳-۴ ساعت کد مینویسد.
سوالات متداول
توسعه — فرآیند خلاق با عدم قطعیت بالا است. برخلاف ساختوساز یا تولید که هر مرحله مشخص است، در IT هر وظیفه منحصربهفرد است. ناشناختههای ناشناخته (unknown unknowns) — دلیل اصلی نادقتی هستند. حتی تیم باتجربه در ۳۰-۵۰٪ ارزیابیها اشتباه میکند. این طبیعی است و باید در برنامهریزی لحاظ شود.
استوریپوینتها برای برنامهریزی اسپرینتها بهتر هستند زیرا نسبی بوده و به مجری وابسته نیستند. ساعتها برای قراردادها و گزارشدهی خارجی لازم هستند اما دقت کمتری دارند. ترکیب بهینه: وظایف بر حسب استوریپوینت ارزیابی میشوند و زمانبندی از طریق velocity تیم به روزهای تقویم تبدیل میگردد.
برای وظایف با فناوریهای ناشناخته ابتدا از Spiko (تحقیق با زمان محدود) استفاده کنید. پس از تحقیق، تیم پیچیدگی را درک کرده و میتواند ارزیابی واقعی ارائه دهد. ضریب ۲-۳ به ارزیابی معمول اضافه کنید و ۵۰٪ بافر برای دشواریهای پیشبینینشده در نظر بگیرید.
تجزیه را نشان دهید — وظیفه را به زیروظایف با ارزیابی هرکدام تقسیم کنید. توضیح دهید زمان از چه اجزایی تشکیل شده: توسعه، آزمایش، بازبینی کد، مستندسازی. گزینههای جایگزین پیشنهاد دهید: کاهش دامنه، سادهسازی قابلیت یا تقسیم به مراحل. هرگز بدون تغییر نیازمندیها ارزیابی را کاهش ندهید.
ارزیابی مجدد زمانی لازم است که اطلاعات جدیدی درباره وظیفه ظاهر شود: نیازمندیهای اضافی آشکار شد، محدودیتهای فنی کشف شد یا اولویت تغییر کرد. در طول اسپرینت وظایف دوباره ارزیابی نمیشوند — تمرکز بر تکمیل است. بین اسپرینتها، بکلاگ در چارچوب grooming دوباره ارزیابی میشود.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.