‫Agile و استفاده از آن

اگر بخواهیم Agile را خیلی ساده و بدون استفاده از لغات دقیق و فنی و مرزبندی‌های مربوطه تعریف کنیم، آن وقت Agile یعنی یک نوع روش تولید نرم‌افزار که در آن عمده توجه به انعطاف‌پذیری تیم تولید در پذیرش تغییرات مداوم نیازمندی‌های اولیه نرم‌افزار است. این انعطاف‌پذیری در اثر iterative و incremental بودن این روش به وجود آمده است.

Agile در مجموعه مفاهیم مهندسی نرم‌افزار، هم‌خانواده مفاهیمی مثل RUP و SSADM است با این توضیح که این سال‌ها هم‌زمان با پیشرفت بحث‌های شی‌گرایی، Agile هم حسابی رواج پیدا کرده و در خیلی از پروژه‌ها جای RUP را گرفته است. Agile در مقایسه با متودولوژی‌هایی مثل RUP که predictive هستند، با اصطلاح adaptive توصیف می‌شود. adaptive یعنی این که روش مورد نظر می‌تواند خودش را به راحتی با تغییرات نیازمندی‌های تطبیق دهد. درست به همین دلیل هم است که نمی‌توان روند پیشرفت پروژه‌های Agile را با دقت پیش‌بینی کرد. از سویی دیگر روش‌هایی مثل RUP انطباق‌پذیری کمتری دارند ولی در مقابل چون تغییرات کمی دارند به خوبی predictive (قابل پیش‌بینی) هستند. Agile فقط شامل Scrum و XP نمی‌شود بلکه هر روشی را که با مانیفست Agile مطابقت داشته باشد را می‌توان Agile نامید، از جمله روش‌هایی که توسط مایکروسافت و بقیه ارائه شده‌اند.

به نظر می‌رسد Agile (با تکیه بر Scrum/XP) با همه راحتی‌هایی که دارد، برای اجرا در شرکت‌های ایرانی دچار مشکلات خاصی هم بشود:
۱- Agile اشتباهاً زیادی لوکس به نظر می‌رسد. مدیران شرکت‌ها دید خیلی خوبی نسبت به تشریفات آن نداشته و فکر می‌کنند یک جور کار غیر ضروری است. مثلاً Standingها (جلسات سرپایی مرور) یکی از آن موارد است.
۲- Agile اشتباهاً بی‌نظم و بی‌برنامه به نظر می‌رسد، چون Agile یک روش Adaptive است و نمی‌توان طرح‌های کاملاً دقیقی از روند پیشرفت کار ارائه داد. این موضوع می‌تواند بهانه خوبی در دست مخالفان Agile باشد. خصوصاً آنها که عاشق Gantt chart هستند. این طور افراد با اعمال گانت چارت و عدم تغییر گانت چارت عملاً Agile را از یک روش iterative و incremental به یک روش آبشاری مثل SSADM تبدیل می‌کنند.
۳- Agile اشتباهاً غیر مستند به نظر می‌رسد. بله درست است که Agile نسبت به روش‌هایی مثل RUP مستندات کمتری تولید می‌کند ولی این به خاطر تمرکز بیشتر بر ارائه خود محصول است نه بی‌اهمیتی آن نسبت به documentation.‏
۴- پایبندی به Agile اشتباهاً سخت به نظر می‌رسد. در Scrum که یکی از رایج‌ترین روش‌های Agile است، همه افراد تیم ملزم به تطبیق خود با بازه زمانی ۲ تا ۴ هفته‌ای به نام sprint هستند. در هر sprint ممکن است اولویت کارها عوض شود و taskهایی که در sprintهای قبلی با جدیت دنبال می‌شد کنار گذاشته شوند. در جلسات مابین sprint احتیاج به حضور و تعامل جدی نماینده کارفرما (product owner) هست. این‌ها باعث می‌شود تا بعضی افراد فکر کنند اجرای Scrum خیلی سخت است. ولی خوشبختانه واقعیت این است که با تعهد به این وظایف محصولی بهتر در زمانی کمتر تولید خواهد شد.

————–
منبع: مقالات و نوشته‌های مربوط به Agile و Scrum در ویکی‌پدیا و StackOverflow