تایتس وینترز: درسهای مهندسی نرمافزار در گوگل
خلاصهٔ کاملتر
تو این قسمت از پادکست The Pragmatic Engineer، گرگلی اوروس با تایتس وینترز حرف زده. وینترز بیشتر از ده سال تو گوگل بوده، برنامهٔ readability گوگل رو رهبری کرده و Abseil (کتابخونههای پایهای و open-source ++C گوگل) رو ساخته. الان تو Adobe روی تجربه و بهرهوری توسعهدهندهها کار میکنه. خلاصهٔ مقاله ۱۲ نکته از این گفتگو رو جمع کرده.
یکی از جالبترین داستانها مربوط به سال ۲۰۱۰ـه: یه تیم دوازده نفره مأمور تمیز کردن کد ++C قدیمی گوگل شد، اونم تو کدبیسی با حدود ۲۵۰ میلیون خط که ۱۰ هزار مهندس روش کار میکردن. اون موقع LLM نبود. تیم با MapReduce کل کد رو به AST (یعنی درخت ساختاری کد) تبدیل کرد، الگوهای دقیق فراخوانی رو پیدا کرد، تغییرات رو ماشینی تولید کرد، API قدیم و جدید رو کنار هم نگه داشت و تغییرات رو پوشه به پوشه فرستاد. ابزار clang-format هم به خاطر همین پروژه ساخته شد.
یه درس مهم دیگه اینه که گوگل حدود ۲۰۰۷ تست خودکار رو اجباری کرد. دلیلش این بود که Search دیگه نمیتونست ماهانه منتشر بشه و کارش به انتشار فصلی رسیده بود، چون تقریباً هر تغییری تو گوگل به کد Search دست میزد. با اجباری شدن تست، سرعت انتشار برگشت. وینترز معتقده اگه نشه یه تغییر ارزشمند رو با خیال راحت داد، کدبیس پایدار نیست؛ ترس نباید پایهٔ مهندسی باشه.
برنامهٔ readability هم شاید بزرگترین برنامهٔ آموزشی صنعت باشه: هر تغییر کد تو گوگل باید هم تأیید owner پروژه رو بگیره، هم تأیید یه reviewer که تو اون زبان مدرک readability داره. وقتی وینترز سه ماه پیش از گوگل رفت، همیشه بیشتر از ۱۰ هزار مهندس تو این برنامه بودن.
دربارهٔ AI، وینترز میگه از مهندسهای شرکتهای دیگه شنیده که حجم کد خیلی بیشتر شده، قطعیها حدود ۳۰٪ بالا رفته، ولی تعداد فیچرهای منتشرشده ثابت مونده. با این حال خوشبینه و به نظرش ارزش واقعی AI اینه که پروژههایی رو ممکن میکنه که قبلاً اصلاً منطقی نبودن، نه اینه که همون کارای قبلی رو سریعتر انجام بدی. توصیهش به جونیورها هم اینه که AI رو مثل تبر ببینن: ابزاره و تصمیم با خودته.
وینترز تنها مهندس شاغل تو کمیتهٔ راهنمای برنامهٔ درسی CS سال ۲۰۲۳ (ACM/IEEE/AAAI) بوده و میگه بیشتر این برنامه باید کنار گذاشته بشه، چون تست و verification توش جایی ندارن. استادها بهش گفتن دانشجوهای متوسط (زیر نمرهٔ B) با AI تقریباً کد رو نمیفهمن. پیشنهادش اینه که بهجای خود کد، به prompt و تستهایی که دانشجوها مینویسن نمره داده بشه. توصیهش به دانشجوها هم اینه که دنبال موج نرن و یه پروژهٔ شخصی رو عمیق دنبال کنن.
نکات کلیدی:
- بازسازی ۲۵۰ میلیون خط ++C گوگل در ۲۰۱۰ با یه تیم ۱۲ نفره و بدون LLM انجام شد
- clang-format برای همین پروژهٔ refactoring ساخته شد
- گوگل حدود ۲۰۰۷ تست رو اجباری کرد، وقتی انتشار Search از ماهانه به فصلی رسیده بود
- همیشه بیش از ۱۰ هزار مهندس گوگل تو برنامهٔ readability بودن
- با AI قطعیها حدود ۳۰٪ بالا رفته ولی تعداد فیچرها ثابت مونده
- برنامهٔ درسی CS از حدود ۲۰۰۰ تغییر جدی نکرده و تست و verification توش نیست




