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