ارتباطات و کدنویسی بهترین کار و کامپیوتر بهترین رشته دنیاست.من برنامهنویسی اندروید رو با یک تیم بینظیر در پیام رسان هدهد شروع کردم و در کنارش تو Quera برای دولوپرها مارکتینگ هم انجام میدم :)
آشنایی با متدولوژی اسکرام
در هر موقعیت شغلی و در هر تیم و سازمانی که باشید، حتماً براتون پیش اومده که با حجم زیاد کارها روبهرو بشید. در اکثر مواقع، حجم کارهای شرکتها به دلیلهای مختلف بیشتر از ظرفیت اجرایی نیروهاست. در این شرایط برای انجام این کارهای انبوه، چه راه حلی وجود داره؟ اسکرام قراره راه حلی برای این مساله باشه!
اما اصلاً ببینیم اسکرام چیه؟ اسکرام فرآیندی است که در طی اون، تیمها پروژههای بزرگ خودشون رو به بخشهای کوچکتر تقسیم میکنند و با انجام این بخشهای کوچکتر پروژهی تعریفشده سروسامان میگیره و با بازدهی بهتر انجام میشه.
در اسکرام دو بخش ثابت همیشه وجود داره:
- برنامهریزی کوتاهمدت: در اسکرام تیمها برای یک بازه زمانی زمانی کوتاه (معمولاً بین ۲ تا ۴ هفته) برنامهریزی میکنن. به هر کدوم از این واحدهای زمانی یک اسپرینت (Sprint) گفته میشه. هر اسپرینت با یک جلسه برای برنامهریزی اولیه و با یک جلسه کوتاه برای جمعبندی دستآوردها به پایان میرسه.
- جلسههای روزانه: به این جلسههای کوتاه ۱۰ دقیقهای استندآپ (Stand-up Meeting) گفته میشه و معمولاً در اولین ساعت کاری روز بین اعضای یک تیم توسعه نرمافزار برگزار میشه. اعضای تیم کارهایی که روز گذشته انجام شده و همچنین کارهایی که در طول روز جاری قراره انجام بدن رو خیلی سریع بیان میکنن. برای اینکه جلسه زیادی طولانی نشه، معمولاً توصیه میشه که در حین جلسه افراد به طور ایستاده کارهاشون رو بیان کنن. همچنین اگر اعضای تیم در طول روز قبل در انجام کارهاشون به مشکلی برخوردند، مشکل رو مطرح میکنند تا در جلسه دیگهای بهش رسیدگی بشه.
خب چرا به شکل روزانه برای بررسی کارها جلسه بذاریم؟ گزارشدهی روزانه تاثیر شگفتانگیزی در بهبود روند کارها داره چرا که در این حالت ذهن شروع به مقایسه پیشرفت کارها در روزهای مختلف خواهد کرد و اولویتبندی کارها و عملکردهای روزانه بهبود قابل توجهی پیدا میکنه.
تاریخچه اسکرام
دو استاد مدیریت ژاپنی با نامهای Hirotaka Takeuchi و Ikujiro Nonaka در سال ۱۹۸۶، برای اولین بار متدولوژی اسکرام رو پایهریزی کردن. اسکرام در دهه ۹۰ میلادی توسط Ken Schwober و Jeff Stherland گسترش داده شد و به عنوان یک متدولوژی رسمی جهت تولید محصولات نرم افزاری شناخته و به کار گرفته شد.
ریشه عنوان این متدولوژی از بازی راگبی گرفته شده. در راگبی به شروع دوباره در اصطلاح اسکرام میگن؛ یعنی هر وقت به هر دلیلی مثل خطا یا بیرون افتادن توپ، اگر بازی متوقف بشه، با اسکرام بازی مجدداً شروع میشه. اسکرام یک فرآیند مکرر و روبهجلوئه که نوعی از از سیستم توسعهی نرمافزار چابک (Agile) محسوب میشه.
روش استفاده از اسکرام
اولین مرحله: آماده کردن Product Backlog
لیستی از تمامی کارهای یک پروژه رو با کمک تیم آماده میکنیم.
دومین مرحله: فازبندی پروژه
کل کار رو به چند فاز تقسیم میکنیم و تیمها رو برای هر فاز انتخاب میکنیم. بسته به پروژهای که تعریف کردید، امکانش وجود داره که به تیمهای توسعه، بازاریابی، محصول و یا حتی مالی هم احتیاج داشته باشید.
سومین مرحله: برنامهریزی اسپرینت
قبل از هرکاری باید برای اسپرینت هدف تعیین کنید! در این اسپرینت به دنبال چه دستآوردهایی هستیم؟ چطور به این اهداف برسیم؟ این دو سوال دلایل اصلی برگزاری جلسههای برنامهریزی اسپرینت هستند. این جلسات باید با حضور همه اعضای تیم برگزار بشن و وظایف تقسیم انجام بشه.
در جلسهی برنامهریزی اسپرینت، هر فرد برگههایی از کارهایی که بهش محول شده ایجاد میکنه. یک تخته اسکرام (Scrum Board) رو به سه ستون در صف انجام (To-Do)، در حال انجام (Doing) و انجام شده (Done) تقسیم میکنیم. همگی برگهها رو در روز برنامهریزی در ستون «در صف انجام» قرار میدیم.
چهارمین مرحله: اجرای اسکرام
اعضای تیم هر روز دور هم جمع میشن و خیلی کوتاه در مورد کارهای گذشته و کارهایی که قراره انجام بدن توضیح میدن. اعضای تیم برگههایی که مربوط به کار خودشون هست رو جابهجا میکنند. یعنی برگههای امروز رو از بخش To-Do به Doing و برگههایی که دیروز انجام شده رو از Doing به Done تغییر میدن.
همون طور که قبلاً ذکر شد، زمان جلسه معمولاً ۱۰ تا ۱۵ دقیقه است، که البته بسته به تعداد افراد تیم و نوع پروژه قابل تغییر خواهد بود. در پایان جلسه مسئول اسکرام میتونه یک گزارش کلی از وضعیت و مسائل موجود ارائه کنه.
پنجمین مرحله: بررسی و بازنگری اسپرینت
خوب رسیدیم به قسمت اصلی ماجرا. در این جلسه باید اسپرینت بررسی بشه که چقدر از کارها انجان شده و چقدر ناقص مونده و چقدر اصلا انجام نشده. بعد زمان به مقایسه نتیجه این بررسی با سند اسپیرینت اصلی میرسه. در این قسمت تیمها میتونن عملکردشون رو بسنجن و یه دید کلی نسبت به کارهایی که کردن داشته باشن تا برای اسپرینت بعدی برنامهریزی دقیقتری داشته باشند.
نقشهای اسکرام
نقشهای عمده در اسکرام عبارتند از:
- مالک محصول (Product Owner): مالک محصول باید همیشه در دسترس باشه و فردی با اختیار باشه. او مسئول ارتباط مداوم با تیمهاست. مالک محصول را به چشم یک کاپیتان ببینید، به طوری که تمرکزش را روی یک هدف میذاره و از تیم خود میخواد برای رسیدن به این هدف هرکاری که لازم است انجام دهند.
- اسکرام مستر (Scrum Master): اسکرام مستر مسئول برگزاری به موقع جلسات و پیگیریها و گزارشات است. اسکرام مستر تیم رو مدیریت نمیکنه. بلکه در تلاش هست تا هر مانعی که امکان داره جلوی رسیدن تیم به اهداف اسپرینت رو بگیره، برطرف کنه. این کار به تیم کمک میکنه تا خلاق باقی بمونن.
- تیم (Development Team): به گفته ی بنیانگذار اسکرام «تیم به طور کامل خودش را مدیریت میکند». یک تیم توسعهی اسکرام شامل ۳ تا ۹ نفر عضو هست و پیشنهاد میشه که در اتاقی مجزا از محیط خارج کار کنند. برای پروژههای نرمافزاری، یک تیم معمولاً شامل مهندسان نرمافزار، معماران، برنامهنویسان، آنالیزورها، تستکنندهها و طراحان رابط کاربری هستند.
یادگیری بیشتر درباره اسکرام
تمرینات اسکراممستری آنلاین در سری های تمرین اسکرام موجودند که یک مجموعه جذاب یادگیری الکترونیک محسوب میشه و مباحثی مثل مقدمه ای بر اسکرام، جلسات تنظیم backlog ، جلسات برنامه ریزی sprint ، جلسات اسکرام روزانه، جلسات مرور sprint و جلسات نگاه به گذشته ی sprint رو پوشش میده. شما میتونید یک مرجع شش صفحهای اسکرام را دانلود کنید یا یاد بگیرید که یک اسکرام مستر چه میکند.
ترجمه و اقتباسی از:
What is Scrum? @ scrum.org
An Empirical Framework For Learning (Not a Methodology) @ Scrum Methodology
Scrum (software development) @ Wikipedia
تصویرسازی توسط: Thea Schukken
کوئرامگ مجلهای تخصصی برای توسعهدهندگان است که هر هفته با مطلبهایی در زمینه تکنولوژی، رشد فردی و آینده برنامهنویسی بهروزرسانی میشود. برای اطلاع از آخرین مطلبهای ما، میتوانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.
مطلبی دیگر از این انتشارات
چطور با بهتر کردن حافظهام، برنامه نویس بهتری شدم
مطلبی دیگر از این انتشارات
راهنمای نسبتاً جامع برنامه نویسی دونفره
مطلبی دیگر از این انتشارات
ماموریت غیرممکن: چطور از امنیت و حریم خصوصی خودمان در دنیای اینترنت حفاظت کنیم؟