صفحه‌ی ورود یک SaaS را از صفر تا لانچ ساختند، بدون اینکه یک خط کد بنویسند. نه، این تبلیغ نیست — روایت شکست‌هاست. پرامپت اول فاجعه بود، حلقه‌ی «درستش کن» سه روز ادامه داشت، و فقط وقتی نیازمندی تفکیک شد، خروجی قابل‌استفاده آمد. وایب کدینگ مهارت پرامپت‌نویسی نیست؛ مهارت تفکیک محصولی است.

وایب کدینگ چیست و چه فرقی با کدنویسی کمکی دارد؟#

وایب کدینگ (Vibe Coding) روشی است که در آن سازنده کد تولیدشده را بازبینی نمی‌کند، نیازمندی را با زبان طبیعی بیان می‌کند و فقط خروجی نهایی را آزمایش می‌کند. تفاوتش با کدنویسی کمکی (AI-Assisted Coding) در همین یک نقطه است: در کدنویسی کمکی کد را می‌خوانی و اصلاح می‌کنی، در وایب کدینگ کد را نادیده می‌گیری.

منشأ اصطلاح — توییت آندری کارپاتی در اوایل فوریه 2025#

آندری کارپاتی (Andrej Karpathy) در اوایل فوریه 2025 در توییتی اصطلاح «Vibe Coding» را رایج کرد — جایی که فقط با مدل حرف می‌زنی و کد را نمی‌بینی. این تعریف دقیقاً همان چیزی است که ابزارهایی مثل Cursor و Bolt عملاً پیاده می‌کنند: رفتار مورد انتظار را توصیف می‌کنی، خروجی را تست می‌کنی، و اگر درست بود، ادامه می‌دهی.

تفاوت عملی با کدنویسی کمکی#

در GitHub Copilot یا Cursor Tab، مدل پیشنهاد کد می‌دهد و تو آن را بازبینی، تکمیل یا رد می‌کنی. در وایب کدینگ، کد اصلاً خوانده نمی‌شود. چک‌لیستت این است: آیا فرم کار می‌کند؟ آیا دکمه ثبت‌نام داده را به endpoint می‌فرستد؟ اگر بله، تمام. اگر نه، پرامپت بعدی نوشته می‌شود.

چرا این روش الان همه‌جا حرفشه؟#

همگرایی دو عامل این روش را ممکن کرد: مدل‌های زبانی بزرگ (Large Language Model) که کد قابل‌اجرا تولید می‌کنند، و ابزارهای توسعه‌ی یکپارچه که preview زنده دارند. قبل از این، حتی اگر مدل کد درستی می‌داد، محیط اجرای آن نبود. الان هر دو هست.

چرا با یک پرامپت بزرگ شکست می‌خوری؟#

یک پرامپت بزرگ که تمام نیازمندی‌ها را یکجا بیان می‌کند، معمولاً کد ناقص تولید می‌کند و حلقه‌ی بازخورد بی‌پایان ایجاد می‌کند. مدل در دورهای بعدی بخش‌هایی که قبلاً درست بودند را هم خراب می‌کند. راه‌حل، تفکیک مرحله‌ای نیازمندی و تأیید هر بخش قبل از رفتن به بخش بعدی است.

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

آناتومی حلقه‌ی شکست#

  1. پرامپت بزرگ: تمام نیازمندی‌ها در یک متن 200 کلمه‌ای.
  2. کد ناقص: مدل بخش‌هایی را می‌سازد، بخش‌هایی را نصفه‌کاره رها می‌کند.
  3. بازخورد مبهم: «درستش کن» یا «کارت نمی‌کنه».
  4. تکرار: مدل در دور بعدی، بخش‌هایی که قبلاً درست بودند را هم خراب می‌کند.

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

تفکیک مرحله‌ای به‌جای پرامپت جامع#

قاعده‌ی ساده: هر پرامپت فقط یک خروجی تأییدشده بسازد. اول هدر. تأیید شد؟ برو سراغ بخش hero. فرم ثبت‌نام؟ بعد از تأیید frontend، برو سراغ backend. هر مرحله یک commit ذهنی دارد. اگر مرحله‌ی 3 خراب شد، فقط همان را اصلاح می‌کنی، نه کل پروژه را.

پرامپت‌نویسی به‌عنوان مستندسازی#

خروجی جانبی‌اش گاهی ارزشمندتر از خود کد است. وقتی نیازمندی مرحله‌به‌مرحله به زبان طبیعی نوشته می‌شود، عملاً یک PRD (Product Requirements Document) کوچک ساخته شده. اگر بعداً بخواهی پروژه را به برنامه‌نویس بسپاری، این مستند نقطه شروع واقعی است.

پروژه‌ی واقعی: ساخت صفحه‌ی ورود SaaS با Cursor و Replit#

ساخت صفحه‌ی ورود SaaS با فرم ثبت‌نام و اتصال Stripe در پروژه‌های وایب کدینگ کامیونیتی، معمولاً چند روز تا یک هفته کار متمرکز با چند دور بازآزمایی می‌برد. ابزارها: v0 برای frontend، Cursor برای ویرایش، و Replit برای backend. زمان بیشتر صرف تفکیک نیازمندی و رفع باگ رفتاری است تا نوشتن کد.

گام 1 — تعریف نیازمندی به زبان طبیعی#

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

گام 2 — ساخت frontend با v0 و انتقال به Cursor#

v0 خروجی React/Tailwind می‌دهد. مشکل رایج: فونت‌های پیش‌فرض و spacing‌های غیراستاندارد. در Cursor پرامپت داده می‌شود: «margin بین بخش‌ها را 80px کن و فونت heading را به Inter تغییر بده.» این یک پرامپت کوچک بود و دقیقاً همان کار را کرد.

گام 3 — اتصال backend و API با Replit#

Replit برای ساخت endpoint ثبت‌نام استفاده می‌شود. پرامپت: «یک endpoint POST بساز که ایمیل را بگیرد، در جدول subscribers ذخیره کند، و پاسخ 200 بدهد.» خروجی کار کرد اما CORS (Cross-Origin Resource Sharing) را نداشت. پرامپت بعدی: «middleware CORS اضافه کن با origin مجاز از فایل env.» حل شد.

گام 4 — دیباگ و بازآزمایی#

اینجا معمولاً گیر می‌کنند. فرم submit می‌شود ولی پاسخ موفقیت نمایش داده نمی‌شود. دلیل رایج: در frontend، fetch با async/await نوشته شده ولی state update در callback مانده. راه‌حل: پرامپت «state را بعد از await آپدیت کن». در وایب کدینگ، کد خوانده نمی‌شود؛ رفتار توصیف می‌شود و مدل اصلاح می‌کند.

گام 5 — لانچ و اولین بازخورد کاربر#

صفحه روی Vercel deploy شد. اولین بازخورد از کاربر واقعی: «نمی‌فهمم بعد از ثبت‌نام چه اتفاقی می‌افتد». این یک مشکل محصولی بود، نه فنی. پرامپت اصلاح: «بعد از ثبت موفق، یک مودال باز شود که بگوید ایمیل تأیید ارسال شده.» سه دقیقه بعد، مودال آماده بود.

اگر می‌خواهی مسیر کامل از ایده تا محصول لایو را ببینی، در چالش رایگان ۰ تا ۱۰۰ ثبت‌نام کن.

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

هیچ ابزار واحدی برای همه‌ی پروژه‌های وایب کدینگ مناسب نیست. انتخاب باید بر اساس نوع محصول (وب، موبایل، API) و سطح نیاز به کنترل کد انجام شود. v0 برای صفحات frontend سریع، Bolt یا Replit برای MVP (Minimum Viable Product) با backend، و Cursor برای کسانی که کد را می‌خوانند بهترین گزینه‌ها هستند.

مقایسه‌ی ابزارها بر اساس نوع خروجی#

ابزارنوع خروجیدسترسی به کدمناسب برای
v0React + Tailwindکپی/انتقال آسانصفحات frontend سریع
BoltFull-stack (React/Node)بله، قابل دانلودMVP با backend ساده
LovableReact + Supabaseمحدودتراپ‌های با auth و database
Cursorهر زبانیکاملکسانی که کد را می‌خوانند
ReplitFull-stackبلهAPI و backend مستقل
FlutterFlowاپ موبایل نیتیوخروجی Flutterاپ موبایل بدون کد

Cursor برای چه کسی مناسب است و برای چه کسی نه#

Cursor اگر کد را می‌خوانی و می‌خواهی کنترل داشته باشی، عالی است. اما اگر واقعاً وایب کدینگ می‌خواهی — یعنی کد را نمی‌بینی — Cursor بیش از حد جزئیات فنی نشان می‌دهد و حواست را پرت می‌کند. برای وایب کدینگ خالص، Bolt یا Lovable روان‌ترند.

اشتباه رایج انتخاب ابزار بر اساس ترند#

بسیاری از افراد ابزار را بر اساس توییت‌های ترند انتخاب می‌کنند، نه معماری محصولشان. این پرهزینه‌ترین اشتباه انتخاب ابزار است. اگر پروژه فقط یک landing page است، v0 کافی است. اگر auth و database لازم است، Lovable یا Supabase-based بهترند. اگر اپ موبایل است، هیچ‌کدام از این‌ها نیست — FlutterFlow یا کدنویسی سنتی.

هزینه و زمان واقع‌بینانه‌ی وایب کدینگ#

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

هزینه‌ی اشتراک ابزارها#

بیشتر ابزارهای وایب کدینگ مدل freemium دارند. پلن رایگان برای تست و پروژه‌های کوچک کافی است. پلن‌های پولی معمولاً محدودیت تعداد پرامپت یا حجم خروجی را برمی‌دارند. برای یک MVP، اشتراک ماهانه‌ی یک یا دو ابزار کافی است.

زمان واقع‌بینانه در مقابل زمان تبلیغاتی#

تبلیغات می‌گویند «اپ در 5 دقیقه بساز». واقعیت: یک صفحه‌ی ورود ساده با فرم و backend، اگر تفکیک بلد باشی، چند ساعت تا یک روز. اگر حلقه‌ی شکست بیفتی، چند روز. محصول با auth، payment و چند صفحه؟ هفته‌ها.

مقایسه با هزینه‌ی استخدام برنامه‌نویس فریلنسر#

استخدام فریلنسر برای یک MVP معمولاً هزینه‌ی بالاتری دارد ولی کیفیت و پایداری خروجی بهتر است. وایب کدینگ وقتی توجیه اقتصادی دارد که بودجه محدود است و سرعت برایت از کیفیت اولویت دارد.

وایب کدینگ کجا شکست می‌خورد؟#

وایب کدینگ در سه حوزه به‌شدت آسیب‌پذیر است: امنیت، مقیاس‌پذیری، و کار تیمی. هاردکد شدن API key، endpoint بدون احراز هویت، بدهی فنی انباشته، و کدی که هیچ‌کس جز سازنده‌اش نمی‌فهمد، ریسک‌های واقعی این روش‌اند و نادیده‌گرفتن‌شان هزینه‌ی بازسازی را از صفر‌سازی بیشتر می‌کند.

ریسک‌های امنیتی که نادیده گرفته می‌شوند#

اگر کد را نبینی، نمی‌فهمی که API key در source code هاردکد شده، داده‌ی کاربر لاگ می‌شود، یا endpoint بدون احراز هویت باز مانده است. این‌ها ریسک‌های رایج وایب کدینگ‌اند. حداقل کاری که باید بکنی: خروجی را با یک ابزار static analysis اسکن کن.

بدهی فنی — چرا محصول پایدار گران‌تر از صفر‌سازی می‌شود#

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

چه زمانی حتماً به برنامه‌نویس نیاز داری#

وقتی محصول به میلیون‌ها کاربر می‌رسد، وقتی منطق بک‌اند پیچیده است، وقتی امنیت و compliance (انطباق با مقررات) مهم است، و وقتی تیم فنی وجود دارد که باید کد را بخواند و ادامه دهد. وایب کدینگ جای برنامه‌نویس نیست؛ ابزار تصویرسازی فنی سریع است.

وایب کدینگ در تیم‌های بدون فنی#

برای تیم‌هایی که برنامه‌نویس ندارند، وایب کدینگ ارزشمندترین کاربردش را دارد: ساخت prototype قابل‌لمس برای تست با کاربر واقعی. اما این prototype را به‌عنوان محصول نهایی نبین. به‌عنوان مستند بصری نیازمندی ببین که بعداً به برنامه‌نویس داده شود.

تفاوت وایب کدینگ با no-code و low-code سنتی#

no-code محدود به قالب‌های از پیش‌ساخته‌ی پلتفرم است. وایب کدینگ کد واقعی تولید می‌کند و خروجی‌اش قابل انتقال و شخصی‌سازی کامل است. این تفاوت بنیادین، محدودیت‌ها و آزادی‌های متفاوتی ایجاد می‌کند.

مقایسه‌ی عملی — Bubble و Webflow در برابر Bolt و Cursor#

Bubble و Webflow تو را در اکوسیستم خودشان حبس می‌کنند. اگر بخواهی از پلتفرم بروی بیرون، کدی نداری که منتقلش کنی. Bolt و Cursor کد React و Node واقعی تولید می‌کنند. خروجی‌شان را می‌توان در هر محیطی deploy کرد، هر توسعه‌دهنده‌ای می‌تواند ادامه‌اش دهد.

خروجی کد واقعی در برابر خروجی محدود به پلتفرم#

این مهم‌ترین تفاوت است. وایب کدینگ vendor lock-in (قفل به فروشنده) ندارد. اگر مدل یا ابزار عوض شود، کد باقی می‌ماند. در no-code، اگر پلتفرم قیمتش را بالا ببرد یا سرویسش را ببندد، محصول هم می‌میرد.

کجا no-code بهتر است و کجا وایب کدینگ#

اگر نیاز یک form ساده، یک صفحه‌ی landing بدون منطق پیچیده، یا یک dashboard با داده‌ی ثابت است، no-code سریع‌تر و پایدارتر است. اگر نیاز به منطق سفارشی، اتصال به API‌های خاص، یا خروجی قابل‌انتقال داری، وایب کدینگ انتخاب بهتری است.

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

اگر می‌خواهی این مهارت را در قالب یک مسیر ساختاریافته تمرین کنی، دوره‌ی «آموزش جامع Claude و ابزارهای مشابه» در کامیونیتی Claude اسکول دقیقاً همین تفکیک و بازآزمایی را به‌صورت عملی تمرین می‌دهد.