کد ریویوی انسانی هیچوقت کامل نبود، فقط بهترین چیزی بود که داشتیم
خلاصهٔ کاملتر
نویسنده میگه بیشتر عمر حرفهایش فکر میکرد کد ریویو همون چیزیه که یه تیم جدی رو از یه تیم متوسط جدا میکنه، ولی یه سال کار با ایجنتها نظرش رو عوض کرده. حرف اصلیاش اینه که ریویوی انسانی یه خاصیت بنیادی مهندسی نرمافزار نیست، یه تقریب تاریخی برای مسئلهایه که بلد نبودیم بهتر حلش کنیم.
به گفتهی نویسنده، ما همیشه گفتیم ریویو هست تا از درستی کد مطمئن بشیم، ولی هیچوقت این کارو نکرد. یکی یه PR دو هزار و پونصد خطی باز میکنه، یکی بیست سی دقیقه diff رو نگاه میکنه، چندتا کامنت میذاره و LGTM. تنها چیزی که واقعاً میدونیم اینه که یه آدم دیگه با زمان و context محدود بهش نگاه کرده. سه تا تأیید هم یعنی سه تا تقریب انسانی از یه مسئله، نه راستیآزمایی کامل.
شاهد ناراحتکنندهاش هم اینه: حالا که ایجنتها رو روی کل ریپوها میذارن و همون تحلیل رو بارها تکرار میکنن، دهها هشدار برمیگرده برای چیزهایی که ماهها و سالها اونجا نشسته بودن؛ invariantهای نقضشده، ولیدیشنهای جاافتاده، اشتباه authorization و حالتهای لبه. همهی اینها با PRهایی که آدمها ریویو و تأیید و مرج کرده بودن کنار هم زندگی میکردن. نویسنده میگه نرمافزار یهو بدتر نشده، ما تازه اونقدر عمیق نگاه کردیم که ببینیم چی از دست پروسهی انسانی در میرفته.
نویسنده میگه ما هیچوقت سر مسئلهای که ریویو حل میکنه به توافق نرسیدیم: میگی باگها بازم به پروداکشن میرسن، جواب میشه ارزشش انتقال دانشه؛ میگی تیم رو کند میکنه، جواب میشه ownership. خاطرههاش از Rakuten هم همینو نشون میده؛ فرهنگ ریویوی باز بین تیمها که آخرش بیشترش تذکر let به جای const بود، اسلک پر از «یه پلاسوان بده میخوام مرج کنم»، و یه PR چهارصد و پنجاه هزار خطی که VP مهندسی ردش کرد.
نویسنده میگه مزیت ایجنت لزوماً بهتر فکر کردنش نیست، اینه که نظم بررسی رو نگه میداره؛ هر قانون و هر خط و هر مسیر رو پشت سر هم میره بدون اینکه از خستگی چکها رو رد کنه. مسئلهی دانش هم تبدیل به مسئلهی بازیابی میشه: ایجنت لازم نیست یادش باشه یه API هست، کافیه مستند همون نسخهای که پروژه استفاده میکنه رو بخونه و تأیید کنه جایگزین واقعاً کار میکنه. جمعبندیاش اینه که PR کمکم اهمیتش رو از دست میده و کار آدم میشه تعریف intent و قید و invariant.
نکات کلیدی:
- ریویوی انسانی نمونهگیریه نه راستیآزمایی: زمان، context و انرژی هر نفر تو اون بعدازظهر خاص متغیریه که استاندارد نمیشه
- هر ابزاری مثل linter و formatter و CI یه بحث انسانی رو به زیرساخت تبدیل کرده
- اگه یه کامنت مدام تو PRهای مختلف تکرار میشه، اون یه اتوماسیون ساختهنشدهست نه ریویوی خوب
- قانون «بدون کامنت، بعد یه روز مرج کن» سکوت رو معادل تأیید میکرد
- به نظر نویسنده ایجنت نباید به حافظهی خودش تکیه کنه؛ باید مستند و سورس نسخهی واقعی پروژه رو بخونه و مدرک بیاره




