Story pointها — واحدهای نسبی سنجش پیچیدگی وظایف در متدولوژیهای چابک توسعه هستند. برخلاف ساعتها، story pointها نه تنها زمان، بلکه پیچیدگی، ریسک و عدم قطعیت وظیفه را نیز در نظر میگیرند. به گفته Scrum.org، 2023، تیمهایی که از ارزیابی نسبی در story pointها استفاده میکنند، ۲۵٪ کمتر از تیمهایی که بر حسب ساعت ارزیابی میکنند، مهلتهای اسپرینت را از دست میدهند.
نکات کلیدی
Story pointها — متریک پیچیدگی وظیفه هستند که در Scrum و سایر متدولوژیهای Agile استفاده میشوند. تیم هر وظیفه را نه بر حسب ساعت، بلکه در واحدهای نسبی ارزیابی میکند: «این وظیفه دو برابر وظیفه مرجع پیچیده است». چنین رویکردی تفاوت سرعت توسعهدهندگان مختلف را حذف میکند و بر پیچیدگی تمرکز میکند.
مفهوم story point در اوایل دهه ۲۰۰۰ با رواج Scrum به وجود آمد. اولین بار ران جفریس آن را در چارچوب Extreme Programming (XP) توصیف کرد. ایده این بود که از ارزیابی «نفر-ساعت» که همیشه نادقیق است، به سمت پیچیدگی نسبی که تیم به صورت جمعی تعیین میکند حرکت کنیم. امروزه story pointها استاندارد صنعتی برای تیمهای Agile هستند.
در ارزیابی با story pointها، تیم سه عامل را در نظر میگیرد: حجم کار (مقدار کد، صفحهها، منطق)، پیچیدگی (چالشهای فنی، فناوریهای جدید) و عدم قطعیت (نیازمندیهای نامشخص، ریسکها). یک story point میتواند به معنای «وظیفه ساده بدون ریسک» باشد و ۸ — «وظیفه پیچیده با عدم قطعیت بالا».
انتخاب مقیاس story point بر دقت ارزیابی و راحتی برنامهریزی تأثیر میگذارد. محبوبترین مقیاس دنباله فیبوناچی است، اما گزینههای جایگزین نیز وجود دارند.
| مقیاس | مقادیر | مزایا | معایب |
|---|---|---|---|
| فیبوناچی | ۱، ۲، ۳، ۵، ۸، ۱۳، ۲۱ | افزایش طبیعی پراکندگی در وظایف بزرگ | برای تیمهای جدید پیچیده است |
| خطی | ۱، ۲، ۳، ۴، ۵ | ساده و قابل فهم | بدون پراکندگی برای وظایف بزرگ |
| توانی | ۱، ۲، ۴، ۸، ۱۶، ۳۲ | حداکثر پراکندگی در وظایف بزرگ | تشخیص وظایف بزرگ دشوار است |
| T-Shirt | S، M، L، XL | ارزیابی سریع تقریبی | نادقیق، نیاز به تبدیل دارد |
دنباله فیبوناچی تصادفی انتخاب نشده است. تفاوت بین ۱ و ۲ حداقل است (۵۰٪)، اما بین ۱۳ و ۲۱ — قابل توجه (۶۲٪). این واقعیت را منعکس میکند: وظایف کوچک دقیقتر ارزیابی میشوند، وظایف بزرگ — با پراکندگی بیشتر. وقتی وظیفهای ۲۱ story point ارزیابی میشود، تیم میفهمد: «نمیدانیم چقدر طول میکشد، اما قطعاً بیشتر از ۱۳ است». مقیاس فیبوناچی از دقت کاذب جلوگیری میکند.
برای اینکه مقیاس کار کند، تیم در مورد مرجع توافق میکند: «وظیفه X — ۱ story point است». معمولاً مرجع یک وظیفه ساده و آشنا انتخاب میشود: «اضافه کردن فیلد متنی به صفحه» یا «رفع باگ از نوع اشتباه تایپی». تمام وظایف دیگر نسبت به مرجع ارزیابی میشوند. بدون مرجع، story pointها معنی خود را از دست میدهند — هرکس واحد را به روش خود درک میکند.
Velocity (سرعت تیم) — میانگین تعداد story pointهایی که تیم در یک اسپرینت انجام میدهد. این متریک کلیدی برای پیشبینی مهلتهای پروژه است.
Velocity بر اساس وظایف تکمیلشده محاسبه میشود: story pointهای تمام وظایفی که تیم موفق به اتمام آنها شده (definition of done انجام شده) جمع میشوند. وظایف ناتمام در نظر گرفته نمیشوند. برای دقت، میانگین ۳-۵ اسپرینت آخر گرفته میشود. مثلاً اگر تیم در ۴ اسپرینت آخر ۲۰، ۲۲، ۱۸ و ۲۴ story point را تکمیل کرده باشد، velocity = ۲۱ sp.
با دانستن velocity و حجم کل بکلاگ بر حسب story point، میتوان تعداد اسپرینتهای مورد نیاز تا انتشار را پیشبینی کرد. مثلاً اگر در بکلاگ ۲۱۰ story point وجود داشته باشد و velocity = ۲۱، به ۱۰ اسپرینت نیاز است. این یک پیشبینی تقریبی است که در طول کار دقیقتر میشود. مهم: velocity یک میانگین است، نه یک تعهد. با حد پایین (۱۸ sp) برنامهریزی کنید، نه با میانگین.
Velocity را نمیتوان با دستور افزایش داد — این نشانه سلامت فرآیندها است. رشد پایدار velocity از طریق: کاهش بدهی فنی، بهبود فرآیندهای بازبینی کد، کاهش تغییر زمینه، خودکارسازی تست و CI/CD به دست میآید. مهم: velocity تیمهای مختلف قابل مقایسه نیست — هر تیم story pointها را به روش خود تعریف میکند.
Story pointها و ساعتها اهداف متفاوتی دارند و انتخاب بین آنها به زمینه بستگی دارد. تیمهای با تجربه از هر دو رویکرد برای وظایف مختلف استفاده میکنند.
Story pointها برای برنامهریزی اسپرینتها ضروری هستند: آنها به این وابسته نیستند که چه کسی وظیفه را انجام میدهد. Junior ممکن است روزانه ۲ sp انجام دهد، senior — ۴ sp، اما ارزیابی وظیفه برای هر دو ۲ sp باقی میماند. Story pointها امکان ردیابی بهرهوری تیم را بدون مقایسه توسعهدهندگان فراهم میکنند. این فشار سیاسی را کاهش میدهد و فضای تیم را بهبود میبخشد.
ساعتها برای تعهدات خارجی ضروری هستند: قراردادها، برآورد هزینه، گزارشهای مشتری. مشتری میخواهد نه «۸ story point»، بلکه «۳ هفته» بداند. برای تبدیل story pointها به ساعتها از historical conversion rate استفاده میشود: تیم میداند که ۱ sp حدوداً ۴ ساعت کار است. تبدیل باید شفاف و مبتنی بر داده باشد، نه بر اساس حدس.
بسیاری از تیمها از رویکرد ترکیبی استفاده میکنند: وظایف برای برنامهریزی اسپرینت بر حسب story point ارزیابی میشوند، سپس مدیر آنها را برای گزارشدهی خارجی به ساعت/روز تبدیل میکند. مهم است که دو سیستم را در یک فرآیند مخلوط نکنید: یا بر حسب story point ارزیابی کنید و زمان را از velocity استخراج کنید، یا مستقیماً بر حسب ساعت ارزیابی کنید.
پیادهسازی story pointها اغلب با اشتباهاتی همراه است که مزایای ارزیابی نسبی را از بین میبرند. در اینجا رایجترین آنها آورده شده است.
رایجترین اشتباه — تیم توافق میکند: «۱ sp = ۴ ساعت». در این صورت story pointها معنی خود را از دست میدهند و به ساعتهایی با نام دیگر تبدیل میشوند. Story pointها باید نسبی باشند، به زمان متصل نباشند. اگر وظیفه A دو برابر وظیفه B پیچیده است، صرف نظر از چند ساعت کار، ۲ sp دریافت میکند.
وقتی وظیفهای پس از انجام ارزیابی میشود — این ارزیابی نیست، تأیید واقعیت است. Story pointها باید قبل از شروع کار، در لحظه حداکثر عدم قطعیت تعیین شوند. ارزیابی پس از انجام velocity را مخدوش میکند و برای برنامهریزی مفید نیست. علاوه بر این، احساس کاذب دقت ایجاد میکند.
مقایسه velocity تیم A و تیم B — تمرینی بیمعنی است. هر تیم مرجع و مقیاس را به روش خود تعریف میکند. برای یک تیم ۱ sp یک وظیفه ساده یک ساعته است، برای دیگری — یک وظیفه یک روزه. فقط میتوان velocity یک تیم را در پویایی مقایسه کرد: افزایش یا کاهش مییابد.
وقتی وظایف مختلف با پیچیدگی یکسان story pointهای متفاوت دریافت میکنند و وظایف پیچیدهتر — کمتر، مقیاس خراب میشود. تیم باید به طور منظم مقیاس را کالیبره کند: هر ۳-۶ اسپرینت به صورت گذشتهنگر بررسی کند که ارزیابیها تا چه حد با پیچیدگی واقعی مطابقت داشتند. این کار سازگاری ارزیابیها را بهبود میبخشد.
سوالات متداول
Story pointها معادل ثابتی در ساعت ندارند. این یک واحد نسبی است: ۱ sp = پیچیدگی وظیفه مرجع. برای تبدیل به ساعت از historical conversion rate تیم خود استفاده کنید: میانگین ساعات کار در اسپرینت را بر velocity تقسیم کنید. معمولاً ۱ sp = ۴-۸ ساعت، اما این برای هر تیم منحصر به فرد است.
بله، story pointها را میتوان در Kanban استفاده کرد، اما با محدودیتهایی. در Kanban اسپرینت ثابت وجود ندارد، بنابراین velocity نه برای اسپرینت، بلکه برای هفته یا ماه محاسبه میشود. تیمهای Kanban اغلب به جای story pointها از Cycle Time — زمان عبور وظیفه از ابتدا تا انتها استفاده میکنند. انتخاب به ویژگیهای تیم بستگی دارد.
اگر ارزیابیها متفاوت است (یکی ۳ sp میدهد، دیگری ۱۳)، این نشانهای است که وظیفه به خوبی درک نشده است. وظیفه را به بخشهای کوچکتر تقسیم کنید. ریسکها و عدم قطعیتهایی که توسعهدهندگان مختلف میبینند را بحث کنید. اگر وظیفه بزرگ است، آن را به عنوان Spike (تحقیق ۲-۴ روزه) به جای story point ارزیابی کنید.
انتقال ۳-۶ اسپرینت طول میکشد. با انتخاب مقیاس (فیبوناچی — safest choice) و تعیین وظیفه مرجع شروع کنید. ۲-۳ جلسه Planning Poker برگزار کنید. بعد از هر اسپرینت velocity را محاسبه کنید. Story pointها را به ساعت تبدیل نکنید — به تیم اجازه دهید به سیستم جدید عادت کند. بعد از ۳ اسپرینت خواهید دید چقدر برنامهریزی بهبود یافته است.
خیر، ارزیابی تغییر نمیکند. Story pointها ارزیابی اولیه پیچیدگی هستند که قبل از شروع کار انجام میشود. پس از انجام وظیفه، ارزیابی ثابت میماند، حتی اگر تلاش واقعی متفاوت بوده باشد. تغییر ارزیابی پس از انجام آمار را مخدوش میکند و پیشبینی را بیمعنی میکند. تفاوتها را در retrospectives تحلیل کنید، اما ارزیابی را پس از واقع تغییر ندهید.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.