وایب کُدینگ

تجربه‌ای خاص و تفکرات پیرامون آن

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

حسی که بسیار مهم شده

احتمالا عبارت Vibe Coding رو این روزها خیلی شنیدین. عبارتی که برای اولین بار توسط آندره کارپاتی به کار برده شد و از همون روز اول احساسات دوگانه و بحث‌های زیادی رو به سمت خودش جلب کرد.

Vibe-Coding
البته کارپاتی قبل‌تر هم گفته بود که:

جذاب‌ترین زبان برنامه‌نویسی جدید انگلیسیه.

مدتی برای خود من طول کشید تا اولین بار به پتانسیل این موضوع پی بردم. زمانی که فقط ۲ روز تا ارائه OKR فاصله داشتیم و به دلایل مختلفی نتونسته بودیم یکی از بندهای نسبتا مهم رو برسونیم که شخصا خودم خیلی دوست داشتم هرچه زودتر درست بشه.

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

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

اما همونطور که درست حدس می‌زنید در این مسیر موانع زیادی وجود داشت.

مسیر ناهموار

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

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

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

قبل‌تر جایی خونده بودم که llmها و محصولاتی که مبتنی بر اون‌ها تولید شدن، مثل کارآموزهای ما هستن. این نکته تا یک جایی درسته، اما کارآموزهای ما قراره کارهایی رو انجام بدن که ما بهشون تسلط داریم ولی ترجیح می‌دیم زمانمون رو صرفشون نکنیم. در صورتی که ایجنت‌های امروز معمولا سراغ انجام کارهایی می‌رن که ما شناخت کمی نسبت بهشون داریم.

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

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

بدون چشم، به دست‌های من اعتماد نکن

همین چند روز پیش متوجه یک باگ عجیب توی صفحه اول وبلاگی که می‌بینید شدم. شاید میلیون‌ها توکن و ساعت‌ها زمان و ده‌ها پیام رو صرف این کردم که از ایجنت windsurf بخوام ریشه این مشکل رو پیدا کنه و برطرفش کنه اما هیچ کدوم از مدل‌ها نتونستن مشکل من رو رفع کنن. در نهایت زمانی که دیگه خسته شده بودم خودم رفتم سراغ کُد و بعد از کمی بالا و پایین کردن متوجه شدم که یک تگ خیلی ساده حذف شده بوده! به خاطر همین تصوری که در حال حاضر من از ایجنت‌ها دارم، موجودات با دست‌های توانمند اما بدون چشم هستن. در واقع چشم این ایجنت‌ها فعلا شناخت خود ما نسبت به موضوعه اما این شناخت خیلی با «متخصص بودن» متفاوته.

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

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

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

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

برهم‌زنندگی واقعی اینجاست

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

این موضع‌گیری رو من از خیلی از اهالی دنیای آکادمی دیده بودم و حتی اون روزها هم این توییت رو زدم:

فارغ از اینکه چقدر با من همراه باشید، با نگاه به موج‌های مختلف تکنولوژی نمی‌تونید از تعصب افرادی که خودشون رو صاحب‌نظر وضع موجود می‌بینن دفاع کنید.

زمانی که دوربین‌های دیجیتال اومدن، خیلی از عکاس‌های صاحب‌نظر اون‌ها رو مسخره می‌کردن و می‌گفتن که این که اصلا دوربین نیست. اما به کمک همین تکنولوژی جدید که دردسترس‌تر هم بود عکاس‌های آماتور تونستن وارد داستان بشن و کلی تصاویر زیبا خلق کنن و کم کم حرفه‌ای هم شدن بعضیاشون.

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

به نظر من این ماهیت تکنولوژیه که با هر موج جدید، توان انجام طیف وسیع‌تری از کارها رو به افراد بیشتری می‌ده. چیزی که متخصص‌ها و ذی‌نفعان وضع موجود در ابتدا اون رو مسخره می‌کنن. چون کیفیت خروجی اون‌ها معمولا فاصله معناداری با کارهای خودشون داره.

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

توی پست مربوط به [[Disrupt|نوآوری‌های برهم‌زننده]] خیلی مفصل در مورد این موضوع توضیح دادم و توصیه می‌کنم حتما اون پست رو دوباره مطالعه کنید. تکنولوژی‌های جدید نیازی به جلب توجه متخصص‌ها ندارن، بلکه کافیه آماتورهایی رو جذب کنن که تبدیل به مبلغین این موج جدید می‌شن و کارهایی رو انجام می‌دن که شدنی به نظر نمیاد. این آماتورها رفته رفته با پیشرفت خود تکنولوژی جدید تبدیل به متخصصانی می‌شن که خروجی چندین برابری نسبت به قبل ارائه می‌دن و به این ترتیب نظم قبلی به هم می‌خوره.


این پست فعلا با چیزی که در ذهنم دارم فاصله داره. مثل رفرنس به مثال‌های تاریخی و عمیق‌تر شدن روی بعضی مفاهیم. اما ترجیح دادم زودتر منتشر بشه تا اگر براتون جالبه با هم در موردش گفتگو کنیم و توی این گفتگو کامل‌تر بشه ایده‌م. اگر براتون جالب بود می‌تونیم گفتگو رو ایمیلی پیش ببریم: kakavand.amin93@gmail.com

راستی برای کامنت‌گذاری روی وبلاگ جدید گزینه خوبی پیدا نکردم. یک ایده‌م این بود که برای هر پست یک آپدیت داخل یک کانال تلگرام داشته باشیم که زیرش گفتگو کنیم اما شاید راه‌های بهتری باشه. اگر ایده‌ای داشتید ممنون می‌شم بگید.