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

ایده و آماده سازی برای کار
در گذشته، من پروژهای را شروع کردم که اساساً یک لایه میانافزار (Shim) بود که YouTube Music را به API OpenSubsonic متصل میکرد. به طور خلاصه، OpenSubsonic یک گره نرمافزاری عالی است که سرورهای پخش موسیقی را از برنامههایی که آنها را اجرا میکنند جدا میکند و به شما امکان میدهد میکس مورد نظر خود را انتخاب کنید. من شخصاً ترجیح میدهم از Navidrome به عنوان سرور، Feishin در رایانههای شخصی و Symfonium در اندروید استفاده کنم. ایده این بود که YouTube Music با این API سازگار باشد تا بتوانم آن را در هر یک از برنامههای مورد علاقهام ادغام کنم. در حالی که راهاندازی اولیه پخش با استفاده از ytmusicapi و yt-dlp آسان بود، پیادهسازی تمام عملکردهای لازم خستهکننده بود و طبق معمول، پروژههای جدید توجه من را جلب کردند.

خوشبختانه، این پروژه استریمینگ خیلی پیچیده نبود و مشخصات واضحی برای دنبال کردن داشت که آن را برای آزمایش برنامهنویسی با کمک هوش مصنوعی ایدهآل میکرد. من تصمیم گرفتم Cloud Code (مدل Opus 4.6) را با استفاده از 50 دلار اعتبار رایگان برای ساخت پروژه از ابتدا آزمایش کنم. من محیط را با استفاده از FastAPI و Pydantic راهاندازی کردم و فایل مشخصات OpenAPI شرکت OpenSubsonic و همچنین یک فایل CLAUDE.md حاوی دستورالعملهای دقیق، مانند استفاده از جدیدترین فناوریهای Pydantic و نوشتن تستهای واحد حرفهای، را در اختیار Cloud قرار دادم تا از تکرار اشتباهات رایج جلوگیری شود.
ساخت نسخه اولیه (MVP)
با آماده شدن همه چیز، اجازه دادم کلود رهبری را به دست بگیرد. این فرآیند شامل رفتن به حالت برنامهریزی، درخواست از او برای تکمیل مرحله بعدی، بررسی و اصلاح طرح و سپس دادن منابع به او برای عیبیابی در صورت مواجهه با موانع بود. اولین درخواست من سرراست بود: «به فایل openapi.json نگاهی بیندازید. سروری با استفاده از fastapi پیادهسازی کنید که stubهایی را برای تمام توابع مورد نیاز تنظیم کند و فقط روی مسیرهای JSON مدرن تمرکز کند.»

حتی با وجود مشخصات واضح، کلود در ابتدا چند خطا داشت، اما در تلاش دوم موفق به اصلاح آنها شد. قدم بزرگ بعدی درخواست اتصال به برنامه، جستجوی آهنگ و پخش آن بود. من به سرعت به یک پیادهسازی منطقی رسیدم، اما هنگام تلاش برای اتصال واقعی به برنامه Feishin، با مشکل مواجه شد. اینجاست که تکرار و تنظیم به کار آمد؛ برنامه را اجرا کردم و گزارشهای خطا را به کلود کد ارسال کردم. به طرز شگفتانگیزی، پس از چند تکرار، واقعاً داشتم به پخش موسیقی از طریق Feishin گوش میدادم! مانع اصلی، برگرداندن پاسخهای خالی اما با ساختار مناسب به جای هیچ پاسخی بود.
کارهای نهایی و خسته کننده
دریافت نسخه اولیه بخش آسان کار بود، اما چالش واقعی، انجام وظایف خستهکننده و طاقتفرسا (بخش طولانی) قابل استفاده کردن پروژه بود. رابط کاربری OpenSubsonic تقریباً شامل ۸۰ آهنگ است که به ۱۵ دسته تقسیم شدهاند. برای اطمینان از اینکه سرور من با ظرفیت کامل کار میکند، از هوش مصنوعی برای پیادهسازی یک سیستم ذخیرهسازی ساده استفاده کردم تا از تجاوز از محدودیتهای API یوتیوب جلوگیری شود و از پایگاههای داده SQLite برای ذخیره فرادادههای موسیقی استفاده کردم.

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

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



7 نظر