وایب کدینگ مشکل نیست؛ عدم درک استک (Stack) مشکل است.
یک بار یک ابزار هوش مصنوعی این فایل تنظیمات را به من داد:
DATABASE_URL = "postgresql://admin:SuperSecret123@db.internal:5432/app"
API_KEY = "sk-live-4f9a..."
کار میکند. تله همینجاست. دمو اجرا میشود و بازبین (reviewer) سر تکان میدهد. اما آن رمز عبور (secret) حالا برای همیشه در تاریخچه git شما باقی میماند. هر کسی که وارد مخزن (repo) شما شود، میتواند آن را ببیند.
من توسعهدهنده نیستم. بیست سال را در مهندسی سیستمها گذراندهام. من زیربنایی را میسازم که اپلیکیشنها روی آن اجرا میشوند. من میزبانها (hosts)، شبکه و پایگاههای داده را میسازم.
وقتی از ابزارهای هوش مصنوعی استفاده میکنم، مثل دیگران شکست نمیخورم. دلیلش این است:
آندری کارپاتی درباره «وایب کدینگ» (vibe coding) برای پروژههای گذرا صحبت کرد. برخی افراد این موضوع را بیش از حد پیش بردند. آنها دیگر به کد نگاه نکردند. حالا، دیگر به سیستم هم نگاه نمیکنند. شما میتوانید کد را نادیده بگیرید، اما نمیتوانید سیستم را نادیده بگیرید. سیستم همان چیزی است که در واقعیت اجرا میشود.
من اغلب پیشنهادات هوش مصنوعی را نادیده میگیرم (override میکنم) چون مدل فاقد بافت عملیاتی (operational context) است:
- سیستمعاملها: یک هوش مصنوعی ممکن است برای یک اپلیکیشن امنیتی، ویندوز پیشنهاد دهد. این مدل هزینه لایسنسها را نادیده میگیرد. یک سیستم رایگان اوبونتو (Ubuntu) همان کار را با هزینه کمتر انجام میدهد.
- پایگاههای داده: یک هوش مصنوعی ممکن است MySQL را انتخاب کند. اما نمیداند که من یک سال دیگر، ساعت ۲ صبح، قادر به مدیریت کدام موتور (engine) خواهم بود.
- امنیت: هوش مصنوعی در مرحله «ورود کار میکند» متوقف میشود. امنیت واقعی مستلزم دسترسی مشروط (conditional access) و دستگاههای مورد اعتماد است. شما این موارد را از طریق «وایب» (vibes) پیدا نمیکنید.
- شبکه: هوش مصنوعی اغلب پیشنهاد میدهد که پورتها را به روی کل اینترنت باز کنید. من دسترسی را به شبکههای مدیریتی خاص محدود میکنم.
هوش مصنوعی با شبکه طوری برخورد میکند که انگار مشکل شخص دیگری است. اما اینطور نیست.
راه حل برای رمزهای عبور هاردکد شده (hardcoded secrets) ساده است. از متغیرهای محیطی (environment variables) استفاده کنید:
import os
DATABASE_URL = os.environ["DATABASE_URL"]
اگر جلوی آن را نگیرید، مدل رمزها را مستقیماً درون فایلهای شما قرار میدهد.
وایب کدرها شکست میخورند چون فکر میکنند کد اپلیکیشن، کل سیستم است. اینطور نیست. اپلیکیشن فقط یک طبقه از یک ساختمان است. اگر فونداسیون (پی) را نریخته باشید، ساختمان فرو میریزد.
وقتی از هوش مصنوعی استفاده میکنم، با عبارت «برای من X را بساز» شروع نمیکنم. این کار باعث ایجاد دموهایی میشود که در محیط عملیاتی (production) از کار میافتند. من ابتدا سی دقیقه را صرف صحبت درباره محدودیتها و موازنه (tradeoffs) میکنم. من مدل را وادار میکنم تا بر اساس آن منطق، یک مشخصات فنی (spec) بنویسد. این کار از ساعتها پاکسازی در آینده جلوگیری میکند.
مشکل از ابزار نیست. مشکل این است که تغییراتی ایجاد میکنید بدون اینکه ببینید آنها چه چیزهایی را تحت تأثیر قرار میدهند. اگر زیربنا را درک کنید، دنبال کردن «وایبها» بیخطر است.
مرز تمایز این نیست که چقدر کد مینویسید. بلکه این است که آیا آنچه کدتان بر آن بنا شده را درک میکنید یا خیر.
آن اصلاح دستی (override) که مدام انجام میدهید چون مدل هر بار اشتباه میکند، چیست؟
منبع: https://dev.to/kkierii/vibe-coding-isnt-the-problem-not-understanding-the-stack-is-4kif
انجمن یادگیری اختیاری: https://t.me/GyaanSetuAi