اجایل چه مشکلاتی را حل می کند؟
از بین بردن امید هدف اصلی اجایل است. ما از اجایل استفاده می کنیم تا امید را از بین ببریم قبل از آنکه امید پروژه را نابود کند.
متدولوژیهای اجایل بسیار محبوب هستند. چون در ظاهر ساده به نظر میرسند و البته اگر درست استفاده شوند بسیار اثر بخش خواهند بود. بسیاری از تیمها و سازمانها اجایل را راه حل نهایی مشکلات خود میبینند. مشکلاتی که زمان زیادی با آنها درگیر بوده و راه حل موثری برای حلشان پیدا نکردهاند. سوال و جوابهایی مانند آنچه در ادامه آمده در بسیاری از سازمان ها تکرار می شوند:
سوال: محصولاتمان کیفیت خوبی ندارند و مشتریان ناراضی هستند چه راه حلی پیشنهاد دارید؟
جواب: از اجایل استفاده کنید.
سوال: در تمام کردن پروژهها تاخیر زیادی داریم و کارفرما ما را مرتب تهدید میکند. چه کاری می توانیم انجام دهیم؟
جواب: از اجایل استفاده کنید.
سوال: رقبا در بازار از ما جلو افتادهاند و ما با کاهش فروش مواجه شدهایم. چطور در مواجهه با رقبا دست بالا را داشته باشیم؟
جواب: از اجایل استفاده کنید.
سوال: کار تیمی در شرکت ما بسیار ضعیف است و افرد اصلا انگیزه ندارند چطور آنها را به کار متعهد کنیم؟
جواب: از اجایل استفاده کنید.
سوال: پیش بینی های مالی ما محقق نشده است و از سوی هیات مدیره و سهامداران تحت فشار هستیم. چه راه حل سریعی برای ما وجود دارد؟
جواب: از اجایل استفاده کنید.
همانطور که گفتیم متدولوژیهای اجایل در ظاهر بسیار ساده و سبک وزن هستند. برای مثال تعریف رسمی محبوبترین متدولوژی اجایل یعنی اسکرام، یک مستند 1۹ صفحه ای به نام راهنمای اسکرام است. و همه اجزای این متدولوژی در همین مستند کوچک بیان شدهاند. حال ممکن است این سوال پیش بیاید متدولوژیهایی که تا این حد ساده هستند چطور می توانند چنین مشکلات پیچیدهای را حل کنند؟
این سوال بسیار به جا است و البته جواب ساده و روشنی هم دارد. پاسخ این است که اجایل قرار نیست مشکلی را حل کند. در واقع مشکلات موجود در دنیای نرم افزار، از کسب و کاری به کسب و کار دیگر، از محصولی به محصول دیگر، از تیمی به تیم دیگر و از یک کدبیس به کدبیس دیگر آنقدر متفاوت هستند که نمیتوان یک یا چند راه حل مشخص برای همه آنها ارایه کرد.
پس اجایل چه فایده ای دارد؟
بهتر است بحث را با یکی دو مثال شروع کنیم. دانشآموزانی که برای امتحان کنکور آماده می شوند معمولا از متدولوژی سادهای استفاده میکنند. به این صورت که حدود یک سال قبل از امتحان کنکور، دروس را بودجهبندی کرده و متناسب با آن هر سه ماه یکبار در یک آزمون آزمایشی که کاملا شرایط امتحان اصلی را دارد شرکت میکنند. اگر دانشآموزی در امتحان آزمایشی اول نتواند نتیجه خوبی به دست آورد به احتمال زیاد در آزمون های آزمایشی بعدی و در آزمون اصلی کنکور هم نمیتواند نتیجه خوبی کسب کند. مگر آنکه روش درس خواندن خود را اصلاح کرده یا برای دروسی که در آنها ضعف دارد وقت بیشتری اختصاص دهد و چارهای بیندیشد.
برگردیم به دنیای نرم افزار. فرض کنید یک تیم تعهد پیاده سازی یک نرم افزار را در مدت یک سال به کارفرما یا مدیر شرکت داده است. این تیم از اسکرام استفاده میکند . در اسپرینت اول افراد تیم پس از طرح ریزی و تخمین کارها به این نتیجه می رسند که میتوانند برای مثال قسمت مدیریت کاربران سامانه را در اسپرینت جاری پیادهسازی کرده و بر روی سرور پروداکشن قرار دهند تا افراد علاقه مند بتوانند با آن کار کنند. اگر این تیم نتواند در اسپرینت اول قسمت مدیریت کاربران را پیاده سازی کند به صورتی که برای کاربر احتمالی قابل استفاده باشد، به احتمال زیاد در مدت یک سال هم نخواهد توانست کل سیستم را به صورتی که برای کاربر نهایی قابل استفاده باشد پیادهسازی نماید. مگر آنکه به جای امیدوار بودن به آینده از همان اسپرینت اول به دنبال شناخت و حل مشکلاتی باشد که جلوی تحقق هدف اسپرینت را گرفتهاند.
“ اجایل درباره از بین بردن امید است.”
این جمله قسمتی از یک توییت است که رابرت مارتین ،از امضا کنندگان مانیفست اجایل، منتشر کرده. او در آخرین کتابش با عنوان Clean Agile در این رابطه مینویسد:
“از بین بردن امید هدف اصلی اجایل است. ما از اجایل استفاده می کنیم تا امید را از بین ببریم قبل از آنکه امید پروژه را نابود کند…اجایل هیچگاه در باره سریع تر پیش رفتن نبوده است. اجایل در رابطه با این است که در زودترین زمان ممکن بفهمیم در چه شرایط پیچیده ای قرار داریم تا بتوانیم وضعیت را مدیریت کنیم”
کارکرد اصلی اجایل حل کردن مشکلات نیست. کارکرد اصلی اجایل آشکار کردن مشکلات در سریعترین زمان ممکن است تا بتوان به موقع آنها را حل نمود. مایک تایسون ، بوکسور معروف، میگوید همه برنامهای دارند تا موقعی که اولین مشت به دهان آنها برخورد میکند. پروژهها با طرح کسب و کار، نقشه راه (Road Map)، برنامه انتشار(Release Plan) ،برنامه اسپرینت و البته امیدواری بسیار زیاد آغاز میشوند. وظیفه اجایل این است که در نزدیکترین زمان ممکن تیم و ذینفعان پروژه را در معرض اولین مشت از جانب واقعیت قرار دهد. در این صورت زمان برای بازبینی همه چیز و گرفتن تصمیمات درست وجود خواهد داشت.
خبر بد این است که ساخت نرمافزار کار پیچیدهای است و راه حل میانبری برای فرار از این پیچیدگی وجود ندارد. و خبر خوب این است که اجایل برای کنترل این پیچیدگی بسیار موثر خواهد بود. اجایل در واقع یک پروسه تجربه اندوزی و یادگیری مداوم است که کمک می کند تا در مورد بازاری که در آن فعال هستیم، نرم افزاری که بر روی آن کار میکنیم، تکنولوژیهایی که با آنها درگیر هستیم و تیمی که در آن عضویت داریم بیشتر بدانیم .این دانش ما را برای حل کردن مشکلاتی که در سر راه قرار گرفته توانمندتر خواهد کرد. بسیاری از تکنیک های اجایل پاسخی هستند به مشکلات شایع تیم های نرم افزاری که به مرور در دل تیمهای مختلف آزمایش و تکمیل شده تا درنهایت به صورت Best Practice در آمدهاند.
منظور از اینکه تولید نرم افزار پیچیده است چیست؟
برای توضیح این مطلب از نمودار زیر که به Stacey Matrix معروف است استفاده میکنیم. از این نمودار میتوان برای انتخاب روش مناسب تصمیمگیری و مدیریت در شرایط مختلف استفاده نمود.
بر اساس این نمودار میتوان پروژه ها را به دستههای زیر تقسیم کرد:
پروژه های ساده (Simple) که در آنها هیچ ابهامی وجود ندارد.
پروژه های سخت (Complicated) که در آنها دانسته ها بیشتر از ابهامات است.
پروژه های پیچیده (Complex) که در آنها ابهامات بیشتر از دانسته ها است.
پروژه های آشفته(Anarchy) که دانسته های بسیار کمی در مورد آنها وجود دارد.
پروژه های پیچیده
حوزهای که متدولوژیهای اجایل سعی در پوشش آن دارند حوزه پروژههای پیچیده است که بسیاری از پروژههای نرمافزاری را در بر میگیرد. در اغلب پروژههای نرمافزاری، در ابتدای کار درک بسیار ناقصی از نیازمندیها وجود دارد ونیازمندیها در طول اجرای پروژه شفاف میشوند. در مورد تکنولوژیهای مورد استفاده در پروژه و مسایل فنی هم عموما همین مساله صادق است.
مساله مهم در پروژه های پیچیده این است که با توجه به زیاد بودن ابهامات امکان برنامه ریزی دقیق و با جزییات کامل و انتظار نتایج قابل پیش بینی وجود نخواهد داشت. فرض کنید میخواهید در یک روز آفتابی در یک زمین مسطح و کاملا خالی، از نقطه ای به نقطه دیگر بروید. این کار به راحتی قابل انجام است .کل مسیری که باید طی کنید کاملا برای شما واضح و مشخص می باشد. می توانید با دقت خوبی مسافتی که باید طی شود را تخمین زده و محاسبه نمایید چه مقدار زمان برای طی این مسیر مورد نیاز است. شما در حقیقت دارید یک مساله ساده (Simple) را حل می کنید. حال فرض کنید در یک انبار تاریک و انباشته از وسایلی که به صورت کاملا تصادفی و نامرتب در فضای آن پخش شده قرار گرفته و دنبال راه خروج هستید. در این حالت باید با برداشتن یکی دو قدم توقف کرده و با لمس اشیاء و اطراف موقعیت جاری خود را درک کنید. سپس با استفاده از این اطلاعات در مورد اینکه قدمهای بعدی را در کدام جهت بردارید تصمیم بگیرید. در این حالت مساله شما یک مساله پیچیده (Complex) است. و بهترین روش برای مواجه با مسایل پیچیده تجزیه کردن آنها به مسایل سخت یا ساده کوچکتر و حل کردن آنهاست. به صورتی که با استفاده از اطلاعات و تجارب به دست آمده از حل این مسایل کوچکتر، قدم های بعدی برنامه ریزی گردند. شبیه روشی که برای خروج از انبار تاریک به کار گرفته می شود.
در اسکرام و سایر متدولوژی های اجای سعی می کنیم پروژه را به چرخه های کوچک تر یا همان اسپرینت ها بشکنیم و در طول اسپرینت قسمتی از مساله را حل کنیم. در انتهای اسپرینت اطلاعات جدیدی که به دست آوردهایم و مشکلات پیش رو را تحلیل کرده و در اسپرینت های بعدی به کار میبریم. برای تکمیل مطالب مطرح شده در این قسمت می توانید ویدئوی قرار گرفته در صفحه اینستاگرام مدرسه اسکرام با عنوان Empiricism را مشاهده بفرمایید.
مدرسه اسکرام مرجع حرفه ای آموزش اسکرام
مقالات دیگر مدرسه اسکرام
۱۰ سوالی که یک مالک محصول برای موفقیت تیم اسکرام بایستی پاسخ آنها را بداند.
مهارتهای نرم در اسکرام – مهارت خودآگاهی و خودشناسی (بخش سوم)
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
سلام وقتتون بخیر
خیلی ممنون بابت مطلبی که گذاشتید. بسیار آموزنده بود.
فقط یک موردی وجود دارد که از نظر بنده ایراد نگارشی میتواند باشد.
در بند آخر اشاره کردید که ” اسکرام و سایر متدلوژی های اجایل …” ، تا جایی که بنده مطالعه کردم اجایل متدلوژی است ولی اسکرام و کانبان و … یک چارچوب یا framework هستند.
سلام
به خاطر دقت نظری که داشتید و تذکری که به درستی دادید متشکرم
همانطور که عرض شد فرمایش شما کاملا صحیح است. و در واقع به کانبان و اسکرام از این جهت چارچوب گفته می شود که در آنها هیچ روش یا تکنیک مهندسی و فنی وجود ندارد و در واقع چارچوبی هستند که می توان انواع تکنیک ها و روش ها را روی آنها سوار کرد. برای مثال در اسکرام تاکید می شود که ایتم های بکلاگ محصول باید تخمین داشته باشند ولی در راهنمای اسکرام هیچ روشی برای تخمین پیشنهاد نمی شود. اما اغلب تیم ها از استوری پوینت و پلنینگ پوکر که از تکنیک های مطرح در متدولوژی XP هستند برای تخمین استفاده می کنند. به همین دلیل استفاده ترکیبی از اسکرام و XP امری بسیار متداول هست.
سهل انگاری من در این مورد برای پرهیز از اطاله کلام و افزایش خوانایی متن بوده است. و اگر جمله طبق فرمایش شما به صورت ” اسکرام و سایر فریم ورک ها و متدولوژی های اجایل..” نوشته شده بود دقیق تر و صحیح تر بود.