در دنیای جدید و دائماً در حال تغییرِ هوش مصنوعی و برنامهنویسی، از برنامهنویسان و تیمهای توسعه انتظار میرود کارهای بیشتری انجام دهند و بهرهوری خود را افزایش دهند. افراد و شرکتها هر کدام در حال پیدا کردن بهترین روش برای استفاده از هوش مصنوعی و رسیدن به این هدف هستند.
برای کار با هوش مصنوعی، یک روش ثابت که برای همه مناسب باشد وجود ندارد. میتوان روشهای استفاده از هوش مصنوعی را مثل یک طیف در نظر گرفت؛ در یک سوی آن، افرادی قرار دارند که اصلاً از هوش مصنوعی استفاده نمیکنند و در سوی دیگر، کسانی هستند که تقریباً همه کارها را به هوش مصنوعی میسپارند.
در عمل، پاسخ به این سؤال که «چقدر باید از هوش مصنوعی استفاده کرد؟» ساده نیست و به نوع کار، شرایط و هدف بستگی دارد. در بسیاری از موارد، بهترین راه این است که بین تواناییهای هوش مصنوعی و تخصص و قضاوت انسان تعادل برقرار شود.
در ادامه، یک چارچوب کلی بررسی میشود تا مشخص شود چه زمانی، چگونه و چرا بهتر است بعضی کارها به هوش مصنوعی سپرده شوند و در مقابل، چه زمانی لازم است یک برنامهنویس متخصص خودش هدایت کار را بر عهده داشته باشد:
انواع مختلف کار
روز کاری یک برنامهنویس معمولاً ترکیبی از کارهای مختلف است. برای مثال:
- بهروزرسانی نرمافزار به جدیدترین نسخه ReactJS و بررسی تغییراتی که ممکن است باعث اختلال در بخشهای موجود برنامه شوند و همچنین بررسی تأثیر این تغییرات بر عملکرد برنامه.
- جلسه با مدیر محصول برای بررسی نیازمندیها و جزئیات ویژگی مهم بعدی محصول.
- بررسی کدهای نوشتهشده توسط همکاران و ارائه بازخورد.
- بررسی و اولویتبندی گزارش خطاهایی که کاربران ارسال کردهاند و تصمیمگیری درباره اینکه در مرحله بعد چه کاری باید انجام شود.
- تمرکز روی ادامه کار و اعمال تغییرات بعدی در ویژگی مهم محصولی که مسئولیت توسعه آن را بر عهده دارد.
اگر یک برنامهنویس ارشد یا مسئول فنی باشید، معمولاً هر روز باید بین چند نوع کار و موضوع مختلف جابهجا شوید. به همین دلیل، استفاده از هوش مصنوعی برای انجام سریعتر و مؤثرتر این کارها میتواند بسیار وسوسهکننده باشد.
معیارهایی برای سپردن فوری کار به هوش مصنوعی
اگر یک کار ویژگیهای زیر را داشته باشد، معمولاً میتوان آن را با نظارت محدود به یک عامل هوش مصنوعی سپرد:
قابل بررسی باشد: آیا تغییراتی که هوش مصنوعی ایجاد میکند، بهطور کامل با آزمونهای نرمافزار قابل بررسی است؟
ریسک پایینی داشته باشد: اگر بخشی از کار بهدرستی انجام نشود، آیا پیامد آن بهطور منطقی قابلقبول و کمخطر است؟
خستهکننده و تکراری باشد: آیا انجام کار از نظر فنی ساده است و به روش جدید، ایده متفاوت یا اضافه کردن یک ابزار یا سرویس جدید نیاز ندارد؟
به اطلاعات زیادی نیاز نداشته باشد: آیا برای انجام کار لازم نیست هوش مصنوعی شناخت عمیقی از ساختار برنامه یا سابقه تصمیمهایی که برای حالتهای خاص گرفته شده داشته باشد؟
پایان کار بهوضوح مشخص باشد: آیا بهراحتی میتوان تشخیص داد که کار کامل شده است؟ آیا میتوان نتیجه نهایی مورد انتظار را بهطور دقیق مشخص کرد و در پایان نیز بهسادگی آن را بررسی کرد؟
اگر کاری این شرایط را داشته باشد، میتوان آن را با خیال راحتتری به هوش مصنوعی سپرد و فقط نظارت محدودی روی روند کار داشت. البته نتیجه کار همچنان باید مانند هر تغییر دیگری، مراحل معمول بررسی کد را طی کند.
وجود این معیارها باعث میشود احتمال اینکه هوش مصنوعی از مسیر درست خارج شود و تغییرات نامناسبی ایجاد کند، بسیار پایینتر باشد.
با مدلهای جدیدتر هوش مصنوعی، این روش در بسیاری از موارد میتواند بهخوبی نتیجه دهد.
هوش مصنوعی نمیتواند به جای برنامهنویس فکر کند
افزایش سرعت و بهرهوری با کمک هوش مصنوعی نباید باعث شود برنامهنویس از روند فکر کردن، تصمیمگیری و بررسی کیفیت کار کنار گذاشته شود. اتکای بیش از حد به هوش مصنوعی میتواند باعث شود بعضی تصمیمها بدون بررسی کافی پذیرفته شوند و کیفیت نهایی کار کاهش پیدا کند.
چند نمونه از این وضعیتها میتواند نشان دهد که استفاده بیش از حد از هوش مصنوعی چگونه مشکلساز میشود:
ممکن است یک برنامهنویس نتواند توضیح دهد چرا برای انجام یک تغییر، یک روش خاص را انتخاب کرده است. دلیل آن میتواند این باشد که فقط از هوش مصنوعی خواسته شده کار را انجام دهد و خود برنامهنویس توجه کافی به نحوه انجام آن نداشته است. این موضوع بهویژه زمانی خطرناک است که تغییر ایجادشده مربوط به بخشی از برنامه باشد که استفاده زیادی دارد. برای مثال، ممکن است یک تغییر در چنین بخشی تأثیر زیادی روی سرعت و عملکرد برنامه داشته باشد، درحالیکه برنامهنویس اصلاً متوجه این موضوع نشده باشد.
فرض کنید چهار خطا وجود دارد که باید برطرف شوند. ممکن است وسوسهکننده باشد که هر چهار مورد بهصورت همزمان و در چهار محیط جداگانه به هوش مصنوعی سپرده شوند. اما در پایان روز، ممکن است چهار تغییر نهچندان مطلوب برای بررسی باقی بماند؛ در برخی از آنها حالتهای خاص نادیده گرفته شده باشد، مستندات کافی وجود نداشته باشد یا بعضی بخشها نیاز به بهبود داشته باشند. در چنین شرایطی، زمان زیادی باید صرف مرتب کردن و اصلاح همه تغییرات شود؛ بخشی از کار توسط برنامهنویس و بخشی نیز با کمک هوش مصنوعی. در نهایت، ممکن است این روش زمان بسیار بیشتری نسبت به انجام مرحلهبهمرحله کار صرف کند.
ممکن است هوش مصنوعی برای برطرف کردن یک خطا در بخشی از برنامه که برنامهنویس با آن آشنایی زیادی ندارد، راهحلی پیشنهاد دهد. اگر برنامهنویس صرفاً به پاسخ قاطعانه هوش مصنوعی اعتماد کند و درستی روش را بررسی نکند، احتمال انتخاب یک راهحل اشتباه وجود دارد. در چنین شرایطی، حتی یک بررسی کوتاه توسط فردی که در آن بخش از برنامه تخصص دارد میتواند از صرف زمان زیادی برای یک مسیر اشتباه جلوگیری کند.
این مثالها نشان میدهند که استفاده نادرست از هوش مصنوعی میتواند باعث شود برنامهنویس، حتی با سالها تجربه، بیش از حد از روند انجام کار فاصله بگیرد و بخشی از نقش خود را در تصمیمگیری و کنترل کیفیت از دست بدهد، بنابراین استفاده از هوش مصنوعی باید آگاهانه و بادقت انجام شود.
وقتی کاری برای بررسی یا استفاده به یکی از همکاران سپرده میشود، مسئولیت نهایی آن همچنان بر عهده برنامهنویس است؛ فرقی نمیکند کار بهصورت دستی انجام شده باشد یا با کمک هوش مصنوعی.
برنامهنویس باید به اندازه کافی با کاری که تحویل میدهد آشنا باشد و از کیفیت آن مطمئن شود. این موضوع هم برای حفظ اعتبار حرفهای اهمیت دارد و هم باعث میشود کاری به همکاران تحویل داده نشود که قبل از بررسی و اطمینان از درست بودن آن، زمان کافی برای ارزیابیاش صرف نشده است.
استفاده آگاهانه از هوش مصنوعی در مراحل مختلف تولید نرمافزار
برای ساخت نمونههای اولیه یا پروژههای آزمایشی و کوتاهمدت که قرار نیست کد آنها در محصول نهایی استفاده شود، معمولاً میتوان با آزادی بیشتری از هوش مصنوعی کمک گرفت و نگرانی کمتری درباره کیفیت نهایی کد داشت.
اما در فرایند اصلی تولید و توسعه نرمافزار، بهتر است چند قانون مشخص در نظر گرفته شود تا در کنار افزایش سرعت و بهرهوری با کمک هوش مصنوعی، تخصص و تجربه برنامهنویس همچنان نقش اصلی خود را حفظ کند.
هر بار فقط روی یک کار تمرکز کنید
صرف اینکه امکان اجرای همزمان هوش مصنوعی در چند پنجره وجود دارد، به این معنی نیست که باید همزمان روی چند کار مختلف کار کرد.
ممکن است یک برنامهنویس چند پروژه مختلف داشته باشد، اما اگر چند ویژگی یا بخش از یک محصول نیاز به توسعه داشته باشد، بهتر است هر بار فقط روی یک مورد تمرکز شود. این کار باعث میشود تمام توجه روی همان موضوع قرار بگیرد.
علاوه بر این، تمرکز بیشتر معمولاً به کیفیت بهتر کار منجر میشود و در نهایت انجام یک کار بهصورت متمرکز میتواند سریعتر از جابهجایی مداوم بین چند کار باشد؛ زیرا هر بار تغییر موضوع، بخشی از تمرکز ذهنی را از بین میبرد.
مسئولیت کار همچنان با برنامهنویس است
بهتر است هوش مصنوعی بهجای برنامهنویس، تصمیم نگیرد که کار دقیقاً چگونه باید انجام شود. در عوض، میتوان از آن خواست راههای مختلف را بررسی کند.
برای مثال، اگر درباره طراحی یک ویژگی جدید چند گزینه وجود داشته باشد، میتوان از هوش مصنوعی خواست چند روش مختلف برای ساخت آن ویژگی پیشنهاد دهد و مزایا و معایب هرکدام را توضیح دهد.
این پیشنهادها قرار نیست بدون بررسی اجرا شوند، اما میتوانند به برنامهنویس کمک کنند مسئله را از زوایای مختلف ببیند و گزینههای بیشتری را در نظر بگیرد.
تصمیم نهایی و مسئولیت آن همچنان با برنامهنویس است. البته این به معنی کنار گذاشتن هوش مصنوعی در فرایند فکر کردن نیست؛ بلکه میتوان از آن بهعنوان ابزاری برای بررسی و گسترش ایدهها استفاده کرد.
هر پیشنهاد هوش مصنوعی را نباید پذیرفت
هوش مصنوعی میتواند حالتهای خاصی را پیدا کند که ممکن است از نظر برنامهنویس پنهان مانده باشند و در بسیاری از موارد نیز با پیدا کردن خطاها به بهتر شدن ساختار و کد نرمافزار کمک کند.
اما از طرف دیگر، گاهی ممکن است بیش از حد روی یک حالت خاص تمرکز کند که از قبل مشخص است اهمیت چندانی ندارد، یا زمان زیادی را صرف یک بهینهسازی بسیار جزئی کند که ارزش صرف وقت و انرژی را ندارد.
به همین دلیل، پیشنهادهای هوش مصنوعی باید با نگاه انتقادی بررسی شوند. دانش و تجربه برنامهنویس درباره محصول و مسئله باید در کنار پیشنهادهای هوش مصنوعی قرار بگیرد تا مشخص شود کدام موارد واقعاً مهم هستند و کدام موارد را میتوان نادیده گرفت.
باید بدانید هوش مصنوعی چه چیزی تولید میکند
قبل از سپردن انجام یک کار به هوش مصنوعی، بهتر است ابتدا برنامه پیادهسازی آن مشخص شود. هوش مصنوعی میتواند در این مرحله برای بررسی گزینهها و شکل دادن به برنامه کمک کند، اما برنامهنویس باید آن را با دقت بررسی کند و درباره نتیجه پیشنهادی سؤال بپرسد تا از درستی مسیر مطمئن شود.
بعد از اینکه هوش مصنوعی کار را انجام داد، لازم است چند مرحله بررسی و بازبینی کد انجام شود. میتوان از هوش مصنوعی خواست کدی را که نوشته، مرحلهبهمرحله توضیح دهد و خود برنامهنویس نیز باید زمان کافی برای بررسی آن در نظر بگیرد. در نهایت، کد میتواند برای بررسی نهایی در اختیار یکی از همکاران قرار گیرد.
با توجه به این اصول، استفاده از هوش مصنوعی را میتوان در سه مرحله اصلی تقسیم کرد:
طراحی: مسئولیت طراحی باید همچنان بر عهده برنامهنویس باشد. پس از بررسی اولیه مسئله، میتوان از هوش مصنوعی خواست پیشنهادهای متنوع و گستردهای ارائه دهد و حتی خارج از چارچوبهای معمول فکر کند. این ایدهها میتوانند به شکلگیری راهحل کمک کنند و مواردی را که ممکن است از قلم افتاده باشند، آشکار کنند.
برنامهریزی برای پیادهسازی: وقتی طراحی مشخص شد و در صورت نیاز مراحل بررسی و تأیید طرح نیز انجام گرفت، میتوان از هوش مصنوعی کمک گرفت تا طراحی به یک برنامه عملی و قابل اجرا تبدیل شود. چارچوب اولیه بهتر است توسط برنامهنویس مشخص شود، اما جزئیات اجرایی و کارهای ریزتر را میتوان به هوش مصنوعی سپرد. پس از تهیه برنامه، لازم است چندین بار بررسی شود. حتی میتوان همان برنامه را در اختیار چند عامل مستقل هوش مصنوعی قرار داد و از آنها خواست نقاط ضعف و ایرادهای احتمالی آن را پیدا کنند. این کار میتواند مواردی را آشکار کند که نیاز به اضافه شدن یا اصلاح دارند.
پیادهسازی: در این مرحله، بخش زیادی از اجرای کار را میتوان به هوش مصنوعی سپرد. هوش مصنوعی میتواند کد را بنویسد، آزمونها را اجرا کند و مراحل مختلف کار را پیش ببرد. اگر کار به بخشهای مستقلی تقسیم شود که وابستگی زیادی به یکدیگر ندارند، میتوان آنها را جداگانه اجرا و بررسی کرد.
بعد از پایان کار، بررسی دستی کد همچنان ضروری است. همچنین میتوان از چند عامل مستقل هوش مصنوعی خواست کد را بررسی کنند و بازخورد بدهند. سپس بر اساس این بازخوردها، اصلاحات لازم انجام میشود؛ گاهی با کمک هوش مصنوعی و گاهی نیز بهصورت دستی، بهخصوص زمانی که نیاز به درک دقیقتر نحوه عملکرد کد وجود دارد.
هوش مصنوعی راهحل همهچیز نیست
هوش مصنوعی ابزار بسیار قدرتمندی است و اگر درست از آن استفاده شود، میتواند یکی از تأثیرگذارترین ابزارهایی باشد که در اختیار برنامهنویسان و تیمهای توسعه قرار دارد.
اما استفاده نادرست از آن میتواند برنامهنویس را وارد مسیرهای پیچیده و بینتیجه کند، با ایجاد تغییراتی با کیفیت نامطمئن حجم کار را افزایش دهد و بهتدریج باعث شود فرد از روند فنی کار فاصله بگیرد و نتواند نقش مؤثر و هدایتکنندهای را که از یک مسئول فنی انتظار میرود، ایفا کند.
برای شناخت بهتر این ابزار، باید روشهای مختلف استفاده از آن را امتحان کرد و روشی را پیدا کرد که با شیوه کار و نیازهای هر پروژه سازگار باشد.
هوش مصنوعی زمانی بیشترین ارزش را ایجاد میکند که بهعنوان ابزاری برای افزایش توانایی و بهرهوری برنامهنویس استفاده شود، نه جایگزینی برای تفکر، تصمیمگیری و مسئولیت حرفهای او. در چنین شرایطی، میتوان انتظار داشت استفاده از هوش مصنوعی بهمرور تأثیر خود را در سرعت و میزان کاری که انجام میشود نشان دهد.











