رایان سالوا، به عنوان مدیر پروژه ابزارهای توسعهدهندگان در گوگل، در خط مقدم تحولات ناشی از ابزارهای هوش مصنوعی در برنامهنویسی قرار دارد. او که پیشتر در Github و Microsoft فعالیت داشته، اکنون مسئولیت ابزارهایی مانند Gemini CLI و Gemini Code Assist را بر عهده دارد و توسعهدهندگان را به دنیای جدید برنامهنویسی مبتنی بر عامل (agentic programming) هدایت میکند.
تیم او روز سهشنبه نتایج تحقیقات جدیدی را منتشر کرد که نشان میدهد توسعهدهندگان چگونه از ابزارهای هوش مصنوعی استفاده میکنند و چه میزان کار برای پیشرفت باقی مانده است. من با سالوا به گفتگو نشستم تا در مورد این گزارش و تجربه شخصی او با ابزارهای برنامهنویسی هوش مصنوعی صحبت کنم.
این مصاحبه برای وضوح و اختصار ویرایش شده است.
گوگل هر سال یک نظرسنجی از روندهای توسعهدهندگان انجام میدهد، اما گزارش امسال واقعاً بر ابزارهای هوش مصنوعی و به طور خاص رویکرد عاملمحور توسعهدهندگان در برنامهنویسی تمرکز دارد. آیا نکتهای در این تحقیق وجود داشت که شما را شگفتزده کند؟
یکی از یافتههای واقعاً جالب، میانگین تاریخی بود که توسعهدهندگان شروع به استفاده از ابزارهای هوش مصنوعی کردند. آنها دریافتند که این تاریخ فروردین ۱۴۰۳ بوده است که تقریباً مصادف با زمان انتشار Claude 3 و Gemini 2.5 است. این واقعاً سپیده دم مدلهای استدلال یا تفکر است و تقریباً در همان زمان، ما در فراخوانی ابزارها (tool-calling) بسیار بهتر شدیم.
برای کارهای کدنویسی، واقعاً باید بتوانید از اطلاعات خارجی برای حل مسئله استفاده کنید، بنابراین ممکن است نیاز به grep، ممکن است نیاز به کامپایل کد داشته باشد. اگر کد کامپایل شود، ممکن است بخواهید تست واحد (unit test) و تست یکپارچهسازی (integration test) را اجرا کنید. من فکر میکنم فراخوانی ابزارها واقعاً بخش مهمی است که به مدلها توانایی خود اصلاحی را در طول مسیر میدهد.
شما شخصاً چگونه از ابزارهای برنامهنویسی هوش مصنوعی استفاده میکنید؟
این روزها بیشتر کدنویسی من برای پروژههای سرگرمی است و بیشتر وقتم را صرف استفاده از ابزارهای مبتنی بر خط فرمان (command line) میکنم. بنابراین این شامل Gemini CLI میشود. سپس کمی Claude Code، کمی Codex هم در آن وجود دارد. و شما هرگز واقعاً از یک ابزار مبتنی بر ترمینال به تنهایی استفاده نمیکنید، بنابراین من در مورد IDEهایی که استفاده میکنم واقعاً ناهمگن هستم. من از Zed استفاده میکنم. من از VS Code استفاده میکنم. من از Cursor استفاده میکنم. من از Windsurf استفاده میکنم، همه آنها، زیرا من علاقه مندم فقط ببینم دنیا چگونه کار میکند و صنعت چگونه تکامل مییابد.
در جنبه حرفهای، مدیران محصول تمایل دارند در اسناد زندگی کنند، بنابراین اولین چیز استفاده از هوش مصنوعی برای کمک به من در نوشتن مشخصات و اسناد مورد نیاز است.
من کنجکاو هستم که این چگونه کار میکند. شما از Gemini CLI برای ساخت Gemini CLI استفاده میکنید، اما تصور میکنم که به خودی خود اجرا نمیشود.
یک وظیفه توسعه معمولاً به عنوان یک مسئله شروع میشود، شاید یک مسئله GitHub باشد که کسی با یک اشکال (bug) مطرح کرده است. اغلب، اگر واقعاً صادق باشم، این یک مسئله نسبتاً مبهم است. بنابراین من از Gemini CLI برای ایجاد یک سند نیازمندی قویتر در Markdown استفاده میکنم. این معمولاً حدود 100 خط مشخصات نسبتاً فنی، اما همچنین نتیجهمحور ایجاد میکند. سپس من از Gemini CLI برای نوشتن کد بر اساس آن مشخصات و ترجیحات کلی در اسناد تیم استفاده میکنم.
در سراسر تیم مهندسی، ما چند لایه مختلف از قوانین و اسناد Markdown داریم که توسط مدل مصرف میشوند، فقط نحوه کار ما را بیان میکنند: در اینجا نحوه انجام آزمایش، نحوه مدیریت وابستگیها و غیره را بیان میکنیم. بنابراین وقتی کد را تولید میکند، از آن اسناد نیز استفاده میکند.
و همانطور که Gemini CLI در حال عیبیابی است، من از آن میخواهم که سند نیازمندیهای من را بهروزرسانی کند و بگوید: “من این مرحله را برطرف کردم. اکنون به مرحله بعدی میروم” و غیره. هر یک از اینها commit و درخواست pull خود را در مخزن ایجاد میکند، بنابراین من همیشه میتوانم به عقب برگردم یا undo کنم.
من میگویم احتمالاً 70٪ تا 80٪ از کار من صرف کار در ترمینال با زبان طبیعی، تلاش برای استفاده از Gemini CLI برای ایجاد نیازمندیها و سپس اجازه دادن به Gemini CLI برای نوشتن بیشتر کد برای من میشود، که من سپس آن را بررسی و با هر IDE که اتفاقاً استفاده میکنم میخوانم. اما بیشتر از IDE به عنوان مکانی برای خواندن کد استفاده میکنم، نه نوشتن کد.
آیا فکر میکنید آیندهای برای کد خام کامپیوتر وجود دارد؟ یا اینکه همه چیز را به پنجرههای ترمینال منتقل خواهیم کرد؟
برای سه دهه، IDE مکانی بود که برای انجام همه کارها در توسعه نرمافزار به آن مراجعه میکردیم. شما IDE، مرورگر و پنجره ترمینال را داشتید.
من فکر میکنم که این هنوز هم تا حد زیادی درست است، اما من گمان میکنم که با گذشت زمان ما در نهایت زمان بیشتری را صرف کار با الزامات خواهیم کرد و مقدار زمانی که در IDE صرف میشود به تدریج کاهش مییابد. و من فکر میکنم که این تغییر ممکن است در یک بازه زمانی بسیار طولانی رخ دهد.
نگرانی زیادی در مورد اینکه این برای توسعه نرمافزار به عنوان یک پیشرفت چه معنایی دارد وجود دارد. اگر 10 سال دیگر، ما دیگر به کد نگاه نکنیم، این برای توسعهدهندگان چه معنایی دارد؟ آیا هنوز شغلی برای آنها وجود خواهد داشت؟
من فکر میکنم که شغل شما به عنوان یک توسعهدهنده بیشتر شبیه یک معمار خواهد بود. این در مورد در نظر گرفتن مشکلات بزرگ و پیچیده و تقسیم آنها به وظایف کوچکتر و قابل حل است. شما باید به تصویر بزرگتری در مورد آنچه میخواهید تولید کنید فکر کنید، نه زبان واسط برای بیان آن در کد ماشین.
منبع : techcrunch.com