در سالهای اخیر، شاهد انتشار گستردهای از عناوین و گزارشها مبنی بر افزایش چشمگیر نقش هوش مصنوعی (Artificial Intelligence - AI) در فرآیند برنامهنویسی و توسعه نرمافزار بودهایم. عباراتی نظیر "XYZ درصد از کدها اکنون توسط هوش مصنوعی نوشته میشوند" به طور فزایندهای در رسانهها به چشم میخورند. این نوع عناوین اغلب این تصور را در ذهن مخاطب ایجاد میکنند که هوش مصنوعی به سرعت در حال جایگزینی برنامهنویسان انسانی است و نیاز به نیروی انسانی در این حوزه رو به کاهش خواهد رفت. با این حال، بررسی دقیقتر این موضوع و در نظر گرفتن تجربیات عملی توسعهدهندگان نشان میدهد که واقعیت پیچیدهتر از این تصورات ساده است. این مقاله به بررسی عمیقتر نقش فعلی و آتی هوش مصنوعی در برنامهنویسی و توسعه نرمافزار میپردازد و ضمن تحلیل آمارهای ارائه شده، به جنبههای مهمی که اغلب در اینگونه گزارشها نادیده گرفته میشوند، میپردازد.
تحلیل آمارهای مربوط به تولید کد توسط هوش مصنوعی
ادعاهایی مبنی بر اینکه درصد قابل توجهی از کدهای تولید شده در شرکتهای بزرگ فناوری مانند مایکروسافت، گوگل و آنتروپیک (Anthropic) توسط هوش مصنوعی نوشته میشود، بدون شک توجه بسیاری را به خود جلب کرده است. به عنوان مثال، مدیرعامل مایکروسافت، ساتیا نادلا (Satya Nadella)، اظهار داشته است که تا 30 درصد از کدهای این شرکت توسط هوش مصنوعی تولید میشود. همچنین، مدیرعامل آنتروپیک پیشبینی کرده است که در آینده نزدیک، هوش مصنوعی قادر به نوشتن تقریباً تمام کدها خواهد بود. از سوی دیگر، مدیرعامل گوگل نیز اعلام کرده است که بیش از یک چهارم کدهای جدیدی که به پروژههای آنها اضافه میشود، توسط هوش مصنوعی تولید شده است.
با وجود جذابیت این آمارها، لازم است تا درک کنیم که چگونه این ارقام به دست میآیند و چه معنایی دارند. به احتمال زیاد، این شرکتها میزان استفاده از ابزارهای کمک برنامهنویسی مبتنی بر هوش مصنوعی (AI-powered coding assistants) را به عنوان معیاری برای سنجش میزان "کد نوشته شده توسط هوش مصنوعی" در نظر میگیرند. این ابزارها میتوانند قطعه کدها، توابع و حتی ساختارهای کلی یک برنامه را بر اساس دستورات ارائه شده توسط برنامهنویس تولید کنند. با این حال، این بدان معنا نیست که هوش مصنوعی به طور مستقل و بدون دخالت انسان، نرمافزار تولید میکند. در واقع، این ابزارها به عنوان یک دستیار قدرتمند عمل میکنند که سرعت و کارایی فرآیند کدنویسی را افزایش میدهند.
تجربه عملی یک توسعهدهنده: تولید در مقابل بازبینی و اصلاح
تجربه شخصی یک توسعهدهنده در یک پروژه کوچک، مثال روشنی از نحوه تعامل واقعی با ابزارهای تولید کد مبتنی بر هوش مصنوعی را ارائه میدهد. در این پروژه، یک مفسر محلی پایتون (local python interpreter) به عنوان یک ابزار MCP (Modular Command Processor) Server، مشابه قابلیت Code Interpreter در ChatGPT، پیادهسازی شده است. هدف از این کار، ایجاد یک محیط اجرای پایتون محلی و امن بود که نیازی به تنظیمات پیچیده مانند استفاده از داکر (Docker) یا محیطهای راه دور نداشته باشد.
در این فرآیند، پس از بررسی کتابخانه smolagents از HuggingFace و ایجاد یک نمونه اولیه از مفسر پایتون، از یک عامل هوش مصنوعی (Agent) در محیط Cursor برای ایجاد ساختار اولیه پروژه MCP Server استفاده شد. با ارائه نمونه کد و لینک به مستندات MCP Server، عامل هوش مصنوعی توانست یک پایگاه کد کامل و بدون خطاهای لینتر (linter warnings) تولید کند.
با این حال، در ساعات بعدی، توسعهدهنده به طور فعال به بازبینی و اصلاح کدهای تولید شده پرداخت. بخش قابل توجهی از فایلها و خطوط کد حذف شدند و تغییرات اساسی در ساختار و منطق برنامه اعمال گردید. در این میان، از قابلیتهای مختلف هوش مصنوعی، از جمله تکمیل خودکار کد (autocompletion) و چتباتها، به طور گسترده استفاده شد.
با در نظر گرفتن این تجربه، این سوال مطرح میشود که آیا میتوان ادعا کرد 100 درصد کد توسط هوش مصنوعی تولید شده است؟ از یک دیدگاه، پاسخ مثبت است، زیرا ابزارهای هوش مصنوعی نقش فعالی در تولید خطوط کد داشتهاند. اما آیا این بدان معناست که نقش توسعهدهنده انسانی در این فرآیند کاملاً حذف شده است؟ قطعاً خیر. توسعهدهنده نه تنها دستورات لازم را به هوش مصنوعی ارائه کرده است، بلکه مسئولیت درک، ارزیابی، اصلاح و یکپارچهسازی کدهای تولید شده را نیز بر عهده داشته است.
آمار مقایسهای بین نسخه اولیه تولید شده توسط هوش مصنوعی و نسخه نهایی منتشر شده، گویای این واقعیت است:
- نسخه اول (تولید شده توسط Claude 3.7/Cursor Agent): 9 فایل، 1062 خط کد، 45 خط کامنت، 158 خط خالی
- نسخه نهایی (اصلاح و منتشر شده): 4 فایل، 318 خط کد، 9 خط کامنت، 79 خط خالی
این آمار نشان میدهد که حدود 70 درصد از کدهای تولید شده توسط هوش مصنوعی در نهایت حذف شدهاند. آیا این بدان معناست که کدهای تولید شده توسط هوش مصنوعی بیکیفیت هستند؟ لزوماً نه. این موضوع بیشتر نشاندهنده این است که تولید سریع کد توسط هوش مصنوعی تنها بخشی از فرآیند توسعه نرمافزار است و درک عمیق مسئله، طراحی معماری مناسب و انطباق کد با نیازهای واقعی پروژه، همگی نیازمند دخالت فعال و هوشمندانه توسعهدهنده انسانی هستند. فرآیند بازبینی و اصلاح کد نه تنها به بهبود کیفیت نهایی منجر میشود، بلکه به توسعهدهنده کمک میکند تا درک بهتری از پایگاه کد پیدا کرده و با چالشهای پروژه عمیقتر آشنا شود. گاهی اوقات، خواندن و درک کد تولید شده توسط هوش مصنوعی میتواند زمانبرتر از نوشتن کد از ابتدا باشد.
محدودیتهای فعلی هوش مصنوعی در درک "روح" پروژه
یکی از چالشهای مهم در استفاده از ابزارهای هوش مصنوعی برای تولید کد، ناتوانی آنها در درک کامل "روح" (vibes) و استانداردهای یک پایگاه کد بزرگ و پیچیده است. در پروژههای بزرگ، حفظ انسجام و هماهنگی در تغییرات ایجاد شده بسیار حیاتی است. ابزارهای هوش مصنوعی ممکن است در تولید قطعه کدهای منفرد عملکرد خوبی داشته باشند، اما اغلب در ایجاد تغییرات سازگار و همسو با معماری کلی و قراردادهای کدنویسی پروژه دچار مشکل میشوند. به همین دلیل، هرچه دامنه وظیفه بزرگتر باشد و تعداد فایلها و خطوط کد بیشتری تحت تأثیر قرار گیرند، نیاز به بازبینی و اصلاح انسانی افزایش مییابد.
توسعه نرمافزار فراتر از نوشتن کد
نوشتن کد تنها یکی از جنبههای مهم توسعه نرمافزار است. فرآیندهایی مانند یکپارچهسازی (integration)، تست (testing) و انتشار (shipping) نیز بخشهای حیاتی این چرخه را تشکیل میدهند. به عنوان مثال، در گذشته، مایکروسافت یک چرخه انتشار سه ساله برای سیستم عامل ویندوز (Windows) داشت که تنها حدود شش تا نه ماه آن صرف توسعه کد جدید میشد و مابقی زمان به یکپارچهسازی، تست و دورههای آلفا و بتا اختصاص مییافت.
مطالعات نشان میدهد که توسعهدهندگان تنها حدود 20 درصد از زمان خود را صرف کدنویسی و بازسازی کد (refactoring) میکنند. بقیه زمان آنها به فعالیتهای دیگری مانند کار با تیمها و مشتریان، درک نیازمندیها، طراحی سیستم و حل مشکلات مربوط به یکپارچهسازی و استقرار اختصاص مییابد. در این زمینهها، نقش هوش مصنوعی هنوز بسیار محدود است.
چالشهای غیرفنی توسعه نرمافزار
تصور کنید که ذینفعان پروژه (stakeholders) پاسخگو نباشند، درگیر مسائل سیاسی داخلی شوند و نتوانند در مورد نیازمندیها به توافق برسند. آیا ChatGPT یا سایر "عوامل هوشمند" قادر خواهند بود تا مشتری را پیگیری کنند، تناقضات موجود در نیازمندیها را شناسایی و برطرف کنند، با کل تیم ارتباط برقرار کرده و ریسکهای اصلی پروژه را مدیریت کنند؟
حتی اگر نیازمندیها به ظاهر واضح و دقیق باشند، زمان قابل توجهی صرف میشود تا تک تک اعضای تیم درک مشترکی از هدف پروژه پیدا کنند و در مورد نحوه سازماندهی، تقسیم وظایف و تبدیل نیازمندیهای تجاری به جزئیات پیادهسازی به توافق برسند. آیا ابزارهای هوش مصنوعی مولد (Gen-AI tools) میتوانند فرآیند شکلگیری و انسجام تیم را تسریع کرده و آنها را در عرض چند روز به مرحله عملکرد بالا برسانند؟
واقعیت این است که انسانها موجوداتی با سرعت تفکر محدود و ظرفیت پردازش اطلاعات مشخص هستند. ایجاد تعداد زیادی متن که تعداد کمی از افراد تمایل به خواندن و درک آن دارند، به خودی خود مشکلی را حل نمیکند. در وضعیت فعلی و با توجه به روند توسعه ابزارهای هوش مصنوعی در حوزه توسعه نرمافزار، این ابزارها بیشتر به عنوان ابزارهای بهرهوری فردی عمل میکنند که در آن، تواناییهای شناختی و ارتباطی انسان همچنان گلوگاه اصلی محسوب میشود. حتی با افزایش خودمختاری هوش مصنوعی، انسانها همچنان به زمان برای تصمیمگیری، تکامل دیدگاهها، گفتگو و توافق نیاز خواهند داشت.
بهرهوری و دیدگاه تجاری
هدف نهایی کسبوکارها، انجام کار بیشتر با تلاش و هزینه کمتر است. تصور اینکه با بهکارگیری هوش مصنوعی در تیمهای توسعه، میتوان به طور جادویی هزینهها و تعداد نیروی انسانی را کاهش داد، در عمل محقق نشده است. هنوز شواهد قطعی از تغییرات چشمگیر در بهرهوری توسعهدهندگان در سطح صنعت وجود ندارد. مطالعات انجام شده در این زمینه نتایج متفاوتی را نشان میدهند. به عنوان مثال، یک مطالعه مشترک بین مایکروسافت و اکسنچر (Accenture) افزایش 26 درصدی در تعداد وظایف تکمیل شده را گزارش کرده است، در حالی که مطالعه دیگری توسط آپلول (Uplevel) هیچ تغییری در زمان چرخه توسعه نیافته و حتی افزایش 41 درصدی در تعداد باگها را نشان داده است.
نتیجهگیری
در نهایت، با وجود پیشرفتهای چشمگیر در زمینه هوش مصنوعی و ابزارهای کمک برنامهنویسی، نباید تصور کرد که این فناوری به زودی جایگزین کامل توسعهدهندگان انسانی خواهد شد. در حالی که هوش مصنوعی میتواند به طور قابل توجهی سرعت و کارایی فرآیند کدنویسی را افزایش دهد، جنبههای مهم دیگری از توسعه نرمافزار مانند درک عمیق نیازمندیها، طراحی معماری مناسب، یکپارچهسازی سیستمها، تعامل با ذینفعان و همکاری تیمی همچنان نیازمند هوش، خلاقیت و مهارتهای ارتباطی انسان است.
آمارهای مربوط به درصد کدهای تولید شده توسط هوش مصنوعی باید با احتیاط تفسیر شوند و بیشتر به عنوان شاخصی از میزان پذیرش و استفاده از این ابزارها در نظر گرفته شوند تا معیاری برای سنجش میزان جایگزینی نیروی انسانی. تجربه عملی نشان میدهد که بخش قابل توجهی از کدهای تولید شده توسط هوش مصنوعی نیاز به بازبینی، اصلاح و انطباق با پروژه را دارند.