توسعهدهندگانی که شروع به استفاده از GitHub Copilot، ChatGPT یا Cursor کردهاند، اغلب همان «مرحله ماه عسل» را توصیف میکنند. کارهایی که زمانی دو ساعت طول میکشید، اکنون بیست دقیقه زمان میبرند. کدهای تکراری (Boilerplate) با فشردن کلید Tab ناپدید میشوند. اما خیلی زود، شکایت آرامتری در انجمنها و کانالهای Slack سر بر میآورد: خستگی مفرط. ابزار کد را مینویسد، اما چیزی در این فرآیند همچنان شما را تخلیه میکند. مشکل خودِ کد نیست؛ مشکل کارِ مصرف کردن آن است.
گلوگاههای که هیچکس برای آن آماده نبود
برای دههها، محدودیت در مهندسی نرمافزار سرعت تایپ بود. مهم نبود چقدر سریع فکر میکنید، انگشتان و دانش شما از سینتکس، سقف توانایی شما را تعیین میکردند. دستیارهای هوش مصنوعی این سقف را در هم شکستند. آنها میتوانند پیش از آنکه شما اولین بلوک کد را تمام کنید، صدها خط کد در چندین فایل تولید کنند. این سرعت، شبیه به آزادی به نظر میرسد، اما یک ترافیک غیرمنتظره ایجاد میکند. ناگهان، کندترین بخش خط تولید، توانایی شما در خواندن، درک و تأیید چیزی است که تازه روی صفحه ظاهر شده است. شما به یک بازبین (reviewer) تماموقت برای پروژه خود تبدیل شدهاید، با این تفاوت که نویسنده، الگوریتمی است که هرگز نمیخوابد و هرگز خسته نمیشود.
این وارونگی در نوع کار، بافت جلسات کدنویسی را تغییر میدهد. به جای جابجایی بین خلق کردن و تأیید سبک، شما در حالت تأیید مداوم گیر میافتید. و تأیید کردن، یک مطالعه غیرفعال نیست؛ بلکه یک تحلیل فعال و همراه با سوءظن است. هر نام متغیر، هر شرط مرزی و هر دستور import باید از یک فیلتر ذهنی عبور کند، زیرا هوش مصنوعی هیچ مسئولیتی در قبال نتیجه ندارد. اگر ساعت ۳ صبح عملیات تولید (production) با شکست مواجه شود، کسی برای پاسخگویی به او زنگ نخواهد زد.
چرا مغز شما به بنبست میرسد
این خستگی، تنبلی نیست؛ بلکه برخورد پیشبینیپذیر میان خروجی سیلآسا و پهنای باند محدود انسانی است.
اضافهبار حجم اطلاعات. یک پیشنهاد معمولی هوش مصنوعی ممکن است شامل یک کامپوننت کامل React، منطق استایلدهی آن، توابع کمکی و تستهای واحد (unit tests) باشد که همگی در یک مرحله ارائه میشوند. حافظه کاری شما فقط میتواند مقدار مشخصی را در لحظه نگه دارد. وقتی صفحه با دهها خط جدید پر میشود، مغز شما باید آنها را یا به الگوهای انتزاعی فشرده کند و یا آنها را به صورت متوالی اسکن کند. هر دو استراتژی باعث مصرف شدید توجه میشوند. پس از بررسی چندین بلوک از این دست، چیزی شبیه به کوفتگی عضلانی در ذهن رخ میدهد. شما در حال خواندن هستید، اما دیگر واقعاً درک نمیکنید.
شکاف اعتماد. کدهای تولید شده توسط هوش مصنوعی معتبر به نظر میرسند. تورفتگیها (indentation) بینقص هستند. نام متغیرها منطقی است. کامنتها حتی در جای درست قرار دارند. اما اعتبار به معنای دقت نیست. کد ممکن است از یک API منسوخ استفاده کند، یک حالت خاص (edge case) مربوط به ورودیهای null را نادیده بگیرد، یا یک آسیبپذیری ظریف SQL injection ایجاد کند. چون میدانید که این اتفاق ممکن است بیفتد، نمیتوانید مطالب را سرسری بخوانید. باید هر دستور return و هر شاخه منطقی را با دقت یک حسابرسی امنیتی بررسی کنید. حفظ این سطح از دقت برای ساعتها، از نظر شناختی بسیار هزینهبر است. به همین دلیل است که بازرسان امنیتی فرودگاه در شیفتهای کوتاه کار میکنند: هوشیاری مداوم به سرعت کاهش مییابد.
عدم تطابق جریان کاری. اکثر محیطهای توسعه و فرآیندهای تیمی هنوز بر اساس ریتم انسانی «اول نوشتن و بعد تست کردن» هستند. پایگاه کد با سرعت انسانی رشد میکند و بازبینی کدها در دستههای زمانبندی شده انجام میشود. وقتی هوش مصنوعی در این خط تولید قرار میگیرد، جریان کار دچار گسیختگی میشود. شما بیست خط تولید میکنید، برای تأیید مکث میکنید، درخواست اصلاح میکنید، دوباره تأیید میکنید، به سراغ تابع بعدی میروید و رشتهی معماری کلی را از دست میدهید. جابجایی مداوم بین تولید خلاقانه و تأیید شکاکانه، اصطکاک ایجاد میکند. IDE شما برای نویسندگان طراحی شده است، نه ویراستارانی که تحت یک ضربالاجل مداوم کار میکنند.
چرخه خستگی
این عوامل چرخهای را تغذیه میکنند که با گذشت روز بدتر میشود.
دستیار هوش مصنوعی در عرض چند ثانیه پیادهسازی یک ویژگی را تحویل میدهد. سپس شما پانزده دقیقه را صرف ردیابی importها، بررسی سازگاری تایپها و اجرای شبیهسازیهای ذهنی از حالتهای خاص میکنید. در دور سوم یا چهارم، تمرکز شما کاهش مییابد. شروع به پذیرفتن قطعهکدهایی میکنید که «تا حد زیادی درست به نظر میرسند». خطاها از زیر دست شما میلغزند. برای جبران، سرعت خود را کم میکنید، که این کار سرعت بهدستآمده در ابتدا را خنثی میکند. روز را با کدهای خام بیشتری نسبت به همیشه تمام میکنید، اما با اعتماد به نفس کمتر به آنها و سردردی که نشان میدهد سختتر کار کردهاید، نه هوشمندانهتر.
وقتی سرعت خطرناک میشود
اگر این الگو به یک روتین تبدیل شود، آسیب آن فراتر از یک بعدازظهر بد خواهد بود.
فرسودگی شغلی بیصدا از راه میرسد. این فرسودگی خود را به شکل وحشت هنگام باز کردن یک پروژه، یا ناتوانی در خیره شدن به یک بلوک کد دیگر با هایلایتهای رنگی بدون احساس عصبانیت نشان میدهد. وقتی ابزار اصلی که قرار است به شما کمک کند، به منبع اصلی خستگی تبدیل میشود، کینه و ناامیدی از راه میرسد.
سپس بحث تحلیل رفتن مهارتها مطرح میشود. ماهیچهی تبدیل «قصد و نیت» به «سینتکس» زمانی که دیگر آن را انجام نمیدهید، ضعیف میشود. ممکن است همچنان سیستمها را به خوبی معماری کنید، اما تسلط جزئینگرانه — یعنی دانستن اینکه چرا ساختار یک حلقه خاص نامناسب به نظر میرسد، یا به یاد آوردن اینکه یک کتابخانه خاص تحت بار (load) چگونه رفتار میکند — زمانی که یک لایه تکمیل خودکار (autocomplete) جزئیات را مدیریت میکند، کمرنگ میشود. با گذشت زمان، این خطر وجود دارد که به جای یک مهندس فعال، به یک گردآورندهی غیرفعال تبدیل شوید.
با این حال، فوریترین خطر، استقرار (deployment) بیدقت است. توسعهدهندگان تحت فشار برای حفظ سرعت و در حالی که از ساعتها خواندن خروجی ماشین فرسوده شدهاند، گاهی کدی را مستقر میکنند که بهطور کامل اعتبارسنجی نشده است.
