«صبر کنید! آیا من یک کدنویس حسی هستم؟»
این واکنش من به پست وایرال آندری کارپاتی بود که در آن گردش کار جدید «کدنویسی حسی» خود را توصیف کرده بود. در 2 فوریه، کارپاتی - دانشمند کامپیوتر و عضو بنیانگذار OpenAI - آن را به عنوان سبکی از برنامهنویسی تعریف کرد که در آن مهندسان نرمافزار «به حس و حال خود اعتماد میکنند، از تصاعدها استقبال میکنند و فراموش میکنند که اصلاً کدی وجود دارد.»
من منظور او را فهمیدم، زیرا قبلاً آن را تمرین کرده بودم. در پاییز 2024، تصمیم گرفتم شخصاً ببینم که مدلهای زبانی بزرگ چه کاری میتوانند انجام دهند و از آنها برای بازسازی وبسایت شخصیام استفاده کردم. از آن زمان، از هوش مصنوعی برای کدنویسی چندین پروژه شخصی استفاده کردهام، از جمله یک رابط کاربری گرافیکی (GUI) برای تبدیل گفتار به متن با هوش مصنوعی در لپتاپ ویندوز خود و یک برنامه جاوااسکریپت برای ردیابی ابتکار عمل در بازیهای رومیزی.
اگرچه در گذشته دور با HTML و پایتون کار کردهام، اما دانش من از برنامهنویسی محدود است و نمیتوانم به تفصیل توضیح دهم که کد تولید شده توسط هوش مصنوعی در این برنامهها چگونه کار میکند. اما آنها کار میکنند و سهولتی که با آن آنها را ایجاد کردم، پیامدهایی برای مهندسی نرمافزار دارد.
کدنویسی حسی چیست؟
Prasad Naik، یک مهندس مکانیک حرفهای دارای مجوز، این حس و حال را درک میکند.
Naik در Gripple کار میکند، شرکتی که سیستمهای اتصال و کشش سیم را میسازد که برای ایمنسازی انواع زیرساختها، مانند لولهکشی و خطوط گاز در ساختمانهای تجاری، استفاده میشود. Naik یک مهندس نرمافزار نیست، اما اخیراً دو ابزار نرمافزاری برای استفاده داخلی توسعه داده است. آنها به تیمهایی خارج از مهندسی، مانند تیم فروش، کمک میکنند تا درک کنند که کدام محصول برای یک مورد استفاده مناسب است.
او کار خود را با بازبینی یک برنامه iPad که بیش از یک دهه پیش برای این شرکت توسعه داده بود، آغاز کرد. او آن را به زبان C برای استفاده در iPad برنامهنویسی کرد، اما Naik میخواست آن را به یک برنامه وب مدرن جاوااسکریپت تبدیل کند. این یک پروژه دلهرهآور بود، زیرا او قبلاً هرگز با جاوااسکریپت کار نکرده بود.
Naik میگوید: «به یاد دارم که [برنامه اصلی] تقریباً یک ماه از من وقت گرفت، زیرا مجبور بودم چیزهای زیادی را که نمیفهمیدم مطالعه کنم. با کمال تعجب، من توانستم [آن را به جاوااسکریپت تبدیل کنم] فقط در دو ساعت، با استفاده از دستورالعملهای گام به گام از ChatGPT.» Naik دقیقاً از کد تولید شده استفاده نکرد، اما تخمین میزند که بیش از 90 درصد کدی که استفاده کرد توسط ChatGPT تولید شده بود.
پس از آن موفقیت، Naik یک برنامه پیچیدهتر ساخت که به یک سرور متصل میشود. این برنامه به یک پایگاه داده از صفحات گسترده حاوی اطلاعاتی درباره محصولات سختافزاری، مانند براکتها و سیستمهای پشتیبانی که برای آویزان کردن لولهها از سقف در ساختمانها استفاده میشود، دسترسی پیدا میکند. کل توسعه، از جمله استقرار، حدود یک هفته و نیم طول کشید، اما Naik شک دارد که میتوانست بدون ابزارهای هوش مصنوعی آن را انجام دهد.
Naik میگوید: «این شگفتانگیز بود. من هرگز در تصورات وحشیانهام فکر نمیکردم که در نهایت یک برنامه به این پیچیدگی را توسعه دهم.»
کدنویسی حسی برای اثبات مفهوم
Jason Touleyrou، سرپرست مهندسی داده که در حال حاضر در Corewell Health کار میکند، از کدنویسی با کمک هوش مصنوعی برای آزمایش سریع ایدههای جدید استفاده میکند. او میگوید: «سرعت در ایدهپردازی حیاتی است. اگر ایدهای داشته باشم و تیمم موافق نباشد، آیا میتوانم یک پروژه بیکیفیت را جمعآوری کنم که شایستگی آن را بدون اتلاف وقت کسی ثابت کند؟»
Touleyrou از هوش مصنوعی برای ساخت ابزارها و زبانهای برنامهنویسی استفاده کرده است که تجربه کمی در استفاده از آنها دارد یا اصلاً تجربهای ندارد. این به نوبه خود به او کمک کرده است تا ایدههایی را آزمایش کند که قبلاً زمان زیادی برای بررسی آنها لازم بود.
به عنوان مثال، او به ابزار ردیابی قهوه که برای وبسایت شخصی خود ساخته بود، اشاره کرد. این ابزار از چندین سرویس Google Cloud، مانند BigQuery و Pub/Sub استفاده میکند که او هرگز در شغل حرفهای خود به آنها دست نزده بود.
Touleyrou میگوید، نکته کلیدی در کدنویسی حسی، گردش کار است. او معتقد است که پروژهها باید با یک ایده کاملاً تعریف شده شروع شوند و سپس از یک ابزار هوش مصنوعی بخواهند که کد تولید کند. پس از تولید کد، هوش مصنوعی میتواند به یک نقش مشاورهای برای کمک به رفع اشکالات تبدیل شود. توسعهدهندگان همچنین باید به استفاده از ابزارهایی که کیفیت کد را تضمین میکنند، مانند ابزارهای linting که میتوانند اشکالات آشکار را شناسایی کنند، ادامه دهند.
Touleyrou میگوید: «این جایگزینی برای دانستن اصول اولیه نیست. اما من نمیتوانم به عقب نگاه کنم و بدانم که میتوانم اثبات مفهوم اولیه خود را در 30 دقیقه بسازم و سپس چهار تکرار اضافی در چهار ساعت داشته باشم. آنها حتی ممکن است ویژگیهای جدیدی را اضافه کنند.»
محدودیتهای حس و حال
Naik و Touleyrou از هوش مصنوعی برای تکرار نرمافزار سریعتر و آسانتر از قبل استفاده کردهاند. اما آیا آنها واقعاً کدنویسی حسی میکنند؟
Taher Vohra، یک مهندس نرمافزار با 25 سال تجربه در مهندسی نرمافزار، ادعا میکند که آنها این کار را نمیکنند.
او میگوید: «من تعریف کدنویسی حسی را با تمام وجود پذیرفتم، اینکه به کد نگاه نخواهم کرد.» و برای او، پایبندی به تفسیر لفظی کدنویسی حسی به سرعت کاستیهای این ایده را نشان داد. «هرچه عمیقتر شدم، متوجه شدم که مشخص کردن آنچه از هوش مصنوعی میخواهم سختتر از انجام آن توسط خودم است.»
این بدان معنا نیست که Vohra مخالف استفاده از هوش مصنوعی برای برنامهنویسی است. برعکس، او از چندین دستیار هوش مصنوعی، مانند Cursor، برای ارائه توصیهها در حین کار استفاده میکند. با این حال، او تاکید میکند که توسعهدهندگانی که کد آماده تولید را برنامهنویسی میکنند، باید چشمان خود را به کد نگه دارند تا اطمینان حاصل کنند که درک درستی از نحوه عملکرد آن دارند و میتوانند مشکلات ظریفی را که یک دستیار هوش مصنوعی ممکن است از دست بدهد، شناسایی کنند.
در حالی که دیدگاه Vohra در مورد کدنویسی حسی انتقادیتر از دیدگاه Naik و Touleyrou است، اما آنها کاملاً مخالف نیستند. همه آنها در یک نکته خاص موافق هستند: کدنویسی حسی میتواند به مهندسان کمک کند تا مهارتهایی را در زبانهای برنامهنویسی و مجموعههای فناوری که هنوز درک نمیکنند، به دست آورند.
Vohra میگوید: «توصیه من به مهندسان جوان این است که فقط به کدنویسی حسی به عنوان بهبود سرعت برای مهارتی که قبلاً دارید فکر نکنید. به آن به عنوان یک شتابدهنده برای کسب مهارتهای جدید فکر کنید. اگر شما یک مهندس فرانتاند هستید و میخواهید یک مهندس فول استک شوید، این یک راه عالی برای تبدیل شدن به یک مهندس فول استک در چند ماه است، نه دو سال.»