نقشه راه (roadmap) برنامه نویسی اندروید

سلام به همگی.من چند روزی هست که با ویرگول آشنا شدم و متن های خوبی پیدا کردم داخلش و لذت بردم، تصمیم گرفتم خودم هم چیزی که چند وقتیه تو فکر نوشتنش بودم را اینجا منتشر کنم.ابتدا خودم را معرفی کنم صرفا جهت اینکه وقتی ادامه متن را می‌خوانید، دید داشته باشید نسبت به اینکه من در چه جایگاهی این متن را نوشتم.من علیرضا عبیری، دانشجوی کارشناسی دانشگاه صنعتی شیراز ورودی سال ۹۶ هستم و حدود یک سال و نیم هست که برنامه نویس موبایل هستم. از این جهت تصمیم به نوشتن این مطلب گرفتم که سورس های خوبی که به یادگیریم کمک کردن را فراموش نکردم و احتمالا بیشتر می‌توانم به کسی که تازه تصمیم به شروع گرفته کمک کنم. همانطوری که احتمالا اطلاع دارید، مسیر یادگیری اندروید خطی نیست و Roadmap های زیادی هم براش توی اینترنت نیست. documentation هم همیشه انتخاب خوبی برای یادگیری نیست چون مطالب سنگینی داخلش هست و خوندنش می‌تواند منجر به سردرگمی بشه. به هر حال لینک داکیومنتیشن گوگل رو می‌گذارم اینجا بعضی وقت ها به درد می‌خوره.https://developer.android.com/docsقبل از اینکه شروع کنیم، یه توضیحی بدم راجع به اینکه چجوری باید این مسیر رو پیش ببرید. در کل مسیر یادگیری اندروید مسیر راحتی نیست، سخت هم نیست :دی. از این جهت که یک شبه نمی‌رسید به آخرش، باید تلاش کنید و شب و روز پیگیرش باشید. اینترنت رو زیر و رو کنید و از این حرفا.مواردی که نوشتم بعضی هاش رو ممکنه گیر کنید یه جاهایی، راحت تر باشید اول برید سراغ مورد بعد که این ها رو توی طول مسیر خودتون کم کم حس می‌کنید.سعی کنید با افرادی که توی شرکت های مختلف هم اندروید میزنن ارتباط داشته باشین، خیلی تاثیر داره این ارتباط ها.در نهایت هم سعی کنید پروژه هایی که روی گیت هاب هست رو clone کنید، نحوه کدنویسی افراد و بررسی کنید (به خصوص برای یادگیری معماری های مختلف) و وقتی به درجه خوبی رسیدید مشارکت کنید در پروژه ها.رفرنس های یادگیری رو هم نوشتم پایین تر.بریم سراغ مسیر یادگیری:۱- در ابتدا شما باید مفاهیم ابتدایی java رو یاد بگیرید، بعد برید سراغ برنامه نویسی شی گرا در جاوا و استفاده از جاوا رو در محیط اندروید استودیو یاد بگیرید. بعد هم برید سراغ کاتلین که الان به عنوان زبان اول برای برنامه نویسی اندروید هست.۲- بعد یکم کار با ابزار های اندروید استودیو رو یاد بگیرید و راجع به xml بخونید.۳- کامپوننت های مهم برنامه رو مطالعه کنید:راجع به Activity ها و چرخه حیات اکتیویتی (Activity Lifecycle) بخونید. همچنین راجع به task ها و backstack بخونید تا بفهمید اندروید برنامه ها رو چجوری مدیریت میکنه.درباره Intent، Servicesو Broadcast Receiver مطالعه کنید. در وهله اول یه دید کلی نسبت به Services و Broadcast Receiver داشته باشید کافیه. ولی روی Intent یکم دقیق تر بشین.۴- توی اندروید استودیو با کامپوننت های User Interface (مثل ToolBar, ActionBar,EditText, ...) و با Layout های مختلف به خصوص Constraint Layout کار کنید. همچنین درباره Fragment ها و کاربردشون حتما مطالعه کنید.۵- روش های ذخیره سازی دیتا را مطالعه کنید و کار با SQLite را یاد بگیرید.۶- مفاهیم شبکه و Rest Api رو مطالعه کنید. (نحوه کار پروتکل های https, http را حتما یاد بگیرید و با متد های get , post آشنا باشید).۷- دیباگ کردن رو یاد بگیرید.۸- درباره Garbage Collection و Memory Leak ها حتما مطالعه کنید. در بهینه سازی سرعت برنامه به شما خیلی کمک میکنه.۹- درباره ساختمان داده ها و اینکه کجا از کدام ساختمان داده استفاده کنید مطالعه کنید.۱۰- کار با کتابخانه های مهم رو یادبگیرید. (Retrofit, Butterknife, Glide, Moshi, Gson, ...)۱۱- معماری های مختلف رو یاد بگیرید. برای اینکه بتونید مقیاس برنامه خودتون رو بزرگ تر کنید و گسترش بدید، نیاز به آشنایی با معماری هایی مثل MVP, MVVM, Clean دارید.۱۲- درباره کتابخانه RxJava, RxAndroid حتما حتما مطالعه کنید (بلد بودن RxJava این روزا الزامیه برای برنامه نویسی اندروید).۱۳- تزریق وابستگی (Dependency Injection) رو یاد بگیرید (Dagger).۱۴- نوشتن تست رو یاد بگیرید (Junit, Mockito, Robolectric, Espresso, ...).۱۵- درباره Android Jetpack و Architecture Component ها مطالعه کنید.۱۶- در نهایت سعی کنید که Google i/o ها رو دنبال کنید و برنامه هاتون رو بروز کنید. رفرنس ها:رفرنس هایی که گذاشتم اکثر گزینه های بالا رو کاور میکنه:https://guides.codepath.com/androidhttps://codinginflow.com/tutorials/androidhttps://codingwithmitch.com/https://www.youtube.com/channel/UCoNZZLhPuuRteu02rh7bzswhttps://www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDghttps://www.vogella.com/tutorials/android.htmlقدم بعدی:در قدم بعد اگر علاقه دارید برین سراغ زبان های Hybrid مثل React Native و Flutter.سخن پایانی:ممنونم که وقت گذاشتید و مطالعه کردید، امیدوارم تونسته باشم کمکی کرده باشم.