نود و هفت چیزی که هر برنامه‌نویسی باید بداند: بدهی فنی


پیش می‌آید که می بایست مابین «انجام اصولی یک پروژه» و «انجام سریع یک پروژه» یکی را انتخاب کنیم و در ابتدای کار سرعت بخشیدن به فرایند طراحی یک پروژه جذاب‌تر به نظر می‌رسد با این استدلال که بعداً هم می‌شود مجدد به کدها سر زد و اگر مشکلی داشت آن ها را از بین برد! اما تجربه نشان داده است زمانی که در بر گیرنده واژه ی بعداً است، خود حاوی بسیاری باگ ها و مشکلات خواهد بود که برنامه نویس مجبور است بیشتر تمرکز خود را روی آن‌ها بگذارد و از توجه به مشکلات -هرچند جزئی- گذشته باز می ماند (برای کسب اطلاعات بیشتر، می‌توانید به مقالهٔ Technical Debt: بدهی فنی چیست و چگونه می‌توان از آن به نفع خود استفاده کرد؟ مراجعه نمایید.)

چنین سیاستی در برنامه نویسی اصطلاحاً Technical Debt گفته می‌شود که به صورت تحت الفظی می‌توان آن را به «بدهی فنی» ترجمه کرد (توجه داشته باشید که در واژه انگلیسی Debt حرف b تلفظ نمی شود!) این بدهی فنی اصلاً چیز خوبی نیست و گاهی اوقات منجر به بوجود آمدن فجایعی در تولید نرم افزار می شود. برای روشن شدن این مسأله مثالی می زنیم. بدهی فنی همچون وام گرفتن است که در کوتاه مدت کار ما را راه می‌اندازد اما غافل از این که در آینده می بایست با بهره ای که روی آن می‌آید -مثلا 30 درصد بیشتر- قرض خود را پرداخت کنیم (راستی می گن در برخی کشورهایی که مسلمان نیستند بهره بانکی چیزی در حدود یکی دو درصد است در حالی که در ایران اسلامی ما گاها تا پنجاه درصد می رسد. آن‌ها مسلمانند یا ما. بگذریم!)

در برنامه نویسی هم قضیه دقیقاً به همین صورت است. اگرچه گاهی اوقات می‌توان از راه کارهایی استفاده کرد که به کدنویسی ما سرعت بخشند اما این در حالی است که در آینده اضافه کردن ویژگی‌های جدیدی به پروژه را دشوار می‌سازد و به اصطلاح نمی‌توان به سادگی کدهای خود را Refactor کرد. جالب اینجا است که هرچه از زمان ایجاد این دست مشکلات بیشتر می گذرد، یافتن راه‌کار هم برای آن‌ها دشوارتر خواهد شد. اما اگر ما از زمان بندی پروژه عقب باشیم و مجبور باشیم سرعت عمل را بر کیفیت ترجیح دهیم چطور؟ توصیه ما این است که هرگز سیاست فدا کردن کیفیت کار به خاطر سرعت بخشیدن به آن را دنبال نکنید اما اگر واقعاً مجبور هستید، پس این کار را انجام دهید اما حتماً به خاطر داشته باشید که شما با این کار یک بدهی فنی برای خود ایجاد کرده‌اید که می بایست در اولین فرصت این بدهی خود را صاف کنید. برای این منظور هم، حتماً در مستندات پروژه این قضیه را ذکر کنید تا فراموش نشود که در غیر این صورت ممکن است مجبور شوید بهای گزافی بابت آن پرداخت کنید.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
محسن
محسن
بله متاسفانه این Technical Debt که به اون design debt و code debt هم گفته میشه یکی از چالش های توسعه نرم افزار به خصوص در پروژه هایی هست که به سبک Agile پیش می رن
البته Technical Debt حتما نشون دهنده یک برنامه نویس ضعیف نیستّبلکه یک برنامه نویس هم ممکنه در یک پروژه مجبور بشه که این کارو انجام بده،اما احساس مسئولیت بعدش که خیلی مهم هست تفاوت بین یک برنامه نویس حرفه ای و بی مسئولیت رو مشخص می کنه
متاسفانه دیالوگ هایی مثل: حالا فعلا یه جوری آمادش کن و... شروع این بدهی فنی هستن که هرچه دیرتر تسویه بشه پرداختش سخت و سخت تر میشه
Insight
Insight
یکی از آفات صنعت توسعه‌ی نرم‌افزار همین بدهی فنی ست. در کشورهایی که درک آی‌تی پایین‌تری وجود داره، آمار این بدهی بیشتر هم هست. خیلی وقت ها همین ترجیح دادن توسعه‌ی سریع بر توسعه‌ی اصولی باعث فجایع زیادی میشه.
برخی تیم های برنامه نویسی زمانیکه میبینن به دِدلاین یک پروژه نزدیک شدن، شروع میکنن به جمع و جور کردن فیچرها و ممکنه یک سری باگ‌ها رو هم این وسط از قلم بندازن.
بعدها برای به‌روز‌ رسانی این چنین پروژه‌هایی مشکل وجود داره. چون کلا ساختار پروژه ایراد داره و برای ترمیم اون وقت و هزینه ی زیادی نیازه.
حسن اسدی
حسن اسدی
از قدیم الیام گفتن که صبر و حوصله چیز خوبیه و عجله هم کار شیطونه. این مطلب خیلی مفید بود. تازه شروع کردم الان هم با خوندن این مطلب انگیزه ام خیلی بالا رفت. با تشکر از نویسندگان سایت.
کاربر میهمان
samaمن یک کاربر مهمان هستم
ممنون از مطلب آموزنده ای که گذاشتین.
البته من از آخوندی شنیدم که گفته بود بگوییم سود بانکی تا حلال صحبت کرده باشیم.
sara
sara
خیلی ممنون .عالی بود
:)
کاربر میهمان
ساحل مرادیمن یک کاربر مهمان هستم
بقیه مسوولین که بویی از اسلام بردن پس چرا میزارن اینا همچین کاری کنن؟؟!!!هر چند اینجا جای این حرفا نیست ولی طرز لحنتون خوشم نیومد حرف نویسنده هم کاملا ربط داشت به موضوع برای روشن شدن مثال
کاربر میهمان
عباسمن یک کاربر مهمان هستم
در مورد متن بی ربطتون به بحث باید بگم کسایی که این وام ها رو با این سود فراهم میکنن بویی از اسلام نبردن
کاربر میهمان
ناشناسمن یک کاربر مهمان هستم
باورم نمی شه اینقدر اطلاعات مفید رو رایگان در اختیارمون گذاشتید.
خدا خیرتون بده.
دمتون گرم.
saman
saman
واقعا جای چنین سایتی توی فضای مجازی ایران کم بود و عدم وجودش حس میشد.
حمیدرضا
حمیدرضا
عالی بود. مثل همیشه