استفاده از هوش مصنوعی یک پایگاه کد شکننده ایجاد می کند
آدرس مقاله: https://evanxmerz.com/post/ai-usage-generates-a-fragile-codebase/ آدرس نظرات: https://news.ycombinator.com/item?id=50438318 امتیاز: 338 # نظرات: 376
من فقط میتوانم در مورد دلایل اخراج من از متا در ماه می حدس بزنم، اما گمان میکنم یکی از دلایل این است که نسبت به برخی از همتایانم نسبت به استفاده از AI/LLM به عنوان ابزار برنامهنویسی کمی مقاومتر بودم. اشتباه نکنید، من حداقل 90 درصد کدم را با استفاده از هوش مصنوعی در چند ماه گذشته در آنجا تولید کردم، که حداقل برای یک امتیاز مناسب بود. اما هوش مصنوعی 10 برابر مقدار کدی که من می نوشتم را افزایش نداد. حتی 2 برابرش هم نکرد
من روی کیفیت کد متمرکز بودم. من دیدم که کد توسط برخی از همتایان من که شدیدا به هوش مصنوعی وابسته بودند فشار داده می شود و دیدم که کد شکننده بود. بسیاری از مسائل ظریف وجود داشت که منجر به بدهی های فناوری در دراز مدت می شد، و حتی برخی از مسائل آشکار توسط برنامه نویسان بسیار خوب نادیده گرفته شد. برای مثال، یکی از بهترین برنامه نویسان تیم من را دیدم که سعی کرد کدهایی را ادغام کند که از رویدادهای جاوا اسکریپت برای جلوه های CSS روی ماوس استفاده می کرد به جای استفاده از انتخابگر :hover، که روشی کاملا مقیاس ناپذیر برای نوشتن ماوس است.
اکنون در یکی دیگر از شرکتهای بزرگ فناوری کار میکنم و به طور کامل به تولید 100 درصد کدم با استفاده از هوش مصنوعی روی آوردهام، زیرا امروز این انتظار است. با این حال، من میتوانم ببینم افراد زیادی متوجه میشوند که این یک راه پایدار برای ادامه توسعه یک محصول SaaS در مقیاس بزرگ نیست. هوش مصنوعی تمایل دارد مشکلاتی را که می تواند در پنجره زمینه آن قرار بگیرد را به خوبی حل کند، اما از مسائل بلندمدتی که در آن چارچوب نسبتا کوچک قابل درک نیستند، کاملا غافل است.
در این پست، چهار راه را فهرست میکنم که استفاده از هوش مصنوعی منجر به ایجاد یک پایگاه کد شکننده میشود که در برابر نیازهای برنامههای کاربردی SaaS بسیار در دسترس و بسیار مقیاسپذیر مقاوم نیست.
به هر حال، هر کلمه از این مقاله توسط یک انسان نوشته شده است. با وجود اینکه تصویر زیر توسط هوش مصنوعی تولید شده است، این مقاله یک شیطنت هوش مصنوعی نیست.
در اینجا چهار رایج ترین روشی که من دیدم هوش مصنوعی یک پایگاه کد شکننده ایجاد می کند، آورده شده است.
یکی از آشکارترین شکستهای LLMهای مدرن این است که آنها تمایل دارند موارد تست خودکار سادهای را بنویسند که چیزهایی را که برای انسان مهم است پوشش نمیدهد. من اغلب می بینم که عوامل هوش مصنوعی تست های زیادی از روش های دریافت/تنظیم می نویسند که بی اهمیت هستند و معمولا به آزمایش زیادی نیاز ندارند. زمانی که هوش مصنوعی تستهای e2e را مینویسد، فقط مواردی را پوشش میدهند که قبلا در پایگاه کد پوشش داده شدهاند. به عبارت دیگر، هوش مصنوعی آزمایش هایی را می نویسد که فقط یک نوع کاربر را پوشش می دهد، یا فقط تعاملات سطح سطح را پوشش می دهد.
این شکاف های عظیمی را در پوشش آزمایشی ایجاد می کند که برای توسعه دهندگان نامرئی است زیرا توسط متریک پوشش سطح خط ثبت نمی شود.
هوش مصنوعی همچنین تمایل به نوشتن کدهای بسیار پیچیده دارد. اغلب از دو یا سه روش کمکی استفاده می کند، در صورتی که یک روش کافی است. سعی میکند از دستورالعملهای کدنویسی مانند DRY پیروی کند، بدون اینکه متوجه شود که پیچیدگی اضافه آن سختی کد را برای اشکالزدایی یا درک کد برای توسعهدهندگان انسانی دشوارتر میکند.
و این سومین مسئله با پایگاه های کد هوش مصنوعی است: انسان ها آنها را درک نمی کنند. هر چه شرکت برای تولید کد بیشتر به عوامل هوش مصنوعی متکی باشد، توسعهدهندگان کمتری میتوانند پایگاه کد را درک کنند. این بدان معناست که توسعهدهندگان نمیتوانند کارهایی را که برای ایجاد یک پایگاه کد انعطافپذیر لازم است انجام دهند. آنها ساختارهای داده و الگوریتمها را بهخوبی درک نمیکنند تا ببینند چه زمانی یک درخواست کششی حاوی یک انتزاع جدید است که با ساختارهای از پیش موجود کار نمیکند.
هوش مصنوعی خیلی سریع حرکت می کند تا توسعه دهندگان انسانی بتوانند نوار با کیفیت بالا را حفظ کنند. هر درخواست کشش سریعتر از درخواست قبلی انجام می شود و باید در زمان کمتری بررسی شود. این باعث میشود که توسعهدهندگان کد را بررسی کنند و جزئیات مهمی را که منجر به بدهی بلندمدت فناوری میشود، از دست بدهند. مسائل کیفی کوچک مانند شکافهای آزمایشی و متغیرهایی که نامگذاری ضعیفی دارند در پایگاه کد جمع میشوند تا زمانی که به یک کد اسپاگتی تبدیل شود.
اگر مطمئن نیستید که آیا عاملهای کدنویسی به پایگاه کد شما آسیب میرسانند یا خیر، ممکن است به دنبال علائم زیر یک پایگاه کد شکننده و تولید شده توسط هوش مصنوعی باشید.
وقتی بخش را به کدگذاری عاملی تغییر دادید، تعداد حوادث به آرامی شروع به افزایش کرد؟ در ابتدا زمانی که همه ما از عامل ها برای تولید مقادیر انبوه کد استفاده می کردیم، به نظر نمی رسید که تفاوتی با کدگذاری سنتی داشته باشد. روابط عمومی ها آمدند و ادغام شدند و همه چیز خوب به نظر می رسید. اما اوه، یک p0 بود که در پایان ماه وارد شد، سپس دو SEV در ماه بعد وجود داشت. سپس حتی بیشتر در ماه آینده. اکنون، پس از یک یا دو سال از کدنویسی نمایندگی، به نظر می رسد که هر آخر هفته یک حادثه وجود دارد.
عامل های کدنویسی هوش مصنوعی دلیلی هستند که باعث می شوند حوادث بیشتری روی مشتریان تأثیر بگذارند.
نه تنها حوادث بیشتر می شود، بلکه کاهش حوادث نیز زمان بیشتری می برد. واقعیت این است که توسعه دهندگان انسانی تیم شما اکنون درک سطحی تری از پایگاه کد دارند. اگر عامل برنامه نویسی شما نتواند مشکلی را که مشتریان شما با آن روبرو هستند پیدا کند، در این صورت انسان ها مجبور خواهند شد از طریق یک پایگاه کد که بسیار پیچیده و تست شده ضعیف است، جستجو کنند. آنها اساسا وارد قلمروی ناآشنا خواهند شد، بنابراین زمان بیشتری طول می کشد تا بفهمند چه چیزی اشتباه می شود. از این رو، شرکت ها بیشتر و بیشتر پول خود را به خاطر حوادثی از دست می دهند که حل آنها زمان بیشتری می برد.
وقتی انسانها زمانی را در کد صرف نمیکنند، نمیتوانند همه موارد استفاده را ببینند. آنها نمیدانند انسانهای واقعی چگونه از کد استفاده میکنند، زیرا اطمینان نمیدهند که هوش مصنوعی تجزیه و تحلیلها را ابزار دقیقی میکند و همه خطاها را به درستی تشخیص میدهد. از این رو، خطاهای نامرئی در پایگاه کد ظاهر می شوند. خطاها کشف نشده و فقط برای کاربران دنیای واقعی قابل مشاهده هستند، برخلاف انواع کاربرانی که در تستهای خودکار یا آزمایش دستی توسعهدهنده آزمایش میشوند.
و این منجر به مشکل نهایی با پایگاه های کد هوش مصنوعی می شود: آنها برای انسان ساخته نشده اند. پایگاه های کد هوش مصنوعی نرم افزاری هستند که توسط هوش مصنوعی برای هوش مصنوعی ساخته شده است. آنها مطابق روشی که کاربران انسانی از محصول استفاده می کنند، طراحی نشده اند، و برای روشی که توسعه دهندگان انسانی برای نگهداری از محصول نیاز دارند، طراحی نشده اند. این تجربه هم در سمت کاربر و هم از طرف توسعهدهنده کاهش مییابد، که منجر به یک چرخه معیوب از enshittification میشود.
واقعیت این است که برای اینکه یک محصول بتواند مشتریان انسانی را راضی کند، باید از دیدگاه انسانی مطلع شود. هیچ کس دوست ندارد از ماشین های رستوران سفارش دهد. خرید لباس از یک وب سایت همیشه به تناسب بدتری نسبت به خرید حضوری منجر می شود. همین امر در مورد محصولات SaaS نیز صادق است. هر زمان که محصول SaaS خود را به دست یک دستگاه می سپارید، در حال از دست دادن ارتباط انسانی با ارزش برای کاربران و توسعه دهندگان خود هستید. این ممکن است برای ارزانترین محصولاتی که فقط از نظر قیمت با هم رقابت میکنند کارساز باشد، اما محصولات نرمافزاری با کیفیت بالا همچنان تاثیر انسانی خواهند داشت.
بهترین و گران ترین محصولات توسط توسعه دهندگان انسانی برای کاربران انسانی طراحی می شود. استفاده از آنها جذاب و لذت بخش خواهد بود. آنها شکننده نخواهند بود زیرا اساسا توسط هوش مصنوعی توسعه داده نمی شوند.
متن اصلی (انگلیسی)
AI usage generates a fragile codebase
Article URL: https://evanxmerz.com/post/ai-usage-generates-a-fragile-codebase/ Comments URL: https://news.ycombinator.com/item?id=50438318 Points: 338 # Comments: 376