از عادات تا ابزار – اوریلی

این مقاله بخشی از مجموعهای از چارچوب Sens-AI است – عادات عملی برای یادگیری و کدنویسی با هوش مصنوعی.
برنامه نویسی به کمک هوش مصنوعی اینجاست. من دیدهام که بسیاری از شرکتها اکنون از همه توسعهدهندگان میخواهند که افزونههای Copilot را در IDEهای خود نصب کنند، و تیمها به طور فزایندهای با معیارهای پذیرش هوش مصنوعی اندازهگیری میشوند. در همین حال، خود ابزارها برای کارهای روتین بسیار مفید هستند: توسعه دهندگان به طور مرتب از آنها برای تولید الگوها، تبدیل بین فرمت ها، نوشتن تست های واحد و کاوش در API های ناآشنا استفاده می کنند – به ما زمان بیشتری برای تمرکز روی حل مشکلات واقعی خود به جای مبارزه با نحو یا پایین آمدن حفره های خرگوش می دهد.
بسیاری از رهبران تیم، مدیران و مربیانی که میخواهند به توسعهدهندگان در تسلط بر ابزارهای هوش مصنوعی کمک کنند، تصور میکنند که بزرگترین چالش یادگیری نوشتن اعلانهای بهتر یا انتخاب ابزار مناسب هوش مصنوعی است. این فرض اصل مطلب را از دست می دهد. چالش واقعی این است که بفهمیم توسعهدهندگان چگونه میتوانند از این ابزارها به گونهای استفاده کنند که آنها را درگیر کند و مهارتهایشان را تقویت کند، نه اینکه از کد جدا شوند و مهارتهای توسعهشان را از بین ببرند.
این چالشی بود که من هنگام توسعه چارچوب Sens-AI انجام دادم. وقتی آپدیت کردم سر سی شارپ اول (O’Reilly 2024) برای کمک به خوانندگان در توسعه مهارتهای هوش مصنوعی در کنار سایر مهارتهای توسعه اصلی، یادگیرندگان جدید را دیدم که نه با مکانیک اشاره، بلکه با حفظ درک خود از کدی که ایجاد میکنند مبارزه میکنند. چارچوب از این مشاهدات پدید آمد – پنج عادتی که توسعه دهندگان را در گفتگوی طراحی درگیر می کند: زمینه، کاوش، کادربندی، اصلاح و تفکر انتقادی. این عادتها مشکل واقعی را حل میکنند: اطمینان از اینکه توسعهدهنده کنترل کار را با درک نه تنها آنچه که کد انجام میدهد، بلکه همچنین چرایی ساختار آن به شکلی که هست حفظ میکند.
آنچه تا کنون آموخته ایم
وقتی آپدیت کردم سر سی شارپ اول برای گنجاندن تمرینهای هوش مصنوعی، باید آنها را طراحی میکردم که میدانستم یادگیرندگان دستورالعملها را مستقیماً در ابزارهای هوش مصنوعی قرار میدهند. این من را مجبور کرد که عمدی باشم: دستورالعمل ها باید زبان آموز را راهنمایی می کردند و در عین حال نحوه واکنش هوش مصنوعی را نیز شکل می دادند. آزمایش همین تمرینها در برابر Copilot و ChatGPT مشکلات مشابهی را بارها و بارها نشان میدهد – هوش مصنوعی شکافها را با فرضیات اشتباه پر میکند یا کدی را ایجاد میکند که خوب به نظر میرسد تا زمانی که مجبور شوید آن را اجرا کنید، بخوانید و بفهمید، یا تغییر دهید و گسترش دهید.
این فقط نوآموزان نیستند که با این مشکلات دچار مشکل می شوند. توسعه دهندگان با تجربه تر نیز می توانند به آنها علاقه داشته باشند. تفاوت این است که توسعهدهندگان با تجربه قبلاً عادتهایی برای استفاده دارند، در حالی که توسعهدهندگان جدیدتر معمولاً چنین عادتهایی ندارند-مگر اینکه ما به آنها آموزش دهیم. مهارتهای هوش مصنوعی نیز منحصر به توسعهدهندگان ارشد یا با تجربه نیست. من توسعه دهندگان نسبتاً جدیدی را دیده ام که مهارت های هوش مصنوعی خود را به سرعت توسعه می دهند زیرا آنها این عادات را به سرعت ایجاد کردند.
عادات در طول چرخه زندگی
در The Sens-AI Framework، من این پنج عادت را معرفی کردم و توضیح دادم که چگونه با هم کار می کنند تا توسعه دهندگان را با کد خود درگیر نگه دارند، نه اینکه مصرف کنندگان منفعل خروجی هوش مصنوعی شوند. این عادتها همچنین به حالتهای شکست خاص میپردازند، و درک اینکه چگونه مشکلات دنیای واقعی را حل میکنند، راه را برای اجرای گستردهتر در تیمها و ابزارها نشان میدهد:
زمینه کمک می کند تا از پیام های نامشخصی که منجر به نتیجه بد می شود جلوگیری شود. از هوش مصنوعی بخواهید بدون به اشتراک گذاشتن کارهایی که کد انجام می دهد، “این کد را بهتر کند” و ممکن است پیشنهاد دهد نظرات را به بخش مهم عملکرد اضافه کنید که در آن نظرات به سادگی درهم ریخته می شوند. اما زمینه را فراهم کنید – “این یک سیستم معاملاتی با فرکانس بالا است که در آن میکروثانیه ها اهمیت دارند”، همراه با ساختار کد واقعی، وابستگی ها و محدودیت ها – و هوش مصنوعی درک می کند که باید روی بهینه سازی ها تمرکز کند، نه مستندسازی.
تحقیق کنید اطمینان حاصل کنید که هوش مصنوعی تنها منبع حقیقت شما نیست. هنگامی که شما صرفاً به هوش مصنوعی متکی هستید، خطر اشتباهات ترکیبی را تهدید می کنید – هوش مصنوعی حدس می زند، شما بر روی آن کار می کنید و به زودی در راه حلی قرار می گیرید که با واقعیت مطابقت ندارد. بررسی متقاطع با اسناد یا حتی درخواست از یک هوش مصنوعی متفاوت می تواند نشان دهد که چه زمانی گمراه می شوید.
قاب بندی در مورد پرسیدن سوالاتی است که پاسخ های مفیدی به همراه دارد. “چگونه خطاها را مدیریت کنم؟” به شما بلوکی می دهد تا امتحان کنید و عکس بگیرید. “چگونه در یک سیستم توزیع شده که خطاهای جزئی نیاز به بازگشت دارند، خطاهای وقفه زمانی شبکه را مدیریت کنیم؟” کلیدهای مدار و مدل های جبرانی را در اختیار شما قرار می دهد. همانطور که در Understanding the Rehash Loop نشان دادم، کادربندی مناسب می تواند هوش مصنوعی را از گزاره های دایره ای خارج کند.
پالایش یعنی به اولین چیزی که هوش مصنوعی به شما می دهد رضایت ندهید. اولین پاسخ به ندرت بهترین است – این فقط تجربه اولیه هوش مصنوعی است. وقتی تکرار میکنید، به دنبال مدلهای بهتر هستید. پالایش شما را از «این کار میکند» به «این واقعاً خوب است» منتقل میکند.
تفکر انتقادی با پرسیدن اینکه آیا کد واقعاً برای پروژه شما کار می کند، همه چیز را به هم پیوند می دهد. مفروضات هوش مصنوعی را اشکال زدایی می کند، قابلیت نگهداری را بررسی می کند و می پرسد: “آیا این شش ماه بعد منطقی خواهد بود؟”
قدرت واقعی چارچوب Sens-AI ناشی از استفاده از هر پنج عادت با هم است. آنها یک زنجیره تقویت کننده را تشکیل می دهند: زمینه تحقیق را آگاه می کند، تحقیق چارچوب بندی را بهبود می بخشد، چارچوب بندی اصلاح را هدایت می کند، پالایش نشان می دهد که چه چیزی به تفکر انتقادی نیاز دارد، و تفکر انتقادی به شما نشان می دهد که چه زمینه ای را از دست داده اید. وقتی توسعه دهندگان از این عادت ها به صورت ترکیبی استفاده می کنند، به جای تبدیل شدن به مصرف کنندگان منفعل خروجی هوش مصنوعی، درگیر فرآیند طراحی و مهندسی می شوند. این تفاوت بین استفاده از هوش مصنوعی به عنوان یک عصا و استفاده از آن به عنوان یک همکار واقعی است.
از اینجا کجا برویم؟
اگر توسعهدهندگان میخواهند با هوش مصنوعی موفق شوند، این عادتها باید خارج از جریانهای کاری فردی ظاهر شوند. آنها باید بخشی از:
آموزش و پرورش: آموزش سواد هوش مصنوعی همراه با مهارت های اولیه کدنویسی. همانطور که در The AI Teaching Toolkit توضیح دادم، تکنیکهایی مانند حذف خروجی هوش مصنوعی عمداً معیوب به زبانآموز به آنها کمک میکند متوجه اشتباه بودن هوش مصنوعی شوند و از حلقهها خارج شوند. اینها مهارت های پیشرفته ای نیستند. آنها اساسی هستند.
تمرین تیمی: با استفاده از بررسی کد، جفتسازی و بررسی گذشته نگر برای ارزیابی خروجی هوش مصنوعی به همان روشی که کد نوشته شده توسط انسان را ارزیابی میکنیم. در آموزش خود تکنیک هایی مانند باستان شناسی هوش مصنوعی و مدل های زبان مشترک را شرح دادم. آنچه در اینجا مهم است این است که این نوع عادات را بخشی از آموزش استاندارد قرار دهیم – به طوری که تیم ها واژگانی مانند “من در یک حلقه تکرار گیر کرده ام” یا “هوش مصنوعی از مدل قدیمی پیروی می کند” توسعه دهند. و همانطور که در Trust But Verify بررسی کردم، برخورد با کدهای تولید شده توسط هوش مصنوعی با همان دقت کد انسانی برای حفظ کیفیت ضروری است.
تجهیزات ابزار: IDE ها و لینترهایی که فقط کد تولید نمی کنند، بلکه مفروضات طراحی و مصالحه را در سطح برجسته می کنند. هشدار IDE خود را تصور کنید: “حلقه پردازش مجدد احتمالی شناسایی شد: شما به مدت ۱۵ دقیقه همان روش را تکرار کرده اید.” این یکی از جهتهایی است که IDEها باید تکامل یابند – حدسها را کنار میگذارند و وقتی گیر میکنند به شما هشدار میدهند. خطرات بدهی فنی که در ساخت بدهی فنی مقاوم در برابر هوش مصنوعی بیان کردم، میتواند با ابزارهای بهتری که زودتر الگوهای ضدالگو را تشخیص میدهند، کاهش یابد.
فرهنگ: درک مشترک که هوش مصنوعی نیز یک همکاری است (نه یک هم تیمی). معیار موفقیت کد یک تیم نباید حول محور هوش مصنوعی باشد. تیم ها هنوز باید این کد را درک کنند، آن را قابل نگهداری نگه دارند و مهارت های خود را در طول مسیر توسعه دهند. رسیدن به آنجا مستلزم تغییراتی در نحوه کار آنها با یکدیگر است – به عنوان مثال، افزودن بررسیهای مخصوص هوش مصنوعی به مرور کد یا ایجاد واژگان مشترک زمانی که خروجی هوش مصنوعی شروع به واگرایی میکند. این تغییر فرهنگی با موازیهای مهندسی نیازمندیهایی که در Agile Engineering بررسی کردم، مهندسی نیازمندیها است – ما به همان وضوح و درک مشترک با هوش مصنوعی نیاز داریم که همیشه در مورد تیمهای انسانی به آن نیاز داشتیم.
یک نتیجه قطعی تر نیاز به ارزیابی پیچیده تری دارد. مدلها سریعتر و توانمندتر خواهند شد. چیزی که تغییر نخواهد کرد، نیاز توسعه دهندگان به تفکر انتقادی در مورد کدهای پیش رو است.
عادات Sens-AI در کنار ابزارهای امروزی کار می کنند و به گونه ای طراحی شده اند که با ابزارهای فردا مرتبط باقی بمانند. اینها شیوههایی هستند که توسعهدهندگان را تحت کنترل نگه میدارند، حتی با بهبود مدلها و شک کردن در نتیجه سختتر میشود. این چارچوب راهی را به تیم ها می دهد تا در مورد موفقیت ها و شکست هایی که هنگام استفاده از هوش مصنوعی می بینند صحبت کنند. از آنجا، این به مربیان، سازندگان ابزار و رهبران تیم بستگی دارد که تصمیم بگیرند چگونه این درس ها را عملی کنند.
نسل بعدی توسعه دهندگان هرگز برنامه نویسی را بدون هوش مصنوعی نمی دانند. وظیفه ما این است که مطمئن شویم آنها در کنار این ابزارها عادات مهندسی پایدار ایجاد می کنند – بنابراین هوش مصنوعی به جای اینکه آن ها را فرسایش دهد، مهارت آنها را تقویت می کند.
