بدهی فنی (technical debt) مفهومی مرسوم توی توسعه نرمافزار است. درست همونطور که ممکنه زمانی شما پول کم داشته باشین و از کسی قرض بگیرین و مقروض بمونن، ممکنه یه زمانی هم وقت یا سواد یا هر چیز دیگه کم داشته باشین و برای پیش رفتن پروژه، از یک راه آسون ولی نامناسب به جواب برسین؛ راهی که در آینده دردسرهای شما رو بیشتر میکنه و پیش رفتن بقیه کارها رو سختتر. بازم مثل پول! درست همونطور که اگر شما بدهی پولی داشته باشین مجبورین بخشی از درآمد رو صرف پس دادن بدهی یا حتی پس دادن نزولش بکنین، اگر هم در پروژه ای بدهی فنی بالا بیارین، مجبورین در آینده بخشی از منابع رو صرف حل کردن آشفتگی / آنتروپیای بکنین که این بدهی فنی به وجود آورده.
یک نمونه خیلی ساده از این مساله میتونه ننوشتن داکیومنتها باشه. وقتی پروژه رو پیش میبرین بدون اینکه چیزی رو مستند کنین، اضافه شدن هر نفر جدید به تیم کندتر و سختتر میشه و پروژه شما وابستهتر و وابستهتر به یک آدم خاص که تازه اشتباهات اونم بیشتر و بیشتر میشه. یا مثلا اگر به جای وقت گذاشتن و راه اندازی یک سیستم درست سینک، فقط دیتا رو از یه جا به یه جای دیگه کپی کنین بدون اینکه صحتش رو چک کنین بعدا توی کارهای دیگه به مشکلات متنوعتر برخورد خواهید کرد و کندتر خواهید بود.
راستش... کارتون بالا رو که دیدم فکر کردم خوبه اینو بنویسم که حواسمون بهش باشه. بخصوص اگر مدیر تیمی هستیم باید بدونیم که تیم برنامه نویسی نیازمند زمان برای طراحی است، نیازمند زمان برای بازنویسی و بهینه کردن کد است، نیازمند زمان برای یاد گرفتن چیزها از پایه است، نیازمند زمان برای یاد دادن مسائل به کارمندهای جدید است و نیازمند زمان برای بازپرداخت بدهی ناشی از راهحلهای موقت و آزمایشهایی که الان دارن به عنوان سیستمهای پروداکشن کار میکنن (: