مهاجرتهای کد با AI: از ۵ سال به ۲ هفته
خلاصهٔ کاملتر
تو مقالهٔ تازهٔ خبرنامهٔ Pragmatic Engineer اومده که OpenAI یه مطالعهٔ موردی منتشر کرده دربارهٔ آسانا: این شرکت با Codex تونست Enzyme (یه فریمورک قدیمی برای تست کامپوننتهای React) رو کامل از کدبیسش حذف کنه و بره سراغ React Testing Library. کل کار حدود یکونیم هفته کار مهندسی برد که تو دو هفتهٔ تقویمی پخش شده بود، و هزینهٔ مدل و زیرساختش حدود ۱۲ هزار دلار شد.
چرا این مهاجرت سخته؟ Enzyme روی خودِ نمونهٔ کامپوننت کار میکنه، ولی React Testing Library روی DOM رندرشده (یعنی همون ساختار HTML نهایی که به مرورگر میرسه) تست مینویسه. پس تست دیگه فقط کامپوننت رو نمیبینه، کل صفحهٔ رندرشده رو میبینه. نتیجه اینه که سینتکس و کل طرز فکر تستها فرق میکنه و نمیشه با یه find و replace ساده ردش کرد.
ایربیانبی پارسال گزارش داد که ۳۵۰۰ فایل تست Enzyme رو با LLM تو شش هفته مهاجرت داده، در حالی که تخمین دستیش یکونیم سالِ کار مهندسی بود. تیمشون یه حلقهٔ retry ساخت و ۷۵٪ فایلها فقط تو چهار ساعت رد شدن؛ بقیه با یه pipeline دقیقتر تو چهار روز به ۹۷٪ رسید و ۳٪ آخر رو آدمها تو یه هفته تموم کردن. اون موقع، مارس ۲۰۲۵، بهترین مدل کدنویسی Claude 3.7 Sonnet بود.
اوبر هم ۶۰۰ هزار تست واحد روی ۱۵ میلیون خط کد رو از JUnit 4 به JUnit 5 برد: چهار ماه، دو مهندس، و حدود ۱٫۲۵ میلیون خط تغییر. Bun هم ۵۳۰ هزار خط کد رو از Zig به Rust تو دو هفته و با ۱۶۵ هزار دلار هزینهٔ API منتقل کرد. برای مقایسه، Sentry تو ۲۰۲۱ برای تبدیل ۹۵ هزار خط از JavaScript به TypeScript یکونیم سال وقت گذاشت.
به گفتهٔ نویسنده، عدد ۶ میلیون دلار یه تخمین سرانگشتی بوده: زمان مهاجرت دستی یه فایل، ضرب در ۳۰۰۰ فایل باقیمونده، ضرب در نرخ ساعتی مهندس. دن اوبیا از آسانا هم توضیح داده که «۵ سال» یعنی زمانی که این مهاجرتِ کماولویت واقعاً طول میکشید تا تموم شه، نه اینکه یه تیم پنج سال تمام روش بشینه. دقیقاً به همین خاطر گزینهٔ خوبی بود برای اینکه ثابت کنن LLM مهاجرتها رو کوتاه میکنه.
نکات کلیدی:
- آسانا Enzyme رو با Codex تو ۲ هفته حذف کرد؛ هزینهٔ مدل و زیرساخت حدود ۱۲ هزار دلار
- برآورد قبلی همون کار ۵ سال و حدود ۶ میلیون دلار بود، بر پایهٔ ۳۰۰۰ فایل باقیمونده
- ایربیانبی ۳۵۰۰ فایل تست رو تو ۶ هفته برد، بهجای تخمین ۱٫۵ سال کار مهندسی
- اوبر ۶۰۰ هزار تست و ۱۵ میلیون خط کد رو از JUnit 4 به JUnit 5 برد: ۴ ماه، ۲ مهندس
- Enzyme روی نمونهٔ کامپوننت تست مینویسه، RTL روی DOM رندرشده؛ برای همین سینتکسها کاملاً فرق داره




