آنچه آرزو می کنم هنگام شروع یادگیری توسعه اندروید، بدانم.

این نکات، پیشرفت و یادگیری من به عنوان یک توسعه دهنده اندروید را بسیار سرعت بخشید.این بسیار دلهره آور بود وقتی که من سفر خودم را برای تبدیل شدن به یک توسعه دهنده اندروید، با تعداد زیادی از مسیرهایی که باید طی می کردم برای یادگیری، که کدام یک از زبان های برنامه نویسی را یاد بگیرم یا بهترین روش ها و نحوه ایجاد معماری برنامه تمیز چگونه است، اما شروع کردم. من درگیر تلاش برای یادگیری هر چه بیشتر بودم، همگی در یک زمان، زیرا نمی دانستم چه چیزی باید مطالعه کنم تا به جایی که می خواستم برسم. ای کاش کسی فقط کسی به من می گفت که تمرکز من برای یادگیری باید روی چه چیزی باشد.خوب، من اینجا هستم که شکستش بدم تا مفاهیم و کانون های اصلی را که به یادگیری من کمک زیادی کرده است تا به یک توسعه دهنده بهتر اندروید تبدیل شوید و در زمینه آموزش و پرورش این زمینه باید در چه بخش هایی تمرکز کنید، کمکتان کنم.اما کدام زبان برنامه نویسی ؟با وجود بسیاری از زبان های برنامه نویسی، مانند: جاوا یا کاتلین برای توسعه نیتیو (1) یا ری اکت (2) و فلاتر (3) برای توسعه کراس پلتفرم (4)، ممکن است در مورد اینکه از کجا شروع کنیم بسیار گیج کننده باشد. بیایید شروع کنیم برای هر کسی که می خواهد فقط به توسعه اندروید نیتیو بپردازد، جاوا برای شروع یک ضرورت است. این می تواند یک زبان طولانی و پیچیده باشد. با این وجود، برنامه نویسی شی گرا (OOP) از مهارت های حیاتی برنامه نویسی است که این قدرت را به شما می دهد برای هر برنامه ای که می خواهید توسعه دهید و بسیار مهم است. همچنین قابلیت انعطاف پذیری بسیار بیشتری دارد که به شما این امکان را می دهد به جای توسعه اندروید، زمینه مورد علاقه دیگری را انتخاب کنید، اگر بعداً تغییر عقیده نسبت به این نوع برنامه ها بدهید.اگرچه اکنون دانستن جاوا کافی نیست، اما با به روزرسانی های مداوم و ویژگی های اضافی که گوگل به کاتلین اضافه می کند، یادگیری این زبان اکنون یک ضرورت است، اما جای نگرانی نیست، پس از مهارت در جاوا، به راحتی تغییرات سینتکس (5) را برای کاتلین و تسلط بر تمام ویژگی های اضافی آن انتخاب خواهید کرد. کاتلین به زبان برنامه نویسی بهینه تری برای توسعه اندروید تبدیل شده است، که به شما این امکان را می دهد کدهای بسیار کمتری بنویسید، در حالی که برنامه های کامل و پر از ویژگی را ایجاد می کنید. همچنین از آخرین به روزرسانی ها کاملاً آشکار شده است و گوگل نشان می دهد که اکنون سعی دارد فقط با استفاده از کاتلین در مقایسه با جاوا، فقط بر روی توسعه اندروید با کاتلین تمرکز کند.اما اگر می خواهید در یک شرکت از قبل تاسیس شده استخدام شوید، که آنها قطعاً بر روی جاوا کار خواهند کرد، شاید با اضافه شدن برخی از کد کاتلین به دلیل جایگزینی آن ها رو به رو شوید: با این حال ، شرکت های نوپای جدید ممکن است از همان ابتدا مستقیماً از کاتلین استفاده کنند. از این رو دانستن هر دو زبان به شما مزیت بزرگی در زمینه اشتغال می بخشد.از کدام معماری اندروید استفاده کنید ؟همانند تمام جنبه های توسعه نرم افزار، هرگز یک پاسخ درست وجود ندارد، و همچنین می توان گفت که برای چه قابلیتی می خواهید برنامه خود را روی آن ایجاد کنید. با این حال، محبوب ترین انتخاب استفاده از الگوی طراحی Model-View-ViewModel)MVVM) است. این الگو بدون دردسر با کلاس های Activity و Fragment شما ادغام می شود، همچنین منطق کسب و کار و کد شما را از منطق یو آی جدا می کند، همچنین آزمایش و نگهداری برنامه شما را نیز بسیار آسان تر می کند.استفاده از کلاس های Observer و LiveData به یک برنامه اجازه می دهد تا تغییرات پیکربندی از صفحه باقی بماند مانند چرخش صفحه، که به طور معمول فعالیتی که انجام می دهید، دوباره شروع شود. در عوض، تمام داده های کاربر که ممکن است وارد کرده باشد ذخیره می شود و در یک قسمت متن برای تجربه کاربر راحت تر نمایش داده می شود.الگوی MVVM همچنین به طور یکپارچه با یک پایگاه داده کتابخانه اتاق پرسیستنس (6) کار می کند، و حتی می توانید به آن کلاس های ریپازیتوری (7) را اضافه کنید تا کار با سوالات پایگاه داده بسیار تمیز تر شود.آیا شما باید در طراحی یو آی (UI) مهارت داشته باشید؟شما در طراحی یو آی (8) نرم افزار زیبا، نیازی به حرفه ای بودن ندارید. با این حال، شما باید اصول و چگونگی ایجاد جذابیت یک برنامه ساده را بدانید. شاید فکر کنید که ظاهر و طراحی کلی برنامه ها در طول توسعه مهم نیستند، اما در روند توسعه بسیار حیاتی هستند.یک رابط کاربری خوب و بدون سر و صدا برای هر برنامه شخصی یا تجاری ضروری است. شما می خواهید کاربران از استفاده از برنامه لذت ببرند. اگر استفاده از آن دشوار باشد، مردم دیگر از آن استفاده نخواهند کرد. اگر به نظر وحشتناک بیاید، مردم دیگر از آن استفاده نمی کنند. حتی اگر این برنامه ها برای نمونه کارتان است باید برای نشان دادن کارفرمایان بالقوه مناسب باشد،زیرا آنها همان روند فکر را دارند. در حالی که اگر بتوانید هرکسی را که از این برنامه استفاده می کند تحت تأثیر قرار دهید که درگیر آن شود، به احتمال زیاد به استفاده از آن ادامه می دهد و برای کارفرمایان، این نیز نشان می دهد که شما درک خوبی از مولفه های یو آی دارید.سه پیشرفت ساده در مهارت های یو آی شما شامل : استفاده از رنگ هایی است که به خوبی با یکدیگر ترکیب می شوند. که تعداد زیادی از جمع کننده های رنگ در این امر کمک می کنند و رنگ های مکمل آن را انتخاب می کنند. همچنین یک جای مناسب برای شروع طراحی متریال (9) است. ثانیا، اطمینان حاصل کنید که عناصر یو آی به طور مساوی توزیع شده اند، از پدینگ و حاشیه های مشابه در کل استفاده کنید. در آخر، توجه خود را به قسمت های اصلی هر صفحه جلب کنید. اگر در یک صفحه عنوان دارید، آن را برجسته کنید، اندازه را افزایش دهید و به یک قلم پررنگ تغییر دهید، همه متن های صفحه را یکسان نشان ندهید. در غیر این صورت، تشخیص اینکه کانون آن صفحه کجاست دشوار است.توسعه نیتیو یا کراس پلت فرم؟همه ی این موضوع به انواع برنامه هایی که می خواهید ایجاد کنید بستگی دارد. توسعه نیتیو به مراتب بیشتر مورد تقاضا است بنابراین پیدا کردن شغل بسیار آسان تر است. عامل ناشناخته این است که آیا فلاتر همچنان به بهبود و افزایش محبوبیت خود ادامه می دهد ؟ با فلاتر، شما زبان برنامه نویسی را به سرعت می آموزید، بنابراین در صورتی که 10 سال دیگر فلاتر دیگر وجود نداشته باشد، در مقایسه دیگر با تمرکز بر یادگیری و توسعه نیتیو که در آن شما می توانید بعد از حرفه ای شدن در این مهارت، به ویژه در جاوا، در زمینه ها و مناطقی دیگر مانند توسعه دات‌نت برنامه های وب و یا همچنین با استفاده از فریم ورک (10) اسپرینگ (11) توسعه وب را انجام دهید.نه اینکه بگوییم فلاتر مزایای خود را ندارد، نکات مثبت و منفی در آن وجود دارد که مطالعه بیشتر به شما کمک می کند تصمیم بگیرید که می خواهید در کدام قسمت تمرکز کنید. اگر برنامه ای داشته باشید که واقعاً می خواهید آن را بسازید، فلاتر نیز عالی است، زیرا پیچیدگی یادگیری این فریم ورک کم است و به شما اجازه می دهد برنامه خود را هم در فروشگاه گوگل پلی و هم در اپ استور اپل منتشر کنید.خلاصه :جاوا و کاتلین هر دو ضروری هستند. اما توصیه میکنم با جاوا شروع کنید زیرا یادگیری کاتلین بعد از جاوا بسیار آسان تر از جاوا پس از کاتلین است.معماری MVVM محبوب ترین الگوی طراحی برای یادگیری برای اندروید است. از اینجا به بعد به راحتی می توانید الگوهای دیگری مانند MVP و MVI را بیاموزید.اگر می خواهید هر کاربری را با برنامه خود درگیر کنید، پیشرفت های ساده یو آی ضروری است. برای کمک به انتخاب موضوع خود، یک فرد آشنا با طراحی بصری را پیدا کنید، اطمینان حاصل کنید که تمرکز در قسمت برنامه مورد نظر شما با استفاده از تغییر در رنگ ، اندازه متن یا وزن قلم برجسته شده و کاربر پسند شده است.اگر زود تصمیم بگیرید که می خواهید برنامه های نیتیو اندروید را بسازید یا برنامه های کراس پلتفرم را بسازید، به شما کمک می کند، زیرا تلاش برای یادگیری همزمان زمینه های کاملاً مختلف دشوار است و پیشرفت شما را به شدت کند می کند.این ها مناطق کلیدی ای هستند که ای کاش وقتی سفر به توسعه اندروید خود را آغاز می کردم، آنها را می شناختم. این باعث می شود که من وقت و تلاش زیادی را در یادگیری صرفه جویی کنم زیرا بیشتر از اینکه بخواهم چیزهای کوچکتر یا جدیدترین کتابخانه ها را بیاموزم، روی حوزه های مهم تمرکز می کردم. امیدوارم این به شما کمک کند تا اهداف توسعه برنامه خود را بدست آورید و از مطالعه شما تشکر می کنم.آرزو می کنید از ابتدا چه چیز هایی را می دانستید؟راهنمای کلمات تخصصی :شماره 1: Native (بومی) : اپلیکیشن های نیتیو معمولا با سوویفت و آبجیکتیو سی برای Apple ios و جاوا برای اندروید ساخته میشوند . و پرفرمنس بهتری در رندر کردن و انیمیشن ها دارند .شماره 2: React : فریم‌ورکی برای جاوا اسکریپت است.شماره 3: Flutter : یک فریم ورک متن باز برای ساخت اپلیکیشن‌های موبایل است. این کتابخانه توسط شرکت گوگل در سال 2017 معرفی شد.شماره 4: cross-platform (چند سکویی - چند پلتفرمی) : در اصطلاح نرم‌افزارهای رایانه، به آن دسته از نرم‌افزارها گفته می‌شود که در چندین سکوی رایانه‌ای قابل اجرا هستند. این نرم‌افزارها در دو دسته کلی قرار می‌گیرند.شماره 5: Syntax (نحو) : به معنای نحوه نگارش و قرارگیری کلمات و عبارات به صورت درست، در یک زبان می باشد. در علم کامپیوتر، سینتکس یک زبان کامپیوتری، مجموعه ای از قوانین می باشد که نحوه قرارگیری و ترکیب کلمات، نشانه ها و علایم یک زبان را به صورتی که معنای درستی بدهند مشخص می کند.شماره 6: Persistence (ماندگاری) : یکی از رایج ترین اسکریپت های مترپرتر که به منظور حفظ دسترسی پس از بکارگیری یک سیستم استفاده می شود، ماژول Persistence می باشد.شماره 7: Repository (مخزن) : به طور کلی بعد از سپری شدن سالیان متمادی برنامه نویسان یادگرفته اند برای کاهش کد های زائد خود تدابیر خاصی بیندیشند و تمام تلاش خود را صرف این نمایند که با نوشتن کمتر کد در برنامه خود بیشترین بازده را از برنامه ها طلب نمایند. بعد از به وجود آمدن برنامه نویسی شی گرا برنامه نویسی وارد مرحله تازه ای شد به خصوص بعد از معرفی نسل جدید معماری برنامه نویسی سمت وب MVC دیگر کمتر شرکت آینده نگری را یافت خواهید کرد که از معماری MVC استفاده نکند.در این معماری از الگویی به نام ریپازیتوری استفاده می شود.شماره 8: UI (واسط کاربری) : مخفف کلمه User interface است و به ظاهر و یا هر چیزی که در صفحه نمایش (یا همان ظاهر سایت و برنامه شما) می باشد گفته میشود، که شامل تصاویر، متن ها، دیاگرام ها، ماژول ها، جداول، ویدئوها و همچنین رنگ و مکان آن ها می باشد.شماره 9: Material Designs (طراحی متریال) : Material Design سبک یا زبانی جدید در طراحی است که گوگل در یکی از کنفرانس های خبری خود در سال 2014 اونو معرفی و روانه بازار کرده است. این سبک طراحی در بیشتر زبان های برنامه نویسی حرف اول رو میزنه و حتی شرکت های وجود دارند که قالب هایی به عنوان متریال دیزاین به فروش می رسانند.شماره 10: Framework : فریم‌ورک در لغت به معنی "چارچوب" است و منظور از فریم‌ورک نرم افزاری، قابلیتی است که معمولا با کمک گرفتن از مجموعه ای ازدستورالعمل ها، کتابخانه ها، رابط کاربری، کلاس ها و در کل امکانات فراهم شده از جانب یک نرم افزار یا یک زبان برنامه نویسی، ساختاری جدید ایجاد می کند تا به کارگیری آن نرم افزار یا زبان برنامه نویسی در راستای اهداف ایجاد فریم ورک، ساده تر و نتیجه با سهولت بیشتری محقق گرددشماره 11: Spring : یک چارچوب نرم‌افزاری و مدیر وارونگی کنترل متن‌باز برای جاوا است.امیدوارم مطالعه این مطلب براتون مفید بوده باشه.