آموزش اسکرام؛ قسمت هفتم: روش اجرای اسپرینت و نمودار پیشرفت
اجرای اسپرینت (Sprint Execution) مجموعهی فعالیتهایی است که در طول هر اسپرینت تیم اسکرام بهمنظور محققکردن هدف اسپرینت انجام میدهد. در این مطلب، از استانداردها و شیوههایی حرف میزنیم که تیم اسکرام را در برنامهریزی و سازماندهی و اجرا و مباحثات اسپرینت هدایت میکنند.
مروری بر اجرای اسپرینت
در طول هر اسپرینت، تیم توسعه پروژهای در بخشهای کوچکتر اجرا میکند و تمام وظایف لازم را برای ارائهی محصول Potentially Shippable انجام میدهد. کار تیم براساس هدف اسپرینت و بکلاگ اسپرینت تعریف میشود.
بیشترین زمان اسپرینت در مرحلهی اجرای اسپرینت سپری میشود. اجرای اسپرینت پس از جلسهی برنامهریزی اسپرینت آغاز میشود و قبل از جلسهی بررسی اسپرینت بهپایان میرسد. برای اسپرینتی دوهفتهای، مدت اجرای اسپرینت بین ۸ تا ۱۰ روز است.
نقش تیم اسکرام: در مرحلهی اجرای اسپرینت، تیم توسعه دربارهی بهترین راه رسیدن به هدف اسپرینت تصمیمگیری میکند. اسکراممستر نقش مربی و تسهیلگر تیم توسعه را بهعهده دارد و باید موانعی را رفع کند که بر سر راه فعالیتهای اجرای اسپرینت وجود دارد. مالک محصول نیز باید ابهامات تیم دربارهی الزامات محصول را برطرف و کار درحالجریان را بررسی کند و ورودی لازم را دراختیار تیم قرار دهد. گاهی اوقات نیز مالک محصول برای بحث دربارهی اصلاح اهداف اسپرینت و تصدیق «معیارهای پذیرش» فراخوانده میشود. هیچکس حتی اسکراممستر، نمیتواند راهکار و شیوهای به تیم توسعه تحمیل کند.
هدف اسپرینت و بکلاگ اسپرینت، ورودیهای فرایند اجرای اسپرینت هستند. این ورودیها در طول جلسهی برنامهریزی اسپرینت ایجاد میشوند. فرایند اجرای اسپرینت، مراحلی نظیر برنامهریزی کار، انجام، مدیریت وظایف، حضور در جلسات ایستادهی روزانه و ارتباطات تیم اسکرام را شامل میشود. خروجی فرایند بخش افزایشی (Increment) محصول است که از فهرستی از آیتمهای بکلاگ محصول تشکیل میشود و از تعریف Done نیز پیروی میکند. در تصویر زیر، جریان عملیات «اجرای اسپرینت» را مشاهده میکنید:
برنامهریزی اجرای اسپرینت
در طول جلسهی برنامهریزی اسپرینت، تیم اسکرام برنامهی اولویتهای خود را مشخص میکند که درواقع، همان بکلاگ اسپرینت را تشکیل میدهد و بهمنظور دستیابی به هدف اسپرینت تنظیم میشود. زمانیکه تیم وظایف خود را برنامهریزی میکند، ممکن است در سطح Taskها نیز مهلت زمانی تعیین کند تا بدینطریق، عملکرد وظایف را بهبود دهد.
مدیریت جریان کار
اساسا تیم اسکرام باید بتواند جریان کاری خود را در طول هر اسپرینت بهنحوی مدیریت کند که هدف اسپرینت برآورده شود. مدیریت جریان کار شامل تصمیمگیری درزمینهی میزان کارهایی است که تیم میتواند بهطورموازی انجام دهد. همچنین، تصمیمگیری دربارهی اینکه کدام Task باید آغاز شود؟ کارها چگونه سازماندهی شوند؟ چه کاری باید اجرا شود؟ چه کسی مسئولیت وظایف را بهعهده دارد؟ برای درک بهتر مدیریت جریان کاری، هریک از این مسائل را دقیقتر بررسی میکنیم:
۱. کارهای موازی و وظایف نیمهتمام
تیم اسکرام بهعنوان تیمی خودسازمانده، تصمیم میگیرد اعضا چه میزان از وظایف را بهطورموازی انجام میدهند. دلیل انتخاب کارهای موازی، این است که از یک طرف، کار همزمان روی تعداد زیادی از Taskها فشار زیادی به تیم وارد میکند و از طرف دیگر، اگر افراد در هر زمان فقط روی یکی از وظایف کار کنند، زمان غیرضروری و زیادی صرف میشود. پس، تیم باید به حدکافی متعادل باشد تا تمام وظایف را انجام دهد و از مهارتهای Tشکل خود حداکثر بهره را ببرد. بدینترتیب، نهتنها زمان صرفشده کاهش مییابد؛ بلکه حداکثر ارزش ممکن در طول هر اسپرینت ایجاد میشود.
Swarming یعنی بهجای اینکه با ظرفیت دردسترس وظیفهی جدیدی انتخاب کنیم، یکی از آیتمهای نیمهتمام را تکمیل کنیم. این بدانمعنی نیست در یک زمان واحد، فقط روی یک وظیفه متمرکز شویم. درنهایت، تیمها باید مهمترین آیتمها را بهمنظور ارائهی حداکثر ارزش ممکن در انتهای اسپرینت شناسایی کنند.
۲. انتخاب آیتمهای کاری
سادهترین راه برای انتخاب آیتمهای کاری، انتخاب آیتمهایی است که مالک محصول آنها را بهعنوان بالاترین اولویتها مشخص میکند؛ هرچند متأسفانه این روش همیشه کارایی ندارد؛ زیرا ممکن است وابستگیها یا مهارتهای اعضای تیم از ترتیب مشابهی برخوردار نباشد. در این حالت، تیم توسعه میتواند آیتمهای کاری مناسبی را انتخاب کند که خودش بهتر تشخیص میدهد.
۳. سازماندهی وظایف
آیتمهایی که در مرحلهی قبل انتخاب شدهاند، از ارزش مشخصی برخوردار هستند. دو عضو توسعهدهنده و آزمونکننده بهصورت متقابل و با تعامل زیاد چرخههای آزمون (کدنویسی و انجام آزمایش و تصحیح کدها) را ایجاد میکنند. این رویکرد به جریان بیوقفهی کاری کمک میکند؛ یعنی از بازخورد سریع پشتیبانی میکند و اعضای ماهر تیم را قادر میسازد کار را با سازماندهی وظایف انجام دهند.
۴. چه وظایفی باید اجرا شود؟
همانطورکه بارها اشاره کردیم، گروههای اسکرام گروههای خودسازمانده هستند. بهعبارتدیگر، آنها تصمیم میگیرند چه وظایفی انجام دهند تا آیتمهای بکلاگ محصول تکمیل شود. مالک محصول (PO) و ذینفعان دامنهی Featureها و معیارهای پذیرش را تعریف میکنند. تیم توسعه و مالک محصول با یکدیگر همکاری میکنند تا اطمینان حاصل شود که تصمیمات فنی بهلحاظ اقتصادی نیز مقبول هستند.
۵. چه کسی مسئولیت وظایف را بهعهده دارد؟
هر عضو تیم که میتواند وظیفهای را صحیح و مناسب انجام دهد، بهترین فرد برای کنترل آن وظیفه است. درصورتیکه این شخص به هر دلیلی دردسترس نباشد، تیم بهترین و کارآمدترین عضو بعدی را انتخاب میکند.
اسکرام روزانه
در سومین قسمت از مجموعهی آموزش اسکرام، گفتیم اسکرام روزانه فعالیت بازرسی و انطباقی ۱۵ دقیقهای است که هرروز (در هر بخش از محیط کار) برگزار میشود. هدف اصلی جلسه این است که تیم سریعتر به هدف اسپرینت دست پیدا کند. درعینحال، اسکرام روزانه تصویری عمومی از وضعیت فعلی اسپرینت را بهاشتراک میگذارد و موارد زیر را مشخص میکند:
- چه مقدار کار باید انجام شود
- باید کدام آیتمهای کاری را آغاز کنیم
- بهترین راهها و روشهای اجرایی چیست
- کار چگونه بین اعضای تیم سازماندهی میشود
بههمیندلیل، برگزاری اسکرام روزانه برای مدیریت جریان کاری، ضروری است.
اجرای وظایف، شیوههای فنی
تیم توسعه باید دانش فنی فراوانی درزمینهی کارش داشته باشد. برای مثال، اگر رویکرد اسکرام را در توسعهی نرمافزار بهکار گرفتهاید، اعضای تیم باید مهارت مناسبی در زبانهای برنامهنویسی و تکنیکهایی مانند یکپارچهسازی مداوم (CI)، آزمون خودکار، Refactoring، توسعه به روش TDD و نظیر آن داشته باشند. تیمهایی که مهارتهای فنیشان ضعیفی است، عموما از مزایای بلندمدت چهارچوب اسکرام بهرهای نمیبرند.
ارتباطات
در رویکرد اسکرام، ارتباطات شرط لازم پیشرفت درونتیمی است و غالبا به سه روش انجام میشود:
- بورد وظایف
- نمودار Burn-Down اسپرینت
- نمودار Burn-Up اسپرینت
۱. بورد وظایف
بورد وظایف (Task Board) تشریح پیشرفت پروژه را بین اعضای تیم تسهیل میکند. همانطورکه در تصویر زیر مشاهده میکنید، داستانهای کاربر و فهرستی از وظایف در جدول بورد وظایف نمایش داده میشوند. Taskها تا زمانی در ستون To-do باقی میمانند که اعضای تیم کار آنها را شروع کنند. زمانیکه تیم کار هر Task را آغاز کرد، آن وظیفه به ستون «درحالپیشرفت» منتقل میشود و پس از پایانیافتن کار نیز، به ستون «انجامشده» انتقال مییابد. تیم بهراحتی میتواند با نگاهکردن به تخته، وضعیت کارها را درک کند.
۲. نمودار برنداون (Burn-Down) اسپرینت
نمودار برنداون به تیم کمک میکند پیشرفت کار را ردیابی و زمان تکمیل کار را پیشبینی کند. این نمودار نشان میدهد که در هرروز، چند ساعت کار برای انجام هر وظیفه باقیمانده است. تیم توسعه هرروز وظایف «درحالپیشرفت» را بهروزرسانی و میزان کار باقیمانده را برآورد میکند. میزان زمانیکه برای تکمیل هر وظیفه موردنیاز است (برحسب ساعت)، به میزان زمان پیشبینیشده برای انجام وظایفی اضافه میشود که هنوز آغاز نشدهاند. نتایج بهدستآمده در نمودار Burn-Down اسپرینت نمایش داده میشوند.
نکته: نمودارهای برنداون اسپرینت همیشه برمبنای میزان تلاش باقیماندهی تخمینی یا برآوردشده تنظیم میشوند. بهعبارتدیگر، این نمودارها تلاش واقعی را نشان نمیدهند.
۳. نمودار برنآپ (Burn-Up) اسپرینت
نمودار برنآپ نیز راه دیگری برای پیگیری پیشرفتی است که در طول هر اسپرینت بهدست میآید. این نمودارها برمبنای داستانهای کاربر ترسیم میشوند. هرروز، مجموع آیتمهای تکمیلشدهی بکلاگ محصول (تا همان تاریخ مشخص)، برمبنای استوریپوینت اندازهگیری میشوند. اعضای تیم بهکمک نمودارهای برنآپ متوجه میشوند که آیتمهای بکلاگ محصول در طول اسپرینت چگونه جریان دارند.
نمودار ایدهآل برنآپ، افزایش مداوم آیتمهای کاری تکمیلشده را نشان میدهد (خط قرمز در نمودار بالا). اگر نمودار در چندین روز متوالی، حاکی از هیچ پیشرفتی در تکمیل امور نباشد (خط سیاه مقطع)، باید آن را بهعنوان زنگخطر بشناسیم (ریسک).
نمودار برنداون؛ مزایا و جزئیات و روش ترسیم
این روزها نمودارهای برنداون از محبوبیت بیشتری نزد اعضای تیم و ذینفعان برخوردار هستند؛ چراکه بهراحتی و بهشیوهای درکپذیر، وضعیت پیشرفت فعالیتهایی را نشان میدهند که در مسیر رسیدن به اهداف اسپرینت انجام میشود. همانطورکه اشاره کردیم، نمودار برنداون نمایشی گرافیکی از میزان تلاش باقیماندهی تخمینی در هر اسپرینت است که برحسب ساعت اندازهگیری میشود. زمانیکه مجموع تلاشساعت باقیماندهی هر وظیفهی ناتمام در یک روز را روی محورهای مختصات علامتگذاری و نقاط را بههم وصل کنیم، تصویری مانند نمودار زیر بهدست میآوریم:
در این نمودار، محور افقی نشاندهندهی روزهای اسپرینت و محور عمودی نشاندهنده تلاشساعتهای باقیمانده است. نمودار برنداون باید هرروز بهروزرسانی شود تا کل تلاش برآوردشدهی باقیمانده برای تمام وظایف ناتمام را نشان دهد.
چرا از نمودار برنداون استفاده میکنیم؟
نمودار برنداون باعث میشود کار تیمی قابلمشاهده باشد. درحالیکه تیم مسئولیت هدایت و سازماندهی خود را بهعهده دارد، نمودار برنداون به اعضا نشان میدهد که کجا قرار دارند. گاهی اوقات تیم قادر نیست مجموعهی کامل وظایف موردنیاز برای طراحی، ساخت، یکپارچهسازی و آزمون آیتمهای موردنظر بکلاگ محصول را مشخص کند. در این حالت، تیم میتواند در هر زمانی، وظایف یا Taskهای متناظر با آیتمهای مدنظر بکلاگ محصول را به بکلاگ اسپرینت اضافه کند. بهعنوان مثال، اگر در روز سو، تیم متوجه شود Task ششم انجام نشده، میتواند آن را اضافه کند. نیازی نیست از اضافهکردن آیتمهای ضروری به بکلاگ اسپرینت اجتناب کنیم. درواقع، میتوانیم بکلاگ اسپرینت را با هر وظیفهای مطابقت دهیم که به بهبود کار ما منجر میشود.
نمودار برنداون اسپرینت نیز در همین زمینه کارایی دارد؛ زیرا به ما نشان میدهد برای تکمیل هر آیتم بکلاگ محصول که تیم متعهدشده آن را تا پایان اسپرینت تحویل دهد، چقدر کار باید انجام شود. بهعبارتساده، میتوانیم بگوییم نمودارهای برنداون اسپرینت برای ردیابی میزان کار باقیمانده در بکلاگ اسپرینت مفید واقع میشوند. بهعلاوه، این نمودارها نشان میدهند تیم با چه سرعتی Taskها را کامل میکند و همچنین، زمان دستیابی به اهداف اسپرینت را نیز پیشبینی میکنند.
چه افرادی در جریان نمودار برنداون قرار دارند؟ همهی اعضای تیم توسعه و اسکراممستر و مالک محصول بهنوعی با این نمودار در ارتباط هستند. تیم مسئول شفافسازی «کار درحالپیشرفت» برای ذینفعان است. مالک محصول تصمیم میگیرد برنامهی تحویل محصول باید بهروزرسانی شود یا پروژه طبق برنامه پیش میرود. اسکراممستر نیز همهی اعضا را مطابق با قوانین پایهی توسعهی چابک، مربیگری و پشتیبانی میکند.
نمودار برنداون چه چیزهایی شرح میدهد؟
۱. تخمین کلی تلاشساعتهای انجامشده در هر اسپرینت: محاسبهی تلاشساعتهایی که برای داستانهای کاربر و سایر آیتمهای کاری صرف میشود که تیم به انجام آنها متعهد شده است.
۲. میزان کل تلاش باقیماندهی هر اسپرینت: نمودار برنداون نام خود را از همین گزینه وام گرفته؛ زیرا تیم در هرروز مقداری از کارهای ناتمام را انجام میدهد یا بهعبارتی میسوزاند (Burn Down). بنابراین، هیچ کار انجامنشدهای در روز آخر اسپرینت باقی نمیماند.
۳. تعداد کل روزهای کاری هر اسپرینت: نمایش این متغیر برای تیم ضروری است؛ چراکه باید هرروز میزان کاری را برآورد کند که به آن متعهد شده است. درواقع، این متغیر معادل است با طول مدت اسپرینت.
۴. تلاش ایدهآل: این خط با ارزیابی مقدار دقیق تلاشهای باقیماندهای ترسیم میشود که تیم در هر اسپرینت انجام میدهد. تلاش ایدهآل بهعنوان مرجع تیم شناخته میشود؛ بههمیندلیل، آن را بهصورت خط کاملا مستقیمی میبینیم که از بالای محور Y به محور X کشیده شده است.
۵. تلاش واقعی: خط «تلاش واقعی» میزان تلاش باقیمانده را نشان میدهد. این خط از روزی به روز دیگر تغییر میکند و در تیمهای مختلف، متفاوت است؛ زیرا کاملا به میزان تلاش باقیمانده بستگی دارد. بهعنوان مثال، اگر پس از شروع اسپرینت، آیتمهای بیشتری به بکلاگ اسپرینت اضافه شود، شیب این خط صعودی میشود. برعکس، ازآنجاکه در پایان هرروز کارهای ناتمام کمتر میشود، شیب خط نیز نزولی خواهد بود.
چگونه نمودار برنداون را بخوانیم؟
همیشه میتوانیم خط روند را باتوجهبه دادههای تاریخی ارزیابی کنیم. همچنین با استفاده از یک خط روند، برآورد میکنیم با فرض ثابتبودن محدوده و سرعت فعلی، چه زمانی کار را بهاتمام میرسانیم.
همانطورکه در نمودار بالا میبینید، سه خط نمودار برنداون نشاندهندهی سه موقعیت متمایز هستند:
۱. اگر خط روند محور افقی را نزدیک به پایان دورهی اسپرینت قطع کند، نتیجهگیری میکنیم که همهی کارها را «بهموقع» تکمیل کردهایم.
۲. اگر خط روند محور افقی را در سمت چپ نقطهی پایان اسپرینت قطع کند، نتیجه میگیریم که وظایف را «زود» بهپایان رساندهایم. در این حالت، پس از بررسی همهی وظایف قبلی، میتوانیم کار بیشتری بپذیریم.
۳. اگر خط روند سمت راست نقطهی پایان اسپرینت فرود آید؛ یعنی در تکمیل وظایف تأخیر خواهیم داشت. ممکن است کارهای بسیار زیادی بهعهده گرفته باشیم یا شاید کار را با سرعت موردانتظار پیش نبردهایم. گاهی نیز هر دو اتفاق باهم رخ میدهد. در این حالت، باید بیشتر بررسی کنیم تا ریشهی دادهها و چیزهایی را درک کنیم که اشتباه انجام شده است.
پس از ارزیابی خطوط روند، به دادههایی دست مییابیم که به ما نشان میدهند چگونه جریان کاری را درون اسپرینت مدیریت میکنیم. بهعلاوه، نمودار برنداون در ارزیابی موارد زیر نیز به ما کمک میکند:
- تیم چقدر خوب برنامهریزی کرده است؟
- عملکرد تیم دربرابر داستانهایی که در اسپرینت برنامهریزی شده، چقدر کارا و مؤثر است؟
- آیا تیم خود را سازماندهی و با وحدت کار میکند؟
- تیم چه اصلاحات و تعدیلاتی میتواند انجام دهد؟
مزایای نمودار Burn-Down اسپرینت
- برنامهریزی کامل و ردیابی
- کاهش ریسک
- ارتباطات مؤثر
اشتباهات رایجی که مردم در زمان استفاده از نمودارهای Burn-Down مرتکب میشوند، عبارتاند از:
- ترسیم نادرست «تلاش صرفشده» و «تلاش باقیمانده»
- فراموشکردن و بهروزرسانینکردن زمان باقیمانده برای انجام وظای، که به دادههای نامعتبر منتهی میشود.
- انتخاب وظایف بیشازحد، بهطوریکه امکان اجرای آنها وجود ندارد. درنتیجه، ردیابی پیشرفت پروژه نیز با مشکل مواجه میشود.
بهطورکلی، نمودار برنداون به تیم در سطح فردی انگیزه میدهد و چشمانداز خوبی برای فعالیتهای تصمیمگیری و ردیابی کار فراهم میکند و تیم را قادر میسازد در همان مراحل اولیه، موانع کار را شناسایی کند.
تقریبا در همهی اسپرینتها، اعضای تیم اسکرام بهکمک نمودار برنداون بهآسانی با هر تغییری سازگار میشوند.