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