آنچه درباره Vibe Coding، ابزارهای هوش مصنوعی و شروع بهعنوان کارآفرین تکنفره آموختم

من برنامه Brush Tracker را در ۳ روز ساختام، بدون پیشزمینهای از Swift—زبان برنامهنویسی اصلی توسعه iOS. اگرچه برنامهام بهصورت کامل در App Store منتشر است، اما بهدلیل استفاده از «Vibe Coding» دانش کمی از Swift دارم.
در این مقاله، فرایند کار، ابزارهای هوش مصنوعی که بکار بردهام را توضیح میدهم و برخی از آموختهها و بینشهای خود را به اشتراک میگذارم.
Anything بهعنوان جایگزین Lovable
قبلاً از Lovable برای توسعه برنامههای وب استفاده میکردم، اما بهنظر میرسد هنوز برای توسعه برنامههای موبایل گزینهای نیست.
برای توسعه برنامهها گزینههای دیگری نیز وجود دارد. اخیراً با ابزاری به نام Anything آشنا شدم و چون تجربه خوبی با Lovable داشتم، تصمیم گرفتم آن را برای ساخت برنامهام امتحان کنم. در ابتدا بهنظر میرسید خوب کار میکند، اما تجربه کلی آن بهآنچنان مؤثری که میخواستم نرسید.
سختترین بخش این بود که نتوانستم تغییرات، اصلاحات و بهبودهای خود را بلافاصله تست کنم. یک رابط کاربری داخلی برای تست در Anything وجود دارد، اما تجربه استفاده از آن چندان روان نبود. همچنین برای تست کد از طریق برنامه Expo هدایت میشدم که برای من نیز بهخوبی کار نکرد.
باید ذکر کنم که پیش از این تجربهای در توسعه برنامه نداشتم. برای توسعهدهندگان یا کسانی که پیشزمینهای در برنامهنویسی دارند، Anything ممکن است ابزار مؤثرتری نسبت به تجربه من باشد.
کد را از Anything استخراج کردم و سعی کردم روی Xcode در مکام تست کنم، اما با خطاهای فراوانی مواجه شدم و نتوانستم برنامه را بهدرستی اجرا کنم. بنابراین تصمیم گرفتم از یک ابزار دیگر استفاده کنم؛ Cursor بهنظر گزینه واضحی میرسید.
Cursor
نظرات بسیار مثبت درباره Cursor از طرف دوستانی که فعالانه از آن استفاده میکنند، شنیدهام. خودم هم تصمیم گرفتم آن را تجربه کنم.
من همان پرامپت را در Cursor وارد کردم و از آن خواستم برنامه را بسازد. سپس یک پروژه Xcode با پوشهها و فایلهای تولید شده توسط Cursor ایجاد کردم. شبیهساز را در Xcode اجرا کردم و برنامه در اولین بار کار کرد.
هدف Brush Tracker این است که به شما کمک کند در مسواکزدن روزانهتان پیوستگی داشته باشید. برنامه نمرهٔ پاکی را که از ۱۰۰٪ شروع میشود، به شما میدهد. اگر یک روز مسواک نزنید، نمره کاهش مییابد و دندانهای برنامه کمی زردرنگ میشوند تا با نمرهٔ پاکی مطابقت داشته باشد.

توجه: تمام تصاویری که در این مقاله به کار رفتهاند، اسکرینشاتهایی از برنامه من، Brush Tracker، هستند.
نسخهٔ اولیه فقط شامل ویژگی اصلی برنامه بود. به نظر من این مؤثرترین روش برای ساخت محصول با ابزارهای مبتنی بر هوش مصنوعی است؛ نخستین نسخه را آماده کنید و سپس ویژگیهای دیگر را اضافه کنید.
برای آزمون ویژگی اصلی برنامه در شبیهساز، مجبور شدم تاریخ شبیهساز را تغییر دهم بدون اینکه «مسواک امروز» را تکمیل کرده باشم، تا بررسی کنم آیا نمرهٔ پاکی کاهش مییابد و نمایش دندانها همانطور که انتظار میرود بهروزرسانی میشود یا نه.
Cursor پیشنهاد داد که تاریخ شبیهساز Xcode را تغییر دهم، اما شبیهساز دیگر تنظیمات تاریخ و زمان را در اختیار ندارد. نسخههای قدیمی شبیهساز Xcode این تنظیمات را داشتند، اما اکنون وجود ندارند.
یک راهحل جایگزین این بود که تاریخ را در مک خود تغییر دهم. به این ترتیب تاریخ شبیهساز هم بهروز شد و توانستم ویژگی را تست کنم.
نکتهای که متوجه شدم این بود که وقتی تاریخ مک را تغییر دادم، Cursor حساب کاربری من را نشناخت و کار نکرد. وقتی تاریخ را به حالت خودکار (auto) برگرداندم، دوباره بهطور عادی کار کرد.
ویژگی تایمر
اضافهکردن یک تایمر مسواکزدن داخلی حس میشد که افزودنی فوقالعادهای برای Brush Tracker باشد. کاربران میتوانند بهراحتی یک جلسهٔ مسواکزدن را بهعنوان «تمامشده» علامتگذاری کنند یا همزمان با مسواکزدن از تایمر استفاده کنند.

برای پیادهسازی این ویژگی بهچند بار تلاش کردن نیاز داشتم تا به شکلی که مد نظرم بود برسد. میتوانید به سادگی به Cursor بگویید یک ویژگی اضافه کند، اما وقتی پرامپت را دقیق تنظیم کنید و دقیقاً آنچه میخواهید را توضیح دهید، عملکرد به مراتب بهتر میشود. پس از ارائهٔ دستورالعملهای واضح، Cursor معمولاً کار فوقالعادهای انجام میدهد.
ویژگی پاداش
میخواستم یک انگیزش اضافه برای کاربری که روزانه مسواک میزند، اضافه کنم. پس از اتمام جلسات، میتوانند روی «دریافت پاداش روزانه» بزنند و یک نقلقول کوتاه انگیزشی را ببینند. این یک جزئیات کوچک اما یادآوری خوشایند برای بهبود سلامت دندانها است.

در حین Vibe Coding میتوانید واقعاً یاد بگیرید
Cursor نه تنها کد را مینویسد، بلکه به شما در یادگیری نیز کمک میکند. وقتی سعی در افزودن ویژگی پاداش داشتم، ابتدا پیادهسازی درست نبود و بهدرستی کار نمیکرد.
من مشکل را برای Cursor شرح دادم و همان هم علت مشکل و راهحل آن را توضیح داد. در ادامه دو مثال از اینکه Cursor چگونه میتواند در مسیر یادگیری به شما کمک کند، آورده شده است:
مشکل این است که rewardQuote در اولین کلیک خالی است، چون تابع handleRewardTap() آن را تنظیم میکند، اما شیت بلافاصله نمایش داده میشود. باید اطمینان حاصل کنم که قبل از نشان دادن شیت، نقلقول تنظیم شده باشد.
مشکل حل شد! مشکل این بود که مقدار showReward را بلافاصله پس از تنظیم rewardQuote برابر true میکردیم، اما نمایش شیت در SwiftUI میتواند قبل از پردازش کامل بهروزرسانی وضعیت رخ دهد.
استفادهٔ مؤثرتر از Cursor
Cursor ابزاری عالی است، اما روشهایی برای بهرهوری بیشتر وجود دارد.
فرض کنید کد بهدرستی اجرا نمیشود یا با خطا مواجه میشود. اگر بخش مشکلدار را میدانید، آن را برجسته کنید و در چت اضافه کنید. این کار قطعاً برای Cursor اصلاح مشکل را آسانتر میکند.
در برنامه Brush Tracker، هنگام تنظیم اعلانها مشکلی داشتم. مشکل را تعریف کردم و از Cursor خواستیم اصلاحش کند. Cursor گفت که مشکل برطرف شده است، اما مشکل همچنان باقی ماند. سپس با بررسی تغییرات کد، جایی که مشکل رخ میداد پیدا کردم و آن بخش را به چت اضافه کردم.
Cursor آن را در تلاش بعدی اصلاح کرد: مشکل این است که onTapGesture بر روی Picker اعمال شده است، اما در SwiftUI، پیکرهای تقسیمبندی (segmented pickers) همیشه بهخوبی به لمسها واکنش نمیدهند چون خودشان دارای مدیریت داخلی برای ژستها هستند. Modifier onChange تنها زمانی فعال میشود که مقدار انتخابی بهطور واقعی تغییر کند، نه زمانی که همان مقدار دوباره لمس شود.
نکته دیگر قابل ذکر این است که درصد «Context Used» در Cursor بهطور خودکار زمینه مرتبط از کدهای شما را استخراج میکند، بنابراین نیازی به گفتن به آن نیست که از کدام فایلها استفاده کند. اما تاریخچهٔ چت شما نیز در این زمینه گنجانده میشود و گاهی شامل مشکلات قدیمی یا کدهای نامربوط میشود.
این شلوغی اضافی میتواند مصرف توکنها را افزایش دهد یا کارایی Cursor را کاهش دهد. وقتی درصد زمینهٔ استفاده شده افزایش مییابد، من تاریخچهٔ چت را پاک میکنم.
توزیع برنامه در App Store
پس از اتمام تست برنامه خود با استفاده از شبیهساز یا یک دستگاه فیزیکی (مثلاً آیفون شخصیتان)، زمان توزیع برنامه در App Store رسیده است تا دیگران بتوانند آن را ببینند (و امیدواریم استفاده کنند).
این فرآیند پیچیده نیست، اما جزئیات زیادی دارد که بهویژه برای اولین بار ممکن است زمانبر باشد. یک ویدئو در یوتیوب پیدا کردم که بهصورت گام به گام تمام مراحل را بهوضوح شرح میدهد.
پس از تکمیل تمام مراحل، برنامهام را برای بازبینی ارسال کردم. پس از تایید، ایمیلی از App Store Connect دریافت کردم که اطلاع داد برنامه آماده توزیع است.
شایان ذکر است که من هیچ ارتباط یا وابستگیای با ابزارهای هوش مصنوعی ذکر شده در این مقاله ندارم.
از مطالعهٔ شما سپاسگزارم! میتوانید Brush Tracker را در App Store ببینید. خوشحال میشوم اگر آن را امتحان کنید یا بازخوردی داشته باشید، از شما بشنوم.