برنامه نویسی

وایب کدینگ؛ مزایا و خطرها

<dfn>وایب کدینگ</dfn> یعنی نرم افزار را از روی پرامپت بسازید و کدی را که تولید می شود نخوانید؛ نتیجه را می بینید، اگر آن چیزی نبود که می خواستید دوباره می گویید، و کد خودش یک جعبه سیاه می ماند. برای نمونه اولیه و ابزار داخلی و یاد گرفتن، این معامله خوبی است؛ برای چیزی که کاربر واقعی و داده واقعی دارد، هزینه اش را جای دیگری می پردازید و معمولا دیرتر.

  • درس ۱۴ از ۱۴
  • میانی
  • رایگان، بدون ثبت نام

دو کفه ای که هر دو واقعی اند

سرعت و دسترسی

  • از ایده تا چیزی که بشود نشانش داد، در یک بعد از ظهر
  • ابزار داخلی که هیچ وقت ارزش وقت گذاشتن نداشت
  • کسی که به تیم فنی دسترسی ندارد، حالا شروع می کند
  • دیدن یک ایده، پیش از بلد بودن نوشتنش

چیزی که بازبینی نشده

  • کنترل دسترسی که نوشته نشد و خطایی هم نداد
  • کدی که وقت خراب شدن، هیچ کس نمی داند کجاست
  • قطعه ای که مجوز کد عمومی را با خودش آورده باشد
  • مهارتی که چون گیر کردن حذف شد، ساخته نشد

کفه ها عمدا برابرند: کدام سنگین تر است به این بستگی دارد که این کد قرار است چه چیزی را نگه دارد، و هیچ کس نمی تواند آن را به جای شما تعیین کند.

آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.

وایب کدینگ دقیقا یعنی چه، و با کدنویسی با کمک هوش مصنوعی چه فرقی دارد؟

این اصطلاح در سال ۲۰۲۵ رایج شد و مثل هر اصطلاح تازه ای، هر کسی معنی خودش را از آن دارد. تعریفی که ما به کار می بریم همان تعریفی است که نظرسنجی توسعه دهندگان استک اورفلو در پرسشنامه اش استفاده کرد و به ویکی پدیا ارجاع داد: تولید نرم افزار از روی پرامپت های مدل زبانی.

ولی جمله ای که این را از استفاده معمولی جدا می کند، در تعریف نیست؛ در رفتار است. مرز واقعی این است: آیا کد تولیدشده را می خوانید و می فهمید یا نه. کسی که کد را می خواند، نقدش می کند و تستش را می نویسد، دارد با هوش مصنوعی کد می نویسد و درسش کدنویسی با هوش مصنوعی است. کسی که فقط نتیجه اجرا را نگاه می کند و بر اساس آن پرامپت بعدی را می نویسد، وایب کد می کند.

پس این یک طیف است و نه دو اردوگاه. یک آدم می تواند بامداد یک نمونه اولیه را وایب کد کند و بعد از ظهر همان کد را خط به خط بازنویسی کند، و هر دو کار درست باشند. چیزی که غلط است، ندانستن اینکه در کدام حالت هستید.

و یک چیز که در بحث ها گم می شود: وایب کدینگ اختراع تازه ای در روش کار نیست. کپی کردن کد از یک انجمن اینترنتی بدون خواندنش دقیقا همین بود و بیست سال سابقه دارد. چیزی که عوض شده مقیاس است. آن موقع بیست خط کپی می کردید و حالا دو هزار خط می گیرید، و همان دو هزار خط را کسی نمی خواند.

چقدر از توسعه دهنده ها واقعا این کار را می کنند؟

اینترنت فارسی و انگلیسی هر دو پر است از این ادعا که وایب کدینگ روش کار جدید صنعت است. عدد چیز دیگری می گوید.

نظرسنجی توسعه دهندگان استک اورفلو در سال ۲۰۲۵ صریحا پرسید که آیا وایب کدینگ بخشی از کار حرفه ای شماست، با همان تعریف بالا. از ۲۶۵۶۴ نفری که جواب دادند، ۷۲.۲ درصد گفتند نه، و ۵.۴ درصد دیگر گفتند قاطعانه نه. در طرف مثبت، ۱۱.۹ درصد گفتند بله، ۲.۸ درصد گفتند تا حدی، و ۰.۴ درصد گفتند قاطعانه بله. ۲.۱ درصد گفتند امتحانش کرده اند و ۱.۲ درصد مطمئن نبودند.

دو نتیجه از این عدد می گیریم و هر دو مهم اند. اول اینکه در همان جمعیتی که ۸۴ درصدش از ابزارهای هوش مصنوعی استفاده می کند، حدود پانزده درصد آن را در کار حرفه ای خود وایب کدینگ می دانند. یعنی استفاده گسترده از هوش مصنوعی با وایب کدینگ یکی نیست و کسانی که این دو را یکی می گیرند، چه در تعریف و چه در نقد، درباره دو چیز متفاوت حرف می زنند.

دوم اینکه این عدد را نباید بیش از آنچه هست خواند. اینها گفته خود آدم ها است و نه اندازه گیری رفتارشان؛ نمونه هم خودانتخابی است. و مهم تر: پرسش درباره کار حرفه ای بود. کسی که آخر هفته با پرامپت یک اپ کوچک می سازد، احتمالا در همین نظرسنجی هم «نه» زده است، و این جمعیت اتفاقا در حال بزرگ شدن است.

کجا واقعا می ارزد؟

نقد کردن این روش آسان است و بیشتر نوشته ها همان کار را می کنند. ولی سه جا هست که وایب کدینگ نه فقط قابل قبول، بلکه انتخاب درست است.

نمونه اولیه ای که قرار است دور ریخته شود. وقتی می خواهید بفهمید یک ایده اصلا ارزش دارد یا نه، تنها چیزی که اهمیت دارد سرعت رسیدن به جوابی است که بشود لمسش کرد. کیفیت کدی که فردا حذف می شود، هزینه ای است که دلیلی ندارد بپردازید. شرط واقعی این کار هم یک تصمیم است، نه یک تکنیک: از همان اول تصمیم بگیرید این کد دور ریخته می شود، و به آن تصمیم پایبند بمانید. نمونه اولیه ای که به تولید می رود، بدترین کد پروژه است و همه اش را همه ما دیده ایم.

ابزار داخلی برای خودتان. اسکریپتی که یک بار در ماه اجرا می شود و فقط شما اجرایش می کنید. اسکریپتی که ده هزار فایل را اسم عوض می کند. یک صفحه کوچک برای دیدن یک عدد. اینها کاربر ندارند، مهاجم ندارند، و اگر خراب شوند فقط وقت خودتان تلف می شود. اینجا بحث کیفیت کد، نگرانی بی جاست.

یاد گرفتن، به شرطی. دیدن اینکه یک ایده چطور کار می کند، پیش از اینکه بلد باشید بنویسیدش، انگیزه می سازد و انگیزه در یادگیری کم نیست. شرطش این است که بعدش برگردید و همان چیز را خودتان بنویسید. اگر آن قدم دوم نباشد، وایب کدینگ برای یادگیری همان کاری را می کند که تماشای فیلم آموزش شنا برای شنا کردن.

و یک مزیت که مخصوص ایران است و کم گفته می شود: دسترسی. کسی که در یک شهر کوچک نشسته و هیچ راهی به یک تیم فنی ندارد، حالا می تواند ایده اش را تا جایی برساند که بشود نشانش داد. این چیز کوچکی نیست و هیچ نقدی به این روش نباید آن را نادیده بگیرد.

هزینه ها کجا ظاهر می شوند؟

هیچ کدام از هزینه های این روش در روز اول دیده نمی شوند و همین چیزی است که خطرناکش می کند. اینجا فقط از مکانیزم حرف می زنیم و نه از داستان های ترسناکی که منبع ندارند.

امنیت، و یک مثال که بیشتر آدم ها برعکس می فهمند. فرض رایج این است که خطر یعنی کلید در کد سمت کاربر. حالا صفحه راهنمای خود گوگل درباره کلیدهای فایربیس را بخوانید: آنجا نوشته کلیدهای فایربیس، برخلاف کلیدهای معمول، برای کنترل دسترسی به منابع استفاده نمی شوند و قرار دادنشان در کد یا فایل پیکربندی اشکالی ندارد؛ چیزی که واقعا از داده محافظت می کند قواعد امنیتی است. یعنی یک اپ وایب کدشده می تواند کلیدش کاملا بی خطر باشد و پایگاه داده اش برای همه باز باشد، چون قواعد نوشته نشده اند و هیچ ابزار بررسی کلید هم چیزی گزارش نمی کند. و همان صفحه، دو خط بالاتر، درباره کلید جمنای دقیقا برعکس می گوید: آن یکی هرگز نباید در کد باشد. دو کلید در یک اپ، دو قاعده متضاد، و تنها راه فهمیدنش خواندن مستندات است. مدل کدی می نویسد که کار می کند و این با امن یکی نیست.

نگهداری. کدی که نخوانده اید، وقتی خراب شود شما را در وضعیتی می گذارد که هیچ ابزاری نجاتتان نمی دهد: نمی دانید کجا را نگاه کنید، چون نمی دانید چه چیزی کجاست. راه معمول این است که همان مدل را صدا بزنید و بگویید درستش کن، و این تا وقتی جواب می دهد که مسئله کوچک باشد. وقتی برنامه به اندازه ای بزرگ شد که در یک گفتگو جا نشود، این راه هم بسته می شود.

ابهام مالکیت. این مدل ها روی کد عمومی آموزش دیده اند و می توانند قطعه ای شبیه کد موجود با مجوز محدودکننده تولید کنند. کسی که کد را نمی خواند، در عمل هیچ راهی برای تشخیص این حالت ندارد. اینکه گیتهاب گزینه ای برای مسدود کردن پیشنهادهای مطابق با کد عمومی گذاشته، نشان می دهد نگرانی از طرف خود سازنده هم جدی است.

و هزینه ای که به خودتان می خورد. در همان نظرسنجی، ۲۰ درصد پاسخ دهندگان گفته اند در توانایی حل مسئله خودشان کم اعتمادتر شده اند. مکانیزمش را در درس کدنویسی با هوش مصنوعی باز کرده ایم: یادگیری از گیر کردن می آید و ابزاری که گیر کردن را حذف می کند، همان چیزی را حذف کرده که یاد می داد.

چیزی که در روز اول دیده می شود و چیزی که نمی شود

  • ۱

    کار می کند

    صفحه بالا می آید، دکمه کار می کند، همان چیزی که خواسته بودید روی صفحه است. تنها لایه ای که در روز اول دیده می شود.

  • ۲

    حالت های مرزی

    ورودی خالی، ورودی خیلی بزرگ، دو نفر همزمان. اینها با کاربر واقعی می آیند و نه با آزمایش خودتان.

  • ۳

    کنترل دسترسی

    اینکه چه کسی حق دیدن یا عوض کردن چه چیزی را دارد. نبودنش هیچ خطایی نمی دهد و برای صاحب اپ همه چیز عادی به نظر می رسد.

  • ۴

    نگهداری

    روزی که چیزی خراب شود و شما ندانید کجا را نگاه کنید، چون هیچ وقت نمی دانستید چه چیزی کجاست.

  • ۵

    مجوز و مالکیت

    اینکه این قطعه کد از کجا آمده و با چه شرطی. کسی که کد را نخوانده، در عمل راهی برای فهمیدنش ندارد.

هیچ کدام از لایه های زیر آب خطا نمی دهند و همین سخت ترین بخش ماجراست: برنامه ای که کار می کند، شاهد این نیست که برنامه سالم است.

موضع ما: پیش نویس را وایب کد کنید، محصول را مهندسی کنید

بحث «وایب کدینگ خوب است یا بد» بحث بی حاصلی است، چون جوابش به چیزی بستگی دارد که هیچ کدام از دو طرف نمی گویند: این کد قرار است چه چیزی را نگه دارد.

قاعده عملی ما یک پرسش است و نه یک اصل: اگر این برنامه فردا کاملا اشتباه کار کند، چه چیزی از دست می رود؟ اگر جواب «هیچ چیز، دوباره اجرا می کنم» است، وایب کد کنید و وقتتان را تلف نکنید. اگر جواب شامل پول کسی، داده کسی، یا آبروی کسی است، آن کد باید خوانده شود؛ چه شما بخوانید و چه کسی که پولش را می دهید.

مرز عملی که ما نگه می داریم سه چیز است. هر جا داده کاربر هست، کد خوانده می شود، بدون استثنا. هر جا پول هست، همین طور. هر جا چیزی قرار است بیش از یک فصل عمر کند، همین طور، چون بعد از سه ماه هیچ کس یادش نمی آید در پرامپت چه گفته بود.

و در طرف مقابل، برای گرفتن پاسخ به یک ایده، برای ابزاری که فقط خودتان اجرا می کنید، و برای دیدن اینکه چیزی چه شکلی می شود، این روش سریع ترین چیزی است که در دسترس دارید و استفاده نکردن از آن هیچ فضیلتی نیست.

یک نکته آخر برای کسی که کارش را به فریلنسر یا آژانس می سپارد: پرسیدن اینکه «چه کسی این کد را خوانده» پرسش بی ادبانه ای نیست و جواب دادن به آن هم سخت نیست. اگر جوابی نگرفتید، همان جواب است. اینکه کار خودمان اینجا چطور انجام می شود، در طراحی اپلیکیشن و نرم افزار نوشته ایم.

پیش نویس را وایب کد کنید، محصول را مهندسی کنید

  1. ۱

    پیش نویس

    پرامپت بزنید، نتیجه را ببینید، سریع پیش بروید. اینجا کیفیت کد اصلا معیار نیست.

  2. ۲

    تصمیم: نگه داشتن یا دور ریختن

    یک پرسش: اگر فردا این کاملا اشتباه کار کند، چه چیزی از دست می رود؟ جوابش تعیین می کند مسیر کدام طرف می رود.

  3. ۳

    بازنویسی با بازبینی

    همان قابلیت، این بار در تغییرهای کوچک و خوانده شده، با تستی که پیش از کد تعریف شده باشد.

  4. ۴

    قبل از انتشار: دسترسی، ورودی، کلیدها

    سه چیزی که هیچ وقت خطا نمی دهند و همیشه دستی بررسی می شوند. برای هر کلید، مستند خود سرویس را بخوانید نه قاعده کلی.

قدم سوم جایی است که بیشتر پروژه ها می شکنند: نه به این دلیل که سخت است، به این دلیل که نمونه اولیه کار می کند و کسی دلیلی برای دست زدن به آن نمی بیند.

هوش مصنوعی در این کار

کل این درس درباره یک روش کار با هوش مصنوعی است، پس این بخش به چیزی می پردازد که تعیین می کند آن روش چقدر گران تمام می شود: با کدام ابزار وایب کد می کنید و چه چیزی را خودتان نگه می دارید. موضع ما در یک جمله: <strong>ابزاری که هر تغییر را نشانتان می دهد، حتی وقتی نمی خوانیدش، از ابزاری که فقط نتیجه را نشان می دهد ایمن تر است، چون روزی که مجبور شوید بخوانید، چیزی برای خواندن هست.</strong>

ابزارهایی که واقعا کمک می کنند

  • Cursor ویرایشگری با عامل داخلی. برای این روش، مزیت مهمش این است که تغییرها را به شکل دیف داخل خود ویرایشگر نشان می دهد؛ یعنی اگر روزی تصمیم گرفتید بخوانید، همان جا هست. صفحه قیمت خودش یک طرح رایگان با محدودیت درخواست ها و یک طرح حرفه ای بیست دلار در ماه را نشان می دهد. درباره دسترسی از ایران چیزی ادعا نمی کنیم: فهرست کشورهای پشتیبانی شده ای پیدا نکردیم و خودمان هم آزمایشش نکرده ایم.
  • GitHub Copilot برای خواننده ایرانی نکته دسترسی اش غیرمنتظره است: صفحه کنترل تجاری خود گیتهاب می گوید مجوز خزانه داری آمریکا خدمات ابری اش را برای توسعه دهندگان ساکن ایران، رایگان و پولی، پوشش می دهد. ما همین را نقل می کنیم و پرداخت را ادعا نمی کنیم. برای این درس یک قابلیتش مستقیما به کار می آید: می شود پیشنهادهایی که با کد عمومی مطابقت دارند را مسدود کرد، و برای کسی که کد را نمی خواند این تنها دفاع عملی در برابر ابهام مجوز است.
  • Claude Code عامل خط فرمان که مخزن را می بیند و می تواند چند فایل را با هم عوض کند. همین توانایی، چیزی است که وایب کدینگ را از یک اپ کوچک به یک پروژه واقعی می برد و به همان نسبت، بازبینی نکردن را گران تر می کند. خودش رایگان نصب می شود ولی بدون اشتراک کلود یا حساب کنسول انتروپیک کار نمی کند، و ایران در فهرست کشورهای پشتیبانی شده انتروپیک نیست.
  • Gemini برای قدم دومی که این درس شرطش گذاشته مناسب است: بعد از اینکه چیزی را وایب کد کردید، همان را بردارید و بخواهید توضیحش بدهد تا خودتان بفهمید چه ساخته اید. حالت درس خواندنش هم به جای دادن جواب سوال می پرسد. صفحه خود گوگل می گوید اپ وب جمنای در بیش از دویست و سی کشور و منطقه کار می کند و ایران در آن فهرست نیست.

کجا نتیجه معکوس می دهد

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

منبع ها: Stack Overflow 2025 Developer Survey: AI Wikipedia: vibe coding (the definition the survey used) Google: API keys for Firebase, and what actually protects data OWASP Top 10: security misconfiguration GitHub Copilot plans GitHub and Trade Controls Cursor pricing Anthropic: supported countries Google: where the Gemini web app is available

حد این توصیه

این درس نه یک راهنمای امنیت است و نه یک راهنمای حقوقی، و هیچ کدام از دو بخش را جای مشورت واقعی نگذارید. سه چیز را عمدا نیاورده ایم: فهرست ابزارهای بساز و منتشر کن که هر ماه عوض می شوند، هر عددی درباره اینکه این روش چقدر وقت صرفه جویی می کند، چون منبع قابل دفاعی برایش نداریم و خودمان اندازه نگرفته ایم، و هر داستان مشخصی از یک اپ که به خاطر این روش نشت کرد، چون هر روایتی که پیدا کردیم یا منبع اول نداشت یا قابل تایید نبود. آنچه اینجا گفته ایم استدلال از مکانیزم است و منبع هر ادعای فنی اش، صفحه خود همان سازنده. یک مرز دیگر هم صادقانه بگوییم: خط بین وایب کدینگ و کدنویسی با کمک هوش مصنوعی، خط تیزی نیست و در عمل هر کسی جای متفاوتی می کشدش. آنچه ما پیشنهاد می کنیم یک آزمون است و نه یک تعریف: اگر نمی توانید توضیح دهید کد چه می کند، آن را نخوانده اید.

از تجربه خود ما

اینکه «کلید در کد سمت کاربر» تنها شکل مسئله نیست، برای ما یک تصمیم معماری است و نه یک نظر. ابزارهای سئوی همین سایت به یک سرویس داده بیرونی وصل می شوند و نام کاربری و رمز آن سرویس در یک گزینه وردپرس ذخیره می شود؛ هر فراخوانی را خود پی اچ پی انجام می دهد و مرورگر بازدیدکننده هیچ وقت با آن سرویس حرف نمی زند. همان روزی که این درس بررسی شد، خودمان همین را آزمودیم نه از روی حافظه: نام آن اعتبارنامه فقط در فایل های پی اچ پی زیر پوشه includes همان افزونه پیدا می شود و در هیچ فایل جاوااسکریپتی نیست؛ فایل main.js صفر بار آن را دارد؛ و در خروجی صفحه عمومی ابزارها تنها جایی که اسم آن سرویس دیده می شود، متن خود صفحه است که می گوید داده از کجا می آید. یعنی می شود سرویس را در متن صفحه به اسم صدا زد و اعتبارنامه اش هیچ وقت از سرور بیرون نرود. همین آزمون را روی سایت خودتان هم می شود اجرا کرد و یک دقیقه وقت می برد: خروجی صفحه و فایل های جاوااسکریپت را دنبال نام هر کلیدی که در کد دارید بگردید.

سوال هایی که واقعا پرسیده می شوند

می شود بدون بلد بودن برنامه نویسی یک اپ واقعی ساخت؟

چیزی که کار کند، بله. چیزی که بشود به آن اعتماد کرد، به این بستگی دارد که چه چیزی را نگه می دارد. تا وقتی کاربر واقعی و داده واقعی و پول در کار نیست، اشکالی ندارد؛ از لحظه ای که هست، یک نفر باید کد را بخواند و اگر آن نفر شما نیستید، باید کسی باشد.

کد وایب کدشده را چطور امن کنم؟

با یک اسکن یا یک پرامپت نمی شود، چون مشکل معمولا چیزی نیست که هست بلکه چیزی است که نیست، و چیزی که نیست را ابزار پیدا نمی کند. کمترین کاری که واقعا اثر دارد این است: برای هر داده ای که ذخیره می کنید بنویسید چه کسی حق دیدن و عوض کردنش را دارد، بعد آن را در کد پیدا کنید؛ و برای هر کلیدی که در پروژه هست، مستند خود همان سرویس را درباره آن کلید بخوانید.

وایب کدینگ کار برنامه نویس ها را از بین می برد؟

ما پیش بینی نمی کنیم و هر کس عدد قطعی به شما بدهد آن را از جایی نیاورده. چیزی که می شود دید این است: کاری که ارزش بازار داشت هیچ وقت تایپ کردن کد نبود، تصمیم گرفتن درباره اینکه چه چیزی ساخته شود و چرا این طور بود. آن تصمیم ها همچنان تصمیم آدم اند، و در همین نظرسنجی هم ۷۵.۳ درصد گفته اند حتی اگر هوش مصنوعی بتواند بیشتر کارهای کدنویسی را انجام دهد، وقتی به جواب هایش اعتماد نداشته باشند باز از یک آدم می پرسند.