جزوات و نت بردایهای من از دورههای ICT بیشتر در t.me/ICT_NoteTaking
راه و رسم یادگیری برنامه نویسی اندروید
پست امروز برای افرادی است که تازه شروع به یادگیری برنامه نویسی اندروید کردهاند یا افرادی که دنبال افزایش سطح مهارتهایشان هستند. سعی میکنیم منابع خوبی برای این منظور معرفی کنیم. مطالب را در دو بخش تنظیم کردهایم تا هر کس به فراخور نیازهایش مطالعه کند.
آغاز راه برای نورسیدهها
فراگیری پیشنیازهای لازم
زبان برنامه نویسی اندروید جاوا است. اگرچه کاتلین هم به صورت رسمی توسط گوگل پشتیبانی میشود و خیلی از افراد در حال سوئیچ کردن به آن هستند اما کماکان جاوا در قلب برنامه نویسی اندروید جای گرفته است. اولین نکتهای که در یادگیری جاوا یا هر زبان دیگری باید مد نظر داشته باشید این است که تا حد امکان منابع فارسی نخوانید. زبان کامپیوتر انگلیسی است و حتی بهترین ترجمهها هم اصطلاحات را آنطور که باید منتقل نمیکنند. این موضوع چیزی نیست که به مهارت مترجم یا نویسنده ربط داشته باشد. برای بعضی از کلمات هنوز که هنوز است معادلهای فارسی همهپسندی پیدا نشده است. به همین خاطر در بسیاری از گفتگوهای فنی، پادکستها و مستندات فارسی اغلب اصطلاحات انگلیسی را میشنوید تا معادلهای فارسی. مثلاً کلمۀ Performance در بیشتر مواقع همان پرفرمنس خطاب میشود و کمتر به مواردی مثل «کارایی» یا «عملکرد» اشاره میشود.
اگر هیچ چیزی از زبان انگلیسی بلد نیستید، برای شروع کار و روی غلطک افتادن، مطالعۀ یکی دو ترجمۀ خوب مجاز است ولی بیشتر از آن صلاح نیست. شما بالاخره به نقطهای خواهید رسید که به منابع انگلیسی نیاز پیدا میکنید. توصیه میکنیم بخشی از زمان روزانۀ خود را به زبان انگلیسی اختصاص دهید. البته لازم نیست داستانهای انگلیسی بخوانید؛ کتابهای برنامه نویسی محبوب را دانلود و با یک دیکشنری خوب مثلاً Qtranslate برای ویندوز یا Google Translator برای اندروید شروع به مطالعه کنید. بله در شروع کار که هیچ چیزی بلد نیستید کار اندکی دشوار است ولی به مرور زمان که جلو میروید اصطلاحات و کلمات حوزۀ برنامهنویسی دستتان میآید. خیلی عجله نکنید، اولویت را به یادگیری زبان بدهید چون محال است در برنامه نویسی به جایی برسید بی آنکه زبان انگلیسی بلد باشید.
برای یادگیری جاوا کتابهای خوبی وجود دارد که با جستجوی سادهای در اینترنت میتوانید دانلود کنید. لیست پرفروشترین کتابهای جاوا در آمازون نقطۀ خوبی برای شروع است. میتوانید روی جلد کتاب کلیک کنید و بعد از خواندن بخشهای از آن و بررسی نظرات و امتیاز کاربران اقدام به دانلود کتابها کنید. برای دانلود کتابها میتوانید به it-ebook مراجعه کنید که منبعی غنی برای دریافت کتابهای برنامه نویسی است. پیشنهاد میکنیم اگر زبان انگلیسیتان ضعیف است به سادگی نگارش کتاب هم توجه داشته باشد. ضمناً در شروع کار با کتابهای قطور شروع نکنید. برخلاف نظر خیلی از افراد، کتابهای یادگیری برنامه نویسی در ۲۴ ساعت یا یک روز شروع خوبی برای شما هستند. این حرف که در ۲۴ ساعت نمیتوان چیزی یاد گرفت درست است ولی یک فرد مبتدی در شروع کار فقط میخواهد مزمزه کند و غرق در هزاران صفحه کتاب نشود. کمی که راه افتادید، مطالعۀ کتاب Head First Java را پیشنهاد میکنیم. خوبی سری کتابهای Head First این است که نثر ساده و شیوایی دارد و با تصاویر و مثالهای جالب، مفاهیم لازم را به زبان ساده یاد میدهند.
اگر قدرت شنیداری خوبی دارید، دیدن کانالهای فراوانی که در یوتیوب مثل این برای آموزش جاوا تاسیس شدهاند خالی از لطف نیست. ویژگی خوب ویدیو این است که از زیادهگویی پرهیز شده و معمولاً در انتهای هر ویدیو به یک هدف خاص میرسید. ذهن انسان با مثالهای بصری ارتباط بهتری برقرار میکند. البته انتخاب کتاب یا ویدیو به خصوصیت و سلایق ما هم بر میگردد. برخیها از طریق مطالعۀ کتاب بیشتر از دیدن ویدیو بهره میبرند و برخی دیگر بالعکس. به هر حال سلیقۀ شما هر چه باشد منابع خوبی در اینترنت وجود دارد. ضمناً به این موضوع هم توجه داشته باشید که خیلی غرق در زبان جاوا نشوید. همین که با ساختارهای اصلی این زبان آشنا شدید و چند پروژۀ کوچک نوشتید کفایت میکند. مابقی یادگیری را در محیط اندروید استودیو روی پروژههای اندرویدی ادامه دهید.
یادگیری مقدمات برنامه نویسی اندروید
اکنون که پیش نیازهای لازم را پاس کردید میتوانید استارت برنامه نویسی اندروید را بزنید. مجددا اینجا هم میتوانید با جستجویی در آمازون و اینترنت بهترین کتابهای برنامه نویسی اندروید را پیدا کنید. به عنوان مثال یکی از کتابهای خوب در این زمینه Android Big Nerd Ranch Guide است که به شکل مفهومی به آموزش توسعۀ اندروید پراخته است. مرجع رسمی آموزش گوگل هم عالی است. اگر حوصلۀ کتاب خواندن نداشتید ویدیوهای خوبی در یوتیوب و Udacity وجود دارد که با تماشای آنها بخش عمدهای از مفاهیم برنامه نویسی اندروید را فرا خواهید گرفت. در پایان این مرحله باید کار با اندروید استودیو را یاد گرفته باشید. بدانید چطور اشکالیزدایی کنید. شیوۀ استفاده از Logcat را بلد باشید. همچنین درک خوبی از چرخۀ حیات اکتیویتی، فرگمنتها، ناوبری صفحه، View Pager، نوتیفیکیشنها، RecyclerViewer، SharedPreference، مفهوم Context، دیالوگها، مقدماتی از چند نخی، سرویسها و … داشته باشید. مشکل توسعهدهندگان جوان این است که در همین مرحله توقف میکنند و برای افزایش مهارتها تلاش نمیکنند. این کار اشتباه است. در بخش بعدی مهارتهای دیگری که باید یاد بگیرید را معرفی میکنیم.
بهبود سطح مهارتها
بعد از یادگیری مقدمات برنامه نویسی اندروید اکنون زمان قدم نهادن در مفاهیم سطح بالاتری است که قطعاً در پروژههای خود به آن نیاز پیدا میکنید. تمام مواردی که در ادامه فهرست کردهایم لازم ولی کافی نیستند. در واقع اینها ماحصل تجربیات ما در این حوزه هستند و لزوماً تمام آن چیزی نیست که باید یاد بگیرید. قطعاً مفاهیم بسیار بیشتری هستند که به مرور خودتان با آنها آشنا خواهید شد.
- معماری MVP و MVVM؛
- آشنایی با الگویهای معماری
- استاندادها و شیوهنامههای کدنویسی اندروید؛
- طراحی متریال؛
- آشنایی کامل با Design support Library؛
- انیمیشنسازی مقدماتی؛
- آشنایی با Constraint Layout و سایر انواع Layout؛
- کتابخانههای ButterKnife, Glide, Picasso, Timber؛
- کتابخانههای مربوط به شبکه OkHttp, Gson, Volley, Retrofit یا سایر موارد مشابه؛
- یادگیری دیتابیس و ORMها مانند Room, SQLite, Realm, ORMLite, GreenDAO و…؛
- Custom View و Loaders
- آشنایی با الگوهای طراحی، تست کدها، توسعۀ آزمون محور، یافتن باگهای برنامه، PMD، مفاهیم برنامه نویسی فانکشنال، فایربیس، RxJava، RxAndoird, Dagger, اصول SOLID و … .
بله برنامه نویسی سختترین شغل دنیاست! این تنها بخشی از صدها چیزی است که یک توسعهدهندۀ اندروید باید بلد باشد. یک توسعه دهنده کارکشته علاوه بر اینکه مدام در حال یادگیری است باید اطلاعات خود را همواره بروز نگه دارد.
حرف آخر
- حواستان به کیفیت کدها باشد. دربارۀ کدهای ماژولار مطالعه کنید، همیچنین تفکیک دغدغهها (Separation of Concern، این از همان مواردی است که معادل فارسی خوبی برای آن کشف نشده!)، MVP, MVVM, MVC، طول توابع و متدها، سایز کلاسها، نامگذاری متغیرها و بسیاری از best practiceها مطرح در این حوزه. برنامهنویسها مسیر سختی در پیش دارند و فقط آنهایی میتوانند از دیگران فاصله بگیرند و اسمی در کنند که از بحث یادگیری غافل نباشند؛
- توسعه نرمافزار زمانبر است. این حقیقتی است که نباید با آن جدال کنید؛
- فقط نخوانید! آموختههای خود را بر روی پروژههای جدید به معرض امتحان بگذارید. حتی میتوانید با ریفکتور کردن کدهای قدیمی کلی چیز جدید یاد بگیرید؛
- در انتخاب فریمورکها، کتابخانهها و تکنولوژیها محتاط باشید. بیگدار به آب نزنید تا زمان را از دست ندهید. هر چیزی میخواهید یاد بگیرید ابتدا گوگل کنید؛ با چند نفر مشورت کنید و خوب که به یک نتیجهگیری مطلوب رسیدید انتخاب نهایی را رقم بزنید؛
حرف آخر اینکه یک برنامهنویس عاشق است. عاشق کدنویسی! این چیزی است که نمیتوان توضیحش داد. عشق به یک کار سختی آن کار را از یاد میبرد. اگر اندکی در این علاقۀ قلبی مردرد هستید یا صرفاً با هدف کسب درآمد و سایر مقاصد وارد این عرصه شدهاید، به خودتان احترام بگذارید و بیخیالش بشوید.
منبع : skaarp.com
مطلبی دیگر از این انتشارات
آموزشcrawl(خزش در وب) با پایتون
مطلبی دیگر از این انتشارات
مشکلی احراز هویت و لاگین گیت در ویندوز Access denied
مطلبی دیگر از این انتشارات
دریافت ترجمه دو فصل اول clean code + یک سرگرمی برای این روز ها