نویسنده: علیرضا اسماعیلی، مدیرعامل شرکت رویای سبز نرم افزارهای آینده (فیوسافت) و عضو تیم ترجمه کتاب اصول و روش کاربردی اسکرام
علیرضا اسماعیلی هستم. مدیر مجموعهای که شاید یکی از مهمترین دغدغههاشون، تولید محصول باکیفیت بوده. این قراریه که با هم گذاشتیم: محصول باکیفیت تولید میکنیم؛ محصولی که زیر اون رو امضا کنیم و همهی مسئولیتش رو میپذیریم؛ هرچند در دورههای مختلف، تجربههای موفق و ناموفق زیادی داشتهایم.
به نظرم جا انداختن چنین ارزشی در تیم یا به اصطلاح فرهنگسازی اون، نیازمند بهکارگیری یکی از مهمترین تجربههای چابکه. Test Driven Development یا به اختصار TDD. برای اطلاعات بیشتر اینجا و اینجا رو که ببینید.
با دوست عزیزم آقای مهندس مسعود خاری مشورت کردم، آمازون را جستجو کردم و کتابهای مختلف تو این حوزه رو بررسی کردم تا به کتاب Professional Test Driven Development with C#: Developing Real World Applications with TDD از انتشارات راکس رسیدم.
کتابی که مفاهیم TDD رو به زبانی ساده بیان میکنه و در کنارش شما رو تا جزییات پیادهسازی همراهی میکنه. این کتاب به زبانی ساده نوشته شده و مرجع مفیدی برای برنامه نویساست. لذت خوندن این کتاب رو از دست ندید!
متأسفانه رویکردی که بیشتر افراد در برخورد با مطالب جدید در پیش میگیرند مراجعه به اینترنت و استفاده از مطالب جسته و گریخته است. به جد توصیه میکنم که برای یادگیری این موضوع به سراغ اینترنت نرید و از کتابهای معتبر استفاده کنید. در این مورد کتابی دیدم با عنوان «کمعمقها – اینترنت با مغز ما چه میکند». این کتاب در سال ۹۳ توسط آقای امیر سپهرام، ترجمه و توسط انتشارات مازیار به چاپ رسیده. برای اطلاعات بیشتر اینجا رو ببینید.
برای انتقال مفاهیم به همهی اعضای تیم، مطالعه کتاب رو تو دستور کار تیم قرار دادیم. هر ماه دو فصل و آخر ماه یک آزمون کتبی به همراه آزمون عملی و انجام پروژه. این یادگیری حدود شش ماه طول کشید. مایلم نتیجه را از زبان چند نفر از اعضای تیم بشنوید:
مسیری جهت توسعه ی ماندگار وقابلیت نگهداری.
روشی که با آن از تغییرات نمی ترسیم.
روشی که با آن منبع باگ ها و مشکلات را به سرعت پیدا میکنیم.
زبانی است برای تعامل بهتر با کاربران غیر فنی و نیازمندهای عملیاتی.آرین شمشیری، عضو تیم توسعه سیستمهای مالی
با اینکه حرفای آرین شبیه به تبلیغاته ولی عین واقعیته.
توسعه مبتنی بر تست نه تنها یک روش، بلکه میتونیم بگیم یک تفکره. تفکری که منجر به بالا رفتن کیفیت کد و برنامه میشه و باعث میشه که در انتهای توسعهی یک جزء کوچک یا یک ویژگی، از این موضوع اطمینان داشته باشیم که آن جزء یا ویژگی بطور کامل و صحیح وظیفه خودش رو در برنامه به انجام می رسونه و همچنین به یکپارچگی دائمی اجزای برنامه کمک بزرگی میکنه.
سیدحسین جلیلی، عضو تیم توسعه پروژه فینتک و نرمافزارهای اندروید
یکی از مزایایی که TDD به همراه می آورد این است که هر تکه از سیستم قابل اجرا بدون نیاز به کلیت سیستم است، هر تکه از سیستم آماده اجراست دقیقا وقتی شما بیشترین تمرکز و توجه را به چیزی که پیاده کردید دارید. یعنی نیاز نیست بخشهای دیگر کامل شوند تا شما از عملکرد تکه کدی که قبل تر نوشتید اطمینان پیدا کنید. شما در زمان کامل شدن یک ویژگی نمیتوانید روی همه جزییات آن تسلط داشته باشید. امکان یافتن ، فهمیدن و حل کردن یک نقص در بین مجموعه ای از تکه های یک ویژگی بسیار دشوار تر از فهمیدن و حل کردن آن در یک تکه است!
به بیان دیگر به علت ظرفیت محدود ذهن انسان، هرچه مسئله یا اشکال یا قابلیت مورد نیاز سیستم، ساده تر و کوچک تر باشند ، امکان یافتن، فهمیدن و حل کردن اشکال یا توسعه قابلیت، با سرعت و کیفیت بالاتر همراه خواهد شد و در نهایت این تکه های با کیفیت و بررسی شده ، یک سیستم با کیفیت و بررسی شده را به وجود خواهند آورد.
و مهمترین حسی که این چنین سیستمی به من می دهد حس تسلط بر آن و تحت کنترل بودن اش در شرایط متفاوت است.
بر نیایم یک تنه با سه نفر
پس ببرمشان نخست از همدگر
هر یکی را من به سویی افکنم
چونک تنها شد سبیلش بر کنمپیمان چیتساز، مدیر پروژه فینتک
وقتی TDD رو بخونیم در اول می فهمیم سیستم بدون تست به فاجعه منجر می شه.
دوم اهمیت این موضوع که همه کار رو کنار بذاریم و اول از همه تست رو بنویسیم فوقالعاده است واقعا کمکت میکنه به همون اندازه که نیازه کد بزنی و همین طور خیلی کمک میکنه ذهنمون منسجمتر, طراحی رو داخل همون تست ایجاد کنه.
سوم با تست خودکار و پیشروی برنامه اگر تستها دقیق باشن با اضافه کردن هر ویژگی از تاثیر آن روی باقی قسمت ها با خبر میشیم.
در اخر هر هزینهای برای نوشتن تست انجام دهیم در روند پروژه سرعت و دقتمان رو بالا میبره و هزینه انجامشده حتی بیشتر برگردانده میشود.امیرمحمد قزوینی، عضو تیم توسعه سیستمهای مالی
هنر نوشتن کد به میزان کافی برای کسب و کار، هنر وسیع اندیشیدن،
دقیقاً جمله «شروع کردن را متوقف کنید، تمام کردن را آغاز کنید» رو به معنای واقعی کلمه پیادهسازی میکنه چون باعث میشه صفر تا صد یک ویژگی کسبو کار پیادهسازی بشه و از درستیشون اطمینان حاصل بشه.
ریحانه جعفری، عضو تیم توسعه BPMS
دیدگاهتان را بنویسید