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


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

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

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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
حسن اسدی
حسن اسدی
۱۳۹۵/۱۲/۱۴
از قدیم الیام گفتن که صبر و حوصله چیز خوبیه و عجله هم کار شیطونه. این مطلب خیلی مفید بود. تازه شروع کردم الان هم با خوندن این مطلب انگیزه ام خیلی بالا رفت. با تشکر از نویسندگان سایت.
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۸/۱۵
ممنون از مطلب آموزنده ای که گذاشتین.
البته من از آخوندی شنیدم که گفته بود بگوییم سود بانکی تا حلال صحبت کرده باشیم.
sara
sara
۱۳۹۵/۰۶/۱۷
خیلی ممنون .عالی بود
:)
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۶/۰۲
بقیه مسوولین که بویی از اسلام بردن پس چرا میزارن اینا همچین کاری کنن؟؟!!!هر چند اینجا جای این حرفا نیست ولی طرز لحنتون خوشم نیومد حرف نویسنده هم کاملا ربط داشت به موضوع برای روشن شدن مثال
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۵/۲۵
در مورد متن بی ربطتون به بحث باید بگم کسایی که این وام ها رو با این سود فراهم میکنن بویی از اسلام نبردن
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۵/۱۲
باورم نمی شه اینقدر اطلاعات مفید رو رایگان در اختیارمون گذاشتید.
خدا خیرتون بده.
دمتون گرم.
saman
saman
۱۳۹۵/۰۴/۲۵
واقعا جای چنین سایتی توی فضای مجازی ایران کم بود و عدم وجودش حس میشد.
حمیدرضا
حمیدرضا
۱۳۹۵/۰۴/۱۱
عالی بود. مثل همیشه
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۳/۳۰
عالی بود. در حین کار و با تجربه این قضیه ثابت شده :: "هرگز سیاست فدا کردن کیفیت کار به خاطر سرعت بخشیدن به آن را دنبال نکنید"
که باعث هزینه زیاد نگهداری و رفع باگ ها میشه
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۱/۱۹
من از سایت عالیتون بسیار تشکر میکنم.اشنایی با سکان اکادمی باعث شد من به برنامه نویسی روی بیارم.مررررررررررررسی
محمد حمیدی راد
محمد حمیدی راد
۱۳۹۴/۱۱/۰۹
تنها چیزی که میتونم بگم اینه که واقعا سایتتون بی نظیره.
ممنون بابت لطف بی پایان شما.
کاربر میهمان
کاربر میهمان
۱۳۹۴/۱۰/۰۵
سایتتون عالیه و رفت جزو سایت هایی که بهش زیاد سر می زنم . خسته نباشید.
کاربر میهمان
کاربر میهمان
۱۳۹۴/۰۹/۱۲
بسیار عالی.
کاربر میهمان
کاربر میهمان
۱۳۹۴/۰۹/۰۵
مطالبوتون فوق العاده اس از همه زحمت کشان این سایت لذت بخش تشکر مینمایم.