در دفاع از نفهمیدن کامل کدبیس
خلاصهٔ کاملتر
شان گودکه بحثش رو با یه سؤال شروع میکنه: بهعنوان مهندس نرمافزار، چقدر باید کدبیس خودت رو بفهمی؟ حدسش اینه که آدمهای کدبیسهای کوچیک با تیم کمجابهجایی میگن «معلومه که باید کامل بفهمی»، و آدمهای سیستمهای بزرگ با جابهجایی زیاد میگن «معلومه که نمیتونی؛ فقط تو محدودهٔ خودت بهترین کارو بکن». به گفتهٔ او گروه اول تو بحثهای آنلاین بیش از سهمش حضور داره و او میخواد از گروه دوم دفاع کنه.
بهترین بیان طرف مقابل رو مقالهٔ مشهور پیتر نائور، «برنامهنویسی بهمثابهٔ نظریهسازی»، میدونه: وقتی برنامهنویسها روی یه برنامه کار میکنن، کد در واقع محصول جانبیـه و محصول اصلی «نظریهٔ برنامه» تو ذهن اونهاست. اگه کد رو از دست بدن میتونن دوباره بنویسنش؛ اگه فهمشون رو از دست بدن، درک کد سخت میشه.
ولی به نظر نویسنده، نائور یه قدم زیادی جلو میره: نائور میگه نظریه رو نباید از روی کد بازسازی کرد و بهتره کل متن برنامه دور ریخته بشه تا یه تیم تازه مسئله رو از نو حل کنه. گودکه میگه هر کسی تو یه شرکت بزرگ مهندس مؤثری بوده باشه میدونه این حرف غلطه.
دلیل اول: سیستمهای بزرگ عملاً از صفر بازسازی نمیشن. سیستمی که کاربر داره هزاران حالت عجیب و کجورودی داره که دوباره پیادهسازیشون شدنی نیست. بازنویسیهای موفق همیشه با تکهتکه کردن کدبیس موجود و بازنویسی یه تکه در هر نوبت شروع میشن؛ یعنی بازنویسی خودش یعنی کلی تغییر تو سیستم قدیمی.
دلیل دوم: کدبیسهای رهاشده مدام احیا میشن. تو شرکتی با صدها میلیون خط کد، اینکه هیچکس دیگه با یه کدبیس آشنا نباشه عجیب نیست؛ کافیه چند نفر بد موقع استعفا بدن. نویسنده میگه خودش شخصاً مالکیت کدبیسهای رهاشده رو گرفته و کارشون رو راه انداخته: اول یه جریان رو سرتاسر میفهمی، بعد کمکم شاخه میزنی و با احتیاط تغییر میدی.
نتیجهای که میگیره اینه که تو کدبیسهای بهقدر کافی بزرگ، همه با نظریهٔ نادرست کار میکنن، چون سیستم برای ذهن یه نفر یا حتی یه تیم زیادی بزرگه. برای مؤثر بودن باید یاد بگیری با نظریهٔ فقط تا حدی درست کار کنی: وقتی مطمئن نیستی نمیتونی منتظر بمونی یکی با فهم کامل بیاد جواب بده — بهترین حدس آگاهانهت رو میزنی و پای پیامدش میایستی.
نویسنده حق رو تا حدی به نائور هم میده: شاید ۱۹۸۵ اندازهٔ برنامهها چند مرتبه کوچیکتر بوده. نمونهٔ «برنامهٔ بزرگ» نائور ۲۰۰ هزار خط بوده و GCC در ۱۹۸۷ حدود صد هزار خط بود، در حالی که در ۲۰۱۵ از چهارده میلیون خط گذشته بود. بازنویسی صدهزار خط شاید شدنی باشه، دو میلیون خط نه.
در پایان میگه LLMها هم شمشیر دولبهان: ساختن نظریهٔ ذهنی دقیق رو سختتر میکنن ولی رسیدن سریع به یه نظریهٔ ناقص و استفادهٔ مؤثر ازش رو آسونتر. به گفتهٔ او چیزهای زیادی نظریهسازی رو سخت میکنن — از اجازهٔ کد زدن به بقیه تا الزامهای قانونی و ارتقای امنیتی و افزودن وابستگی — و «نگهداشتن نظریهٔ کدبیس» فقط یکی از ارزشهاست که گاهی به نفع سرعت یا انطباق قانونی معامله میشه؛ سر کار هم پول میگیری که ارزشهای اونها رو بپذیری.
نکات کلیدی:
- دو فرهنگ متفاوت: کدبیس کوچیک با فهم کامل، کدبیس بزرگ با فهم محلی
- نقد نویسنده به نائور: بازنویسی از صفر تو سیستمهای بزرگ شدنی نیست
- کدبیسهای رهاشده قابل احیان؛ نظریهٔ تازه رو میشه از روی کد ساخت
- تو سیستم بزرگ همه با نظریهٔ نادرست کار میکنن؛ باید موضع گرفت
- مقیاس عوض شده: از ۱۰۰ هزار خط GCC در ۱۹۸۷ به بیش از ۱۴ میلیون در ۲۰۱۵
- LLM شمشیر دولبهست: نظریهٔ عمیق سختتر، نظریهٔ ناقصِ سریع آسونتر




