بیتا کاظمی‌نژاد
بیتا کاظمی‌نژاد
خواندن ۲ دقیقه·۴ سال پیش

چرا بهتره از سری فیبوناچی برای تخمین story pointها استفاده کنیم؟

سری فیبوناچی، یک سری عددیه که در اون هر عدد از حاصل جمع دو عدد قبل ایجاد شده:

{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …}

اینکه سری فیبوناچی چه قدر چیزهایی که اطراف ما هستند رو جذاب کرده (جذابیت‌های طبیعی و صنعتی (!)) و اینکه ما چه قدر این زیبایی‌های عمدی رو دست کم می‌گیریم، همیشه برای من جالب بوده.

شکل سمت راست: نسبت‌های طلایی سری فیبوناچی در گل آفتابگردان
شکل سمت چپ: استفاده از سری فیبوناچی در طراحی موزه واتیکان
شکل سمت راست: نسبت‌های طلایی سری فیبوناچی در گل آفتابگردان شکل سمت چپ: استفاده از سری فیبوناچی در طراحی موزه واتیکان


اما سری فیبوناچی توی چارچوب‌های چابک چه کار می‌کند و چرا استفاده از این سری برای تخمین خوب کار می‌کند؟

آقای Mike Cohn (که از بنیان‌گذاران چارچوب اسکرامه) از یک استعاره جالب برای توضیح این مسئله استفاده کرده؛ تصور کنید که یک وزنه 1 کیلوگرمی در یک دست دارید و یک وزنه 2 کیلوگرمی در دست دیگر. آیا بدون اینکه به دست خود نگاه کنید، می‌تونید مشخص کنید که کدوم بار سنگین‌تره؟ جواب بله است! یکی از دستان شما به نظر تقریبا دو برابر دست دیگر سنگین شده است. حالا فرض کنید که همین وزنه‌ها 20 و 21 کیلوگرم باشند. احتمالا در این حالت سخت‌تر بتوانید تفاوت وزنی را تشخیص دهید. با این که تفاوت وزنی در هر دو سناریو 1 کیلوگرم است، تشخیص دقیق در سناریوی دوم تقریبا غیرممکن است.

جذابیت اعداد سری فیبوناچی برای تخمین story pointها از همینجا نشأت گرفته که هر چه اعداد بزرگ‌تر می‌شوند، اختلاف بین عدد قبلی و بعدی بیشتر خواهد شد اما با این حال نرخ رشد ثابت و حدوداً 60% است.

(اینجا درباره story point و تفاوتش با تخمین زمانی بیشتر بخونید.)

در عمل سری فیبوناچی باید اینجوری کار کند:

تصور کنید که تیم شما می‌خواهد برآورد کند که برای اضافه کردن یک قابلیت جدید به اپلیکیشن چه قدر تلاش لازم است. همه موافقند که اضافه کردن این قابلیت بسیار دشوار است و زمان زیادی برای توسعه نیاز دارد. در این حالت افراد تیم می‌توانند با اعداد سری فیبوناچی میزان تلاش لازم را توصیف و مهم‌تر آن که به دلیل فواصل زیاد اعداد از هم، می‌توانند بر سر یک عدد توافق کنند (و هدف از تخمین دقیقا ایجاد توافق و تعهد جمعی است). اما فرض کنید اگر همین تیم از اعداد زوج (مثلا بین 2 تا 48) برای تخمین استفاده کنند، احتمالا نمی‌توانند توافق کنند که تخمین باید 42 pointباشد؟ 46؟ و یا شاید 48؟

در نهایت برای جمع‌بندی ...

مثل خیلی مسائل دیگر استفاده از سری فیبوناچی برای تخمین در چارچوب اسکرام وحی مُنـزَل نیست و طبیعتاً می‌تونید به هر روشی یک تخمین کمّی از زمان لازم برای توسعه ارائه بدهید. بعضی تیم‌ها از توان 2 اعداد استفاده می‌کنند، بعضی هم از سری اعدادی که هر عدد دو برابر قبلی است، حتی بعضی سری فیبوناچی رو برای خودشان اصلاح کردند! ایده اصلی این است که هر چه story بزرگ‌تر باشد، قاعدتاً با اطمینان و دقت کمتری قابل تخمین خواهد بود و استفاده از سری فیبوناچی به تیم‌ها کمک می‌کند که با ایجاد بی‌دقتی عمدی در تخمین این عدم اطمینان رو بهتر درک کنند و به خاطر فاصله بین اعداد به خصوص در مورد اعداد بزرگ‌تر بتوانند چابک‌تر به توافق جمعی از تخمین تلاش لازم برای توسعه برسند.


Ref.

Why Fibonacci sequence works well for estimating?

سری فیبوناچیstory pointscrumاسکرام
هنوز دارم یاد می‌گیرم.
شاید از این پست‌ها خوشتان بیاید