متد Agile چیست؟ آشنایی با ذهنیت اجایل در تیمها
توسعه نرم افزار با استفاده از روشهای سنتی، یک کابوس واقعی است! برای توسعه یک نرم افزار عادی در ابتدا باید کل منابع و زمان موردنیاز برای توسعه پروژه تعیین میشد، سپس برنامه ریزی فوق العاده دقیقی انجام شده، پروژه به چندین مرحله و فاز تقسیم بندی شده و بعد از پایان همه این فازها، وارد مرحله تست نرم افزار خواهید شد. در تصور، خروجی چنین روشی بینقص و عالی خواهد بود؛ اما تجربه ثابت کرده ابدا اینطور نیست. مشکلات پیشبینی نشده، عدم سازگاری خروجی با خواسته مشتری، مشکلات توسعه، مسائل سیاسی و اجتماعی، کمبود منابع و دهها چیز دیگر، موجب عدم کارایی لازم پروژه میشدند. این رویه در اوایل دهه 2000 میلادی با معرفی متدولوژی اَجایل (Agile یا چابُک) کاربرد خود را از دست داد و بسیاری از سازمانها و شرکتها، به استفاده از متد چابک مشغول شدند و در نتیجه، رویه سلسله مراتبی یا آبشاری، منسوخ شد.
در ادامه این مطلب از وبلاگ آموزشی سبزلرن، به معرفی اجایل به شکلی ساده میپردازیم. درباره تاریخچه و بیانیه مشهور Agile صحبت کرده و اهمیت آن در توسعه نرم افزار و اینکه چطور خودمان را با اجایل سازگار کنیم را مورد بحث قرار میدهیم!
نکته: در ابتدا به تشریح تعدادی از مباحث برای درک بهتر مفهوم اجایل پرداخته شده که میتواند ذهنیت کاملتری نسبت به این موضوع ایجاد کند. لطفا متن را کامل و با دقت مطالعه کنید.
متدولوژی Agile چیست؟
درباره متدولوژی اجایل صحبت زیاد است؛ اما بیایید با این مورد شروع کنیم که اجایل، یک متدولوژی نیست!
یک متدولوژی، دارای قوانین، قواعد و فرایندهایی است که به صورت ساختارمند برای انجام یک کار، پروژه یا رسیدن به یک هدف انجام میشود. یک متدولوژی به صورت از پیش تعریف شده و کاملا دقیق و نیازمند پیروی کامل تیمها است.
اما اجایل، مجموعهای از ارزشها و اصول است که به تیمهای توسعه نرم افزار، آزادی عمل کافی برای یافتن روشهایی متناسب با پروژه و شرایط را ارائه میدهد. کل چیزی که با نام Agile میشناسیم، از 4 ارزش و 12 اصل تشکیل شده که به شما، امکان «توسعه متدولوژیهای توسعه نرم افزار» را میدهد! در نهایت به این نتیجه میرسیم که عبارت «متد اجایل» اشتباه است و جایگزین درست آن چارچوب فکری اجایل (Agile Mindset) یا «تفکر چابک» است که به تیمها برای توسعه یک چارچوب مناسب برای رسیدن به بهترین جریان کاری و در نهایت، ارائه یک خروجی مناسب و رضایت بالای مشتری کمک میکند.
سوال: چطور میتوان با استفاده از اجایل، روند توسعه پروژهها را بهبود داد؟
در تفکر Agile، همهچیز حول تکرار و دریافت بازخورد میچرخد! همه پروژهها تبدیل به بخشهای کوچکتری میشوند که معمولا هر بخش نیز شامل وظایفی میشود. هر بخش باید به صورت یک چرخه مداوم بین توسعه و دریافت بازخورد حرکت کند تا به خروجی موردنظر برسد. در این حالت، میتوان مشکلات را به سرعت برطرف کرده و تغییرات اعمال شده را با دیگر بخشهای پروژه هماهنگ کرد. از سوی دیگر، با تحویل مداوم نتیجه هر تکرار و دریافت بازخوردهای مشتریان، خروجی نهایی بهتر میشوند.
ممکن است در نگاه اول، این فرآیند ساده به نظر برسد؛ در عمل نیز چیز زیادی تغییر نمیکند و تفاوت زیادی بین اجایل و روشهای سنتی نیست. اما این موضوع را درنظر داشته باشید که Agile، تنها یک ذهنیت است و چارچوب کاری باید با توجه به پروژه و شرایط تیم تعریف شود. البته لازم نیست حتما یک چارچوب مختص خودتان ایجاد کنید؛ بلکه میتوانید از «متدولوژیهای مبتنی بر تفکر اجایل» نظیر اسکرام (Scrum) و کانبان (Kanban) همراه با کمی شخصی سازی استفاده کنید. در بخش مهمترین چارچوبهای Agile درباره این متدولوژیها بیشتر صحبت میکنیم.
معنی Agile چیست؟
کلمه آَجایل (Agile) دارای ترجمههای متنوعی به زبان فارسی است؛ اما شاید بهترین گزینه با توجه به ماهیت آن، کلمه چابُک باشد. البته تعاریف دیگری نظیر سریع، فِرز و در مواردی، کلمه انعطاف پذیر نیز به عنوان معنی Agile مورداستفاده قرار میگیرند. از آنجایی که این مفهوم، ویژگیهایی نظیر سرعت بیشتر، دقت و خروجی مناسبتر را به تیم اضافه میکند، استفاده از کلمه چابک گزینه بهتری است؛ همانطور که از ابتدای این مطلب چندین بار به آن اشاره کردیم.
تاریخچه ذهنیت اجایل
در روزهای 11 تا 13 ماه فوریه سال 2001، تعداد 17 نفر از توسعه دهندگان نرم افزار تصمیم به حضور در یک دورهمی در پیست اسکی SnowBird واقع در ایالت یوتا در آمریکا گرفتند. در آن زمان، نارضایتیها از متدولوژی WaterFall یا آبشاری در بحث برنامه نویسی بسیار زیاد بود و این 17 نفر طی صحبتهای خود قبل از این دورهمی، به ایده جدیدی جهت بهبود این وضعیت فکر کرده بودند. در این دورهمی، آنها یک سند یا بهتر است بگوییم بیانیهای نوشتند که در آن، 4 ارزش و 12 اصل به عنوان یک چارچوب ذهنی جهت بهبود فرآیندهای چرخه توسعه نرم افزار به شکلی خاص نوشته شده بود.
این بیانیه را میتوان نسخهای مکتوب شده از ذهنیت اجایل دانست که در آن، ارزشها و قواعد مرکزی توسعه نرم افزار چابک تشریح شده است. این بیانیه امروزه با عنوان Manifesto for Agile Software Development یا بیانیه توسعه نرم افزارِ چابک شناخته میشود.
مانیفست یا بیانیه اجایل
تمام چیزی که در ابتدا با نام Agile میشناختیم، طی 4 ارزش و 12 اصل توسط این 17 توسعه دهنده به عنوان مانیفست اجایل نوشته شد. اگر بخواهیم به صورت خیلی خلاصه درباره ارزشها و اصول اجایل صحبت کنیم، به 2 جمله زیر میرسیم:
- ارزشها مشخص میکنند چه چیزی مهم است.
- اصول نشان میدهند چطور آنها را انجام دهیم.
نویسندگان مانیفست اجایل در اواخر همان سال یک سازمان غیرانتفاعی با نام Agile Alliance یا اتحاد چابک برای ترویج اجایل در دنیا تاسیس کردند که به صورت سالیانه، کنفرانسهای بزرگی حول محور اجایل برگزار میکنند. طبق ادعای این سازمان، در حال حاضر بیش از 90 هزار نفر عضو این سازمان شده و در مسیر ترویج و استفاده بهتر از ذهنیت Agile در کل دنیا تلاش میکنند.
در بخش بعد به صورت کامل درباره ارزشها و اصول اجایل صحبت میکنیم.
ارزشهای اجایل چیست؟
در اجایل، 4 مؤلفه کلیدی وجود دارد که مسیر کلی تیمهای مختلف در پروژهها را تعیین میکنند. در واقع این 4 ارزش تعیین میکند که چطور باید یک پروژه را مطابق با تفکر چابک جلو ببریم و براساس آن، یک متدولوژی مناسب طراحی کنیم. این 4 ارزش به صورت زیر معرفی شدهاند:
البته در این بیانیه و بعد از بیان این ارزشها، دو جمله نوشته شده که میتواند درک بهتری نسبت به این تفکر را ایجاد کند:
با وجود اینکه موارد سمت چپ نیز ارزشمند هستند، ولی ما برای موارد سمت راست ارزش بیشتری قائل هستیم!
حالا بیایید طی یک سناریو، اهمیت هرکدام از ارزشهای Agile را بررسی کنیم. برای این کار، خودتان را به عنوان یک برنامه نویس در یک تیم توسعه وب تصور کنید که قصد توسعه یک فروشگاه اینترنتی کتاب برای یکی از مشتریان خود را دارد. در ادامه، هرکدام از ارزشهای گفته شده در بالا را تشریح کرده و نمونهای از اهمیت آن در این سناریو را بررسی میکنیم.
1. ارتباط و تعامل با افراد، بالاتر از فرایندها و ابزارها است.
در ذهنیت چابک، افراد به جای استفاده از فرآیندهای طولانی و کم اثر، باید با یکدیگر تعامل سازنده داشته باشند. در واقع ابزارها و فرآیندهایی که طی میشوند، باید ابزاری برای تسهیل انجام کارها باشند؛ نه اینکه زمان بیشتری را از اعضای تیم گرفته و روی عملکرد آنها تاثیر منفی بگذارد! در حالت عادی ممکن است گزارشات و مواردی که باید در پروژه اصلاح شوند به صورت ایمیل برای شما ارسال شود؛ به جای این کار، میتوانید به صورت روزانه جلسات آنلاین یا حضوری کوتاهی را برگزار کرده و درباره مساول پروژه صحبت کنید.
برای مثال، تصور کنید یکی از اعضای تیم متوجه عدم کارکرد صحیح فیلتر جستجوی محصولات سایت شده است. به جای انتظار برای نوشته شدن گزارش رسمی یا هر فرایند دیگری که زمانبر است، میتوانید موضوع را در جلسه روزانه مطرح کرده و به سرعت برای رفع مشکل اقدام کنید!
2. ارائه یک نرم افزار قابل استفاده، بالاتر از تهیه مستندات جامع است.
یکی از اصول مهم در توسعه نرم افزار، نوشتن مستندات برای پروژه است. یکی از اشتباهات در زمان نوشتن مستندات پروژه، توضیحات غیرضرور و زیاد درباره آن است؛ خصوصا اینکه مستند نویسی برای پروژه، فرآیندی زمانبر محسوب میشوند. در ذهنیت اجایل، تمرکز اصلی به جای نوشتن مستندات کامل، روی ارائه یک خروجی قابل استفاده است؛ زیرا اگر خروجی به درستی کار نکند، مستندات آن ارزشی نخواهد داشت.
البته مستندات مهم هستند؛ اما بهتر است مختصر و مفید نوشته شوند. به جای نوشتن یک سند 25 صفحهای برای یک پروژه، میتوانید آن را به صورت جامع و مفید در 2 یا 3 صفحه خلاصه کنید.
برای درک بهتر اهمیت این ارزش در اجایل، تصور کنید به جای نوشتن مستندات طولانی، یک نسخه اولیه از سایت مشتری را طراحی کرده و به او ارائه میدهید. این کار در زمان سریعتری انجام شده و مشتری میتواند با ارائه بازخورد نسبت به آن، هم در بهبود خروجی نهایی تاثیرگذار باشد و هم به ایجاد سریعتر تغییرات کمک کند. این مشارکت مشتری در توسعه، ما را به ارزش سوم میرساند؛ یعنی:
3. تعامل و مشارکت مشتری در فرایند توسعه، بالاتر از قراردادهای کاری است.
در روشهای سنتی، پیشنیازهای مربوط به پروژه به مشتری اعلام میشود و در مراحل بعد، درباره خروجی نهایی پروژه و تحویل آن صحبت میشود. مشکل این روش، این است که مشتری عملا مشارکتی در روند توسعه محصول نداشته و نمیتواند بازخوردی برای بهبود پروژه ارائه دهد.
این در حالیست که یکی از اصول مهم اجایل، مشارکت مداوم مشتری در فرآیند توسعه است. ایجاد این تعامل بین مشتری و تیم توسعه دهندگان، کمک میکند تیم در جریان نیازهای واقعی مشتری قرار گرفته و به جای استفاده از فرضیات یا پیشبینی، با استفاده از بازخوردهای واقعی و مداوم به بهبود محصول بپردازد. میتوانید در هر مرحله از توسعه پروژه، از مشتری بخواهید بازخوردهایی برای بهبود خروجی فعلی ارائه دهد. در صورت اجرای این روش، ایرادات هر بخش از پروژه در همان مرحله انجام میشود. به این ترتیب، نه تنها خبری از انجام تغییرات بزرگ در انتهاب پروژه نیست؛ بلکه این موضوع، به افزایش سرعت پروژه و بهبود کیفیت خروجی نهایی کمک میکند.
برای مشارکت مشتریان در روند توسعه، میتوانید بسته به شرایط پروژه و مشتری، دورههای زمانی مشخصی را برای ارائه محصول تعیین کنید تا علاوه بر مشاهده روند پیشرفت توسعه، بازخوردهای مناسبی برای بهبود محصول دریافت کنید. مثلا میتوانید در بازههای 10 روزه، یک نسخه آزمایشی از سایت را در اختیار مشتری قرار دهید تا با مشاهده تغییرات اعمال شده، نظرات جدیدی را دریافت کنید.
4. واکنش به تغییرات، بالاتر از پیروی از یک طرح ثابت
و آخرین مورد از ارزشهای اجایل، استقبال با روی گشاده از تغییرات است. به جای اینکه به یک برنامه ثابت پایبند باشید، بهتر است در برخورد با تغییرات، واکنشهایی سریع و درست داشته باشید و تضمیمات جدیدی را در راستای پیشبرد پروژه بگیرید. این کار به شما کمک میکند علاوه بر افزایش سرعت اعمال تغییرات یا رفع مشکلات، پروژه را در مسیر درست نگه دارد.
برای مثال، ممکن است مشتری بخواهد تغییراتی در ترتیب نمایش محصولات در دسته بندیها ایجاد شود. به جای اینکه این کار را به انتهای توسعه پروژه موکول کنید، طی یک برنامه کوتاه مدت آن را تغییر داده و روند توسعه را بدون مشکل جلو ببرید!
تا اینجا دانستیم ارزشهای اجایل چیست و میتواند چه تاثیراتی در روند توسعه یک پروژه داشته باشد. همینطور دانستیم که همه آنها با هم مرتبط بوده و در کنار هم، میتوانند مسیر انجام یک کار با ذهنیت Agile را شکل دهند. در ادامه، به اصول اجایل میپردازیم.
اصول دوازدهگانه Agile چیست؟
حالا بیایید درباره اصول اجایل صحبت کنیم؛ اصولی که به ما در پیروی از ارزشها کمک میکنند. برای صرفهجویی در زمان، تصویر زیر آماده شده که میتوانید خلاصهای سریع از این اصول را در آن مشاهده کنید.
اما اگر توضیحات بیشتری درباره هرکدام میخواهید، لیست زیر مخصوص شماست.
- اولویت اصلی، کسب رضایت مشتری از طریق تحویل مداوم محصول ارزشمند است.
- از تغییر نیازمندیها حتی در مراحل آخر توسعه استقبال میشود. فرآیندهای اجایل میتوانند تغییر را به مزیت رقابتی محصول مشتری تبدیل کنند.
- نرم افزار را به صورت مداوم و در بازه چند هفتهای یا چند ماهه (ترجیحا با زمانبندی کوتاهتر) عرضه کنید.
- مشتریان و توسعه دهندگان باید به صورت مستمر با یکدیگر همکاری کنند.
- پروژه را به افراد باانگیزه بسپارید. محیط و منابع موردنیازشان را فراهم کرده و به آنها در رسیدگی به امور اعتماد کنید.
- گفتگوی چهره به چهره، موثرترین و کارآمدترین روش انتقال اطلاعات به اعضای تیم توسعه است.
- کارایی نرم افزار، معیار اصلی برای سنجش پیشرفت پروژه است.
- فرآیندهای اجایل، توسعه پایدار با سرعت ثابت را ترویج میکنند. حامیان، تیمها و مشتریان باید سرعت توسعه ثابتی را به شکل دائمی حفظ کنند.
- توجه مداوم بر کیفیت فنی و معماری خوب پروژه، باعث افزایش سرعت و کیفیت پیشرفت میشود.
- هنر سادگی یا اجتناب از کارهای غیرضروری در پروژه را یاد بگیرید.
- تیمهای چابک نیزای به مدیریت کارهای خرد ندارند؛ زیرا خود را هدایت و سازماندهی میکنند.
- تیم باید در فواصب منظم درباره عملکرد خود بحث کرده و آن را با نتایج بحث، سازگار کند.
تا اینجا هر چیزی که باید برای درک ماهیت اجایل میدانستیم را مرور کردیم. در ادامه، به معرفی تعدادی از متدولوژیهای مبتنی بر اجایل پرداخته و آنها را به صورت مختصر معرفی میکنیم.
مهمترین چارچوبهای Agile چیست؟
قبل از معرفی چارچوبهای چابک یا Agile Frameworks، بهتر است بدانید این متدها، در واقع همان روشهای توسعه پروژه هستند که با تکیه بر تفکر Agile ایجاد شدهاند. بنابراین میتوان آنها را انواع مختلف متدولوژی Agile دانست.
با استفاده از جدول زیر میتوانید مقایسه کوتاهی بین بهترین فریمورکهای اجایل را مشاهده کنید.
چارچوب | مزایا | مناسب برای | میزان محبوبیت | تمرکز |
اسکرام (Scrum) | فرآیندهای مشخص افزایش تعامل و مسئولیت پذیری در تیم امکان تحویل سریعتر محصولات |
تیمهای کوچک تا متوسط تیمهای توسعه نرمافزار تیمهای مبتنی بر انجام وظایف |
بسیار بالا | مدیریت پروژه و بهبود تعامل تیمی |
کانبان (Kanban) | انعطاف پذیری بالا مناسب برای مدیریت کارهای پیوسته دید بصری از وظایف و وضعیت پیشرفت پروژه |
تیمهای با جریان کاری مداوم (مانند پشتیبانی) | بالا، خصوصا در تولید و خدمات | بهبود جریان کاری و کاهش موانع توسعه |
اسکیلد اجایل (SAFe) | مناسب برای سازمانهای بزرگ افزایش هماهنگی تیمها تسهیل در ارائه مداوم |
تیمهای بزرگ و سازمانهای گسترده | متوسط | هماهنگی بین تیمهای مختلف |
لین (Lean) | کاهش اتلاف منابع بهینهسازی فرآیندها تمرکز بر ارزش مشتری |
تیمهایی که به دنبال بهبود مستمر هستند | متوسط (در حال رشد) | بهبود کارایی و ارائه مداوم ارزش به مشتری |
اسکرام
فریمورک اسکرام، محبوبترین فریمورک مدیریت پروژه براساس ذهنیت چابک است که به تیمهای مختلف کمک میکند با استفاده از ذهنیت اجایل، محصول نهایی باارزشتری را ارائه دهند. در اسکرام، هر پروژه به وظایف یا بخشهای کوچکتری تقسیم میشود که انجام هرکدام به یک تا چند هفته زمان نیاز دارد. به این چرخه که برای انجام هرکدام از بخشها انجام میشود، اسپرینت (Sprint) گفته میشود.
اسکرام یک روش افزایشی است؛ یعنی طی زمان و با انجام اسپرینتهای مختلف، روند توسعه نیز جلو رفته و افزایش پیدا میکند. استفاده از این فریمورک اجایل، برای تیمهای کوچک کمتر از 10 نفر مناسب است؛ زیرا در تیمهای کوچک، ارتباطات بسیار سادهتر و کارآمدتر هستند. وجود این نوع از ارتباطات به تصمیمگیری سریعتر کمک کرده و سرعت کار را بالاتر میبرند. از سوی دیگر، تیمهای کوچک دارای انعطاف پذیری بالاتری هستند و میتوانند چالشهای مختلف را برطرف کنند. در ضمن، در تیمهای کوچک خبری از مشکلاتی نظیر تداخل وظایف نیست!
برای آشنایی بیشتر با این چارچوب مدیریت پروژه چابک، میتوانید مطلب اسکرام چیست؟ را مطالعه کنید.
کانبان
متد کانبان (Kanban) یکی دیگر از چارچوبهای مبتنی بر تفکر چابک است که پیشینه آن به دهه 1950 میلای در ژاپن برمیگردد؛ اما چیزی که امروزه با نام Kanban میشناسیم، از سال 2007 متولد شده است. کانبان برخلاف اسکرام که دارای زمانبندی منظم (اسپرینتها) برای انجام وظایف است، بیشتر روی جریان کاری تمرکز دارد.
استفاده از چارچوب کانبان برای تیمهایی که نیاز به بهبود فرآیندها و گردش کاری بدون نیاز به اعمال تغییرات اساسی دارند، مناسب است. در این حالت، چیزی به نام اسپرینت و تقسیم بندی زمان به صورت دقیق وجود نداشته و وظایف مختلف، با توجه به ظرفیت واقعی تیم، انجام میشوند.
XP یا Extreme Programming
فریمورک XP با Extreme Programming دیگر فریمورک محبوب در ذهنیت Agile است که به صورت خاص در توسعه نرم افزار مورداستفاده قرار میگیرد. این چارچوب با هدف بهبود کیفیت نرم افزار و انجام سریع تغییرات در چرخه عمر پروژه ابداع شده و برای استفاده در پروژههایی که نیاز به تغییرات مداوم و بهبود مستمر دارند، بهترین انتخاب محسوب میشود. به این ترتیب نرم افزار را به صورت مداوم و در بازههای زمانی کوتاه به مشتری تحویل داده و بازخوردهای سریع از او دریافت میکنیم.
در متد XP، توسعه دهندگان به صورت جفت روی پروژه کار میکنند و بعد از انجام یکی از وظایف تعریف شده، تست خودکار را اجرا میکنند. بعد از اطمینان از صحت کد، نسخهای از برنامه جدید برای مشتری ارسال میشود تا بازخوردهای بعدی دریافت شوند. در این متد، تمرکز روی دریافت بازخوردهای سریع و بهبود دائمی پروژه است؛ به همین دلیل سادگی و تمیز بودن کدها (Clean Code) دارای اهمیت است.
راه و روش پیادهسازی تفکر Agile چیست؟
تفکر اجایل تنها برای تیمهای برنامه نویسی نیست؛ بلکه امکان پیادهسازی در زمینههای مختلفی را داشته و میتواند خارج از دنیای برنامه نویسی و کامپیوتر نیز مورداستفاده قرار گیرد. اما برای اینکه موفق به پیاده کردن تفکر اجایل در تیم خود شوید، در قدم اول باید نگزش و ذهن اعضای تیم را دچار تغییر کنید. از آنها درخواست کنید به تغییرات پاسخ داده و به جای تمرکز بر کیفیت نهایی به صورت یکجا، روی تحویل مداوم و موثر یک نرم افزار تمرکز کنند. در قدم بعد، میتوانید با استفاده جلسات روزانه و کوتاه، مسائل یا مشکلات را در زمان کمتری رفع کنید.
همچنین میتوانید دورههای زمانی کوتاه نظیر اسپرینتها در اسکرام را برای ارزیابی پیشرفت تیم تعریف کرده و مشابه اسکرام، به بهبود کار مشغول شوید. علاوه بر موارد بالا، امکان تعامل بین مشتری و تیم را برای دریافت بازخوردهای مستمر از مشتری فراهم کنید.
در نهایت، تفکر اجایل چه در دنیای توسعه نرم افزار و چه حوزههای دیگر نظیر مارکتینگ و فروش، خدمات مشتریان و حتی توسعه محصول، میتواند باعث بهبود گردش کاری و دریافت خروجی بهتری از پروژه در زمان کوتاهتری باشد. مهم است چطور این تفکر را در تیم یا سازمان خود پیادهسازی میکنید و مهم است به عنوان یک توسعه دهنده یا یکی از اعضای تیم، با این تفکر آشنایی داشته باشید!
نظری برای این مقاله ثبت نشده است