علی نیک روش
علی نیک روش
خواندن ۷ دقیقه·۳ سال پیش

تعریف "کار انجام شده" یا DoD در اسکرام

توی مقاله قبلی با عنوان "تیم خودسازماندهی شده از دید اسکرام" به DoD اشاره کرده بودم و قرار بود که درباره اون با هم بیشتر صحبت کنیم، بریم جلو ببینیم چی میشه . . .

تا به حال شده یه کاری از دید خودتون تموم شده به نظر برسه ولی وقتی به مشتری نشون میدین بگه چیزی نیست که من میخواستم؟

میدونیم اسکرام طبق تعریف خودش یه چارچوب سبک (Light Weight) ارایه داده و چون متدولوژی نیست، توی جزییات انجام کار کمتر وارد میشه و به اصطلاح نسخه نمیپیچه که همین کار باعث میشه هر کسی بخواد از منظر خودش تفسیری روی موضوعات داشته باشه و بنابراین با توجه به جایی که اسکرام در اون استفاده میشه و نفرات متفاوتی که دارن اون رو پیاده سازی می کنند بلوغ های متفاوتی خواهد داشت.

به همین خاطر تو این نوشته سعی می کنم بررسی کنم از دید اسکرام برای رفع این موضوع چه چیزهایی پیش بینی شده و چه کار باید بکنیم تا این مشکل که خیلی وقت ها هم اتفاق میفته به حداقل برسه؟

میدونیم اسکرام بر مبنای پنج رویداد که شامل "اسپرینت پلنینگ، دیلی اسکرام، اسپرینت رویو، و رترو اسپکتیو" هست برنامه ریزی میشه. البته این ها رو که بشمریم میشه چهار تا، اون یکی کجاست؟

- اولین و در حقیقت اصلی ترین اون ها که بقیه تو دل اون هستند در حقیقت همون اسپرینت هست و با اون، پنج رویدادی که گفتیم کامل میشه:

پنج رویداد اسکرام
پنج رویداد اسکرام


بزارین از آخر بیایم اول؛ در اسپرینت رویو که توی اون دولوپر ها (تیم توسعه دهنده)، مالک محصول، مشتری ها و البته اسکرام مستر حضور دارن نتیجه تلاش تیم اسکرام در یک اسپرینت بررسی میشه (تمام فتنه ها و مشکلات تیم هم از همین جا شروع میشه :))

جلسه اسپرینت رویو
جلسه اسپرینت رویو


- خوب بیارین ببینیم چی کردین؟ خروجی دو هفته کارتون چی بوده؟ ما بی صبرانه منتظر این جلسه هستیم . . .

  • خوب ما توی این اسپرینت داشتیم رو فیچر های A و B کار می کردیم و تونستیم فیچر A رو Done کنیم و حدود %70 فیچر B هم دان شده.

-ببینیم . . .

یک نفر از اعضای تیم محصول رو ارایه می کنه . . .

-این چرا این جوریه؟ کی گفته بود این طوری تحویل بدین؟ آقای Product Owner ما به شما اعتماد کردیم، سرمایه گذاری کردیم و دو هفته وقت دادیم که آخرش این رو به ما تحویل بدین؟

  • یعنی چی آقا، این که داره کار می کنه، مشکلش چیه؟

-نه این چیزی نیست که میخواستیم. نه درست کار می کنه و نه مطابق طرحی بوده که بهتون گفته شده، فکر می کنیم باید در توانایی شما برای جمع کردن این پروژه تجدید نظر کنیم و شاید داریم جای نادرستی سرمایه گذاری می کنیم؟

این گوشه ای از مکالمات در یک اسپرینت رویوی ناموفق بود که کم و بیش همه مون باهاش آشنایی داریم . . .

[یادم باشه بعدا راجع به این که چطور اسپرینت رویوی موفقی داشته باشیم هم صحبت کنیم]

حالا بریم سراغ اسکرام:

اسکرام اولین چیزی رو که برای تیم اسکرام در چارچوب خودش پیشنهاد می کنه و حتی ضروری میدونه رعایت تایم باکس هایی هست که گفته برای یک اسپرینت حداکثر میتونه یک ماه باشه، یه جدول خوب براتون میزارم که نیاز به توضیح اضافی نباشه (درباره تایم باکس ها بعدا خیلی مفصل تر با هم صحبت خواهیم کرد):

جدول تایم باکس های الزامی در اسکرام
جدول تایم باکس های الزامی در اسکرام


فرض کنیم یه تیم شش نفره دولوپری هستیم (دو تا بک اند، یه فرانت، دو تا اندروید و یه دیزاینر) که یه PO و یه اسکرام مستر هم داریم (تیم اسکرام هشت نفره) و یه اسپرینت دو هفته ای رو برنامه ریزی کردیم (هر نفر در طول هفته 44 ساعت باید کار کنه رندش می کنیم 40 ساعت، بنابراین در طول دو هفته یا نصف ماه 2*40*8 نفر ساعت 640 نفر ساعت کار انجام شده) و این زمان ارزش این رو داره که هر کاری کنیم تا نتیجه اش به بهترین نحو ارایه داده بشه و از اون طرف تیم بتونه برای اسپرینت بعدیش انرژی لازم رو کسب کنه.

برای این که اسپرینت رویوی درستی داشته باشیم، تا نتیجه تلاش های یک تیم که بالا زمانش رو محاسبه کردیم و به میزان اهمیتش کم و بیش پی بردیم لازم هست که از اول درست برنامه ریزی کرده باشیم.

کجا برنامه ریزی کردیم؟ تو اسپرینت پلنینگ.

ورودی های ما چی بوده؟

  • Product Backlog
  • Definition of Done
  • Retrospective Improvements
  • . . .
ورودی ها و خروجی های اسپرینت پلنینگ
ورودی ها و خروجی های اسپرینت پلنینگ


میبینیم دومین ورودی ما برای برنامه ریزی اسپرینت مون "تعریف کار انجام شده" یا DoD هست و بنابراین یکی از ابزارهای مهم کارمون هست، چون برنامه ریزی از اون جا شروع میشه؛ حالا ببینیم اساسا DoD چیه؟

وقتی بیان میشه یک PBI یا یک Increment تمام شده یا انجام شده (یا دان شده)، همه اعضای تیم اسکرام باید فهم مشترکی از این موضوع داشته باشن (که یکی از اجزای شفافیت یا Transparency در اسکرام هم هست که بعدا بهش خواهیم پرداخت).

منظرهای تعریف کار انجام شده

اساس تعریف کار انجام شده برای رسیدن به کیفیت هست؛ یعنی ما با تعریف DoD داریم برای کار خودمون یه حد کیفی در نظر می گیریم بنابراین کارمون خیلی با ارزش هست. میدونیم که کیفیت چند بعدی هست (مثلا وقتی میگیم فلان لباس خوبه مجموعه عواملی مثل رنگ، جنس پارچه، دوخت، . . . و حتی یه وقت هایی با توجه به جایی که میخوایم ازش استفاده کنیم خوبیش یا همون کیفیتش سنجیده میشه) بنابراین لازمه که معیار های مختلفی برای کارمون در نظر بگیریم و تا به اون ها نرسیم یعنی کار مون دان نشده و هنوز کار داره، حتی اگه %99.999 هم انجام شده باشه.

تعریف کار انجام شده (DoD)
تعریف کار انجام شده (DoD)


  • شرایط مشخص شده کار انجام شده به تیم توسعه کمک می کنه بتونن در رویداد اسپرینت پلنینگ پیش بینی بهتری برای کارشون داشته باشن.
  • تعریف کار انجام شده شفافیت ایجاد می کنه و بنابراین بازرسی و سازگاری که ستون های اسکرام هستن رو تسهیل می کنه.
  • تعریف کار انجام شده "فهم مشترکی از یه نرم افزار قابل ریلیس ایجاد می کنه" و "به دولوپر ها برای این که چه مقدار از PBI ها رو میتونن برای یه اسپرینت در نظر بگیرن هم کمک می کنه"
  • حتی نیازمندی های غیر عملکردی (nonfunctional requirements) رو هم میشه به DoD اضافه کرد.
  • یه تیم اسکرام بالغ دنبال فرصت میگرده تا بتونه همیشه تعریف کار انجام شده خودش رو بهبود و ارتقا بده.
  • یه DoD خوب، میتونه به کاهش زمان پایدار کردن ریلیس ها، هزینه های کلی مالکیت (TCO)، و کاهش بدهی های فنی (Technical Debt) کمک کنه.
  • متعهد نبودن به DoD توسط تیم توسعه، به طور معمول باعث افزایش بدهی های فنی میشه چون تیم بر مبنای پیش فرض های خودش جلو میره و بعد اون اتفاقی که توی اسپرینت رویو اول این مقاله مثال زدم رخ میده؛ همین طور باعث تشدید نارضایتی مشتری میشه.
  • تعریف کار انجام شده همه اون چیزی هست که تیم توسعه برای دان کردن PBI ها روی اون به توافق میرسن به اضافه Acceptance Criteria برای هر PBI برای اطمینان از این که محصول افزایشی قابل ریلیس از کیفیت خوبی برخوردار هست.
تعریف کار انجام شده با بلوغ تیم توسعه نرم افزار به طور تدریجی تکامل می یابد.

و اما بریم سراغ این که چه کسی DoD رو ایجاد می کنه و چه حالت هایی داره؟

  • تعریف کار انجام شده توسط تیم توسعه خلق میشه و در مالکیت اون ها هست؛ اما اگر سازمان انتظارات مشخص و ویژه ای از کیفیت داشته باشه، تیم توسعه باید از اون آگاه باشه (یعنی تیم توسعه باید در راستای برآورده شدن و تحقق اون گام برداره)؛ همون طور که کمی بالاتر به این موضوع پرداختیم، به تدریج باید تمام معیار های مشخص شده کیفی سازمان توسط دولوپر ها تحقق پیدا کنه و همین طور تیم توسعه منسجم تر و ماهر تر میشن به کیفیت کارشون هم اضافه می کنن (یعنی DoD خودشون رو تقویت و سختگیرانه تر می کنن).
  • طبیعی هست که هر چه DoD ساده تر باشه، کیفیت کار رو پایین تر میاره و کمیت کار رو می تونه افزایش بده.
  • توصیه اکید می کنم که DoD نوشته بشه و در دسترس همه و جلوی چشم شون باشه تا هر کسی بدونه که معنی کار انجام شده چی هست و کارش رو تا چه حدی باید بهبود بده.
  • تیم هایی که دارن روی یک پروژه کار می کنن (Scale Scrum)، علاوه بر این که باید خودشون DoD داشته باشن، باید از یک DoD مشترک هم استفاده کنن تا خروجی های اسپرینت شون یک دست باشه.

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


اسکراماجایلdoddefinition of doneاسکرام مستر
همیشه تلاش می کنم بیشتر یاد بگیرم . . .
شاید از این پست‌ها خوشتان بیاید