اسکرام یکی از چارچوب های مدیریت چابک پروژه هاست که به تیم های کوچک دارای ارتباط نزدیک و حمایت کننده از یکدیگر کمک می کند تا محصولات پیچیده ای را به طور فزاینده و تدریجی توسعه دهند. اسکرام به جای تمرکز بر اینکه افراد چه کار می کنند بر چگونگی انجام کار تمرکز دارد. اسکرام مبتنی بر اصول و قواعد بیانیه مدیریت چابک است و محبوب ترین و پرکاربردترین روش چابک به حساب می آید.
در اسکرام تیم ها در طول اسپرینت ها (sprint) نرم افزار را توسعه داده وهر دو هفته آن بخش از نرم افزار را که روی آن کار کرده اند منتشر می کنند. با این روش، مشتریان ویژگی ها و امکانات (features) جدید را به محض اینکه ایجاد می شوند دریافت کرده و ایرادات آن را شناسایی و برطرف می کنند. در کل ریسک کمتری در این چارچوب وجود دارد.
اسکرام چیست؟
اسکرام محبوب ترین و پراستفاده ترین چارچوب مدیریت چابک پروژه است که در سازمان های توسعه نرم افزار استفاده می شود. اسکرام همچنین می تواند در مدرسه ها، بنگاه های کسب وکار، سازمان های دولتی و انواع دیگر سازمان ها مورد استفاده قرار گیرد.
اسکرام اولین بار در سال ۱۹۹۰ به وسیله جف ساترلند (Jeff Suterland) و کن اسچوابر (Ken Schuaber) معرفی شد. اسم اسکرام از ورزش راگبی گرفته شده است. در راگبی اسکرام زمانی اتفاق می افتد که یک تیم دور توپ حلقه میزنند و تلاش می کنند تا با حرکت دادن آن به سمت پایین زمین بازی را ببرند. اسکرام یک استعاره برای یادآوری این است که چگونه همه افراد باید با یکدیگر همکاری کنند تا یک پروژه تکمیل شود.
اسکرام چگونه کار می کند؟
در اسکرام شما هر دو هفته کدها و عملکردها(functionality) را به مشتری خود تحویل می دهید. هر دوهفته نمایانگر یک اسپرینت (sprint) است و کل جریان کار حول محور این اسپرینت ها است. برای درک بهتر اینکه اسکرام چگونه کار می کند در ادامه درباره اینکه قبل، درحین و بعد از یک اسپرینت چه اتفاقی می افتد صحبت خواهیم کرد.
قبل ازاسپرینت
قبل از اینکه شما بتوانید کد زدن را شروع کنید، به یک برنامه احتیاج دارید که بدانید روی چه چیزی کار خواهید کرد. در اسکرام، علی رغم شیوه آبشاری (waterfall) که شما برنامه ها و منابع مورد نیاز خود را از ماه ها پیش تعیین کرده اید، برنامه جامعی وجود ندارد. در عوض، اسکرام به شما اجازه می دهد که روی یک بخش از محصول برای دوهفته کار کنید و بعد ازآن بخشی که در مرحله بعد روی آن کار خواهید کرد مشخص خواهد شد.
همه چیز از مشتریان یا کاربران شما شروع می شود. در ابتدا شما یک لیست از خواسته ها و نیازمندی های مشتریان خود دریافت می کنید. این لیست در قالب خاصی به نام داستان کاربری(user story) جای دارد که شبیه زیر است:
به عنوان یک (نقش)، من این (امکان یا ویژگی) را می خواهم که در نتیجه ی آن(نتیجه):
مثال: به عنوان یک مدیر من یک گزارش زمان بندی بومی میخواهم که بتوانم میزان دقیق حقوق کارکنان خود را محاسبه کنم.
بعد از آن برای هر داستان کاربری(user story) وظایفی را ایجاد کرده و در بک لاگ (backlog) قرار داده و زمان لازم برای انجام هر یک از وظایف را تخمین می زنید(به صورت گروهی و صحبت با اعضای تیم).
در نهایت ، تصمیم می گیرید که در طی این اسپرینت روی چه بخش هایی باید کار کنید. اگر بعضی از بخش ها قابل انجام دادن در یک اسپرینت نباشند این بخش ها حماسه (epic) نامیده می شوند و در این حالت شما سه گزینه دارید:
- آن کار را طی چندین اسپرینت انجام دهید
- انجام آن را به زمان دیگری موکول کنید
- برای انجام آن کار یک پروژه جدید تعریف کنید و یک تیم جداگانه برای کار بر روی آن تشکیل دهید.
در طول اسپرینت
یک تخته کنبن(kanban) برای پیگیری بصری میزان پیشرفت پروژه تنظیم می کنید تا ببینید چه کسی دارد روی چه بخشی کار می کند و تنگناها و تاخیرات در روند پروژه را کنترل کنید. این تخته معمولا به چند ستون بخش بندی شده است:
•بک لاگ(Backlog)
همه ویژگی های مورد نظر مشتری که باید محصول شما داشته باشد و همچنین تمام ایرادات محصول که باید برطرف شوند در مرحله اول در این بک لاگ قرار می گیرد.
• اسپرینت(Sprint) بعدی
وظایفی که بعد از تمام شدن اسپرینت حاضر تیم باید روی آن ها کارکند.
•کارهایی که باید انجام شود
:کارهایی که تیم باید طی اسپرینت حاضر به اتمام برساند.
•در حال انجام
: کارهایی که در حال حاضر تیم در حال انجام دادن است.
•آزمایش(Testing)
: وظایف تمام شده ای که قبل از انجام شده تلقی شدن باید آزمایش شوند.
•انجام شده
وظایف و کارهایی که بعد از اتمام اسپرینت قابل عرضه هستند.
به محض اینکه شما تصمیم می گیرید که روی چه بخش هایی باید کارکنید، تیم آن وظایف را از ستون “کارهایی که باید انجام شود” به ستون “در حال انجام” منتقل کرده و شروع به کار روی آن بخش ها می کند. بعد از اتمام اولیه ،این کارها به مرحله آزمایش میروند که اگر در این مرحله آزمایش مشخص شود آن بخش خاص نیاز به انجام کار بیشتری دارد دوباره به ستون در حال انجام برگشته و اگر با معیارهای انجام کامل کار منطبق باشد به ستون “انجام شده” منتقل شده و آماده عرضه می گردد.
هرروز قبل از شروع کار اعضای تیم یک جلسه به صورت ایستاده دارند. این جلسه بیشتر از ۱۵ دقیقه به طول نمی انجامد و طی آن هر یک از افراد تیم وضعیت به روزرسانی شده سه موردی که در زیر بیان شده است را بقیه افراد به اشتراک می گذارند:
• کارهایی که من از جلسه دیروز تا به امروز انجام داده ام.
• کارهایی که قرار است امروز انجام دهم.
• موانعی که در مقابل انجام کارهایم است و نیاز دارم برطرف شوند.
برای اندازه گیری میزان پیشرفت کارها تیم از یک نمودار پیشرفت(burndown chart) استفاده می کند که یک نمایش گرافیکی از میزان کارهای باقی مانده برای انجام در مدت زمان باقی مانده است. این نمودار نشان می دهد که کارایی تیم چه میزان است و اینکه آیا تیم کارها را به موقع عرضه خواهد کرد یا نیاز به بهینه سازی فرآیند ها دارد.
بعد از اسپرینت
بعد از به پایان رسیدن اسپرینت، اعضای تیم در مورد کارهایی که انجام داده اند باز خورد می دهند. این جلسات ارائه بازخورد در مورد اسپرینت دو نوع است:
• مرور اسپرینت: در این جلسه که مدت زمان آن دو ساعت است اعضای تیم در مورد کارهایی که در طول این اسپرینت انجام داده اند و کارهایی که برنامه یزی شده بود که انجام بدهند اما به هر دلیلی نشده است صحبت می کنند.
• نگاهی به آنچه گذشت(sprint retrospective): در این جلسه که مدت زمان آن ۱ساعت است افراد در مورد فرآیند های کاری خود صحبت می کنند و می گویند نحوه انجام کدام یک از کارها خوب بوده وکدام یک می تواند در اسپرینت بعدی بهبود پیدا کند.
بعد از این جلسات بازخورد، تیم داستان های کاربری(user story) های جدید را تخمین می زنند و تصمیم می گیرند تا در طی اسپرینت بعدی رو چه چیزهایی باید کار کنند.
نقش ها در اسکرام
در چارچوب اسکرام سه نقش اصلی وجود دارند که عبارتند از:
مالک محصول(Product Owner)
مالک محصول یک تصویرساز از محصول آینده است و به عنوان صدای مشتری یا کاربر محصول عمل می کند. اگر فردی از اعضای تیم سوالی در مورد عملکرد ویژگی های محصول مد نظر مشتری داشته باشد، این وظیفه مالک محصول است که هدف از داشتن آن ویژگی در محصول را برای آن فرد روشن کند.
تمرکز مالک محصول بر جنبه تجارتی و کسب و کار توسعه محصول بوده و بیشتر زمان خود را صرف صحبت با ذینفعان پروژه می کند. مالک محصول اهمیتی به نحوه انجام کار و مباحث فنی توسعه محصول ندارد و تنها چیزی که برای او مهم است نتیجه کارهاست. وظیفه اصلی مالک محصول این است که :
• داستان های کاربری(user story) مد نظر مشتریان را جمع آوری کرده و یادداشت کند.
• بک لاگ(backlog) را پالایش کرده و کارهایی که باید انجام شوند را الویت بندی کند.
• مشتریان را مدیریت کرده و نسخه نمایشی ویژگی های جدید محصول را به آنها عرضه کند.
اسکرام مستر(Scrum Master)
نقش ها و مسئولیت های اسکرام مستر شبیه مدیر پروژه ای است که تاکید آن بر تسهیل امور تیم و کسب اطمینان از این امر است که چارچوب اسکرام در تیم و پروژه دنبال می-شود. نقش اسکرام مستر بر خلاف آنچه که از مدیر پروژه های ستنی انتظار می رود، مدیریت افراد تیم نیست. چراکه این کار برخلاف اصول مدیریت چابک است. وظیفه اصلی اسکرام مستر این است که :
• موانع سازمانی و یا هرمانع دیگری که مانع افراد در انجام کارهایشان می شود را برطرف کند.
• رویدادهای تیمی را تسهیل کند.
• روند پیشرفت اسپرینت ها را پیگیری کند.
• فرآیند ها را بهبود ببخشد.
تیم
این افراد تیم هستند که کار اصلی را از تحلیل گرفته تا طراحی، کد زدن و آزمایش را انجام می دهند. آنها به صورت خود سازماندهی شده کار می کنند و نظارتی روی کار آنها نیست.
تیم های اسکرام دارای عملکردی متقابل یا فرا نقش (cross-functional)هستند.به این معنا که هیچ یک از افراد تیم سمت یا نقش ثابت خاصی ندارند و همه ی افراد تیم می توانند همه کار بکنند. بیشتر تیم ها بر روی داشتن ساختار استخدام T شکل افراد توافق می کنند که در این ساختار در عین حال که همه افراد قادر به همه کار هستند، اما هنوز یک تخصصص گرایی و بخش بندی وظایف کارها بر اساس این تخصص وجود دارد. اسکرام تنها برای تیم های کوچک تا سقف ۹ نفر مفید بود و کار می کند. هر تیمی بیشتر از این تعداد اسکرام را از ماهیت پویای خود خارج کرده و در نتیجه آن را بی اثر می کند.
چگونه اسکرام را اجرا کنیم؟
اسکرام بیشتر یک ذهنیت است تا یک تعداد چک لیست که شما دائما در حال دنبال کردن آنها باشید. اگر شما ذهنیتی چابک داشته دارید در ادامه راه هایی رایجی که شرکت ها از طریق آنها اسکرام را اجرا می کنند آورده شده است:
- یک مالک محصول انتخاب کنید.
- یک تیم دارای عملکرد متقابل و فرا نقش تا سقف افراد ۹ نفر انتخاب کنید.
- یک اسکرام مستر تعیین کنید.
- یک بک لاگ از کارهای مربوط به محصول مورد نظر ایجاد کرده و آن را الویت بندی کنید.
- کارهای موجود در بک لاگ ها را پالایش کرده و زمان و میزان توانایی که برای انجام آنها لازم است تخمین بزنید.
- یک تخته کن بن به راه کنید.
- اسپرینت دوهفته ای کاری خود را برنامه ریزی کنید.
- جلسات ایستاده روزانه داشته باشید.
- کارکنید.
- وقتی کارهای اسپرینت تمام شد جلسه مرور اسپرینت و نگاهی به عقب داشته باشید.
- بدون فوت وقت برای اسپرینت دو هفته ای بعدی برنامه ریزی کنید و آن را شروع کنید.
در آخر در نظر داشته باشید که اسکرام برای همه مفید نیست و همانند همه ی روش های مدیریت چابک محدودیت ها و ضعف های خود را دارد. برای مطالعه بیشتر در این مورد به مقاله معایب و مزایای مدیریت چابک مراجعه کنید.