به شکل خلاصه می توان گفت اسکرام روشی تجربه گرا جهت تولید محصولاتی است که به علت پیچیدگی و غیر قابل پیشبینی بودن برخی پارامترهای مرتبط با تولید و نگهداری محصول ابداع شده است.

 روش هایی که از اوایل قرن بیستم جهت تولید انواع محصولات مثل ماشین ها و سپس در جنگ جهانی دوم در تولید جنگ افزارها مورد استفاده قرار می گرفت در تولید محصولات نرم افزاری غیر قابل استفاده هستند.

در طراحی خط تولید محصول، اصل بهینه سازی در تولید تعداد بالا از یک محصول در نظر گرفته می شود. جهت تغییر در نحوه تولید و یا بهبود یک محصول، کافیست بخشی از خط تولید را تغییر داد، همچنین جهت کنترل کیفی محصول تولید شده می توان فرایند مشخصی را در نظر گرفت و نتیجه فرآیند برای تمام محصولات تولید شده باید مشابه باشد در غیر این صورت محصول تولید شده با سایر محصولات متفاوت بوده و دچار نقص است.

 این مثال درباره انواع محصولاتی که باید کیفیت مشابهی داشته باشند و در تیراژ بالا تولید شوند مصداق دارد، مانند تولید شیر پاستوریزه یا رب گوجه فرنگی.

در تولید محصولات نرم افزاری، محصولات در حال تولید دارای مشخصات ثابتی نیستند، به عنوان مثال شما در تولید یک فروشگاه اینترنتی شما یکبار قابلیت مدیریت سبد خرید مشتری را توسعه می دهید و سپس نیازمندی دیگر باید بررسی و پیاده سازی شود، در نتیجه در هر لحظه در خط تولید نرم افزار شما، محصول متفاوتی در حال تولید است و هر محصول فقط یکبار تولید می شود، و ساختارهای کنترل کیفی باید به شکلی طراحی شوند که بتوانند محصولاتی متفاوت تولید شده را بررسی و تعیین کیفیت نمایند.

این مساله باعث غیر قابل استفاده شدن ساختارهای سنتی تولید شده و تیم های نرم افزاری نیازمند رویکرد جدیدی در مدیریت تولید راهکاری نرم افزاری هستند.

 

اسکرام چیست؟

 Scrum روشی تجربه گرا و چابک (Agile) برای توسعه محصولات و سرویس های خلاقانه است.

در رویکرد اجایل، ابتدا Product backlog را ایجاد می نماییم (لیستی اولویت بندی شده از فیچرها و سایر امکانات مورد نیاز جهت تولید یک محصول موفق)، با کمک اطلاعات موجود در Product backlog اولویت انجام کارها با مهم ترین و با اولویت ترین کارها خواهد بود، مواردی که از نظر شما بالاترین ROI یا Return of investment را دارا هستند. اگر منابع شما به پایان برسند (مثل زمان)، هر کاری که به پایان نرسیده دارای ROI کمتری به نسبت کارهای انجام شده دارد. 

 به جای ایجاد یک پروژه و تعیین بودجه و زمان دقیق به همراه WBS (ساختار شکست کار)، Scrum سعی دارد تا با ایجاد Time Box های (قالب های زمانی) کوچک محصول را ایجاد نماید زیرا به تجربه مشخص شده حجم تغییرات بالا باعث بلا استفاده شدن WBS خواهد شد.

کارها در قالب های زمانبندی کوچک به نام Iteration انجام خواهند شد، این قالب زمانی معمولا از یک هفته تا ۴ هفته متغیر است، در طول هر Iteration تیم خودسازماندهی شده با تمام تخصص های لازم (Cross-functional) تمام کارهای لازم جهت تولید یک فیچر کامل که قابلیت انقال به محیط عملیاتی را داشته باشد انجام خواهد داد، از جمله طراحی، تولید و تست. ( یکی از سخت ترین کارهای موجود در اسکرام در کشور ما این بند می باشد، ایجاد تیم cross-functional به دلایل فنی و گاها سیاسی و فرهنگی که هم شامل حال مدیران مجموعه ها و هم مهندسین متخصص می شود بسیار سخت است )

حجم کارهای موجود در Product Backlog بیشتر از منابع موجود در هر Iteration است، در ابتدای هر iteration تیم باید مهم ترین کارهای موجود در Product backlog را که در بازه زمانی کوتاه iteration قابل انجام هستند را انتخاب نماید، در تصویر بالا تیم تصمیم گرفته فیچرهای A و B و C را انجام دهد. (Sprint Planning)

در انتهای Iteration، تیم فیچرهای تکمیل شده را با کمک ذینفعان بررسی و بازخوردهای آنها را جمع آوری می نماید. بر اساس بازخود دریافت شده تیم می تواند اولویت و یا نحوه انجام کارها را دچار تغییر نماید.

در انتهای هر Iteration تیم باید یک محصول قابل انتشار داشته باشد (Potentially shippable product)، در صورت صلاحدید انتشار محصول صورت خواهد گرفت در غیر اینصورت کارهای انجام شده بعدا در کنار سایر کارها انتشار خواهد یافت، بیان محصول قابل انتشار نشانگر مسئولیت تیم در تولید محصولی است که ۱۰۰٪ تکمیل بوده و حتی قابلیت انتشار داشته باشد. ( در پیاده سازی اسکرام در ایران زمان و انرژی زیادی را ارائه محصول قابل انتشار در انتهای هر Iteration صرف خود می کند، جهت رسیدن به این مهم خیلی از مشکلات رایج فنی و فرآیندی باید رفع شوند  )

 مواردی که بیان شد دیدی کلی از اسکرام بود تا چرایی آن مشخص و مدل کلی عملکردی آن بیان شود، در نگاه اول scrum موضوعی ساده و بدون جزئیات زیاد به نظر می رسد ولی