علی نیک روش
علی نیک روش
خواندن ۴ دقیقه·۳ سال پیش

تخمین یوزر استوری ها به روش غیر مستقیم یا استوری پوینت

Story Points with Fibonacci
Story Points with Fibonacci


روش های مختلفی برای تخمین بک لاگ ها (Product Backlog Items) یا استوری ها (User Stories) در بوردهای اجایل (Agile) و اسکرام (Scrum) و . . . وجود داره که کم و بیش باهاش آشنا هستیم و جای دیگه بهش می پردازیم.

میدونیم که روش تخمین استوری پوینت روش غیر مستقیم هست (برای ترجمه Relational تو این مورد ترجمه بهتری به ذهنم نیومد)، و بنابراین برای امتیاز دادنش ممکنه دچار کمی ابهام بشیم.

چه کار کنیم تا با استوری پوینت ها ارتباط بهتری برقرار کنیم

برای دادن امتیاز استوری پوینت سه عامل «پیچیدگی، ناشناختگی یا ابهام، و میزان تلاش» رو باید در نظر بگیریم؛ بریم بررسی کنیم:

  • پیچیدگی (Complexity): وقتی یه کار از عوامل متعدد و گوناگون، در مقیاس‌های متفاوت، با اتکا و وابستگی ذاتی و جدایی‌ناپذیر عوامل بر همدیگر وجود داشته باشد، و بالاتر از همه این ها، اگر نشه با حذف و قطع برخی از مولفه‌ها و اعضا، به کوچک‌تر ساختن آن مجموعه پرداخت، با پیچیدگی روبرو هستیم.

تو ذهن تون ساخت یه مبل راحتی با مبل سلطنتی (!) رو مقایسه کنید :)


  • ناشناختگی (Unknown): ناشناختگی در برابر شناخت هست (عجب جمله ای گفتم!)؛ در متدولوژی های مختلف اجایل روش های متنوعی برای بالابردن میزان شناخت روی بک لاگ ها وجود داره، ولی در چارچوب اسکرام از جلسات Refinement برای ایجاد شناخت بیشتر یوزر استوری ها استفاده میشه که دست کم ناشناختگی های یک بک لاگ از دید بیزنسی حل بشه و دولوپر ها دیگه بیشتر روی مسایل تکنیکال وقت و انرژی بزارن.

(تو بعضی از مستندات فاکتور دوم رو عدم قطعیت (Uncertainty) یا شفافیت (Clarity) هم عنوان می کنند.)


  • میزان تلاش (Effort): فعالیت آگاهانه برای انجام یک کار یا به عبارت دیگه فعالیت ذهنی یا فیزیکی لازم برای به دست آوردن یک چیز.


خب این تعاریف رو که بلد بودیم، به چه درد مون میخوره تو استوری پوینت دادن؟

میدونیم یکی از بهترین روش ها برای دادن استوری پوینت ها استفاده از دنباله فیبوناچی هست؛ چرا؟

چند فاکتور جالب تو این دنباله وجود داره:

  • غیر خطی هستند
  • هر عدد از جمع دو عدد قبلیش به دست میاد
  • هر عدد این دنباله به نسبت عدد قبلی حدود 60 درصد بیشتر هست؛ یعنی عدد هایی که میگن خیلی به هم نزدیک نیست (به غیر از سه جمله اول دنباله) و معنا دار خواهد بود.
  • میتونیم از عبارت کمتر یا بیشتر براشون استفاده کنیم و باز به عدد معنا داری نسبت به قبلی میرسیم.
دنباله فیبوناچی:
1, 2, 3, 5, 8, 13, 21, 34, 55, . . .

آخرش چطور امتیاز بدیم؟

میتونیم هر کسی تو ذهن مون برای هر کدوم از این سه عامل بر مبنای همون دنباله فیبوناچی تقسیم بندی داشته باشیم و بعد جمع اون ها نزدیک هر کدوم از اعداد فیبوناچی شد همون رو بهش تخصیص بدیم و بعد هم نظر جمعی رو از برآیند استوری پوینت هایی که اعضای تیم میدن داشته باشیم؛ چند تا مثال تو جدول آوردم و عمدا هم اعداد رو خیلی میزون ندادم که تقریب هم توش داشته باشیم.

Story Points Based on Fibonacci
Story Points Based on Fibonacci

FAQ

  • آیا نیاز هست به ازای هر یوزر استوری هر کدو از اعضای تیم دولوپ امتیاز هاشون رو به این سه فاکتور تجزیه کنن و روی اون ها هم بحث کنیم؟
    به نظر من خیلی ضروری نیست مگر این که اختلاف بین اعداد کلی که میدن بیشتر از یک کارت باشه که بعد دلیلش رو با هم مرور کنن و لازم شد وارد جزییات بشن.
  • بهتر نیست به جای عدد نهایی روی این سه عامل از دولوپرها بپرسیم؟
    نه، بهتر هست که این موضوع رو پیچیده نکنیم؛ ولی میشه تو سه چهار تا اسپرینت این طور پیش رفت تا نظرات بچه ها با هم منطبق بشه و بعد دیگه خیلی وارد این جزییات نشد.
  • چطور بفهمیم که استوری پوینت هایی که دولوپر ها میدن خیلی واگرا نیست و تخمین درستی از کار هست؟
    تو سه یا چهار تا اسپرینت هم اولش به بک لاگ ها استوری پوینت بدن (Original Story Point) و هم بعد از دان کردن بک لاگ تا معیار تخمین برای همه ملموس تر بشه.
  • دولوپر هایی که تو اسپرینت نقش دولوپری ندارن هم میتونن استوری پوینت بدن؟
    خیر، اون ها چه کاره هستن که بخوان پوینت بدن! تخمین مال کسی هست که تو پیاده سازی اون نقش داره؛ بنابراین، مالک محصول و یا اسکرام مستر هم بشینن قهوه شون رو بخورن به جای پوینت دادن.
  • آیا میشه بیشتر از 13 استوری پوینت به یک بک لاگ امتیاز داد؟
    شما هر چقدر دوست داری امتیاز بده، ولی وقتی عدد بالا میره یعنی یه مشکلی تو اون یوزر استوری وجود داره که معمولا لازم هست مالک محصول و دولوپر ها اون رو دوباره مورد بررسی قرار بدن (اگه لازم شد میتونن از Domain Experts هم دعوت کنن و ازش برای شفاف تر کردن بک لاگ کمک بخوان؛ نه امتیاز دادن)
اسکراماجایلتخمینتسک
Agile, Scrum, Kanban, OKR
شاید از این پست‌ها خوشتان بیاید