به خوبی شناخته شده است که هوش مصنوعی مولد میتواند تصاویر را با تولید عکسها، تصاویر و نقاشیهای واقعگرایانه تنها با پیروی از دستورالعملها ایجاد کند.
در همین حال، در دنیای تجارت، توجه بر قابلیت هوش مصنوعی مولد در تولید برنامهها متمرکز شده است.
هوش مصنوعی مبتنی بر چت از طریق مدلهای زبانی بزرگ بنیادی تحقق مییابد، که آن را در مکالمه به زبانهای مختلف و ترجمه بین آنها بسیار ماهر میکند.
زبانهای برنامهنویسی، که برای ایجاد برنامهها استفاده میشوند، نیز نوعی زبان هستند. برنامهنویسان انسانی، به نوعی، الزامات نرمافزاری دریافت شده به صورت شفاهی را به زبانهای برنامهنویسی ترجمه میکنند.
به همین دلیل، هوش مصنوعی مولد مکالمهای با استفاده از مدلهای زبانی بزرگ در برنامهنویسی نیز بسیار ماهر است.
علاوه بر این، برنامهنویسی نوعی کار فکری است که صحت خروجی آن اغلب میتواند به صورت خودکار و فوری تأیید شود. این به این دلیل است که اجرای برنامه ایجاد شده امکان تعیین خودکار اینکه آیا نتایج دلخواه تولید شدهاند را فراهم میکند.
در واقع، برنامهنویسان انسانی اغلب برنامههای تستی را همزمان با برنامه اصلی ایجاد میکنند تا تأیید کنند که برنامه اصلی مطابق با هدف عمل میکند و رفتار آن را در حین پیشرفت توسعه بررسی میکنند.
هوش مصنوعی مولد نیز میتواند در حین آزمایش، برنامهنویسی را پیش ببرد، و مکانیزمی را فراهم میکند که اگر انسان دستورالعملهای دقیقی ارائه دهد، هوش مصنوعی میتواند به طور خودکار برنامه را تکرار و تکمیل کند تا زمانی که آزمایشها را با موفقیت پشت سر بگذارد.
البته، به دلیل محدودیتهای توانایی برنامهنویسی هوش مصنوعی مولد و ابهام دستورالعملهای انسانی، موارد بسیاری وجود دارد که آزمایشها حتی پس از چندین بار تکرار نیز نمیتوانند با موفقیت پشت سر گذاشته شوند. همچنین، ممکن است آزمایشها ناکافی یا نادرست باشند، که اغلب منجر به باگها یا مشکلات در برنامه تکمیل شده میشود.
با این حال، با بهبود قابلیتهای هوش مصنوعی مولد، مهندسان انسانی روشهای دستورالعمل خود را اصلاح میکنند، و دانش برنامهنویسی هوش مصنوعی مولد از طریق جستجوهای اینترنتی افزایش مییابد، دامنه تولید خودکار برنامههای مناسب روز به روز در حال افزایش است.
علاوه بر این، با توجه دنیای تجارت، شرکتهای برتر که در حال تحقیق و توسعه هوش مصنوعی مولد هستند، نیز بر بهبود قابلیتهای برنامهنویسی هوش مصنوعی مولد تمرکز کردهاند.
در چنین شرایطی، پیشبینی میشود که گسترش حوزهها و حجمهایی که برنامهنویسی خودکار میتواند به هوش مصنوعی مولد سپرده شود، شتاب گیرد.
موارد بسیاری وجود دارد که افرادی که قبلاً هرگز برنامهای توسعه ندادهاند، یک محیط توسعه اساسی را بر اساس اطلاعات اینترنتی راهاندازی کردهاند، سپس برنامهنویسی را به هوش مصنوعی مولد سپردهاند و برنامهها را در یک تلاش مشترک تکمیل کردهاند.
من خودم، به عنوان یک برنامهنویس، از هوش مصنوعی مولد برای برنامهنویسی استفاده میکنم. هنگامی که به آن عادت کنم، میتوانم نرمافزار را بدون ویرایش برنامه، تنها با کپی کردن برنامهها در فایلها یا برش و چسباندن آنها مطابق با دستورالعملهای هوش مصنوعی مولد، تکمیل کنم.
البته، موارد بسیاری وجود دارد که با مشکل مواجه میشوم. اینها بیشتر به دلیل تفاوتهای جزئی در تنظیمات کامپیوتر یا ابزارهای توسعه برنامهنویسی من با پیکربندیهای معمول است، یا به دلیل جدیدتر بودن اجزای نرمافزار رایگان نسبت به آنچه هوش مصنوعی مولد آموخته است که منجر به شکاف دانش میشود، یا گاهی اوقات محتوای درخواستی من کمی غیرعادی است.
در بیشتر موارد، اگر چنین تفاوتهای جزئی یا شرایط خاصی وجود نداشته باشد، و من به آن دستور دهم که یک ویژگی نرمافزاری بسیار رایج را ایجاد کند، برنامههای مناسب تولید میشوند.
به سوی دوران لیکوئیدور
به عنوان یک توسعهدهنده نرمافزار، میتوانم نرمافزاری را که توسعه میدهم منتشر کنم. و نرمافزاری که ما مهندسان منتشر میکنیم توسط کاربران مختلفی مورد استفاده قرار میگیرد.
آیندهای که هر کسی بتواند این توسعه نرمافزار را با هوش مصنوعی مولد انجام دهد، ادامه بحثهای تاکنون است.
با این حال، این فقط یک تغییر در سمت توسعه نرمافزار نیست. یک تغییر قابل توجه نیز در سمت کاربر رخ خواهد داد.
دستور دادن شفاهی به هوش مصنوعی مولد برای افزودن یا تغییر خودکار ویژگیها به نرمافزار، نه تنها در مرحله توسعه پیش از انتشار نرمافزار، بلکه در حین استفاده از آن نیز قابل انجام است. علاوه بر این، این کار میتواند توسط خود کاربران نرمافزار انجام شود.
توسعهدهندگان نرمافزار فقط باید محدودههای مجاز و غیرقابل تغییر را تعریف کنند و نرمافزار را با ویژگی سفارشیسازی مبتنی بر هوش مصنوعی مولد منتشر کنند.
این امر به کاربران امکان میدهد تا از هوش مصنوعی مولد درخواست کنند که مسائل جزئی مربوط به قابلیت استفاده یا ترجیحات طراحی صفحه را تغییر دهد.
علاوه بر این، امکان افزودن ویژگیهای مفید یافت شده در سایر برنامهها، انجام ترکیبی از چندین عملیات با یک کلیک، یا مشاهده صفحههایی که مکرراً دسترسی پیدا میکنند در یک نمایشگر واحد وجود خواهد داشت.
از دیدگاه توسعهدهنده نرمافزار، فعال کردن چنین سفارشیسازی توسط کاربر مزایای قابل توجهی دارد. این امر نیاز آنها را به افزودن ویژگیها بر اساس درخواستهای کاربر از بین میبرد، و با توجه به اینکه میتواند با جلوگیری از بازخورد منفی و نارضایتی در مورد قابلیت استفاده، محبوبیت نرمافزار را افزایش دهد، یک برد بزرگ است.
هنگامی که کاربران میتوانند به این روش آزادانه صفحهها و توابع را تغییر دهند، این مفهوم به طور قابل توجهی از آنچه ما به طور سنتی "نرمافزار" مینامیدیم، منحرف میشود.
مناسب خواهد بود که آن را "لیکوئیدور" بنامیم تا نشان دهیم که حتی از نرمافزار (که در مقایسه با سختافزار انعطافپذیر است) نیز سیالتر و سازگارتر است، و کاملاً با کاربر مطابقت دارد.
در گذشته، توابع صرفاً توسط سختافزار تحقق مییافتند، اما سپس نرمافزار قابل جایگزینی پدید آمد که امکان تحقق توابع را با ترکیبی از سختافزار + نرمافزار فراهم کرد.
از آنجا، میتوانیم به ظهور لیکوئیدور فکر کنیم، که به بخشهایی اشاره دارد که میتوانند توسط هوش مصنوعی مولد اصلاح شوند. بنابراین، توابع کلی توسط سختافزار + نرمافزار (ارائه شده توسط توسعهدهندگان) + لیکوئیدور (اصلاحات کاربر) تحقق مییابند.
در این دوران لیکوئیدور، ایدههای اصلاحی از سوی کاربر به اوج خود میرسند.
یک ایده اصلاحی پیشگامانه که توسط یک کاربر ابداع شده است ممکن است در رسانههای اجتماعی مورد بحث قرار گیرد و دیگران را به تقلید و اصلاح لیکوئیدورهای مختلف سوق دهد.
همچنین، لیکوئیدوری که میتواند انواع مختلف نرمافزار را ادغام و مدیریت کند، قطعاً پدیدار خواهد شد. این امر به کاربران امکان میدهد تا جدولهای زمانی را از چندین پلتفرم SNS مختلف در یک برنامه واحد مشاهده کنند، یا نتایج جستجو را از پلتفرمهای متعدد ادغام کنند.
به این ترتیب، در دنیایی که لیکوئیدور رایج است، دستگاههای مختلف، از جمله رایانههای شخصی و تلفنهای هوشمند، عملکردهایی را ارائه خواهند داد که کاملاً متناسب با زندگی و فعالیتهای هر فرد است.
پدیدهای در حال وقوع
آنچه برای مهندسان نرمافزار مانند من اهمیت دارد این است که «لیکوئیدور» مفهومی آیندهنگرانه یا چیزی که چندین سال از ما دور باشد، نیست.
این بدان معناست که لیکوئیدورهای بسیار ساده در حال حاضر قابل دستیابی هستند.
به عنوان مثال، فرض کنید من مهندسی هستم که در حال توسعه یک برنامه وب برای سایت تجارت الکترونیکی شرکت خود هستم.
چنین برنامههای وب معمولاً دارای پایگاههای داده، سیستمهای مدیریت فروش و سیستمهای حمل و نقل محصول بر روی سرورهایی هستند که توسط شرکت یا خدمات ابری قرارداد بسته شده، مدیریت میشوند. هنگامی که کاربر خریدی انجام میدهد، این سیستمها به هم متصل میشوند تا پرداختها را جمعآوری کرده و محصولات را ارسال کنند.
سیستمهای اصلی و پایگاههای داده برای این عملیات را نمیتوان به طور دلخواه تغییر داد.
با این حال، اگر طراحی وبسایت تجارت الکترونیکی که کاربران میبینند برای راحتی هر کاربر تغییر یابد، معمولاً مشکل کمی ایجاد میکند. البته، اگر تغییرات یک کاربر بر روی صفحه نمایش کاربر دیگر تأثیر بگذارد، این یک مشکل است، اما سفارشیسازیهای فردی و مختص به کاربر مشکلی ندارد.
اصلاحات مختلفی قابل تصور است: بزرگتر کردن متن، تغییر پسزمینه به رنگ تیره، جابجایی دکمههایی که مکرراً فشرده میشوند به موقعیتهایی که به راحتی با دست چپ قابل دسترسی هستند، مرتبسازی موارد بر اساس قیمت در صفحه لیست، یا نمایش جزئیات دو محصول در کنار هم.
از نظر فنی، این اصلاحات را میتوان با تغییر فایلهای پیکربندی و برنامههایی مانند HTML، CSS و JavaScript که صفحه را در مرورگر نمایش میدهند، انجام داد.
از نظر امنیتی، این فایلها در اصل بر روی مرورگر وب اجرا میشوند، بنابراین توسط مهندسانی که با برنامههای وب آشنا هستند، قابل تغییر هستند. بنابراین، آنها فقط توابع و دادههایی را که برای تغییر امن هستند، مدیریت میکنند.
بنابراین، در سمت سرور برنامه وب تجارت الکترونیکی، میتوان این فایلها را برای هر کاربر وارد شده به طور جداگانه ذخیره کرد، یک صفحه برای مکالمه با یک هوش مصنوعی چت اضافه کرد، و مکانیزمی برای تغییر فایلهای HTML، CSS و JavaScript آن کاربر بر روی سرور بر اساس درخواستهای آنها ایجاد کرد.
اگر این متن، به همراه اطلاعات پیکربندی و کد منبع یک برنامه وب تجارت الکترونیکی موجود را به هوش مصنوعی مولد ارائه دهید، به احتمال زیاد مراحل و برنامههای لازم برای افزودن چنین عملکردی را ارائه خواهد داد.
به این ترتیب، لیکوئیدور در حال حاضر یک موضوع جاری است؛ تعجبآور نخواهد بود که این یک پدیده در حال وقوع باشد.
مهندس همهجانبه
حتی اگر دامنه برنامهنویسی خودکار مبتنی بر هوش مصنوعی گسترش یابد و عصر «لیکوئیدور» (liquidware) آغاز شده باشد، توسعه نرمافزار هنوز نمیتواند صرفاً توسط هوش مصنوعی مولد انجام شود.
با این حال، مسلم است که وزن برنامهنویسی در توسعه نرمافزار به طور قابل توجهی کاهش خواهد یافت.
علاوه بر این، برای توسعه روان نرمافزار، طیف گستردهای از دانش و مهارتهای مهندسی مورد نیاز است، نه فقط برنامهنویسی عمومی، بلکه زیرساخت ابری، شبکهها، امنیت، پلتفرمها، چارچوبهای توسعه و پایگاههای داده – که کل سیستم را از بالا به پایین پوشش میدهد.
کارکنانی با چنین دانش و مهارتهایی «مهندسان فولاستک» نامیده میشوند.
تاکنون، تعداد کمی از مهندسان فولاستک مسئول طراحی کلی بودند، در حالی که مهندسان باقیمانده یا صرفاً بر برنامهنویسی تمرکز میکردند یا در حوزههای غیربرنامهنویسی خاص در پشته سیستم تخصص داشتند و نقشها را به این صورت تقسیم میکردند.
اما، با بر عهده گرفتن بخش برنامهنویسی توسط هوش مصنوعی مولد، هزینههای توسعه نرمافزار به طور قابل توجهی کاهش مییابد، که منجر به برنامهریزی توسعههای نرمافزاری جدید و متنوعی خواهد شد.
در نتیجه، هر پروژه توسعه به مهندسان بسیار کمی که صرفاً کد بنویسند نیاز خواهد داشت؛ در عوض، تعداد زیادی مهندس فولاستک مورد نیاز خواهد بود.
علاوه بر این، در این وضعیت، صرف داشتن دانش و مهارتهای فولاستک کافی نخواهد بود. این به این دلیل است که پروژههای مختلف توسعه نرمافزار انواع متنوعی از نرمافزار را طلب خواهند کرد، به این معنی که توسعه همیشه در همان پشته سیستم درخواست نخواهد شد. همچنین، تقاضا برای سیستمهای ترکیبی که به چندین پشته سیستم نیاز دارند، افزایش خواهد یافت.
به عنوان مثال، پشته سیستم برای یک برنامه وب با پشته سیستم برای سیستمهای تجاری یا هستهای متفاوت است. بنابراین، یک مهندس فولاستک برنامه وب را نمیتوان مسئول یک پروژه توسعه سیستم هستهای دانست.
علاوه بر این، برنامههای وب، برنامههای تلفن هوشمند و برنامههای رایانه شخصی پشتههای سیستمی متفاوتی دارند. در دنیای نرمافزارهای جاسازیشده، مانند IoT، پشته سیستم بسته به دستگاهی که در آن جاسازی شده است، کاملاً تغییر میکند.
با این حال، اگر تأکید بر برنامهنویسی کاهش یابد و هزینه کلی توسعه نرمافزار کاهش یابد، توسعه سیستمهای ترکیبی که نرمافزار را با پشتههای سیستمی مختلف ترکیب میکنند، باید افزایش یابد.
در حالی که این امر مستلزم گردآوری چندین مهندس فولاستک جداگانه برای توسعه خواهد بود، مهندسانی که بتوانند تصویر کلی را نظارت کرده و طراحی پایه را انجام دهند، موقعیت بسیار مهمی خواهند داشت.
این بدان معناست که مهندسان با دانش و مهارتهای همهجانبه در سراسر پشتههای سیستمی متعدد، که از مرزهای پشتههای سیستمی منفرد فراتر میروند، مورد تقاضا خواهند بود.
چنین مهندسانی به احتمال زیاد «مهندسان همهجانبه» نامیده خواهند شد.
و همانطور که تقاضا برای مهندسانی که فقط میتوانند برنامهنویسی کنند به دلیل هوش مصنوعی مولد کاهش مییابد، سرانجام عصری فرا خواهد رسید که تقاضا برای مهندسان فولاستک محدود به یک پشته سیستمی نیز کاهش مییابد.
اگر میخواهید در آن عصر به عنوان یک مهندس فناوری اطلاعات فعال بمانید، باید همین الان برای تبدیل شدن به یک مهندس همهجانبه تلاش کنید.
نقش مهندس همهجانبه
زبانهای برنامهنویسی، پلتفرمها و چارچوبهایی که قرار است توسعه یابند، متنوع هستند.
اما این بدان معنا نیست که فرد باید همه آنها را یاد بگیرد. این به این دلیل است که مهندس همهجانبه نیز میتواند از هوش مصنوعی مولد کمک بگیرد.
اگر کار به هوش مصنوعی مولد سپرده شود، حتی زبانهای برنامهنویسی، پلتفرمها یا چارچوبهایی که فرد هرگز شخصاً از آنها استفاده نکرده است، میتوانند صرفاً با ارائه دستورالعملهای شفاهی تولید شوند.
البته، خطر معرفی باگها یا حفرههای امنیتی، یا انباشت بدهی فنی که میتواند تغییرات آینده را دشوار کند، وجود دارد.
برای شناسایی و کاهش این خطرات، دانش زبان یا کتابخانه خاص ضروری است. با این حال، آن دانش را نیز میتوان از هوش مصنوعی مولد به دست آورد. مهندس همهجانبه تنها باید بتواند رویهها و مکانیزمهای تشخیص و پیشگیری از این مسائل، یا رسیدگی به آنها پس از وقوع را به طور کامل طراحی کند.
این رویهها و مکانیزمها با تفاوت در پشته سیستم به طور قابل توجهی تغییر نمیکنند. اگر بتوان رویهها و مکانیزمهای سرکوب معرفی باگها و حفرههای امنیتی، و اطمینان از قابلیت گسترش آینده در طول توسعه را رسمی کرد، آنگاه بقیه را میتوان به هوش مصنوعی مولد یا مهندسان ماهر در آن زمینههای خاص سپرد.
مهندس همهجانبه نیازی به داشتن دانش دقیق یا تجربه طولانیمدت در هر پشته سیستم به صورت جداگانه ندارد.
علاوه بر این، یکی از نقشهای اصلی یک مهندس همهجانبه، طراحی نحوه توزیع توابع و نحوه تعامل آنها در نرمافزارهای پیچیدهای است که به صورت مشترک در چندین پشته سیستم متفاوت عمل میکنند.
همچنین، بررسی اینکه کل نرمافزار چگونه باید توسعه و مدیریت شود، نیز به یک نقش مهم برای مهندس همهجانبه تبدیل میشود.
نرمافزار همهجانبه
بیایید بررسی کنیم که چه نوع توسعه نرمافزاری نیاز به یک مهندس همهجانبه دارد.
پیش از این، من مثال توسعه یک برنامه وب تجارت الکترونیک را مطرح کردم.
تحت هدایت یک مدیر اجرایی که از سوی مدیریت ارشد شرکت مأمور شده است تا این برنامه وب تجارت الکترونیک را بازسازی کند، تیم برنامهریزی ممکن است الزامات زیر را مطرح کند:
تبدیل به پلتفرم جامعه کاربری. این به معنای فقط یک برنامه یا سایت مخصوص تجارت الکترونیک نیست، بلکه فراهم کردن پلتفرمی است که کاربران محصول بتوانند با یکدیگر درباره خود محصولات و نحوه استفاده از آنها تعامل داشته باشند. هدف، حفظ کاربر، اثر بازاریابی دهان به دهان، غنیسازی محتوا از طریق مشارکت کاربران، و یکپارچهسازی بازخورد توسعه محصول (هم مثبت و هم منفی) با برنامهریزی و بازاریابی محصولات جدید است.
سازگاری با همه دستگاهها (Omni-device Compatibility). این امکان دسترسی به جامعه کاربری و اطلاعات محصول را نه تنها از طریق برنامههای وب، بلکه از طریق برنامههای تلفن هوشمند، دستیارهای صوتی، دستگاههای پوشیدنی، لوازم خانگی هوشمند و سایر دستگاهها فراهم میکند.
سازگاری با همه پلتفرمها (Omni-platform Compatibility). این شامل نه تنها پلتفرم جامعه کاربری خود شرکت، بلکه به عنوان مثال، لیست محصولات و به اشتراکگذاری نظرات در سایتهای عمومی تجارت الکترونیک، یکپارچهسازی با رسانههای اجتماعی، و ارتباط عملکردی و اطلاعاتی با ابزارهای مختلف هوش مصنوعی میشود.
بازسازی سیستمهای تجاری. در حالی که به طور موقت با سیستمهای مدیریت فروش و تحویل محصول موجود پیوند برقرار میشود، این سیستمها نیز بازسازی خواهند شد. پس از بازسازی، جمعآوری دادههای فروش به صورت لحظهای، پیشبینی تقاضا و یکپارچهسازی با سیستمهای مدیریت موجودی پیشبینی شده است. علاوه بر این، با پیشرفت تدریجی یکپارچهسازی با سیستمهای موجودی توزیعشده منطقهای و خدمات حمل و نقل محصول ارائه شده توسط شرکتهای تحویل، سیستمهای اطلاعاتی نیز باید به تدریج بر این اساس یکپارچه شوند.
سازگاری با لیکوئیدور (Liquidware Compatibility). البته، تمام رابطهای کاربری با لیکوئیدور سازگار خواهند بود. علاوه بر این، تمام رابطهای کاربری داخلی، مانند آنهایی که برای جمعآوری اطلاعات و بازخورد برای توسعه و برنامهریزی محصول، بخشهای عملیات سیستم و گزارشهای مدیریتی استفاده میشوند، نیز به لیکوئیدور تبدیل خواهند شد.
اگر طرح توسعه چنین نرمافزار پیچیدهای ارائه شود، یک تیم توسعه نرمافزار سنتی احتمالاً بلافاصله آن را قبول نمیکند. یا در طی فرآیند اصلاح مشخصات سیستم، منطقاً نیاز به هزینهها و زمان توسعه بسیار زیاد را نشان میدهند و برای کاهش قابل توجه مشخصات فشار میآورند.
اما، اگر هوش مصنوعی مولد بتواند بیشتر برنامهنویسی را خودکار کند، و بیش از نیمی از پشتههای سیستمی ارائهشده برای یکی از اعضای تیم آشنا باشد، و تیم تجربه قبلی موفقی در معرفی پشتههای سیستمی جدید، پلتفرمها و چارچوبها از ابتدا با کمک هوش مصنوعی مولد داشته باشد، چه؟ و اگر شما، به عنوان یک مهندس همهجانبه، قبلاً این مسیر را آغاز کردهاید و قصد ادامه آن را دارید، چه؟
از این منظر، باید پروژه بسیار جذابی به نظر برسد. شما با یک تیم برنامهریزی کار خواهید کرد که تحت هدایت رهبری برنامهریزی، پیشنهادات جاهطلبانه ارائه میدهد، و یک تیم توسعه با پتانسیل رشد به یک تیم توسعه نرمافزار همهجانبه.
همچنین اطمینان خاطر از سیستمهای موجود وجود دارد. این همچنین پروژهای است که امکان فرآیندهای توسعه چابک را فراهم میکند، جایی که ویژگیهای پر تأثیر را میتوان به سرعت ساخت، و سیستم میتواند به تدریج با بازخورد کاربران اولیه رشد کند.
با در نظر گرفتن این موارد، توسعه این نرمافزار همهجانبه باید پروژهای جذاب به نظر برسد.
در پایان
به لطف برنامهنویسی خودکار توسط هوش مصنوعی مولد، توسعه نرمافزارهای لیکوئیدور و همهجانبه در حال حاضر به واقعیتهای موجود تبدیل شدهاند.
در چنین وضعیتی، مهندسان فناوری اطلاعات به طور فزایندهای نیاز دارند که فراتر از مهندسی فولاستک حرکت کرده و به مهندسان همهجانبه تبدیل شوند.
علاوه بر این، فراتر از آن، دامنه فعالیت آنها به مهندسی کسبوکار همهجانبه گسترش خواهد یافت، که به طور جامع فعالیتهای سازمانی را با اتصال مشتریان، کارمندان داخلی و هوش مصنوعی فراتر از محدوده سیستمهای فناوری اطلاعات، مهندسی میکند، و همچنین به مهندسی جامعه همهجانبه.
و حتی فراتر از آن، من معتقدم که حوزهای به نام مهندسی اجتماعی همهجانبه پدیدار خواهد شد که هدف آن بهبود جامع جامعه است.