طی دو سال گذشته، من و تیم من در Work & Co ابزارهای کدنویسی هوش مصنوعی مانند Copilot، Cursor، Claude و ChatGPT را آزمایش کرده و به تدریج یکپارچه کردهایم تا به ما در ارسال تجربیات وب که توسط تودهها استفاده میشود، کمک کنیم. مسلماً، پس از مدتی شک و تردید اولیه و چند لحظه آها، ابزارهای هوش مصنوعی مختلف راه خود را در استفاده روزانه من پیدا کردند. با گذشت زمان، فهرست برنامههایی که در آنها متوجه شدیم که اجازه دادن به هوش مصنوعی را به دست بگیرد، شروع به رشد کرد، بنابراین تصمیم گرفتم موارد استفاده عملی از ابزارهای هوش مصنوعی را برای آنچه من «توسعهدهنده مسئول» مینامم به اشتراک بگذارم. منظور من از یک توسعه دهنده مسئول چیست؟ ما باید مطمئن شویم که کد با کیفیتی را که مورد انتظار ذینفعان و مشتریان است، ارائه می دهیم. مشارکتهای ما (یعنی درخواستهای کششی) نباید باری بر دوش همکاران ما باشد که باید کار ما را بررسی و آزمایش کنند. همچنین، در صورتی که برای یک شرکت کار می کنید: ابزارهایی که ما استفاده می کنیم باید توسط کارفرمای ما تایید شوند. جنبههای حساس مانند امنیت و حریم خصوصی باید به درستی مدیریت شوند: اسرار، دادههای مشتری (PII) یا کد اختصاصی را بدون تأیید خطمشی در ابزارها قرار ندهید. با آن مانند کد یک غریبه در اینترنت رفتار کنید. همیشه تست و تایید کنید. توجه: این مقاله آشنایی بسیار ابتدایی با ابزارهای کدنویسی هوش مصنوعی مانند Copilot در داخل VSCode یا مکان نما را فرض می کند. اگر همه اینها برای شما کاملاً جدید و ناآشنا به نظر می رسد، آموزش های ویدیویی Github Copilot می تواند نقطه شروع فوق العاده ای برای شما باشد.
کاربردهای مفید ابزارهای کدنویسی هوش مصنوعی توجه: مثالهای زیر عمدتاً بر روی کار در برنامههای تحت وب مبتنی بر جاوا اسکریپت مانند React، Vue، Svelte یا Angular تمرکز دارند. درک درستی از یک پایگاه کد ناآشنا کار بر روی پایگاه های کد ایجاد شده غیر معمول نیست، و پیوستن به یک پایگاه کد قدیمی بزرگ می تواند ترسناک باشد. به سادگی پروژه خود و عامل هوش مصنوعی خود را باز کنید (در مورد من، Copilot Chat در VSCode) و شروع به پرسیدن سوالات کنید، درست مانند آنچه از یک همکار می پرسید. به طور کلی، من دوست دارم با هر عامل هوش مصنوعی همانطور که با یک همنوع صحبت می کنم صحبت کنم. در اینجا یک مثال اصلاح شده بیشتر آمده است: یک نمای کلی معماری سطح بالا به من بدهید: نقاط ورودی، مسیریابی، احراز هویت، لایه داده، ابزار ساخت. سپس 5 فایل را برای خواندن به ترتیب فهرست کنید. توضیحات را به عنوان فرضیه در نظر بگیرید و با پرش به فایل های ارجاع شده تأیید کنید.
میتوانید سؤالات بعدی مانند «مسیریابی چگونه با جزئیات کار میکند؟» بپرسید. یا «از طریق فرآیند و روشهای احراز هویت با من صحبت کن» و شما را به مسیرهای مفیدی هدایت میکند تا کمی نور به تاریکی یک پایگاه کد ناآشنا بتابانید. Triaging شکستن تغییرات هنگام ارتقاء وابستگی ها بهروزرسانی بستههای npm، بهویژه زمانی که با تغییرات ناگهانی همراه هستند، میتواند کاری خستهکننده و زمانبر باشد و باعث شود مقدار نسبتاً رگرسیونها را اشکال زدایی کنید. من اخیراً مجبور شدم کتابخانه تجسم دادهها را plotly.js یک نسخه اصلی را از نسخه 2 به 3 ارتقا دهم و در نتیجه، برچسبگذاری محور در برخی از نمودارها از کار افتاد. من در ادامه از ChatGPT پرسیدم: "من پروژه Angular خود را که از Plotly استفاده می کند به روز کردم. plotly.js - بسته dist را از نسخه 2.35.2 به 3.1.0 - به روز کردم - و اکنون برچسب های محور x و y از بین رفته اند. چه اتفاقی افتاده است؟"
نماینده بلافاصله با یک راه حل بازگشت (خودتان در زیر ببینید). توجه: من هنوز توضیح را در مورد راهنمای مهاجرت رسمی قبل از ارسال اصلاح تأیید کردم.
Refactors Refactors را به طور ایمن در بین فایل ها تکرار کنید در حال رشد پایگاه های کد مطمئناً فرصت هایی را برای یکپارچه سازی کد آشکار می کند. به عنوان مثال، متوجه تکرار کد در بین فایلهایی میشوید که میتوانند در یک تابع یا جزء استخراج شوند. در نتیجه، شما تصمیم می گیرید یک کامپوننت به اشتراک گذاشته شده ایجاد کنید که می تواند به جای آن گنجانده شود و آن Refactor را در یک فایل انجام دهید. اکنون، بهجای انجام دستی این تغییرات در فایلهای باقیمانده، از نماینده خود میخواهید که Refactor را برای شما اجرا کند. Agent ها به شما امکان می دهند چندین فایل را به عنوان زمینه انتخاب کنید. پس از انجام Refactor برای یک فایل، میتوانم فایلهای بازسازیشده و دست نخورده را به متن اضافه کنم و از عامل بخواهم که تغییرات را در فایلهای دیگر مانند این اعمال کند: «تغییراتی را که در فایل A ایجاد کردم به فایل B نیز تکرار کنید». پیاده سازی ویژگی ها در فناوری های ناآشنا یکی از لحظات مورد علاقه من با استفاده از ابزارهای کدنویسی هوش مصنوعی زمانی بود که به من کمک کرد یک انیمیشن شیب متحرک کاملاً پیچیده در GLSL ایجاد کنم، زبانی که تقریباً با آن آشنا نبودم. در یک پروژه اخیر، طراحان ما یک شیب متحرک را به عنوان حالت بارگذاری روی یک شی 3 بعدی ارائه کردند. من واقعاً این مفهوم را دوست داشتم و می خواستم چیزی منحصر به فرد و هیجان انگیز را به مشتریان خود ارائه دهم. رامشکل: من فقط دو روز فرصت داشتم تا آن را پیاده سازی کنم و GLSL منحنی یادگیری بسیار شیب دار دارد. دوباره، یک ابزار هوش مصنوعی (در این مورد ChatGPT) به کار آمد، و من به سادگی از آن درخواست کردم که یک فایل HTML مستقل برای من ایجاد کند که یک بوم و یک گرادینت رنگ متحرک بسیار ساده را ارائه کند. مرحله به مرحله، از هوش مصنوعی خواستم تا ظرافت بیشتری به آن اضافه کند تا اینکه به یک نتیجه مناسب رسیدم تا بتوانم شروع به ادغام سایه زن در پایگاه کد واقعی خود کنم. نتیجه نهایی: مشتریان ما بسیار خوشحال بودند و ما به لطف هوش مصنوعی یک ویژگی پیچیده را در مدت زمان کمی ارائه کردیم. تست های نوشتاری در تجربه من، به ندرت در پروژه ها زمان کافی برای نوشتن و حفظ مجموعه مناسبی از تست های واحد و ادغام وجود دارد، و علاوه بر آن، بسیاری از توسعه دهندگان واقعاً از نوشتن تست ها لذت نمی برند. ترغیب کمک هوش مصنوعی برای تنظیم و نوشتن تست برای شما کاملاً ممکن است و می تواند در زمان کمی انجام شود. البته، شما بهعنوان یک توسعهدهنده، همچنان باید مطمئن شوید که آزمایشهای شما در واقع نگاهی به بخشهای حیاتی برنامه شما میاندازد و از اصول آزمایش معقول پیروی میکند، اما میتوانید نوشتن آزمایشها را به کمک هوش مصنوعی ما «برونسپاری» کنید. اعلان مثال: "تست های واحد را برای این تابع با استفاده از Jest بنویسید. مسیر شاد، موارد لبه و حالت های شکست را پوشش دهید. توضیح دهید که چرا هر تست وجود دارد."
حتی میتوانید بهترین شیوههای آزمایش کنت سی. دادز را به عنوان دستورالعملی برای نماینده خود، مانند زیر، همراهی کنید:
ابزار داخلی تا حدودی شبیه به مثال سایه زن که قبلاً ذکر شد، اخیراً وظیفه تجزیه و تحلیل کدهای تکراری در یک پایگاه کد و مقایسه قبل و بعد از یک Refactor به من داده شد. اگر نمیخواهید مسیر زمانبر مقایسه فایلها را به صورت دستی طی کنید، مطمئناً کار بیاهمیتی نیست. با کمک Copilot، یک اسکریپت ایجاد کردم که کدهای تکراری را برای من تجزیه و تحلیل میکرد، خروجیها را در جدولی مرتب و مرتب میکردم و آن را به Excel صادر میکردم. سپس یک قدم جلوتر رفتم. وقتی Refactor کد ما تمام شد، از عامل خواستم برگه اکسل موجود من را به عنوان خط مبنا بگیرد، وضعیت فعلی تکرار را در ستونهای جداگانه اضافه کند و دلتا را محاسبه کند. به روز رسانی کدی که مدت ها پیش نوشته شده است اخیراً، یک مشتری قدیمی من به من برخورد کرد، زیرا با گذشت زمان، چند ویژگی دیگر به درستی در وب سایت او کار نمی کردند. نکته مهم: وب سایت تقریبا ده سال پیش ساخته شد و جاوا اسکریپت و SCSS از ابزارهای کامپایل نسبتاً قدیمی مانند requireJS استفاده می کردند و راه اندازی به نسخه قدیمی Node.js نیاز داشت که حتی روی مک بوک 2025 من اجرا نمی شد. بهروزرسانی کل فرآیند ساخت به صورت دستی چند روز طول میکشید، بنابراین تصمیم گرفتم از عامل هوش مصنوعی بپرسم: «آیا میتوانید فرآیند ساخت JS و SCSS را به یک پشته ناب 2025 مانند Vite بهروزرسانی کنید؟» مطمئناً انجام شد و پس از حدود یک ساعت پالایش با عامل، ساخت SCSS و JS خود را به Vite تغییر دادم و توانستم روی رفع اشکال واقعی تمرکز کنم. فقط مطمئن شوید که به درستی فایل های خروجی و کامپایل شده را هنگام انجام چنین تغییرات یکپارچه در فرآیند ساخت خود تأیید کنید. جمع بندی و پیش نویس آیا می خواهید تمام تغییرات کد اخیر خود را در یک جمله برای یک پیام commit خلاصه کنید یا یک لیست طولانی از commit ها دارید و می خواهید آنها را در سه نقطه خلاصه کنید؟ مشکلی نیست، اجازه دهید هوش مصنوعی از آن مراقبت کند، اما لطفاً حتماً آن را تصحیح کنید. یک مثال ساده به اندازه پیام دادن به یک هموطن است: "لطفاً تغییرات اخیر من را در نکات مختصر خلاصه کنید". توصیه من در اینجا این است که از GPT برای نوشتن با احتیاط استفاده کنید، و مانند کد، لطفاً خروجی را قبل از ارسال یا ارسال بررسی کنید. توصیه ها و بهترین شیوه ها تحریک کردن یکی از مزایای نه چندان آشکار استفاده از هوش مصنوعی این است که هرچه اعلانهای شما خاصتر و متناسبتر باشند، خروجی بهتری خواهند داشت. فرآیند تحریک یک عامل هوش مصنوعی ما را مجبور می کند تا قبل از نوشتن و کدنویسی، الزامات خود را تا حد امکان به طور خاص فرموله کنیم. به همین دلیل است که به عنوان یک قاعده کلی، من به شدت توصیه میکنم تا حد امکان با تلقین شما خاص باشید. رایان فلورانس، یکی از نویسندگان ریمیکس، راه ساده و در عین حال قدرتمندی را برای بهبود این فرآیند با تکمیل دستور اولیه خود با این جمله پیشنهاد می کند: "قبل از شروع، آیا سوالی از من دارید؟"
در این مرحله، هوش مصنوعی معمولاً با سؤالات مفیدی بازمیگردد که در آن میتوانید هدف خاص خود را روشن کنید، و نماینده را راهنمایی میکند تا رویکردی متناسبتر برای کار شما ارائه دهد.
از کنترل نسخه استفاده کنید و در قطعات قابل هضم کار کنید استفاده از کنترل نسخه مانند git نه تنها هنگام همکاری به عنوان یک تیم در یک کد واحد مفید است، بلکه برای ارائه به شما به عنوان یک کدمشارکتکننده فردی با نقاط ثابتی که در مواقع اضطراری باید به آن برگردید. به دلیل ماهیت غیر قطعی خود، AI گاهی اوقات می تواند سرکش باشد و تغییراتی ایجاد کند که به سادگی برای آنچه می خواهید به دست آورید مفید نیستند و در نهایت چیزها را به طور غیرقابل جبرانی از بین می برد. تقسیم کار خود به چند commit به شما کمک می کند تا نقاط پایداری ایجاد کنید که در صورتی که همه چیز به طرفی پیش رفت، می توانید به آنها بازگردید. و هم تیمی های شما نیز از شما تشکر خواهند کرد، زیرا زمانی که کد شما به قطعاتی با ساختار معنایی خوب تقسیم می شود، زمان آسان تری برای بررسی کد شما خواهند داشت. به طور کامل بررسی کنید این بیشتر یک بهترین عمل عمومی است، اما به نظر من، هنگام استفاده از ابزارهای هوش مصنوعی برای کارهای توسعه، اهمیت بیشتری پیدا میکند: اولین بازبین منتقد کد خود باشید. مطمئن شوید که مدتی را صرف مرور سطر به خط تغییرات خود میکنید، درست مانند اینکه کد شخص دیگری را مرور میکنید، و تنها زمانی که اثر خود را از نظر شخصی خود بازبینی میکنید، ارسال کنید. "در حال حاضر دو چیز برای من صادق است: عوامل هوش مصنوعی شگفتانگیز هستند و بهرهوری بسیار زیادی را افزایش میدهند. اگر مغز خود را خاموش کنید و کاملاً رها کنید، آنها دستگاههای بزرگی هستند."
نتیجه گیری و اندیشه های انتقادی به نظر من، ابزارهای کدنویسی هوش مصنوعی می توانند بهره وری ما را به عنوان توسعه دهندگان به صورت روزانه بهبود بخشند و ظرفیت ذهنی را برای برنامه ریزی بیشتر و تفکر سطح بالا آزاد کنند. آنها ما را مجبور می کنند تا نتیجه مورد نظر خود را با جزئیات دقیق بیان کنیم. هر هوش مصنوعی گاهی اوقات می تواند توهم ایجاد کند، که اساساً به این معنی است که با لحنی مطمئن نهفته است. بنابراین لطفاً حتماً بررسی و آزمایش کنید، مخصوصاً وقتی شک دارید. هوش مصنوعی یک گلوله نقره ای نیست و من معتقدم که برتری و توانایی حل مشکلات به عنوان یک توسعه دهنده هرگز از مد نمی افتد. برای توسعه دهندگانی که تازه کار خود را شروع کرده اند، این ابزارها می تواند بسیار وسوسه انگیز باشد که بیشتر کار را برای آنها انجام دهند. آنچه ممکن است در اینجا گم شود، کار اغلب خسته کننده و دردناک از طریق اشکالات و مسائلی است که اشکال زدایی و حل آنها دشوار است. حتی لی رابینسون، هوش مصنوعی مکاننما، در یکی از پستهایش این موضوع را زیر سوال میبرد:
ابزارهای کدنویسی هوش مصنوعی با سرعت زیادی در حال پیشرفت هستند و من برای آنچه در آینده خواهد آمد هیجان زده هستم. امیدوارم این مقاله و نکات آن برای شما مفید بوده باشد و هیجان زده باشید که برخی از آنها را برای خودتان امتحان کنید.