کدی که هوش مصنوعی نوشته؛ اگه خراب شد مقصر کیه؟
خلاصهٔ کاملتر
ماجرا از یه توییت Robert C. Martin، نویسندهٔ کتاب Clean Code، شروع شد. اون گفته بود دیگه کدی که agentهاش مینویسن رو نمیخونه و به جاش دورشون رو با محدودیتهای سخت پر میکنه: unit test، تستهای gherkin، mutation testing (یعنی عمداً کد رو خراب میکنی ببینی تستها میفهمن یا نه)، test coverage و کلی چیز دیگه. البته بعداً از این حرف یه کم عقبنشینی کرد. Mark Seemann تو این مقاله میگه هدفش تفسیر توییت نیست، بلکه میخواد ببینه این طرز فکر برای مهندسی نرمافزار چه معنیای داره.
اولین واکنش نویسنده این بوده که «اگه کد رو نخونی، از کجا میدونی درسته؟». ولی بلافاصله یادش اومده که نگاه کردن به کد هم هیچوقت کامل نبوده. برنامهنویسها همیشه باگ میسازن: null reference، خطای off-by-one، تغییر state که کسی حواسش بهش نبوده. تحقیقات نشون میده code review یکی از مؤثرترین روشها برای پیدا کردن باگه، ولی بازم همه رو نمیگیره. حتی TDD که نویسنده اونو علمیترین روش توسعه میدونه، یه نقطهضعف بزرگ داره: تستی که اصلاً ننوشتی.
نویسنده معتقده نباید از فرایند مبتنی بر LLM کمال بخوایم، چون خود ما هم هیچوقت به اون نرسیدیم. مثل بحث ماشینهای خودران، سیستم لازم نیست بینقص باشه، فقط باید از سیستم آدممحور بهتر باشه. اون نمیگه الان به اونجا رسیدیم، ولی میگه مانع ذاتیای هم برای یه فرایند کاملاً خودکار نمیبینه. مشکل اینجاست که «کمتر» به معنی «صفر» نیست. بعضی باگها قابل جبرانن، مثل یه دکمهٔ کج یا تخفیف اشتباه. ولی بعضیها فاجعهان، مثل از دست رفتن Mars Climate Orbiter که ۳۲۷.۶ میلیون دلار خرج برداشت، یا دستگاه Therac-25 که بهخاطر یه race condition دوز کشندهٔ اشعه داد.
سؤال اصلی مقاله اینه که وقتی خسارت جدی شد، تقصیر گردن کیه؟ قبلاً راحت میشد گفت «این کدو فلانی نوشته». ولی وقتی کار به دادگاه میکشه، مثل ماجرای Dieselgate، ممکنه خود توسعهدهندهها تاوان بدن. نویسنده با یه گفتوگوی خیالی نشونش میده: «جناب قاضی، LLM باگ رو نوشت.» «ولی تو انتشار رو تأیید کردی. من نمیتونم LLM رو بفرستم زندان، ولی تو رو میتونم.»
برای اینکه نشون بده آدمها چطور رفتار میکنن، نویسنده سراغ Tesla FSD میره که ژوئن ۲۰۲۶ تو دانمارک تأیید شد، به این شرط که راننده مسئول نهایی باشه. پیشبینیش اینه که هر چی سیستم بهتر کار کنه، رانندهها بیشتر حواسشون پرت میشه، تا روزی که یه تصادف اتفاق بیفته و طبق قانون، راننده به قتل غیرعمد محکوم بشه. به گفتهٔ نویسنده، با نرمافزار ساخت LLM هم همین میشه: آدمها ریسک رو قبول میکنن چون آمار قانعکنندهست، ولی قانون از تکنولوژی عقبتره و هر قدر هم سیستم تضمین کیفیت مفصل باشه، بازم ممکنه تو مسئول باشی.
نکات کلیدی:
- Robert C. Martin گفته بود کد agentها رو نمیخونه و فقط به تست و محدودیتها تکیه میکنه، بعداً حرفش رو تعدیل کرد.
- code review و TDD هم همهٔ باگها رو نمیگیرن؛ رایجترین خطای TDD تستیه که نوشته نشده.
- معیار درست برای فرایند خودکار «بهتر از آدم» هست، نه «بینقص».
- خسارت Mars Climate Orbiter حدود ۳۲۷.۶ میلیون دلار بود و Therac-25 بهخاطر race condition جون آدمها رو گرفت.
- Tesla FSD تو دانمارک از ژوئن ۲۰۲۶ تأیید شده، ولی مسئولیت قانونی با رانندهست.
- از نظر قانون، کسی که انتشار رو تأیید میکنه مسئوله، نه LLM.




