در فوریه ۲۰۲۵، آندری کارپاتی برای اولین بار از اصطلاح Vibe Coding استفاده کرد؛ مفهومی که در آن، توسعهدهنده بهجای تمرکز بر نوشتن تکتک خطوط کد، مسئله و خواسته خود را برای هوش مصنوعی توصیف میکند و AI بخش بزرگی از فرایند تولید و تکامل کد را انجام میدهد. این ایده خیلی سریع وارد ادبیات مهندسی نرمافزار شد و نگاه بسیاری از تیمهای توسعه را تغییر داد.
تولید و توسعه نرمافزار، فرآیندی بود که دانش فنی، تجربه و توانمندی تیم مهندسی در آن نقش تعیینکننده داشت. اما با پیشرفت هوش مصنوعی و شکلگیری وایبکدینگ، بخشی از این مسیر بهسادگی در اختیار افراد غیرفنی هم قرار گرفته است؛ بدون اینکه پیچیدگی و ریسکهای مهندسی نرمافزار از بین رفته باشند.
وایب کدینگ تنها یکی از نتایج تحول بزرگتری است که این روزها با عنوان AI-First Software Engineering شناخته میشود؛ رویکردی که در آن، هوش مصنوعی دیگر فقط یک ابزار برای تولید کد نیست، بلکه در تمام مراحل چرخه توسعه نرمافزار، از تحلیل نیازمندیها و طراحی تا پیادهسازی، تست و نگهداری، نقش فعالی ایفا میکند. اگر میخواهید با این طرز فکر و تفاوت آن با صرفاً «کدنویسی با AI» آشنا شوید، پیشنهاد میکنم مقاله AI-First Software Engineering چیست؟ را مطالعه کنید.
وایبکدینگ و تفاوت آن با AI-First Software Engineering
وایب کدینگ روشی برای توسعه نرمافزار است که در آن، توسعهدهنده با استفاده از زبان طبیعی و تعامل مستمر با مدل هوش مصنوعی، بخشی از فرایند تحلیل، تولید و تغییر کد را به AI میسپارد. وایب کدینگ را میتوان یکی از شیوههای کاری شکلگرفته در جریان AI-First Software Engineering دانست، اما AI-First دامنه بسیار گستردهتری دارد.
وایبکدینگ چگونه کار میکند؟
در توسعه نرمافزار معمولاً کد، زبان اصلی تعامل برنامهنویس با سیستم است. برنامهنویس راهحل را به ساختارهای دقیق فنی تبدیل میکند، کد مینویسد و نتیجه را مرحلهبهمرحله بررسی میکند. در وایب کدینگ، این رابطه تغییر میکند. توسعهدهنده بیشتر با هدف، رفتار و نتیجه مورد انتظار سروکار دارد و برای رسیدن به آن، از زبان طبیعی با مدل هوش مصنوعی گفتگو میکند. مدل بر اساس این گفتگو کد تولید میکند، آن را اجرا و اصلاح میکند و در چندین مرحله به نتیجه نزدیکتر میشود.
در این فرایند، کد دیگر لزوماً چیزی نیست که توسعهدهنده از ابتدا تا انتها خودش تولید و کنترل کند؛ بلکه میتواند حاصل یک تعامل تکرارشونده میان انسان و مدل باشد. توسعهدهنده خواسته خود را بیان میکند، خروجی را میبیند، نتیجه را ارزیابی میکند و در صورت نیاز مسیر را تغییر میدهد.
یک مثال ساده از وایب کدینگ
فرض کنید در یک فروشگاه اینترنتی میخواهیم فیلتر محصولات را بر اساس قیمت، برند و موجودی اضافه کنیم. توسعهدهنده context پروژه را در اختیار AI قرار میدهد و بهجای درخواست مستقیم برای تولید کد، کار را به چند مرحله تقسیم میکند:
ساختار
Product، endpoint لیست محصولات و کامپوننتProductListرا بررسی کن.نحوه فعلی Query، pagination و state management را مشخص کن.
تأثیر اضافهشدن فیلترهای price، brand و stock را روی frontend، API و database بررسی کن.
یک راهحل سازگار با معماری فعلی پیشنهاد بده.
تغییرات موردنیاز، ریسکهای احتمالی و تستهای لازم را مشخص کن.
فعلاً هیچ فایلی را تغییر نده و فقط plan را ارائه کن.
پس از بررسی plan، توسعهدهنده آن را تأیید یا اصلاح میکند و سپس از AI میخواهد پیادهسازی را مرحلهبهمرحله انجام دهد. هر مرحله اجرا و بررسی میشود و نتیجه دوباره وارد چرخه تعامل با AI میشود. در اینجا AI فقط یک code generator نیست؛ در بخشی از فرایند تحلیل، طراحی و پیادهسازی مشارکت میکند و توسعهدهنده با هدایت و ارزیابی این فرایند، مسیر رسیدن به نتیجه را کنترل میکند.
اینجا دقیقاً جایی است که استفاده درست از AI معنا پیدا میکند. بهجای اینکه مستقیماً از AI بخواهم تغییرات را پیادهسازی کند، ابتدا از آن یک پلن اجرایی و مرحلهبندیشده خواستم. یعنی قبل از اجرا، مسئله را تحلیل و مسیر حل آن را مشخص کردیم. این همان تفکر الگوریتمی است که میخواهم در این سایت آموزش بدهم: شکستن مسئله، تعریف گامهای حل و مشخصکردن ترتیب اجرا. اگر این فرایند را حذف کنیم و فقط خروجی AI را بدون تحلیل و ارزیابی بپذیریم، من به آن وایبکدینگ نمیگویم؛ Vibe Shitting میگویم!
دو نگاه متفاوت به وایب کدینگ
یک نگاه، مهندسی و آیندهنگر است. این نگاه بیشتر در محصولاتی اهمیت پیدا میکند که قرار است در بلندمدت رشد کنند، تغییر کنند و نگهداری شوند. در اینجا معماری، کیفیت کد، امنیت، تستپذیری و قابلیت نگهداری، تصمیمهای فرعی نیستند. هر تصمیم فنی امروز میتواند بخشی از هزینه توسعه فردا را تعیین کند.
نگاه دیگر، محصولمحور است. اینجا سؤال اصلی این نیست که «کد استاندارد نوشته شده؟» بلکه این است که «چقدر سریع میتوانیم ایده را به محصول تبدیل کنیم و بازخورد واقعی بگیریم؟» برای بنیانگذار، تیم محصول یا تیمی که در حال ساخت یک نمونه اولیه است، زمان عرضه به بازار میتواند از کیفیت بلندمدت کد مهمتر باشد. اگر هنوز نمیدانیم محصول ارزش ادامهدادن دارد یا نه، ممکن است پرداخت هزینه مهندسی برای آیندهای نامعلوم منطقی نباشد.
این دو نگاه الزاماً متناقض نیستند. هرکدام به یک مسئله متفاوت پاسخ میدهند. تصمیم درست زمانی شکل میگیرد که هدف محصول، افق زمانی و هزینه هر انتخاب را بشناسیم و آگاهانه Trade-off کنیم.
وایب کدینگ، برنامهنویسی را سادهتر کرده؛ حل مسئله را نه
هوش مصنوعی بخش بزرگی از فرایند تولید کد را ساده کرده است. امروز برای ساخت یک feature لازم نیست تمام جزئیات پیادهسازی را خودمان بنویسیم. میتوانیم مسئله را توضیح بدهیم، context پروژه را در اختیار AI قرار دهیم و بخش زیادی از پیادهسازی را به آن بسپاریم.
اما این اتفاق یک تفاوت مهم میان کدنویسی و حل مسئله را پررنگتر کرده است.
AI میتواند کد تولید کند، اما هنوز باید بدانیم دقیقاً چه مسئلهای را میخواهیم حل کنیم، مسئله را چگونه به بخشهای کوچکتر تقسیم کنیم، هر بخش چه وابستگیهایی دارد و اجرای آنها باید با چه ترتیبی انجام شود.
هرچه سهم AI در نوشتن کد بیشتر شود، نقش ما بیشتر از «نوشتن دستورها» به سمت تعریف مسئله، طراحی مسیر حل و ارزیابی نتیجه حرکت میکند.
اینجاست که تفکر الگوریتمی اهمیت بیشتری پیدا میکند.
تفکر الگوریتمی در عصر AI
فکر الگوریتمی یعنی بتوانیم یک مسئله را بفهمیم، آن را به مسائل کوچکتر تقسیم کنیم و گامهای رسیدن به نتیجه را مشخص کنیم.
همان کاری که در مثال فیلتر محصولات انجام دادیم. به AI نگفتیم «فیلتر را بساز». ابتدا وضعیت فعلی را بررسی کردیم، تأثیر تغییرات را سنجیدیم و یک plan برای پیادهسازی ساختیم. بعد وارد اجرا شدیم.
یعنی قبل از اینکه AI کدنویسی کند، مسیر حل مسئله را مشخص کردیم. کیفیت خروجی بیشتر به کیفیت مسئلهای بستگی دارد که تعریف میکنیم و مسیری که برای حل آن میسازیم. اگر میخواهید این مهارت را بهتر بشناسید، مقاله تفکر الگوریتمی چیست؟ را بخوانید.
ریسک اصلی استفاده از وایب کدینگ
ریسک اصلی وایب کدینگ، تولید کد توسط AI نیست؛ مسئله زمانی شروع میشود که سرعت تولید تغییرات از توان ما برای درک و ارزیابی آنها بیشتر شود. اگر بدون تحلیل مسئله، بررسی وابستگیها و ارزیابی اثر هر تغییر، صرفاً خروجی AI را بپذیریم، بهمرور تصمیمهایی وارد کدبیس میشوند که دلیل و پیامدشان را نمیشناسیم. ممکن است نرمافزار همچنان کار کند، اما توان ما برای پیشبینی رفتار سیستم و تغییر امن آن کاهش پیدا میکند.
مرز بین Vibe Coding و چیزی که من Vibe Shitting مینامم همینجاست. مسئله این نیست که چه کسی کد را نوشته؛ مسئله این است که آیا هنوز تصمیمهای فنی را میفهمیم و مسئولیت آنها را بر عهده داریم یا نه.
مهارت اصلی، حل مسئله است
وقتی هزینه تولید کد کاهش پیدا میکند، ارزش مهندسی بیشتر به تصمیمهایی منتقل میشود که قبل از تولید کد گرفته میشوند: فهم مسئله، شکستن آن، شناخت محدودیتها، انتخاب راهحل و ارزیابی نتیجه.
این همان جایی است که تفکر الگوریتمی اهمیت پیدا میکند. نه بهعنوان توانایی حفظ الگوریتمها، بلکه بهعنوان روشی برای تبدیل یک مسئله مبهم به مجموعهای از مسائل مشخص و قابل حل.
این مهارت با مطالعه صرف شکل نمیگیرد و به تمرین نیاز دارد. به همین دلیل در گروه تلگرام تمرین تفکر الگوریتمی و حل مسئله، مسئلههایی را با همین هدف حل و بررسی میکنیم؛ تمرکز نه روی رسیدن به جواب، بلکه روی نحوه رسیدن به آن است.
دیدگاهها
دیدگاههای سازنده پس از بررسی منتشر میشوند.
هنوز دیدگاهی ثبت نشده است. آغازگر گفتوگو باشید.