به نام خدا
در این مقاله قصد دارم شما را کمی با مزایای اسکرام آشنا کنم. در ابتدا مقدماتی را عرض نموده و سپس وارد بیان موارد خواهم شد.
- قطعا داشتن روال برای مدیریت تیم های توسعه امری ضروری است. هر روالی اعم از XP، واترفال، اسکرام، کنبن و… بهتر از بی روالی است. نداشتن یک چارچوب مشخص باعث سردرگمی دولوپر ها، دلسردی مشتریان و کلافگی مدیریان و ذینفعان خواهد شد.
- لطفا بعد از خواندن این مقاله بلافاصله سراغ اسکرام نروید. و آن را وحی منزلی از جانب خداوند ندانید. اسکرام برای هر تیمی و هر شرایطی ساخته نشده است. قبل از انتخاب چارچوب مناسب برای مدیریت تیم خود اولا روش های مختلف را مطالعه کرده و ثانیا شرایط تیم خود را کامل در نظر بگیرید و در پایان از افرادی که تجربه ی این کار را دارند مشورت بخواهید، تا بتوانید مناسب ترین و بهترین روش را انتخاب کنید. اسکرام برای فضاهای پیچیده ای که نیاز به فیدبک گیری مستمر از بازار یا مشتری حس می شود، می تواند بسیار کمک کننده باشد.
- اسکرام یک چارچوب است و پیاده سازی آن علاوه بر دانش نیازمند تجربه گرایی، صبر و حوصله، استمرار و بهبود مستمر است. توجه داشته باشید که اسکرام یک روش نیست که اگر مانند دستور آشپزی مراحل آن را از یک تا n به درستی اجرا کردید شاهد تحول در تیم تان شوید و بتوانید ادعا کنید تیم شما چابک (Agile) شده است. اسکرام یک چارچوب است که نیاز به فرهنگ سازی در تیم دارد.
خب برویم سراغ مزایای اسکرام:
با توجه به جمیع مقالاتی که مطالعه کرده ام بهتر دانستم برای راحتی شما مزایا را در ۳ دسته ی کلی مطرح کنم.
الف) مزایای اسکرام برای مدیران و ذینفعان و سرمایه گذاران:
مدیری که چارچوب اسکرام را برای تیم خود انتخاب کند هزینه های تولید را کاهش داده است. علاوه بر این ارائه ی سریع تر محصول به مارکت و کیفی تر کردن آن موجب افزایش سرعت بازگشت سرمایه (ROI) می گردد. از دیگر مزایای اسکرام برای مدیران و ذینفعان افزایش قدرت کنترل پروژه می باشد. شاید بپرسید این اتفاقات به چه صورت رخ می دهد و اسکرام برای محقق شدن این مزایا چه راهکاری پیشنهاد می دهد. در زیر به بررسی روال های مرتبط می پردازیم:
- با توجه به محدود بودن تایم هر اسپرینت (بازه های تکرار شونده در اسکرام که برنامه ریزی و بررسی و بازبینی برای هر کدام از آن ها انجام می شود. این بازه می تواند بین یک هفته تا ۴ هفته باشد) مالک محصول مجبور است مهمترین تسکها و با اولویت ترین و با ارزش ترین فیچر ها را برای تیم پلن کند. در نتیجه کارهای بی اهمیت و کم ارزش تر خود به خود از صف توسعه و تولید حذف می شوند.
- در پایان هر اسپرینت محصول رلیس گرفته شده، قابل تحویل است و برای مدیران، ذینفعان و مشتریان دمو می شود. با توجه به کوتاه بودن مدت زمان دوره های اسپرینت این فیدبک گیری مستمر باعث می شود در صورت بروز انحراف از مسیر اصلی کل تیم به سرعت متوجه شده و با توجه به منعطف بودن برنامه ریزی در اسکرام خیلی سریع به راه اصلی بازگردند. همیشه یادتان باشد اگر قرار باشد یک پروژه یا یک محصول به شکست بخورد با روال اسکرام زودتر به شکست می خورد و این برای سرمایه گذاران یک مزیت محسوب می شود چون ریسک کمتری کرده و سرمایه ی کمتری را از دست داده اند.
- با توجه به روال پوینت بدهی به استوری ها، مدیران پروژه قادر خواهند بود تخمین های به نسبت دقیقی از زمان تحویل و هم چنین هزینه های لازم برای تکمیل پروژه داشته باشند.
- با اجرای جلسات دیلی اسکرام حتی در لحظه انجام استوری ها و تسک ها هم روند انجام پروژه قابل مشاهده و مدیریت است.
- در اسکرام نیازی به زمان طولانی و تحویل پروژه به صورت یک محصول کامل در پایان چند ماه نیست بلکه در پایان هر اسپرینت یک محصول با ارزش و قابل استفاده در دسترس مدیران و مشتری قرار می گیرد. به صورت کلی بر خلاف روش های مدیریت قدیمی، در اسکرام تاکید روی محصول است، نه پروژه. این محصول است که هر اسپرینت فیچر های ارزشمندی را در خود می بیند و جهت فیدبک گرفتن به دست مشتری می رود.
- افزایش سرعت تولید نرم افزار از طریق روال های استاندارد اسکرام مثل تست اتومات (CI) و مفهوم انجام شده (DOD). DOD مخفف Definition Of Done می باشد و شاید در فرصتی دیگر و در غالب یک مقاله ی دیگر به آن پرداختم. CI هم مخفف Continuous Integration بوده که عزیزان دولوپر حتما با آن آشنایی دارند.
ب) مزایای اسکرام برای مشتریان:
از مهمترین عوامل موفقیت یک پروژه جلب رضایت مشتری یا مشتریان است. استفاده از چارچوب اسکرام موجب افزایش رضایت مشتری و خوشحال تر بودن او می شود. این اتفاق از طریق راه های زیر رخ می دهد:
- با توجه به محدود بودن زمان اسپرینت و محدود بودن توانایی تیم مجبور هستیم اولویت بندی کنیم. اولویت بندی موجب می شود نیازهای اصلی مشتری را زودتر انجام دهیم و به او تحویل دهیم.
- بازه های اسپرینت کوتاه و معمولا دو هفته ای است و از طرفی روال های موجود در تیم های اسکرام که در قسمت قبل ذکر شد موجب می شود سرعت تولید بالا باشد و هر اسپرینت محصولی آماده ی تحویل به مشتری داشته باشیم.
- مشتری در پایان هر اسپرینت فیدبک های خودش را اعلام کرده و در اسپرینت بعدی نتایج آن را می بیند. این کار علاوه بر رضایت و خوشحالی مشتری موجب می شود محصول در حال تولید Align to Market شود.
- جلسات ثابت و مستمر در اسکرام موجب ارتباط موثر بین مدیران و مشتریان می شود. همچنین این احساس به مشتری منتقل می شود که بخشی از تیم توسعه است و همه با او همراه هستند.
- در تیم های اسکرام یک نفر به عنوان مالک محصول ایفای نقش می کند. با توجه به اینکه گاهی مشتری اطلاع دقیق از نیازها و درخواست های خود ندارد، حضور این فرد در تیم و ارتباط او با مشتری موجب می شود نیازهای اصلی مشتری بهتر و دقیق تر شناسایی شود.
- به جای اینکه لیست بلند بالایی از مشتری گرفته شود و تا چند ماه ارتباطی با او نداشته باشیم، در اسکرام مشتری می تواند هر اسپرینت خروجی کار تیم را ببیند و با آن کار کند. محصولی که هر اسپرینت کامل تر و با کیفیت تر می شود.
ج) مزایای اسکرام برای اعضای تیم اسکرام (برنامه نویسان، اسکرام مستر، مالک محصول):
اعضای تیم اسکرام در صورتی که بتوانند به درستی این چارچوب را در تیم خود پیاده سازی و تمرین کنند به فضایی شادتر و روحیه ای بالاتر دست پیدا خواهند کرد. در این خصوص تنها به ذکر چند مورد بسنده می کنم:
- تیم توسعه در پایان اسپرینت و در جلسه ی Sprint Review محصول بهبود یافته را برای مشتری دمو می کنند. مشتری هم شروع به استفاده کرده تا فیدبک های خود را ارائه دهد. دیدن اینکه محصول تولید شده در حال استفاده است و جزئیات آن چقدر برای مشتری اهمیت دارد باعث ایجاد انگیزه و شادتر شدن برنامه نویسان می شود.
- با توجه به نحوه ی برنامه ریزی در تیم های اسکرام که در قسمت های قبلی ذکر شد، فیچر های ارزشمند به محصول اضافه می شود. لذا برنامه نویسان فقط کدی می زنند که در برنامه استفاده می شود نه اینکه بعد از مدتی به زباله دان منتقل شود.
- از ویژگی های تیم اسکرام خودسازمانده بودن (Self-Organize) است. یعنی در بروز مشکلات و چالش ها، خود تیم با خرد جمعی تصمیم گیری کرده و راه حل مناسب را اجرا می کند. این مورد باعث می شود اعضای تیم خلاق و تجربه گرا باشند و با روحیه ی بالاتری کد بزنند.
- نقشی به نام اسکرام مستر در تیم حضور دارد که دو مورد از وظایفش رفع موانع پیش روی تیم در رسیدن به چابکی و سپر (Shield) تیم بودن در برابر مشکلات خارجی می باشد. حضور این فرد و انجام این موارد موجب آرامش تیمی و افزایش تمرکز آنها روی تولید محصول می شود.
- از دیگر ویژگی های تیم اسکرام فرا وظیفه گرایی (Cross-Functional) می باشد. به این معنا که صرفا متوقف به تسک های خود نیستند و در صورت بروز چالش به سراغ منابع آموزش می روند و با افزایش دانش خود تسک را به سرانجام می رسانند. به همین دلیل است که اکثر توسعه دهندگانی که چند سال در تیم های اسکرامی کار کرده باشند تخصص های متنوعی علاوه بر فیلد اصلی خود دارند مثل سرور، تحلیل، طراحی گرافیکی، دیتابیس، UX و … . اینکه برنامه نویس هر روز چیزهای جدیدتری فرابگیرد و احساس پیشرفت داشته باشد از مزایای تیم اسکرام می باشد.
- با توجه به جلسات روزانه و اسپرینتی که در اسکرام از قواعد اصلی می باشد، کل تیم توسعه دائما به صورت چهره به چهره با هم در ارتباط هستند و این موجب ایجاد ارتباط موثر و هم دلی در بین آن ها می شود.
- تیم های اسکرام توسط خودشان مدیریت می شود، نه از بالا. پس آن ها به قوانینی عمل می کنند که خودشان وضع کرده اند لذا احساس هم تیمی و حس مالکیت به تیم در تیم های اسکرام بسیار بالاتر است.
علاوه بر موارد بالا می توان مزایای دیگری هم در اسکرام یافت که به دلیل متفرفه بودن آنها و طولانی شدن مقاله از بیان آنها خودداری می کنم.
با تشکر از توجه شما
مجتبی عطاران