درک بدهی فنی

از ویکیپدیا: “بدهی فنی (همچنین با نامهای بدهی طراحی یا بدهی کد شناخته میشود) “یک مفهوم در برنامهنویسی است که کار توسعه اضافی ناشی از استفاده از کدی که در کوتاهمدت پیادهسازی آسان است به جای اعمال بهترین راهحل کلی را منعکس میکند”.
بدهی فنی را میتوان با بدهی پولی مقایسه کرد. اگر بدهی فنی بازپرداخت نشود، میتواند «سود» انباشته کند و اعمال تغییرات بعدی را دشوارتر کند. بدهی فنی پرداختنشده آنتروپی نرمافزار را افزایش میدهد. بدهی فنی لزوماً چیز بدی نیست، و گاهی اوقات (مثلاً به عنوان اثبات مفهوم) بدهی فنی برای پیشبرد پروژهها ضروری است. از طرف دیگر، برخی کارشناسان ادعا میکنند که استعاره «بدهی فنی» تمایل دارد تأثیر را به حداقل برساند، که منجر به اولویتبندی ناکافی کار لازم برای اصلاح آن میشود.”
مفهوم بدهی فنی از دنیای مهندسی نرمافزار میآید، اما به دنیای زیرساخت فناوری اطلاعات و کسبوکار نیز به همان اندازه اعمال میشود. مانند مهندسی نرمافزار، ما سیستمها و شبکههای خود را طراحی میکنیم، و میانبر زدن در طراحیها، که شامل کار با طراحیهای کمتر از ایدهآل، ترکیب سختافزار موجود و سایر روشهای طراحی ضعیف است، بدهی فنی ایجاد میکند. یکی از اشکال قابل توجهتر این بدهی ناشی از سرمایهگذاری در «گذشته» به جای «آینده» است و اغلب از طریق خطای هزینه غرقشده (یعنی ریختن پول خوب بعد از بد) ایجاد میشود.
دیدن این اتفاق در کسبوکارها هر روز آسان است. برنامههای جدید برای آینده ساخته میشوند، اما پیش از اجرای آنها سرمایهگذاریهایی برای ادامه کار، بهبود، گسترش یا هر چیز دیگری برای یک طرح سیستم قدیمی انجام میشود. این سرمایهگذاری سپس یا تقریباً بلافاصله به یک ضرر مالی تبدیل میشود یا، که رایجتر است، به انگیزهای برای سرمایهگذاری کمتر در طراحیهای آینده تبدیل میشود - به سرعت کمتر، کاملتر، یا شاید اصلاً. سرمایهگذاری در گذشته در بدترین موارد میتواند فلجکننده باشد.
این به روشهای متعددی اتفاق میافتد و معمولاً غیرعمدی است. اغلب سرمایهگذاریهایی برای حفظ عملکرد مناسب یک سیستم موجود لازم است و در شرایط عادی بهسادگی انجام میشوند. اما در شرایطی که یک تغییر آینده لازم یا احتمالاً برنامهریزی شده باشد، این سرمایهگذاری میتواند مشکلساز باشد. با این حال، تحلیل هزینه بهتر و برنامهریزی تریاژ میتواند در بسیاری از موارد این مشکل را برطرف کند.
در یک مثال غیرفنی، تصور کنید مالک یک خودرو قدیمیتری هستید که خدمت خوبی کرده اما سه ماه دیگر باید بازنشسته شود. در سه ماه آینده قصد دارید در یک خودروی جدید سرمایهگذاری کنید چون خودروی قدیمی به دلیل نیازهای تعمیر و نگهداری مداوم، کارایی پایینتر و موارد دیگر دیگر مقرونبهصرفه نیست. اما قبل از اینکه برنامه سهماهه خرید خودروی جدید فرا برسد، خودروی قدیمی دچار یک خرابی جزئی میشود و اکنون برای ادامه کار نیاز به سرمایهگذاری قابل توجهی دارد. ریختن پول در خودروی قدیمی یک سرمایهگذاری جدید در بدهی فنی خواهد بود. به جای صرف مبلغ زیادی پول برای حفظ کار یک خودروی قدیمی برای چند ماه، جلو انداختن زمان خرید خودروی جدید آشکارا از نظر مالی بسیار منطقیتر است. با خودروها، این را (در اکثر موارد) بهراحتی میبینیم. با خرید سریع خودروی جدید پول صرفهجویی میکنیم، شاید خیلی زیاد. اگر بخواهیم در خودروی قدیمی سرمایهگذاری زیادی کنیم، یا آن سرمایهگذاری را در چند ماه از دست میدهیم یا خطر به هم زدن برنامهریزی مالی محکمی را داریم که برای خرید خودروی جدید آماده کرده بودیم. هر دو حالت از نظر مالی بد هستند.
فناوری اطلاعات به همین شکل عمل میکند. صرف مبلغ زیادی پول برای نگهداری یک سیستم ایمیل قدیمی شش ماه قبل از مهاجرت برنامهریزیشده به یک سیستم ایمیل میزبانیشده احتمالاً بسیار احمقانه خواهد بود. این سرمایهگذاری یا تقریباً بلافاصله با از رده خارج شدن سیستم قدیمی از دست میرود یا فرآیندهای برنامهریزی خوب ما را تضعیف میکند و ما را به سمت مهاجرت نکردن طبق برنامه و انجام کار ناقص برای کسبوکارهایمان سوق میدهد، زیرا اجازه دادیم بدهی فنی تصمیمگیری ما را هدایت کند به جای برنامهریزی مناسب.
اغلب، یک عملیات تریاژ ضعیف یا اختیار نامناسب برای بازیکنان تریاژ میتواند عاملی باشد که سرمایهگذاریهای اضطراری بدهی فنی را به جای سرمایهگذاریهای سریع آیندهنگر ایجاد میکند. این تنها یکی از حوزههایی است که پیشرفتهای اساسی ممکن است مشکلات را برطرف کند، اما یکی مهم است. همچنین میتوان در برخی موارد از طریق برنامهریزی «اگر-چه» برای داشتن برنامههای سرمایهگذاری مشروط به اورژانسهای رایج یا مورد انتظاری که ممکن است پیش بیایند این مشکل را کاهش داد، که ممکن است به سادگی نیاز به گسترش ظرفیت به دلیل رشدی باشد که قبل از برنامهریزی سیستمها اتفاق میافتد.
یک مثال عالی دیگر از بدهی فنی رایج، گسترش ظرفیت ذخیرهسازی سرور است. این یک سناریو است که با فرکانسی مشاهده میکنم و بدهی فنی را به خوبی نشان میدهد. رایج است که یک شرکت سرورهایی بخرد که فاقد ظرفیت ذخیرهسازی داخلی بزرگ هستند. یا بلافاصله یا در آینده ظرفیت بیشتری لازم میشود. اگر این بلافاصله اتفاق بیفتد، میتوانیم ببینیم که سرور خریداریشده نوعی بدهی فنی در طراحی نادرست بود و آشکارا نمایانگر یک نقص در فرآیند برنامهریزی و خرید است.
اما یک مثال رایجتر نیاز به گسترش ذخیرهسازی دو یا سه سال پس از خرید سرور است. گزینههای رایج گسترش شامل اضافه کردن یک آرایه ذخیرهسازی خارجی برای اتصال به سرور یا تغییر سرور برای پذیرش ذخیرهسازی محلی بیشتر است. هر دوی این رویکردها معمولاً سرمایهگذاریهای بزرگی روی یک سرور قدیمی هستند، سروری که به راحتی چهل درصد یا بیشتر از عمر مفیدش را گذرانده است. در بسیاری از موارد، همان سطح یا کمی بیشتر سرمایهگذاری در یک سرور کاملاً جدید میتواند منجر به سختافزار جدید، CPU های سریعتر، RAM بیشتر، ذخیرهسازی مورد نیاز، طراحیشده و ساختهشده برای هدف، طول عمر پشتیبانی همتراز و تازهشده، فضای کمتر در مرکز داده، مصرف برق کمتر، فناوریها و ویژگیهای جدیدتر، روابط بهتر با فروشنده و موارد دیگر شود، در حالی که سرور اصلی برای استفاده مجدد، بازنشستگی یا فروش حفظ میشود. یک روش پول را برای پشتیبانی از گذشته خرج میکند، روش دیگر اغلب میتواند پول قابل مقایسهای را برای آینده خرج کند.
بدهی فنی یک عامل فلجکننده برای بسیاری از کسبوکارها است. هزینه فناوری اطلاعات را افزایش میدهد، گاهی اوقات به طور قابل توجهی، و میتواند از طریق فقدان برنامهریزی و بیشتر هزینههای اضطراری به سطوح بالایی از ریسک منجر شود.
