اسکرام (Scrum) یکی از روشهای مدیریت پروژه و روشی توسعهای در رویکرد چابک یا اجایل (Agile) است که در حوزه توسعه نرمافزار و بر اساس فرآیندهای تکراری (Iterative) و افزایشی (Incremental) استفاده میشود. هدف اولیه اسکرام برآورده کردن نیاز مشتری در محیطی که در آن ارتباطات شفاف و مسئولیت جمعی و پیشرفت مستمر است. فرایند توسعه یک محصول با یک ایده کلی از چیزی که قرار است ساخته شود، شروع میشود. بعد از آن فهرستی از ویژگیهای که بر اساس اولویت مرتب شده (بکلاگ) توسط مالک محصول (Product Owner) آماده میشود.
تاریخچه روش اسکرام (Scrum)
برای اولین بار و در سال ۱۹۸۶ یک مقاله در مجله هاروارد بیزینس ریویو (HBR) با عنوان “The New New Product Development Game” توسط Hirotaka Takeuchi و Ikujiro Nonaka منتشر شد. این مقاله توضیح میدهد که چگونه شرکتهایی مانند هوندا، کانن و فوجی – زیراکس برای توسعه محصولات خود در سطح جهانی از رویکردی مقیاسپذیر و مبتنی بر تیم در مسیر توسعه محصول خود استفاده میکنند. این رویکرد بر اهمیت توانمندسازی تیمهای خودسازمانده تاکید میکرد.
این مقاله تأثیری زیادی بر توسعه بسیاری از مفاهیمی داشت که باعث پیدایش چیزی شد که ما اکنون آن را روش اسکرام مینامیم. اسکرام اصطلاحی است که از ورزش راگبی گرفته شده است و به نحوه شروع مجدد بازی پس از خطا یا زمانی که توپ از بازی خارج میشود، اشاره دارد.
در سال ۱۹۹۳، جف ساترلند و تیمش در شرکت Easel با ترکیب مفاهیم مطرح شده در مقاله منتشر شده در سال ۱۹۸۶ و استفاده از مفاهیم توسعه شی گرا، کنترل فرآیند تجربی، فرایندهای توسعه تکراری و افزایشی و فرآیندهای نرمافزاری، فرآیند اسکرام را برای استفاده در فرآیندهای حوزه توسعه نرمافزار برای بهبود بهرهوری و همچنین توسعه سیستمهای پیچیده و پویا درست کردند.
جف ساترلند ( موسس و مدیرعامل شرکت اسکرام):
«اگر کاری را نصفه انجام دادید، در حقیقت هیچ کاری انجام ندادهاید.»
روشها و فرآیندهای اسکرام
روش اسکرام تکامل یافته مدیریت پروژه چابک است. این متدولوژی مبتنی بر مجموعهای از اقدامات و نقشهای کاملا تعریف شده است که باید در طول فرآیند توسعهنرم افزار مشارکت دارند. اسکرام یک روش منعطف است در زمینههایی که همه اعضای تیم محصول روی آنها توافق دارند، استفاده از ۱۲ اصل چابک را گرامی میدارد.
این روش در بخشهای موقت، کوتاه و دورهای به نام اسپرینت (Sprint) اجرا میشود؛ این بازه زمانی معمولاً بین ۲ تا ۴ هفته است که بر مبنای بازخورد و تفکر است. هر اسپرینت یک ماهیت جداگانه دارد، یعنی یک دستاورد کامل ارائه میکند، جزئی از محصول نهایی که باید بتواند در صورت درخواست مشتری با کمترین تلاش ممکن تحویل داده شود.
فرایندهای اسکرام یک نقطه شروع دارند، فهرستی از اهداف و نیازهایی که تشکیل دهنده طرح پروژه هستند. این مشتری پروژه است که این اهداف را با در نظر گرفتن تعادل ارزش و هزینه آنها اولویتبندی میکند، به این ترتیب بازههای تکرار و مواردی که لازم است تحویل داده شوند، تخمین زده میشوند.
یک شرکت برای توسعه محصولات خود، برآورده کردن تقاضای کیفی بازار و تحویل سریع خروجیها با هزینههای کمتر باید خیلی چابک و انعطافپذیر باشد تا بتواند به چرخههای توسعه کوتاهی دست یابد که بتواند تقاضای مشتریان را بدون تاثیر بر کیفیت خروجی کار برآورده کند.
از روش اسکرام بیشتر در توسعه نرمافزار استفاده میشود، اما سایر حوزهها هم میتوانند با پیادهسازی این روش در مدلهای سازمانی خود در تیمهایی مثل فروش، بازاریابی و منابع انسانی و غیره از مزایای این روش بهره ببرند.
نقشهای کلیدی در روش Scrum
در روش اسکرام تمرکز تیم روی توسعه یک نرمافزار با کیفیت است. تعداد اعضای یک تیم اسکرام بین ۹ تا ۵ نفر است. در تیمهای اسکرام یک رهبر وجود ندارد بلکه همه تیم به صورت خودسازمانده کار و برای حل مشکلات تلاش میکنند. یک تیم اسکرام از نقشهای زیر تشکیل شده است:
اسکرام مستر (Scrum master)
اسکرام مستر شخصی است که تیم را هدایت میکند و آنها را برای تطبیق با قوانین و فرآیندهای متدولوژی اسکرام راهنمایی میکند. او سعی میکند تا موانع کاهش دهد و با مالک محصول برای به حداکثر رساندن نرخ بازگشت سرمایه (ROI) همکاری میکند. او همچنین مسئول به روز نگه داشتن فرایندهای اسکرام است و در صورت نیاز تیم پروژه به منتور، کوچ یا آموزش این امکان را در اختیار آنها قرار میدهد.
جف ساترلند:
«وظیفه اسکرام مستر این است که تیم را به سمت بهبود مستمر هدایت کند و به طور منظم بپرسد: چگونه میتوانیم کاری را که انجام میدهیم، بهتر کنیم؟»
مالک محصول (Product Owner)
مالک محصول نماینده ذینفعان و مشتریانی است که از نرمافزار استفاده میکنند. مالک محصول روی بخش تجاری پروژه تمرکز میکند و مسئولیت بازگشت سرمایه (ROI) پروژه را بر عهده دارد. او چشم انداز پروژه را برای تیم تفسیر میکنند، مزایایی داستانهای کاربر (User Story) را برای قرار گرفتن در بکلاگ محصول تایید و آنها را به طور منظم اولویتبندی میکنند. در پروژههای اسکرام مالک محصول روی مشخص کردن ویژگیهایی از محصول باید برای توسعه داده شود، چه فیچری و به چه ترتیبی پیادهسازی شود و همچنین از میان برداشتن هر مانعی که کار تیم توسعه را مختل کند، تمرکز دارد.
تیم
گروهی از متخصصان با دانش فنی لازم برای توسعه پروژه که با یکدیگر همکاری میکنند و داستانهای کاربری را که در شروع هر اسپرینت برای انجام آنها متعهد شدند، انجام میدهند.
مزایای روش Scrum چیست؟
اسکرام مزایای زیادی نسبت به سایر روشهای چابک یا اجایل دارد. در حال حاضر اسکرام پرکاربردترین و قابل اعتمادترین چارچوب مرجع در صنعت توسعه نرمافزار است. در ادامه به بعضی از مزایای شناخته شده روش اشاره میکنیم:
مقیاسپذیری آسان
فرآیندهای اسکرام تکراری (Iterative) هستند و کارها در یک بازه زمانی مشخص انجام میشوند. این کار باعث میشود که در بازه زمانی مشخص، تیم راحتتر روی انجام کارهای از پیش تعیین شده تمرکز کند. تنها مزیت این کار دست پیدا کردن به نتایج بهتر و متناسب با نیازهای کاربر نیست، بلکه به تیم این توانایی را میدهد که ماژولها را از منظر عملکرد، طراحی، محدوده (Scope) و ویژگیهایی مثل نظم، شفافیت و سادگی در استفاده کردن بسنجند.
برآورده کردن انتظارات
مشتری انتظارات خود را مشخص میکند که نشاندهنده ارزشی است که هر الزام با توجه به تاریخچه پروژه به همراه دارد. تیم این الزامها و انتظارات را برآورده میکند. با کمک این اطلاعات مالک محصول اولویت کارها را مشخص میکند. مالک محصول به صورت منظم و در جلسه مرور اسپرینت (Sprint Review) یا دموی اسپرینت (Sprint Demo) تأیید میکند که این الزامات برآورده شده است یا نه و بازخورد مناسب را به تیم میدهد.
انعطافپذیری در برابر تغییرات
انعطافپذیری در برابر تغییرات یعنی نشان دادن واکنش سریع نسبت به تغییر الزامات و نیازهای مشتری یا تحولات بازار. این روش برای وفق دادن تغییر در مواقع لزوم که لازمه پروژههای پیچیده هستند، طراحی شده است.
کاهش زمان عرضه محصول به بازار (Time To Market)
مشتری میتواند قبل از آماده شدن کامل محصول، از مهمترین قابلیتهای محصول پروژه استفاده کند.
بالاتر رفتن کیفیت نرمافزار
روش انجام کار و الزام به آماده کردن یک نسخه کاربردی پس از هر تکرار (Iteration) یا اسپرینت، به توسعه یک نرمافزار با کیفیت بالاتر کمک میکند.
پیشبینی کارآمد و به موقع
با استفاده از روش اسکرام میانگین موفقیت تیم را در هر اسپرینت و تکمیل تعداد Story Point ها متوجه میشویم. در نتیجه، میتوان تخمین زد که چه زمانی یک کارکرد یا ویژگی خاص که هنوز در بکلاگ است، آماده خواهد شد.
کم شدن ریسک
انجام دادن کارهایی با ارزش بیشتر و با توجه به الویتبندیها از شروع اسپرینت و همچنین مطلع بودن همه افراد تیم پروژه از روند انجام کارها و میزان پیشرفت پروژه ریسک را کاهش میدهد.
رویدادها و جلسههای مهم در Scrum
هر رویداد یا جلسهای در اسکرام باعث هماهنگی جنبههای مختلف در فرآیند، محصول، پیشرفت میشود یا روابط تسهیل میکند. در ادامه تعدادی از مهمترین رویدادهای اسکرام را با هم بررسی میکنیم.
اسپرینت (Sprint)
اسپرینت واحد اصلی کار برای تیم اسکرام است. این ویژگی اصلیست که نشاندهنده تفاوت بین اسکرام و سایر مدلهای توسعهای چابک یا اجایل است.
جلسه برنامهریزی اسپرینت (Sprint Planning)
هدف جلسه برنامهریزی اسپرینت این است که مشخص کنیم، چه کاری و چگونه قرار است در اسپرینت انجام شود. این جلسه در ابتدای هر اسپرینت برگزار میشود و رویکرد ما را برای انجام مراحل و مواردی که در بکلاگ تعریف شده است، مشخص می کند. هر اسپرینت ترکیبی از ویژگیهای مختلف است.
جلسه روزانه اسپرینت (Daily Scrum) یا (Daily Standup Meeting)
هدف از اجلسه اسکرام روزانه ارزیابی پیشرفت و روند کارها تا پایان اسپرینت، همگامسازی فعالیتها و ایجاد یک برنامه برای ۲۴ ساعت آینده است. جلسه Daily Standup Meeting کوتاه است و هر روز در طول دوره اسپرینت برگزار می شود. در این جلسه هر یک از اعضای تیم به صورت جداگانه به سه سوال مهم پاسخ میدهند: دیروز چه کاری کردم؟ امروز قرار است چه کار کنم؟ به چه کمکی نیاز دارم؟ اسکرام مستر هم باید سعی کند تا مشکلات و موانع پیش آمده را حل کند.
جلسه بازبینی اسپرینت (Sprint Review Meeting)
هدف جلسه بازبینی اسپرینت این است که نشان دهد چه کارهایی با توجه به بکلاگ و در راستای تحویل محصول در آینده کامل انجام شده است. اسپرینتی که به پایان رسیده است، بازبینی میشود. باید یک پیشرفت واضح و ملموس نسبت به گذشته در محصولی که قرار است به مشتری ارائه شود، وجود داشته باشد.
جلسه بازاندیشی اسپرینت (Sprint Retrospective)
تیم اهداف تکمیل شده اسپرینتی که به پایان رسیده است را بررسی می کند، نکات خوب و بد را یادداشت میکند اشتباهات دوباره تکرار نشود. این مرحله در خدمت اجرای بهبودها از نقطه نظر فرآیند توسعه است. هدف از اسپرینت گذشتهنگر شناسایی بهبودهای احتمالی فرآیند و ایجاد طرحی برای اجرای آنها در اسپرینت بعدی است.
این مرحله برای اجرای بهبودهای فرایندی از منظر توسعه به کار گرفته میشود. هدف از برگزاری جلسه بازاندیشی اسپرینت شناسایی امکان بهبود در فرایندها و درست کردن یک برنامه برای اجرای آنها در اسپرینت بعدی است.
بن لیندرز خالق بسیاری از ابزارهای مربیگری چابک و رئیس سابق شرکت SPIder:
«هدف جلسه بازاندیشی اسپرینت کمک به تیمها برای بهبود مستمر شیوه کارشان است.»
مستندات و اسناد مهم در روش اسکرام
مستندات اسکرام برای تضمین وجود شفافیت و دسترسی به اطلاعات کلیدی در تصمیمگیری طراحی شدهاند. در ادامه مقاله بعضی از این اسناد مهم را با هم بررسی می کنیم:
بک لاگ محصول (Product Backlog)
بک لاگ محصول (PB) فهرستی است که در آن همه چیزهایی که محصول برای جلب رضایت مشتریان بالقوه به آن نیاز دارد، جمعآوری شده است. بک لاگ محصول توسط صاحب محصول آماده میشود و کارها در آن با توجه به آنچه که برای کسب و کار اهمیت بیشتر یا کمتری دارد، اولویتبندی میشوند.
بک لاگ اسپرینت (Sprint Backlog)
بک لاگ اسپرینت (SB) زیرمجموعه ای از موارد موجود در بک لاگ محصول است که توسط تیم انتخاب میشود تا در طول اسپرینت پیشرو روی آن کار کنند. تیم مدت زمان هر اسپرینت را تعیین میکند. معمولاً بک لاگ اسپرینت بر روی بردهای فیزیکی به نام برد اسکرام نمایش داده میشوند. این کار باعث میشود وضعیت و میزان پیشرفت پروژه برای همه افراد درگیر در پروژه و یا کسانی که در تیم نیستند، در یک نگاه قابل مشاهده باشد.
افزایش (Increment)
افزایش عبارت است از مجموع همه وظایف (Tasks)، موارد استفاده (Use Case)، داستانهای کاربر(User Stories)، بک لاگهای محصول و هر بخشی که در طول اسپرینت توسعه یافته است و در قالب نرمافزار در اختیار کاربر نهایی قرار میگیرد.
برنامهریزی در روش اسکرام
جلسه برنامهریزی اسپرینت در ابتدای هر اسپرینت برگزار میشود. همه اعضای تیم، یعنی مالک محصول، اسکرام مستر و تمام تیم توسعه در این جلسه شرکت میکنند. همه اعضای تیم اسکرام باید متوجه شوند و مشخص کنند که باید به هدفی در اسپرینت برسند و هدف اسپرینت را تعریف کنند. بعد از آن، تیم توسعه باید یک برنامه کاری برای دستیابی به هدف طراحی کند. این برنامهریزی باید به شما این امکان را بدهد که ببینید آیا هدف اسپرینت و حجم کاری آن با توجه به مدت زمان تعیین شده برای اسپرینت که معمولا ۲ تا ۴ هفته است، تناسب دارد؟
مشتری فهرستی از آن چه که باید در اسپرینت حاصل شود و الزامات محصول قابل تحویل را ارائه میدهد. بعد از آن شما باید با تیم توسعه این فهرست را ارزیابی و بررسی کنید تا مشخص شود، چه مواردی از فهرست در این اسپرینت قابل انجام است.
هم اسکرام مستر و هم مالک محصول باید برای روشن کردن جنبههای مختلف الزامات درخواستی مشتری همکاری کنند. در نهایت، تیم توسعه باید توضیح دهد که چگونه کارهای تیم را برای دستیابی به هدف اسپرینت سازماندهی خواهد کرد.
شش اصل مهم اسکرام
روش اسکرام حول شش اصل کلیدی متمرکز است که میتوان از آنها برای شکل دادن به نحوه گردش کار (Workflow) در تیم استفاده کرد. این شش اصل عبارتند از: کنترل تجربی فرآیند، خود سازماندهی، مدیریت زمان (Time Boxing)، همکاری، در اولویت دادن کارها بر اساس ارزشمندی و توسعه مبتنی بر تکرار (Iterative).
۱- کنترل تجربی فرآیند
این اصل اولین و مهمترین اصل اسکرام است که خود سه بخش مهم و کلیدی دارد که شامل شفافیت، بازرسی و انطباقپذیری است. در دسترس بودن اطلاعات امکان خطا در فرایندها را کاهش میدهد. همچنین شما باید زمان کارفی را برای بازرسی فرایندها و محصول خود در نظر بگیرید تا مطمئن شوید با الزامات و استانداردهای تعریف شده همخوانی دارد. نباید فراموش کرد که تغییرات در روش اسکرام اجتنابناپذیر است و شما و تیم پروژه باید بتوانید با این تغییرات هماهنگ شوید.
۲- خود سازماندهی
در بستر اسکرام، اصل خودسازماندهی برای اطمینان از اینکه اعضای تیم مسئولیت و مالکیت پروژهای را که روی آن کار میکنند بر عهده می گیرند، کلیدی است. یک تیم کاملاً خودسازمانده میتواند بدون نیاز به کمک زیادی از سمت مدیران کار کنند و ابتکار عمل را برای انجام وظایفی که نیاز به تکمیل فوری دارند، به عهده بگیرد. نکته کلیدی در مورد خود سازماندهی تیم این است افراد تیم به پروژه اهمیت دهند.
۳- مدیریت زمان (Time Boxing)
مدیریت زمان یا Time-boxing بخشی از روش اسکرام است که در آن محدودیتهای زمانی دقیق به شیوههای مختلف در طول پروژه اعمال میشود. این مدیریت زمان بیشتر مربوط به تعریف اسپرینتهای با طول ۲ تا ۴ هفته برای اجرایی فهرستی از کارهای تعریف شده است.
۴- همکاری
خیلی مهم است، همه اعضای تیمی که روی یک پروژه کار میکنند، بدانند سایر اعضای تیم روی چه چیزی کار میکنند و رابطه نزدیکی با ذینفعان پروژه که در نهایت باید از محصول نهایی راضی باشند، داشته باشند.
۵- الویتبندی کارها بر اساس ارزشمندی
تیمهای اسکرام خودشان را درگیر انجام همه کارهای مورد نیاز برای توسعه محصول نمیکنند. آنها کارها را بر اساس ارزش و اولویتی که دارند از بک لاگ انتخاب میکنند و بعد از آن اقدامات لازم را انجام میدهند.
۶- توسعه مبتنی بر تکرار (Iterative)
پروژههایی که بر اساس فرآیندهای تکراری (Iterative)هستند به بخشها کوچکتر یا تکرارها (ّIteration) تقسیم میشوند. یعنی یک پروژه بزرگ به مجموعهای از پروژههای کوچکتر تبدیل میشود که تمرکز کردن روی آنها آسانتر است. در اسکرام به آنها اسپرینت گفته می شود.
۵ ارزش مهم اسکرام
در روش اسکرام، این ارزشها به عنوان راهنمای رفتار فردی و تیمی عمل میکنند و هدف نهایی آنها تقویت همکاری و افزایش شانس موفقیت پروژه است. این ۵ ارزش شامل تعهد، تمرکز، پذیرا بودن، احترام و شجاعت هستند که در ادامه هر کدام را به اختصار توضیح میدهیم.
۱- تعهد
اولین ارزش اسکرام تعهد است. شاید این ارزش روی کاغذ ساده به نظر برسد، اما آیا هر روز با نگرش مثبت سرکار میآیید؟ ددلاینها را رعایت می کنید؟ دستورالعملها را دنبال میکنید؟ تعهد یعنی به اهدافی که به عنوان یک تیم توسعه تعیین کردید، پایبند بمانید.
۲- تمرکز
تمرکز یعنی ماندن روی مسیر تعیین شده و کمک به سایر اعضای تیم برای انجام همین کار است. یکی از بخش کلیدی روش اسکرام اسپرینت است که یک دوره کاری محدود و تعریف شده برای تکمیل یک سری وظایف مشخص است. اسپرینتها به متمرکز شدن تیمهای توسعه کمک میکنند. برای تمرکز روی این وظایف، تیم شما باید حواسپرتیها را از بین ببرد و تا حد امکان از انجام چند کار همزمان دوری کند.
۳- پذیرا بودن
پذیرا بودن به معنای این است که افراد بتوانند با سایرین بدون تعصب و با ذهن باز ارتباط برقرار کنند. سعی کنید در تیم فرهنگی به وجود آوردید که از ایدهها و سبکهای جدید کار استقبال کند؛ چون انجام این کار میتواند به پیشرفت تیم کمک کند.
۴- احترام
احترام یعنی با افراد بدون توجه به سن، تحصیلات، موقعیت اجتماعی و غیره یکسان رفتار کنید. تنها چیزی که باید اهمیت داشته باشد این است که آنها چگونه با هم برای رسیدن به اهداف تیم همکار میکنند. احترام گذاشتن به مشتریان و ذینفعان هم خیلی مهم است، چون در این صورت شما میتوانید برای برآورده کردن نیازهای آنها بهتر عمل کنید.
۵- شجاعت
شجاعت را با خارج شدن از نقطه امن خود نشان دهید. برای رسیدن به موفقیت، با متعهد ماندن به هدف به جای تمرکز بر روی خود، می توانید مشکلات چالشبرانگیز را حل کنید و نتایج غیرمنتظرهای به دست آورید. در مواجهه با ناشناختهها شجاع باشید و هر جا که لازم بود، سوال بپرسید.
جمعبندی
امیدواریم بعد از خواندن این مقاله دیدگاه روشنتری از این که «اسکرام چیست؟»، «اسکرام چه مزایایی دارد؟»، «نقشهای کلیدی در اسکرام چیست؟»، «چه جلسات و مستنداتی برای اجرای روش اسکرام ضروری است؟» و روشهای برنامهریزی در اسکرام و مواردی از این دست پیدا کرده باشید. همچنین با مفهوم اسپرینت که اساسیترین تفاوت اسکرام با سایر روشهای اجایل هست، آشنا شده باشید.
دیدگاهتان را بنویسید