چجوری برنامه‌نویسی اندروید یاد بگیریم

یکی از سوالهایی که تو ایمیلها و توییتر ازم زیاد پرسیده میشه اینه که برنامه نویسی اندروید رو چجوری شروع کنیم و چجوری یاد بگیریم. برای همین تصمیم گرفتم که جوابی که معمولا به این سوالها میدم رو تو یه پست نسبتا مفصل بنویسم تا شاید به درد افراد دیگه هم که سوال مشابه دارند به دنبال وارد شده به این حوزه‌اند بخوره.

برنامه‌نویسی برای سیستم عامل اندروید یکی از اون کارهایی که اگر درست یاد بگیرید میتونید مطمئن باشید که حالا حالاها بیکار نمیمونید. از طرفی هم به خاطر ذات جذاب پلتفرم موبایل، جزو کارهایی محسوب میشه که میتونید از انجامش لذت ببرید. اما همه‌ی اینه به شرطیه که واقعا برنامه‌نویس باشید. نه یه تکنسین که فقط بلده کتابخونه‌ها رو به هم وصل کنه و یه محصول تولید کنه. اما چجوری میشه یه برنامه نویس خوب اندروید شد؟ من سعی کردم مراحل رو طبق سواد و تجربه سه ساله خودم تو این حوزه بنویسم:

۱- اول ببنید کجای کار ایستاده‌اید

خودشناسی قدم اول شروع هر کاریه. برای اینکه بخواید برنامه‌نویسی اندروید یاد بگیرید قبل از هرچیزی باید ببینید کجای کار ایستاده‌اید و چقدر بلدید. آیا قبلا با زبونهایی مثل C,C++, Java برنامه‌نویسی کردید؟ اگر جوابتون آره‌ست در چه سطحی؟ چقدر با الگوریتمهای مختلف آشنایید؟

 برای اینکه بتونید برنامه‌نویس خوبی باشید باید برنامه نویسی رو مستقل از زبان و پلتفرم یاد بگیرید. وقتی میگیم مستقل از زبان منظور اینه که زبان برنامه‌نویسی و سینتکسی که باهاش مسئله رو حل میکنید مهم نیست. چیزی که مهمه اینه که شما باید بتونید مسئله رو حل کنید. توانایی حل مسئله مهمترین و ارزشمندترین توانمندی یک برنامه‌نویسه که هیچ‌جایی آموزش داده نمیشه. این توانمندی چیزی نیست که شما بتونید با دانشگاه یا کلاس رفتن یا خوندن یه کتاب یاد بگیرید (البته با خوب خوندن CLRS میشه. باور کنید!) بلکه باید مدتها تمرین و تمرکز کنید. سعی کنید از حل کردن مسئله‌های کوچیک شروع کنید و به مرور که با روشهای معروف حل مسئله آشنا میشید مسئله‌های سخت بیشتری رو حل کنید. برای پیشرفت تو این کار کتاب طراحی الگوریتم CLRS میتونه یه کتاب معرکه باشه.

۲- چقدر JAVA بلدید؟

اگر بخواید برای اندروید برنامه‌نویسی کنید باید آشنایی خوبی با این زبون داشته باشید. البته روشهای دیگه‌ای هم برای برنامه‌نویسی اندروید وجود داره. مثل روشهای هایبریدی در اون میتونید با جاوا‌اسکریپت و تکنولوژی‌های وب برنامه‌ای بنویسید و برای همه‌ی پلتفرم‌های موبایل خروجی بگیرید. یا xamarin که اجازه میده با C# برای اندروید برنامه‌نویسی کنید. اما همه‌ی این روش‌ها مشکلات خودشون رو دارند و چیزی که گوگل توصیه کرده همین استفاده از جاوا به همراه کتابخونه‌هاییه که خود گوگل برای اینکار ارائه داده.

اگرچه جاوایی که تو اندروید استفاده میشه تو لایه‌های زیرین و تو بعضی از کتابخونه‌ها با جاوای sun فرق داره، اما این تفاوت چیزی نیست که تو شروع کار حتی متوجه‌ش بشید. برای همین لازمه با جاوا در حد متوسط آشنا باشید و بتونید برنامه‌های ساده‌ای با این زبون بنویسید. میتونید برای شروع چند تا مسئله معروف رو با این زبان حل کنید تا ببینید چقدر بهش مسلطید. حل مسئله‌هایی مثل هشت وزیر هم دید خوبی نسبت به برنامه‌نویسی جاوا میده و هم انقدر معروفه که میتونید چندین مدل پیاده‌سازی آماده‌اش رو پیدا کنید و با کدهای خودتون مقایسه کنید.این کار تاثیر معرکه‌ای روی تسلطتتون به یک زبان برنامه‌نویسی خواهد داشت.

۳ – اندروید رو شروع کنید!

خب،‌ تازه رسیدیم سر اصل مطلب. اشتباهی که خیلی‌ها میکنند اینه که فکر میکنند اندروید هم یک زبانه و برای یاد گرفتنش باید به همون شیوه برخورد کنند که مثلا برای یاد گرفتن PHP میکنند. این تفکر غلطه چون اندروید یک پلتفورمه. شما برای یاد گرفتنش باید با یه سری ابزارها و یه سری تکنیک ها آشنا بشید که تو تمام پروژه‌ها تکرار میشن. باید ساختار پروژه‌های ایجاد شده با IDEهای مختلف اندروید (عموما اکلیپس و اندروید استدیو) رو درک کنید و با خود IDE آشنا بشید. اگر از اون دسته آدمایی هستید که از IDE بدشون میاد و به Text Editor عادت دارند متاسفانه باید بگم اینجا همونجاییه که باید این عادت رو ترک کنید. برنامه‌نویسی اندروید چیزی نیست که با یه تکست ادیتور بتونید انجامش بدید و شدیدا نیاز دارید انجام بعضی از کارها رو بسپرید به IDE.

برای شروع آشنایی با این پلتفرم  توصیه من دیدن ویدیو‌های آموزشیه. دیدن این ویدیو‌ها باعث میشه که قدری به فضای توسعه اندروید عادت کنید و ببینید انجام بعضی از کارهایی که تا قبل این فکر میکردید سخته چقدر آسونه. پیشنهاد من اینه که یک سری از این ویدیو‌ها رو انتخاب کنید و تا انتها با دقت ببینید. من خودم با ویدیوهای لیندا این مرحله رو گذروندم و هر کسی هم که ازم در این مورد سوال میکنه ویدیوهای لیندا رو بهش پیشنهاد میدم. این ویدیوها رایگان نیستند اما طی یک عمل زشت میشه از تورنت یا از یه سری سایتهای فارسی دانلودشون کرد!

۴- وقت خاک بازیه

یکی از بهترین شیوه‌های یاد گرفتن اینه که خودتون رو وسط یه پروژه تمرینی قرار بدید. آستینها رو بالا بزنید و برای خودتون یه پروژه تعریف کنید. این پروژه میتونه یه پروژه خیلی ساده باشه که قبلا هم پیاده سازی شده. مثلا یه نرم‌افزاری بنویسید که تاریخ تولد دوستتون رو بهتون یاد‌آوری میکنه. یا حتی یک ماشین حساب که بتونید باهاش محاسبات ساده رو انجام بدید. مشکلاتی که در طی انجام این پروژه سر راهتون ظاهر میشن دقیقا همون چیزهایی هستند که باعث میشن انجام این پروژه براتون مفید باشه. توجه کنید که اگر طی انجام یه پروژه تمرینی به مشکلی برنخوردید،‌ عملا وقتتون رو حروم کردید! چون این پروژه چیز جدیدی برای شما نداشته!

۵- زیاد بخونید. خیلی زیاد.

دیدن ویدیوها فقط برای شروع کار خوبه. برای ادامه باید خودتون رو به خوندن داکیومنت و سورس‌کد عادت بدید. داکیومنتهای سایت developer.android.com در تمام مدت برای شما باید حکم کتاب مقدس رو داشته باشه که برای انجام هر کاری بهشون رجوع میکنید. تو اندروید کارهای زیادی هستن که ممکنه در ابتدا راجع بهشون هیچ ایده‌ای نداشته باشید. کارهایی مثل وصل شدن به دوربین،‌ گرفتن دیتا از GPS، نمایش نوتیفیکیشن و … کارهایی هستن که اگر قبلا برنامه‌نویسی موبایل نکرده باشید در ابتدا براتون جدید و سخت به نظر میان. گوگل برای تمام این کارها توضیحات دقیق به همراه نمونه‌کدهایی تو سایت خودش قرار داده که خوندن اونها اصلی‌ترین منبعیه که برنامه‌نویس‌ها بهش رجوع میکنند تا با کتابخونه‌های اندروید آشنا بشند و انجام دادن برخی کارها رو با این کتابخونه‌ها یاد بگیرند. دقت کنید تمام کسایی که تو سایتهایی مثل stackoverflow جواب مارو میدن،‌ خودشون جوابها از رو همین داکیونت ها یادگرفتند.

۶- یاد بگیرید چجوری سرچ کنید!

تو شروع برنامه‌نویسی اندروید و به خصوص ماه های اول مشکلات زیادی خواهید داشت. ممکنه کد شما هیچ اشکالی نداشته باشه اما IDE از تمام خطها ایراد بگیره. ممکنه خیلی بی دلیل کتابخونه add نشه. ممکنه موقع اجرای کد IDE گوشی شما رو نشناسه و هزارها دردسر دیگه. اینها ایراداتی هستند که احتمالا حسابی کلافتون میکنند. اما بدونید این فقط شما نیستید که به این مشکلات برخورد کردید و همه این دردسرها رو داشتند. برای حل این قبیل مشکلات لازمه خوب سرچ کردن رو بلد باشید (قطعا به انگلیسی). این مشکلها عموما راه‌حل‌های خیلی ساده‌ای دارند که خیلی وقت پیش تو جایی مثل stackoverflow مطرح شدند و چند صد تا امتیاز مثبت گرفتند. برای حلشون فقط لازمه بدونید چی سرچ کنید. همین و بس.

من سعی کردم مسیر رو واضح و مستقیم بیان کنم. این مسیر مسیریه که خودم طی کردم و ازش راضی بودم. اما خب نباید این حقیقت رو نادیده گرفت که یادگرفتن برای هر کسی روند متفاوتی داره. به هر حال شما اگر تجربه متفاوتی داشتید ممنون میشم تو قسمت نظرات بگید.

31 پاسخ به “چجوری برنامه‌نویسی اندروید یاد بگیریم”

  1. امير گفت:

    بسیار عالی
    به نظرم هر کی تو زمینه کامپیوتر و رشته هایی که نیاز به دانش کاربردی و روز دارن، داره فعالیت میکنه، انجام این کارا ابسولوت مینیمومه واسش.

  2. شهریار گفت:

    برای شروع CLRS پیشنهاد کردی؟!
    خدا مابقیش رو بخیر کنه

  3. امیرحسین گفت:

    سلام آرش جان خیلی استفاده کردم
    ای کاش در مورد تفاوت ide ها هم توضیح میدادی

  4. uideveloper گفت:

    مطلب خیلی عالی بود مرسی
    سایت های خوبی هم در ایران داریم که میتونن برای شروع کار خیلی کمک کنند
    اپ این اپس http://appinapps.com
    اسفندونه http://esfandune.ir
    اندروید کد http://androidcode.ir

    میتونیم با استفاده از این سایت ها تشویقشون کنیم تا محتوای عالی و کاربردی تولید کنند و در اختیار مردم بزارند

  5. سلام
    نوشته‌تون رو با ذکر منبع در آقای دانا بازنشر کردم، اگه مشکلی هست بگید حذفش کنم.

    http://mrdana.ir/how-to-learn-android

  6. یلدا گفت:

    خیلی خوب بود این پست… خیلی ممنون

  7. سارا گفت:

    من با بخش “خاک بازی” یکم مشکل دارم …. میدونم شیوه ی یادگیریم یجایی مشکل داره اما نمیدونم کجا … این شیوه رو هم امتحان کردم اما نتیجه نداد متاسفانه …

    • آرش خوئینی گفت:

      خب مهمترین چیز اینه که بفهمید چه روشی برای روحیه شما مناسبه. من خودم و تقریبا اکثر برنامه‌نویسهایی که دیدم روش یادگیریشون این بود که به اصطلاح میپریدند تو استخر تا شنا رو یاد بگیرند. من هم این نوشته رو بر همون اساس نوشتم. خاک بازی هم اینجا دقیقا به این معنیه. شما یه پروژه برای خودت تعریف کنی و خودت رو برای یه مدت کاملا توش غرق کنی.

  8. محمد احسان حیدری گفت:

    عالی بود ممنون از مطلب خوبتون

  9. محمد گفت:

    سلام میشه لطفا لینک دانلود CLRS رو هم بذارین؟؟
    و لطفا بفرمایین که ویدیو های لیندا رو از کدوم قسمتش دان کنم؟؟

    • آرش خوئینی گفت:

      سلام. اینکه کدوم ویدیوها رو دانلود کنید بستگی به خودتون داره. پیشنهاد من دیدن یه کورس از ابتدا تا انتهاست.
      کتاب رو هم میتونم براتون ایمیل کنم.

      • Alireza.k گفت:

        سلام آرش جان خوب هستید از مطالبی که گذاشته بودید استفاده کردم و من هم مثل بقیه هیچی از برنامه نویسی چه جاوا و چه… سردر نمیارم.اگه ممکنه بگید که دقیقا از کجا شروع کنم .منظور این که از یادگیری برنامه نویسی جاوا یا برنامه های دیگه ؟؟؟
        اگر ممکنه کتاب آموزش CLRS یا جاوا و یا … رو دارید برام ایمیل کنید.؟؟
        ممنون میشم ازت آرش جان

  10. سینا گفت:

    سلام من یه نفری هستم که می خواهم یادگرفتن رو شروع کنم .
    تو رو خدا جواب بدین من آموزش های لیندا رو دیدم تا یه جایی میره و دیگه ساخت برنامه های پیشرفته تر رو یاد نمیده حالا بگین من چی کار کنم که بخوام پیشرفته تر یاد بگیرم و بخوام هرچی دوست داشتم درست کنم ؟؟؟؟ من باید برم تو developer.android.com ؟؟؟ یا وقتی کار با java رو کامل یاد بگیرم می تونم کامل برنامه نویسی تو اندروید استودیو رو یاد بگیرم.

  11. باسلام
    ممنون از پستهای خوبتون.

  12. محمد حیدری گفت:

    با اینCLRS که اومدی خیلی حال کردم 🙂
    ممنون

  13. ممنونم ازسایت خوبتون

  14. sosi گفت:

    Salam az babat eraye tosiyeha o tajrobeyateton mamnonam man angize va alaage be yadgiriye barnamenevisiye androidi ro darm vali az nazar elmesh 0 hastam.lotfan komakam konid chon dar in kahkashane bi entehaye barname nevisi bekhosos dar iran yek estesna hastam. Lotfan koomakam koonid mamnoon

  15. محمدرضا گفت:

    سلام.ببخشید من حسابی گیج شدم من تازه میخام شروع به یاد گیری برنامه نویسی کنم همه سایت ها هم میگن اولc یا c++اما هدف من برنامه نویسی اندروید هست ایا اول حتما باید cیاد بگیرم بعد جاوا یا اینکه میتونم مستقیما سراغ جاوا برم لطفا کمکم کنید.

    • آرش خوئینی گفت:

      برای یادگیری برنامه‌نویسی اندروید هیچ نیازی به C یا C++ ندارید. هر چند که من توصیه میکنم برنامه نویسی رو با C یا C++ یادبگیرید تا درک بهتری از برنامه‌نویسی داشته باشید. اما این صرفا یه پیشنهاده و شما بدون اینکه حتی یک خط C یا C++ بدونید میتونید برنامه نویسی اندروید کنید.

  16. مصطفی گفت:

    واقعا احسنت!

  17. امین گفت:

    سلام.خسته نباشید.
    بنده خیلی علاقه دارم به برنامه نویسی اندروید و ساخت صفحات وب.
    میخوام از وقت آزادم استفاده کنم و هرچه هست راجب این دو یاد بگیرم.
    اگه بمن گام به گام پیش نیازها و آنچه برای یک مبتدی لازمه که بدونه فهرست وار بیان کنید خیلی ممنون میشم.
    به نظرتون روزانه حداقل چندساعت وقت باید گذاشت؟
    اگه منابع کتاب و… میتونید برام بفرستید به ایمیلم که خیلی عالی میشه.
    بنده تو کارکامپیوترم و احساس میکنم بایداینهاروبه صورت حرفه ای درکنار شبکه یادبگیرم.

    منتظر ایمیلتون هستم.واقعا رو کمکتون حساب بازکردم.
    باسپاس فراوان امین

  18. zk گفت:

    با سلام من مدتیه شروع به یادگیری اندروید با ویدیو های لیندا کردم ولی مشکلم اینه که نحوه استفاده از توابع رو درک نمیکنم آیا باید حفظ کرد که برای انجام یک کار خاص چه توابعی رو باید با هم متصل کرد؟
    از طرفی هم بعد دیدن ویدیو ها با وجود تمرین چند باره همون آموزش دفعه بعد باز قسمت هایی اش رو فراموش می کنم.
    میخواستم بپرسم آیا روش خاصی برای حل این مشکلات هست یا باید برم حافظه ام رو تقویت کنم؟:)
    این سوالات خیلی برام حیاتیه کم کم دارم امیدمو از دست میدم.منتظر پاسختون هستم

    • آرش خوئینی گفت:

      سلام
      شما تو برنامه‌نویسی اصولا نیازی به حفظ کردن هیچ‌چیز ندارید. کافیه هر وقت چیزی رو یادتون رفت تو گوگل جست‌و‌جو کنید یا به همون ویدیوها رجوع کنید. به مرور و در اثر استفاده چیزهای لازم و ضروری خودبه‌خود به حافظه سپرده میشن

  19. سعید گفت:

    سلام من الان میخوام شروع کنم به نظر شما برم کلاس یا فیلم اموزشی و کتاب بگرم؟
    و چه کتاب های از مقدماتی تا پیشرفته
    با تشکر

  20. مریم دشتی گفت:

    خیلی خوب بود ؛ از اینکه تجربیاتتون رو در اختیار ما میگذارین سپاسگزارم .

  21. abolfazl گفت:

    بسیار پست خوبی بود،بعضی چیزهاشو تجربه کردم و بعضی چیزای دیگه جدیدن برام.
    تشکر

  22. علیرضا گفت:

    سلام.من هیچی از اندروید نمیدونم ولی قبل باسی پلاس پلاس کمی کار کردم.تقریبا چقدر طول میکشه تا بتونم یک برنامه مثل سفارش کالا از چند تا فروشگاه رو بتونم یاد بگبرم و اجراش کنم.

  23. farid گفت:

    خیلی مقاله مفیدی بود ،متشکرم.

  24. Hossein گفت:

    مرسی از مطالب مفیدتون.

  25. مهدی گفت:

    من الان هیچ زبانی بلد نیستم برام کتاب ایمیل کن اگه زحمتی نیس یاد بگیرم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

android application Google I/O HomeBrew ImageMagick Material Design mobile PogressBar RecyclerView splash TEDxKish ux آموزش اندروید الوین تافلر اندروید اپلیکیشن برنامه نویسی برنامه نویسی اندروید برنامه‌نویسی برنامه‌نویسی اندروید تداکس کیش تعمیر تغییر سایز عکس با ترمینال خلاصه کتاب دانش داده دانشگاه دانشگاه ایده‌آل دزد دیتا ساینس رشته مهندسی کامپیوتر ریکامندرسیستم سیستم‌های توصیه‌گر فری‌لنس لپتاپ متریال دیزاین معرفی کتاب موج سوم نوار پیشرفت همایش هوش مصنوعی ُجزیره کیش کار کسب و کار یادگیری عمیق یادگیری ماشین