فلاتر یا اندروید (Flutter vs Android)

Android vs Flutterدر این نوشته قصد دارم تصمیمی که در مورد مهم‌ترین دو‌راهی‌ حرفه‌م (توسعه نرم‌افزارهای موبایل) گرفتم رو با شما درمیان بذارم چون احساس می‌کنم خیلیا مثل من میان این دوراهی که توسعه Native و یا توسعه Cross platform نرم‌افزار‌های موبایل رو هدف قرار بدن و دنبال کنن، گیر کردن.در این نوشته به سوالات زیر پاسخ میدم:چرا فلاتر رو برای توسعه انتخاب کنم‌؟چرا Native (اندروید یا iOS) رو برای توسعه انتخاب کنم؟در این برهه زمانی کدوم رو انتخاب کنم؟تجربه کار با اندروید(Android) و فلاتر(Flutter) :من بیش از ۴ سال سابقه‌ی توسعه اندروید رو دارم و کمتر از یک‌ساله که فلاتر رو شروع کردم.توسعه اندروید رو با جاوا شروع کردم و ۲ ساله که اندروید رو با Kotlin توسعه ‌میدم.تا قبل از آشنایی با Flutter شدیدا مخالف پلتفرم‌های Cross platform بودم (دلیل :‌ دیدن خروجی‌های تجاری نه‌چندان مطلوبی که از پلتفرم‌هایی مثل Ionic و Xamarin ).با توصیه‌ی یکی از دوستانم فلاتر رو شروع کردم، پس از چند روز عاشقش شدم (می‌شید) چرا؟ چون خیلی چیزها رو تو دل خودش داره (مثل ActionBarها، انیمیشن‌ها و ...) مسائلی که پیاده‌ سازیش تو Android و iOS ساعت‌ها زمان ببره رو با Flutter کمتر از چند دقیقه‌ می‌شه پیاده سازی کرد.اپلیکیشن The History of Everything توسعه‌داده شده با Flutterدانلود نسخه اندروید دانلود نسخه iOSپس از پیاده‌سازی چندتا اپ تستی، مطالعه عمیق‌تر فلاتر و عضو بودن در یک تیم توسعه اپلیکیشن تجاری به این نتیجه رسیدم که واقعا فلاتر به اندازه کافی قدرتمنده و می‌تونه توی اکثر پروژه‌های تجاری انتخاب بهتری باشه.چرا فلاتر رو برای توسعه انتخاب کنم‌؟اصلی‌ترین برگه برنده‌ی فلاتر و سایر Cross platformها اینکه با یک Base Code (یک بار برنامه‌نویسی کردن) می‌تونید دو خروجی برای دو سیستم‌عامل اندروید و iOS داشته باشید.رقیب اصلی Flutter یعنی React native امروزه توسعه‌دهندگان زیادی رو به خودش جذب کرده و بازار کار مطلوبی در ایران و خارج از ایران داره. فلاتر در خیلی از مسائل فنی برتری محسوسی نسبت به ری‌اکت نیتیو از خودش نشون داده که می‌تونید اینجا در این باره مطالعه کنید.اگر قصد توسعه ایده‌های خودتون رو دارید و خدماتی که می‌خواید تو اون اپ ارائه بدید زیاد از پیچیدگی نرم‌افزاری بالایی برخوردار نیست (مثل نقشه، ارتباط اپ با سخت‌افزار)، فلاتر انتخاب درست‌تری به نظر میاد چون می‌تونید به تنهایی (و یا تیمی) در سریع‌ترین زمان نسخه خروجی به کاربراتون ارائه بدید(یکی از اصل‌های اثبات شده‌ی اعتبارسنجی ایده، اینکه در سریع‌ترین زمان و با مینیمال‌ترین امکانات اولین نسخه رو ارائه بدید که بازخورد جامعه هدف‌تون رو ببینید و نسبت به تحلیل اون بازخورد پیش برید).چرا Native (اندروید یا iOS) رو برای توسعه انتخاب کنم؟اصلی‌ترین برگه برنده‌ی توسعه‌ی Native انتشار اپلیکیشن‌هایی با نهایت Performance و همچنین دسترسی به تمامی امکانات سیستم‌عامل و ساختن نرم‌افزارهایی با پیچیدگی بالا می‌باشد.از دیگر نکات مثبت این حوزه می‌‌شه به جامعه‌ی توسعه‌ی قوی اشاره کرد که باعث شده بسیاری از ابزارها و کتاب‌خانه‌هایی توسط اعضای این جامعه توسعه داده شود، که فرآیند توسعه رو راحت‌تر و سریع‌تر می‌کنه.امروزه یکی از معیارهای غیرفنی توسعه‌دهندگان برای عدم انتخاب Flutter (ویا دیگر Cross platform ها) نبود (کم بودن) موقعیت‌های شغلی‌ مناسب است.در این برهه زمانی کدوم رو انتخاب کنم؟دلیلی که باعث شد این نوشته رو با شما به اشتراک بذارم همین سوال بود که هفته‌ها منو درگیر خودش کرده بود.برای من و یا افرادی مثل من که سال‌هاس توسعه‌دهنده‌ی Native هستند اومدن و رفتن (از بین رفتن) پلتفرم‌های جدید Cross platform با کلی تعریف و تمجید چیز جدیدی نیست به همین دلیل ،توسعه‌دهندگان Native سخت می‌تونن به طور کامل به این پلتفرم‌ها تغییر حرفه‌ بدن.برای من و یا افرادی مثل من که هدف حرفه‌ای‌شون در شرکت‌های بزرگ کار کردنه انتخاب فلاتر در این برهه زمانی، انتخاب ریسکی به نظر میاد، ریسکی که می‌تونه فوق‌العاده خوب یا بد، سرانجام داشته باشه.چراکه فلاتر بسیار قوی تا به امروز نشون داده و پیش‌بینی‌های مثبتی در مورد آینده این پلتفرم به‌گوش می‌رسه که اگر این پیش‌بینی‌ها درست از آب دربیاد به دلیل اینکه توسعه‌دهنده‌ی ارشد فلاتر بسیار کمه، توسعه‌دهنده‌ی ارشد(و یا نیمه ارشد) فلاتر به راحتی و با دستمزد بالا می‌تونه در شرکت‌های بزرگ کار کنه.ولی از اونجایی که از آینده خبر نداریم و Cross platform‌ها سابقه خوبی ندارن، احتمال Fail شدن و یا عدم استقبال زیاد از فلاتر دور از انتظار نیست.نتیجه شخصیبا این همه تفاسیر انتخاب واسه خودم واقعا سخت بود ولی سعی کردم بهترین انتخاب با توجه به تحقیقاتی که کردم انجام بدم.من تصمیم گرفتم حداقل تا یک‌سال آینده توسعه Native اندروید رو هدف قرار بدم و سعی کنم خودم رو حرفه‌ای تر، به‌روز تر نگه دارم چرا که فعلا در ایران (و حتی در خارج از ایران) موقعیت شغلی Native بیشتر و ادامه این تخصص انتخاب امن تریه.ولی قطعا توسعه‌ی فلاتر رو نادیده نمی‌گیرم و اخبارشو دنبال می‌کنم تا زمانی که خودشو ثابت کنه اون موقعه‌س که تصمیم می‌گیرم که به فلاتر تغییر حرفه بدم یا نه.نوشته بعدی‌ : در نوشته بعدی به لیستی از تخصص‌هایی که یک برنامه‌‌نویس ارشد Native اندروید در 2019 باید بلد باشه اشاره می‌کنم و سعی می‌کنم در حد توانم هر یک از آیتم‌های اون لیست رو اینجا در ویرگول باهاتون به اشتراک بذارم.لطفا نظراتتون رو با من در زیر این پست به اشتراک بذارید و بهم بگید تا چه حد با نظر و تحلیل بنده موافقید و اگه مطلبی می‌تونید به این نوشته اضافه کنید خوش‌حال می‌شم به اشتراک بذارید.