سلام. من احسانم. چند سالی سابقه توسعه اپلیکیشن ها و کتابخونه های اندروید ( نیتیو ) دارم. مدتیه تصمیم گرفتم این حوزه رو رها کنم و بک اند دولوپر بشم. در این پست مقایسه ای بین توسعه اندروید و بک اند انجام میدیم
فرضیات
یه اندروید دولوپر باید با سرور ارتباط بهینه و درست داشته باشه. المان های گرافیکی صفحه ها رو همون طوری که ازش خواسته شده دقیق پیاده کنه. طوری که تو صفحه نمایش با سایز های مختلف خراب نشه. باید حواسش به مصرف باتری و پرفورمنس اپ باشه. امنیت اپ هم مهمه.....
یه بک اند دولوپر باید حواسش باشه سیستمش سریع جواب بده. سیستمش امن باشه. همیشه بالا باشه. دیتابیس رو اصولی طراحی کنه. با سرویس های دیگه ارتباط درستی داشته باشه.....
اما
بعد از مقدمه میرسیم به دلایل من
صادق باشیم. هدف نهایی اپلیکیشن در ۹۹٪ موارد نمایش دیتاهاییه که از سرور میگیره. ولی وظیفه سرور تولید و نگهداری دیتاهاست. ترجیح من اینه که در تولید و مدیریت دیتا نقش داشته باشم تا ارسال و دریافت اون ها
یک اپلیکیشن اندروید خیلی پیشنیاز ها لازم داره. مثلا من اگه امروز تصمیم بگیرم یه اپ جدید بنویسم نمیتونم. یا اگر بتونم نتیجه مطلوبی حاصل نمیشه. من که خودم بی سلیقم! باید یکی UI UX برنامه رو طراحی کنه. یکی هم سمت سرور قضیه رو مدیریت کنه. ولی سمت سرور این دست و پا گیری ها رو نداره. شما میتونی خودت با ایده خودت یه سرور(در حد ساده برای ابتدای کار) بیاری بالا. که مصرف کننده نهایی میتونه ازش استفاده کنه. ولی رسوندن اپلیکیشن اندروید به دست مصرف کننده نهایی بیشتر زمان میبره.
در اندروید (نیتیو) تقریبا همه چی مشخصه. شما باید از زبون جاوا یا کاتلین استفاده کنی. ولی برای بک اند دستت خیلی باز تره. بی نهایت زبون و فریم ورک هست که میتونی با توجه به نیازت ازشون استفاده کنی. من این آزادی عمل رو بیشتر میپسندم.
در ادامه بالا تقریبا همه نیاز های یه اپ از طریق کامیونیتی گوگل تامین شده. مثلا برای امنیت برنامه گوگل سرویسی ارایه کرده. برای جلوگیری از مهندسی معکوس سرویسی داده. در ۹۹٪ موارد این سرویس های آماده کار رو راه میاندازند. مگر اینکه یه اپ خیلی خاص و enterprise باشه. ولی در سمت سرور مثلا برای امنیت سیستم باید خودت فرایند هایی رو تعریف کنی. یا بهتر بگم به همین راحتی نمیشه از ابزار های آماده استفاده کرد. نیاز به کمی تغییر و خلاقیت هست. این رو من بیشتر میپسندم. گوگل حتی برای نحوه کد نویسی هم ملاک هایی قرار داده. مثل پترن mvvm. ولی سمت سرور دست آدم خیلی باز تره. نمیگم خوبه یا بد. من آزادی عمل رو بیشتر ترجیح میدم
من آدمی هستم که لاجیک و منطق رو بیشتر و بهتر درک میکنم تا ظاهر رو. و برام جذاب تره. برای همین صرف کردن وقت برای ایجاد یک صفحه اپ اندروید ( با XML ) یا کلنجار رفتن با المان های گرافیکی برای من خیلی سخته!