هنگام توسعه پروژههای نرمافزاری، تغییر اجتناب ناپذیر است و به دلایل مختلفی رخ میدهد. گاهی فناوری مورد استفاده برای توسعه منسوخ میشود، گاهی شرکتها ادغام میشوند و یا حتی امکانات جدیدی به دست میآورند. گاهی هم چشماندازهای رقابتی تغییر میکنند و یا حتی اعضای تیم پروژه را ترک میکنند. به عبارت دیگر تنها اصل قطعی در این پروژهها، همین تغییرات مداوم و پیدرپی است؛ این امر موجب میشود فرایند توسعه، فرایندی بسیار پر ریسک شده و یک نیاز قوی برای امکان تغییر در برنامهها، دریافت بازخورد از مشتریان و بهبود مستمر ایجاد شود.
برای مدیریت این چالشها، توسعه دهندگان نرمافزار باید بسیار خلاق باشند و دانش بالایی داشته باشند. آنها نمیتوانند به طور کامل به برنامهریزیها و پیشبینیهای قبلی تکیه کنند و مطابق چک لیستها و فرایندهایی که توسط افراد دیگری تنظیم شدهاند، پایبند بمانند. توسعه نرمافزار یک روند تجربی است که بر تجربیات واقعی و حقایق متکی است و توسعه دهندگان از آن استفاده میکنند تا به طور مداوم طرحهایشان را تغییر دهند و بهبود ببخشند.
نرم افزارها در ابعاد کوچک و به صورت تکراری ساخته میشوند. هر مرحله خود شامل مراحل دیگری همچون بررسی نیازمندیها، تحلیل و بررسی، کد زدن، سر هم کردن کدها، تست کدها و برطرف کردن خطاها است؛ در پایان هر مرحله ازین تکرارها یک محصول نرمافزاری قابل استفاده تولید میشود. چنین فرایندی به تیمهای نرمافزاری این قدرت را میدهد که بهتر و قویتر در مقابل ریسکها و عدم قطعیتها در فرایند توسعه محصول ظاهر شوند.
در دهه نود تکنیکهای چابک فراوانی تکامل یافتند که سعی در حل چالشهای کلیدی صنعت نرمافزار داشتند. از اولین این تلاشها میتوان به «مانیفست چابک» اشاره کرد که در آن گروهی از رهبران فکری در سال 2001 میلادی به دنبال به رسمیت شناخته شدن رویکرد چابک بودند. نویسندگان این مانیفست بیان کردند: «ما با توسعه نرمافزار و کمک به دیگران در انجام آن، در حال کشف راههای بهتری برای توسعه نرمافزار هستیم. در این راه:
نویسندگان چهار اصل بالا بر این موضوع نیز تاکید کردند که با وجود ارزشمند دانستن موارد سمت چپ، موارد سمت راست نزد آنها ارجحیت و ارزش بیشتری دارد.»
لازم است تاکید شود که مانیفست چابک بر علیه فرایندها و ابزارها، مستندسازی، قرادادها و یا طرحها نیست بلکه تنها به چهار اصل گفته شده اعتبار بیشتری میبخشد. این مانیفست بازتاب دهنده خرد جمعی رهبران بسیاری از صنعت تولید نرمافزار بوده و بیانگر مناسبترین راه تولید محصولات پیچیده نرمافزاری در شرایط غیر قابل پیشبینی است؛ زیرا تیمهای چابک با آغوش باز به استقبال تغییرات میروند.
در همان حین که محبوبیت تکنیکهای چابک در حال گسترش بود، اصول آن هم در حال شکلگیری بود. امروزه «دوازده اصل» را به عنوان اصول چابک میشناسیم که در وب سایت «مانیفست چابک» (Agile Manifesto) هم آمدهاند؛ آنها را در ادامه شرح خواهیم داد.
اصل اول-رضایت مشتری: بالاترین اولویت ما، راضی نگه داشتن مشتریها از طریق تحویل زود به زود و پیوسته بخشهای کوچک شده پروژه اصلی است. تاکید میکنیم که میزان موفقیت تیم به تهیه محصولی بستگی دارد که بتواند ارزشمند و تاثیرگذار باشد. در یک تیم چابک نوعی، باید سندی از نیازمندیهای مشتری تنظیم شده و بر اساس ارزشهای تجاری او، اولویت بندی شود. به این سند اصطلاحا بکلاگ (backlog) گفته میشود و تیم توسعه بر اساس اولویتهای از بالا به پائین بکلاگ کار خواهد کرد. میدانیم که امروزه بر خلاف دوران گذشته، مشتریها برای خرید محصولات مورد نیازشان، امکان انتخاب میان فروشندگان مختلف دارند؛ در نتیجه رقابت سختی در جریان است و تنها راه برای موفقیت سازمان این است که همیشه رضایت مشتری را جلب کنیم.
اصل دوم-گشادهرویی در مقابل تغییرات: استقبال از تغییراتی که مشتری مطرح میکند بر اساس این اصل ضروری است، این مورد حتی در مراحل پایانی پروژه نیز الزامی محسوب میشود؛ اعمال چنین تغییراتی در نهایت منجر به رضایت بیشتر مشتری خواهد شد و این نگاه مثبت به تغییرات مزیت رقابتی تیمهای چابک به شمار میرود.
اصل سوم-تحویل زود به زود: تیمهای چابک باید محصول درخواستی مشتری را به تناوب در چندین بخش قابل استفاده حاضر کرده و تحویل دهند. هرچه این بازههای زمانی کوچکتر باشند، بهتر است؛ البته این بازهها میتوانند از چندین هفته تا چندین ماه متغیر باشند.
اصل چهارم-تعامل زیاد با مشتری: تیمهای چابک به طور متناوب و پیوسته باید از مشتری بازخورد دریافت کنند تا محصول نهایی تولیدی را با بیشترین میزان نزدیکی به درخواست مشتری تحویل دهند. در این حالت مشتری نیز دسترسی زود به زود به سفارش در حال تکامل خود را دارد و به خوبی در جریان روند پیشرفت کار قرار میگیرد. امروزه کمپانیهای مدرن فراوانی هستند که مشتری را به طور روزانه و یا حتی چندین بار در طی روز، در جریان پیشرفت توسعه محصول قرار میدهند.
اصل پنجم-تیمی از افراد با انگیزه: تیم چابک باید از افراد با انگیزه تشکیل شود، از ایدههای آنها حمایت شود و فضای لازم برای پیشرفت در اختیارشان قرار بگیرد. به اعضای تیمتان اعتماد کنید تا در نهایت کارها را به بهترین شکل به انجام برسانند.
اصل ششم-مکالمات رو در رو: کارآمدترین و موثرترین روش انتقال اطلاعات به تیم توسعه و نیز بهترین روش انتقال اطلاعات در میان اعضای تیم ، گفتگوی چهره به چهره است.
اصل هفتم-نرم افزار قابل استفاده: تحویل یک نرم افزار قابل استفاده، اصلیترین معیار سنجش پیشرفت پروژه است.
اصل هشتم-توسعه پایدار: تیمهای چابک مروج توسعه پایدار هستند. لازم است که حامیان مالی، مشتریها، توسعه دهندگان و کاربران نرمافزار شاهد سرعت پیشرفت ثابتی در طول زمان باشند.
اصل نهم-حرکت دائمی در لبه تکنولوژی: اگر به چابکی تیم خود اهمیت میدهید باید به طور مداوم به برتری فنی و نیز طراحی بهتر محصولات خود توجه داشته باشید.
اصل دهم-سادگی: هنر تیمهای چابک از اجتناب از هرگونه پیچیدگی در طراحی و توسعه محصولات است.
اصل یازدهم-تیمهای خودسازمانده: این تیمها بهترین ایدهها، نیازمندیها، معماریها و طراحی ها را پدید میآورند.
اصل دوازدهم-بحث و تبادل نظر: لازم است اعضای تیمهای چابک در بازههای زمانی مشخص و منظم، در مورد روشهای بهتر شدن با همدیگر بحث و تبادل نظر داشته باشند و در نهایت رفتار تیمی بر اساس برایند این تفکرات و تصمیمات تیمی، جهتدهی شود.
محبوبترین فریمورک چابکی که امروزه وجود دارد، «اسکرام» (Scrum) است که در نوشتههای بعدی به آن خواهیم پرداخت.