رویکرد Waterfall و رویکرد Agile در مدیریت پروژه، تحت شرایط مختلف ممکنه مورد استفاده قرار بگیرن. اما هر کدوم از این دو رویکرد ویژگیهایی دارن که قبل از این که با هم مقایسهشون کنیم، یه نگاهی به تعاریفشون خواهیم داشت.
رویکرد Agile یک رویکرد تکرارشونده به منظور پیشبرد پروژه است که تمرکزش بر انتشار محصول به صورت پیوسته است به نحوی که فیدبک مشتری هم به طور مستمر در فرآینده توسعه، مشارکت داده میشه. توانمندی تطبیق در طول هر تکرار، سرعت توسعه و انطباق محصول نهایی بر خواسته مشتری رو بیشتر میکنه.
با نیازهای فعلی مشتریان و کسبوکارها به پاسخها و تغییرات سریع، چابکی، انعطافپذیری رو فراهم میکنه که در طول فرآیند توسعه با تکرار، هماهنگی به وجود بیاد.
رویکرد آبشاری (Waterfall) به مدیریت پروزه، مستلزم تعریف شفاف گامهای اجرایی با فازبندی پروژه ست که هیچ فازی مادامی که قاز قبلی، تاییدیه انجام رو نگیره پیش نمیره. زمانی که یک فاز به پایان میرسه، بازبینی گامهای قبلی سخت و هزینهبر هست.
مدیریت پروژه آبشاری (Waterfall) از یک رویکرد خطی و ترتیبی تبعیت میکنه. این رویکرد برای کارهایی که قابل پیشبینی باشن و فرآیندهایی که به طور مداوم اتفاق میافتند، مناسبه.
هر ددلاینی که از دست بره یا هر تغییری که در محدوده پروژه اتفاق بیافته، میتونه نتایج گام های بعدی رو به شدت تحت تاثیر قرار بده. بعلاوه، زمانی که یک تیم تمرکزش رو به طور کامل روی فاز بعدی کار میذاره، حل بدهیهای فنی یا درست کردن باگها میتونه دردناک باشه، بخصوص اگه تیم به طور کامل مشغول فیچرهای جذید شده باشه
چابکی برای اولین بار توسط تیم@های توسعه نرمافزار به کار گرفته شده، که سعی کردن از مدلهای سنتی و گام به گام آبشاری، به روشها و رویکردهای که فیدبک مستمر دارند و در طول چرخه توسعه همسو میشن استفاده کنن.
مدیریت چابک پروژه، یه رویکرد تکرارشونده به توسعه است که گامهای توسعهای زیادی با گرفتن فیدبک به طور منظم برداشته میشه. این باعث میشه که در طول دوره توسعه محصول، تیم بتونه محصول سازگارتری با نیاز مشتری ارائه بده، به جای این که بخواد از یه مسیر خطی تبعیت کنه.
نکتهی مهمی که در هنگام حرکت به سوی چابکی باید در نظر گرفته بشه، بهخصوص وقتی که یک تیم یا سازمان هنوز داره به صورت سنتی پروژههاش رو مدیریت میکنه، اینه که این کار چالش برانگیزه. حرکت به سمت روشهای چابک ممکنه نیازداشته باشه که تعداد زیادی از فرآیندها تغییر کنن. زمانی که یک تیم میخواد از اصول اجایل بهرمند بشه باید دو تا موضوع مهم رو در نظر داشته باشه:
میشه با دیدن مدل توسعه بالا که یک مدل توسعه سنتی هست، فرآیند رسیدن به محصول نهایی که یه ماشین هست رو دنبال کرد. توی هر مرحله از تکرار، خروجی نیاز مشتری رو برطرف نمیکنه تا زمانی که محصول نهایی میاد بیرون، که ممکنه باز هم اون چیزی که مشتری میخواد نباشه.
مدل توسعه چابک اما در هر مرحله هم نیاز مشتری رو میشنوه، هم به نحوی برطرفش میکنه و هم با بهبودش تجربه بهتری برای مشتری خلق میکنه.
نکتهی مهم اینه که باید بدونیم چه زمانی و برای توسعه چه محصولی بایستی سراغ روشهای چابک بریم و چه زمانی از مدلهای سنتی تبعیت کنیم.
تصویر Agile Sandcastle هم یکی دیگه از مثالهای معروف حوزهی چابکی هست.
نکته مهم اینه که مثالهای بالا صرفا برای تداعی کردن تفاوتهاست و منظور صرف ما نیست. اما میتونه یه تصویر ذهنی از تفاوتهای احتمالی در خروجی نهایی کار به ما بده. مجدد قابل ذکره که نکته مهم اینجا اینه که ما بدونیم تحت چه شرایطی سراغ کدوم یکی از این رویکردها بریم.
این که کانتکست در انتخاب روش تاثیرگذار هست رو میشه با مثال یکی از دوستانی که فعال هست تو حوزهی چابکی ببینیم. نوشته بود که:
سوار هواپیما شدم. خلبان 3 ساعت ما رو توی پرواز نگه داشت به این علت که یکی از 4 موتور هواپیما روشن نمیشد. اگر میخواست Agile به موضوع نگاه کنه باید با همون 3 تا موتور میپرید و توی هوا یه فکری به حال موتور چهارم میکرد. ولی در واقع اینجا اون نقطهای هست که اصلا نیازی نیست از روشهای چابک تبعیت کرد. موضوع تو ناحیهی Clear و Obvious قرار داره، در نتیجه یه راهبری رو گام به گام و پله به پله باید اجرا میکرد.
این که ما چابکی رو به عنوان یک مایندست در نظر بگیریم، مهمه چون میتونه یه وقتایی از انجام هزینههای زیاد جلوگیری کنه، ولی مایندست چابک تو یه سری موارد مثل مثال فوق میگه که الآن تو نباید اصلا چابک عمل کنی.