همانطور که همه دوستان مستحضر می باشند هدف بنده از نگارش این وبلاگ اشاعه فرهنگ Agile در ایران می باشد و تقریبا همه نوشته های بنده در مورد Agile و ملحقات مربوطه بوده و خواهد بود . نحوه نوشتن بنده از پایین به بالا است . یعنی کسی که تازه به جلگه خوانندگان وبلاگ می پیوندد نمی تواند از آخرین مقاله شروع نماید {البته اگر پیش زمینه در مورد Agile نداشته باشند } . پس از جمیع دوستان تازه آشنا با مقوله Agile خواهش می کنم که قبل از مطرح کردن سوالات {ی که قبلا جواب داده شده است } مقالات پیشین را یک نیم نگاهی بیندازند و در صورتی که به پرسش جواب داده نشده است آن را مطرح فرمایید .
یکی از این سوالات تکراری ” ربط اسکرام و Agile” با یکدیگر می باشد . بدلیل اینکه این سوال , پرسش دوستان زیادی می باشد , در طی یک پست مجزا به این سوال مهم و اساسی جواب داده می شود . {امید است که دوستان این جواب را مطالعه فرمایند و از مطرح کردن سوالات تکراری بپرهیزند} .
به طور خلاصه می توان گفت :” Agile یک تفکر در زمینه توسعه نرم افزار می باشد و اسکرام یک روش برای پیاده سازی این تفکر در پروژه های توسعه نرم افزار می باشد ” . برای واضح تر شدن مطلب باید تعریفی از هر دو مقوله داشته باشیم :
Agile در کل چیزی نیست جز 4 ارزش . یعنی در کل Agile فقط شامل این ارزش ها می باشد :
افراد و تعاملات بالاتر از فرآیندها و ابزارها
نرم افزار کارا بالاتر از مستند سازی جامع
همکاری مشتری بالاتر از قرارداد کار
جوابگویی به تغییرات بالاتر از پیروی یک طرح
همانطور که بیان شد اینها ارزش های Agile می باشند یعنی مواردی که بر شمرده شد ارزشهایی می باشند که ما در محیط چابک (Agile) باید داشته باشیم . یعنی در یک محیط چابک افراد و نیروی کار و تعاملات بین آنها مهمتر از تکنولوژی و پروسه کاری می باشند یا هدف در یک محیط چابک توسعه یک نرم افزار کارا{ نرم افزاری که مسئله و یا Problem مشتری را حل و یا آسانتر نماید} می باشد یا همکاری مشتری در یک محیط چابک بسیار با ارزشتر از یک قرار داد نوشته شده که تقریبا در آخر کار 90% تغییر می کند می باشد و یا جوابگویی به تغییرات و انجام و کنترل این تغییرات جزو یکی دیگر از ارزشهای مورد نظر تفکر Agile می باشد .
ولی این ارزش ها در عمل بسیار مشکل خواهند بود برای این منظور در تفکر Agile علاوه بر ارزش ها , دوازده اصل معرفی شده است . این دوازده اصل برای دست یابی و حفظ و حراست از ارزش های Agile در محیط های چابک می باشند :
1- بالاترین اولویت ما رضایت مشتری از طریق تحویل به موقع و مداوم نرم افزار ارزشمند می باشد.
2- پذیرائی از نیازهای در حال تغییر , حتی آن هایی که در اواخر توسعه پدید آور می شوند. فرآیند های چابک تغییرات را جهت رقابت بر سر مشتری مهار و کنترل می نمایند
3- تحویل نرم افزار کارکننده غالبا از چند هفته تا چند ماه یک بار انجام می شود که زمانبندی کوتاه تر ترجیح داده می شود
4- تاجران و توسعه دهندگان باید هر روزه در طول پروژه با هم کار کنند.
5- پروژه ها را بر روی افراد با انگیزه بنا کنید. محیط لازم را به آنها بدهید و از نیازهای آن ها پشتیبانی نمایید وبه آنها اعتماد نمایید تا کارها را انجام بدهند.
6- کارآمدترین و موثرترین روش برای انتقال و رساندن اطلاعات به تیم توسعه , گفتگوی چهره به چهره و رودرو می باشد.
7- نرم افزار کارکننده اصلی ترین معیار پیشرفت می باشد فرآیند های چابک توسعه پایدار را ترویج می دهند.
8- حامیان مالی , توسعه دهندگان و کاربران باید قادر به حفظ سرعت پیشرفت ثابتی براى يک مدت نامحدود باشند.
9- توجه مداوم به برتری فنی و طراحی خوب باعث افزایش چابکی می شود.
10 – اصل سادگی ضروری می باشد.
11 – بهترین معماری ها , نیاز مندی ها و طراحی ها از تیم های خود سازمانده پدید آور می شود.
12- در فواصل منظم , تیم برچگونگی موثرتر شدن تامل وتفکر می نماید و سپس تیم رفتار خود را بر اساس بازتاب این تفکر تنظیم و هم سو می نماید .
اگر بادقت به ارزش ها و اصول توسعه Agile توجه نموده باشید , خواهید دانست که در اصل این اصول برای دستیابی به این ارزش ها می باشند . یعنی محققان برای دستیابی به ارزش های Agile چند اصل را معرفی کرده اند که در صورت به کار بستن این اصول خواهیم توانست به ارزشهای مد نظر Agile برسیم و رسید ن به ارزش های Agile مساوی با دستیابی به ارزش های والای هرسازمانی خواهد بود . برای مثال اگر سازمانی بتواند ارزش “افراد و تعاملات بالاتر از فرآیندها و ابزارها ” را در سازمان نهادینه نماید , همانا به اهداف اصلی سازمان که شامل : نیروی کار باانگیزه , بهروری بالا , کیفیت بهتر و… دست خواهد یافت .
در تفکر Agile گذشته از این که 4 ارزش و 12 اصل برای این تفکر معرفی شده است ولی راه عملی برای دست یافتن به این ارزش ها و یا اصول ارائه نگردیده است . مثلا در اصل 6 داریم : “کارآمدترین و موثرترین روش برای انتقال و رساندن اطلاعات به تیم توسعه , گفتگوی چهره به چهره و رودرو می باشد. ” ولی در عمل راهی پیشنهاد نشده است و بحث عملیاتی وعملی به اجرا کننده تفکر Agile در سازمان (نسبت به متر های سازمان مربوطه ) واگذار شده است .
به عبارت ساده تر , شما که می خواهید Agile (چابک) شوید باید این دوازده اصل را رعایت نمایید و در عمل انجام بدهید ولی نوع انجام این روش مهم نیست . شما هر طوری که دوست دارید و یا با مترهای سازمان شما جور در خواهد آمد این اصول را انجام بدهید ; ولی آیا ما مرد آن هستیم که خودمان روش هایی برای انجام این اصول تعریف نماییم ؟ بدلیل اینکه ما مرد اینکار نیستیم دوست عزیز ken schwaber لطفی کردند و متد اسکرام را برای ما معرفی کردند .
در اصلاح Scrum یک Practice یا روش عملی برای پیاده سازی و انجام اصول و ارزش های Agile در پروژه های توسعه نرم افزار می باشد . به عبارت ساده تر اسکرام یک پکیج از روش های آماده می باشد که در صورت انجام این روش ها در پروژه ها مان به اصول و ارزش های Agile دست خواهیم یافت .
مثلا در اسکرام داریم که در اول و یا آخر هر روز کاری باید Stand-Up Meeting انجام شود . همانطور که توجه دارید این یک تجویز عملی است و می گوید باید انجام بدهید {البته با کیفیت و کمیت هایی که قبلا گفته شده است} . اما با انجام این تجویز اسکرام , ما در اصل به ارزش “افراد و تعاملات ” و اصل 5 اصول توسعه چابک نزدیکتر خواهیم شد . و کم کم و بعدی از مدتی خواهیم دید که چابک شده ایم .
اما مشکلی که وجود دارد این است که Scrum بر پایه ایده آل ها و یا به عبارت ساده تر با متر های ایده آل سازمان ها در کشورهای پیشرفته جهان ایجاد شده است و شاید این مترها برای ما کمی مناسب نباشد (البته نه زیاد) . پس می توانیم اسکرام را برای سازمان و یا تیم با مترهای مناسب سازمان خودمان بومی سازی نماییم {و هیچ مشکلی نیست و کمی نیاز به سعی و خطا خواهد داشت } .
البته برای انجام اصول Agile روش هایی به جز Scrum مانند XP , Crystal و… وجود دارند که توضیح این متد ها در حیطه این مقاله نمی گنجد.
دوستان اگر با موارد قید شده در مورد اسکرام مشکل دارند توصیه می شود که مقاله “اسکرام ساده شده ” را مطالعه بفرمایند .
یاشیاسیز
از زحمات شما کمال تشکر را دارم
بسیار عالی و جامع
نهایت تشکر را دارم
با سلام
واقعا ممنون از توضیحات خوب و دقیق و کاربردی شما در این حوزه