دفتر ملاحظات مطور أندرويد

بسم الله الرحمن الرحيم

في هذه التدوينة هي مشاركة لبعض المعلومات البسيطة التي أتمنى أن ينفع الله بها.

 

بداية مصادر تعلم الأندرويد وقسمتها هنا إلى قسمين

الأول هو التعليم المستمر, وأعني به أن هناك منهج علمي يمر على عدة مواضيع تغطي أجزاء مهمة في المجال, وهنا أذكر أربع مناهج تعليمية رائعة جدا:

  1. Android Programming: The Big Nerd Ranch
  2. منهج Udacity لبرمجة Android
  3. موقع code path
  4. Git books
    المصادر الثلاثة الأولى فصلت فيها هنا, لذا سيكون حديثي مقصوراً على git books, git books أحد أفضل المصادر الموجودة حاليا لتعلم أندرويد, تم بناؤه من قبل فريق التدريب في google, مقسم المنهج إلى قسمين مفاهيم – concepts -, وفيها ياخذ المفاهيم, على سبيل المثال, الـ menus كيف تبنى وكيف تعمل ويفصل فيها, هذا في جزء المفاهيم, بعد كذا تنتقل للجزء العملي – practice – في الجزء هذا راح تحاول تبني مشروع معين وتطبق فيها المفاهيم إلي تعلمتها, وطبعا فيه معلومات كثيرة إضافية تكون موجودة داخل الجزء العملي, المحتوى مقسم إلى جزئين, أساسيات – fundamentals – وفيها يفترض أنك تعرف لغة جافا فقط, ومتقدمة – advanced -, بمجرد أن تدخل على الرابط ستجد تفاصيل كل مادة وماذا تناقش, أرى أن المحتوى رائع جدا للمتعلم والمعلم, ومنسق بشكل جميل جداً يعين على التعلم ويسهله, يعيبه أنه لن يذكر أي مكتبة تسهل في عمل أي جزئية سيدربك على Android framewrok فقط, ما عدا ذلك المحتوى أكثر من رائع.

 

الجزء الثاني هي مصادر مفيدة لعمل مشاريع بسيطة تركز على مفهوم معين, أو دراسة مفاهيم معينة, أو محاضرات مفيدة, أو لمتابعة الجديد المتعلق بمجال التطوير في أندرويد ومن هذا القبيل:

  1. Android Development CodeLabs:
    هذا الموقع مفيد جدا مليئ بالأمثلة العملية التي تركز على مفاهيم معينة, يتم بناء المحتوى من فريق التدريب في Google, طريقته جدا بسيطة وهي أن يبدأ معك مشروع معين, يعطيك في بعض الأحيان مشروع ناقص, ويطلب من أكماله أثناء قراءة الدرس, وفي كل خطوة يشرح هو جزء من هذا المفهوم وأنت تكمل المشروع, يجمل بين بساطة التعلم والفائدة العظيمة, أنصح به جدا. 
  2. Official Android Training Guides:
    الموقع الرسمي من أندرويد لتدريب على التطوير, طبعا المحتوى جدا جيد, شخصيا أرجع له كثيرأ خصوصا إذا كنت بصدد كتابة مقالة معينة, أو تعلم مفهوم جديد, يتم تقسيم المحتوى بطريقة جيدة, تساعدني أحيانا تقسم مقالتي, يكتب في أعلى الصفحة الخلفية العلمية المطلوبة لفهم هذا المحتوى أو المثال, ويبدأ بالشرح بوضع جزء من الكود – snippet – ثم التفصيل فيه, وهكذا.
  3. Google developers youtube channel:
    فعليا هذه القناة ليست مختصة بأندرويد, بل بجميع أدوات التطوير في Google, ستجد فيها تغطية لبعض الفعاليات التقنية التي تقيمها Google ويكون فيها محاضرات عن مختلف أدوات التطوير ومنها أندرويد, وقد تجد ما يثير اهتمامك من أدوات التطوير التي تتقاطع مع أندرويد مثل Firebase & TensorFlow.
  4. Android developers youtube:
    هذه القناة الرسمية لتطوير لأندرويد, غنية جدا بالمعلومات, في كيفية التطوير, تصميم الواجهات – UI -, خبرة المستخدم – UX -, تحسين الأداء – performance  -, أمور أخرى, مليئة بمحاضرات في مختلف المواضيع, , وفي حال نزول تحديثات جديدة تكون هذه القناة أحد أول مصادر الحصول على معلومات عن هذا التحديث.
  5. Android Developers blog:
    المدونة الرسمية لأندرويد تكمل هي والقناة التي ذكرنا سابقاً بعضهما, المدونة مليئة بالنصائح حول أفضل الممارسات في التطوير – best practice -, والمشاكل والحلول التي قد تواجه المطور في مختلف المواضيع, وأحد المصادر في تلقي المستجدات عن التطوير في أندرويد.
  6. Playbook Android application:
    تطبيق مفيد جدا من Google, يحوي على المقالات والفيديوات التي يقومون بنشرها, قصص نجاح, ودليل – gauid – في كثير من المواضيع مثل جني الأرباح من التطبيق – monetization – , التطوير, التصميم, وغيرها.
  7. Google I/O:
    هو فعليا يندرج تحت قنوات اليوتيوب السابقة, لكن فصلته في نقطة مستقلة من باب التركيز عليه, تعقد Google سنوياً هذا المؤتمر, وتلقى فيه مجموعة من المستجدات والمحاضرات, تكون في غاية الفائدة للمطور, حيث تم الإعلان عند لغة Kotlin فيه, ويكون له تطبيق خاص يمكن من خلاله معرفة عناوين المحاضرات ومتابعتها بشكل مباشر.
  8.  Google samples:
    أحد أهم أساليب تعلم البرمجة والتحسن فيها, قراءة كود الأخرين, في هذه الأمثلة على موقع github تضع Google أمثلة في مختلف المواضيع مثل 
    architecture-components, testing ومواضيع كثيرة, أيضا من مميزات هذه الأمثلة جزئية issues غالبا تجد فيها نقاشات قيمة ومطولة عن بعض المفاهيم أو الإشكالات.
  9. Realm:
    اشتهرت بقاعدة البيانات الخاصة بها, realm database, لكن عندهم مجموعة لقاءات غطوا فيها عدة مواضيع ومؤخرا جمعوها في مكان واحد وسموها Realm Academy, يعد أحد أهم المصادر لمتابعة المستجدات وأفضل الممارسات في الشركات, والتفصيل في موضوع معين, من المصادر المفيدة جدا.
  10. caster.io:
    أحد أفضل المواقع على الأطلاق في مجال الأندرويد, بعد أن تتم دراسة الأساسيات سيكون هذا الموقع مكان مناسب للاستزادة, يقوم ببناء المحتوى فيه Google Develper Expert, يشرحون فيه مواضيع مهمة ومفيدة جدا في المجال, للأسف ليس مجاني, لكن مبلغ الاشتراك رمزي مقارنة بكمية المعرفة الموجودة فيه.

 

هنا سنتحدث عن podcast لمحبي المحتوى الصوتي, يوجد اثنان من podcasts في أندرويد هما:

  1. fragmented podcast:
    يقدمه Donn Felker و Kaushik Gopal الشخصان جدا جيدين, وكذلك المحتوى المقدم في البودكاست.
  2. Android Developers Backstage:
    حلقات في مختلف المواضيع في مجال اندرويد يناقشها فريق مهندسي اندرويد, مفيدة جدا.

 

في هذا الجزء من المقالة سنتحدث عن newsletter المعنى الحرفي لها هي النشرة الأخبارية, وهنا نعني نشرة إسبوعية  يتم فيها مناقشة مستجدات التطوير في نظام أندرويد أحدث الأخبار, المكتابات, المشاريع, وظائف, شروحات ( مقالات وفيديو), وغيرها:

  1. Android newsletter:
    هذه النشرة الشهرية الرسمية من أندرويد عن مستجدات النظام, والتحديثات, والإشكالات, والشروحات وغيره.
  2. Android weekly:
    نشرة أسبوعية غنية بالمقالات, والشروحات, والمكتبات, والوظائف, والأخبار, من مجتمع مطورين أندرويد, يقومون بإنتقاء الأفضل أسبوعيا, ممتعة جدا, ومفيدة جدا.
  3. weekly Kotlin:
    نشرة أسبوعية للمهتمين بلغة Kotlin, وبحكم تقاطع هذا اللغة مع التطوير لأندوريد تجد فيها, مقالات تتحدث عن أندرويد, وبعض النصائح والممارسات الجيدة المفيدة لمطور أندرويد.
  4. androiddev digest:
    تشبه كثيرة نشرة android weekly فهم يشاركون مقالات, والشروحات, والمكتبات, والوظائف, والأخبار, من مجتمع مطورين أندرويد.

 

إذا كنت من عشاق المقالات موقع medium يعد الأشهر في هذا المجال, هنا مجموعة من الحسابات في هذا الموقع تقدم محتوى متنوع ورائع جدا:

  1. google developers:
    مدونة مهندسي Google
  2. google developer experts:
    مدونة يكتب فيها google developer experts
  3. mindorks
  4. ِAndroidPub:
    من المدونات الرائعة تمتاز بجودة المقالات وتنوعها, AndroidPub لديهم newslatter أيضا يمكن الاشتراك بها لتلقي أخر المقالات.
  5. pro android dev
  6. Fueled Engineering

لكل فترة يكون هناك, مواضيع – Trend – يتجه لها المهتمين بالمجال, في أندرويد في فترة كتابة هذه المقالة, سنذكر بعض هذه المواضيع على سبيل العد لا الحصر:

  1. Kotlin:
    بعد دعمها من Google توجه لها الكثير من مجتمع مطوري أندوريد, خصوصا لبساطة syntax.
  2. Retrofit:
    مكتبة تغنيك عن التعامل مع network بإستخدام AsyncTask & AsyncTaskLoader, بسيطة وسهلة الاستخدام.
  3. RxJava:
    مفهوم أو أسلوب برمجي إن صح التعبير, يختصر الكثير من العمليات بأسطر بسيطة, ويعمل بكفاءة مع الـ Threads, ينبغي على المبرمج التعرف عليه.
  4. Dagger2:
    هي مكتبة برمجية, تطبق مفهوم dependency injection
  5. Android Architecture Components:
    مجموعة من المكتبات تساعدك في بناء تطبيق ذا تصميم قوي – design robust – ونعني هنا تصميم الكود وطريقة بناءه, قابل للإختبار والتعديل -maintainable & testable -.

القائمة تطول لكن قررت الاقتصار على المذكور.

 

هنا بعض الأمور التي يستحسن وبشدة أن يكون المطور ملماً بها:

  1. Object oriented programming:
    قلت يستحسن في بداية هذا الجزء, لكن هذه النقطة بالذات, لا يعذر المطور بجهلها, تأكد بأن تجيدها ولو خصصت لها بعض الوقت وأطلت, ستكتشف قريبا أو لاحقا أنك لا تستطيع بناء شيء مميز بدون الإلمام بمفاهيم الـ OOP.
  2. design pattern:
    هي مجموعة من الحلول لمشاكل برمجية مشهورة, تقابلك بشكل متكرر أثناء البرمجة, معرفتك بها تساعد في هيكلة التطبيق بشكل جيد, تتفادى من خلالها العديد من الأخطاء.
  3. SOLID Principles:
    هي مجموعة من المفاهيم المبنية على OOP, تساعدك في بناء تطبيق قابل لتوسع – extenable – و التعديل أو الصيانة إن صح التعبير – maintainable -.

نقطة أخيرة, يستحسن أن تتعلم مثل هذه المفاهيم من خلال تطبيقها في مشروع معين, لأن فهمها فقط لا يكفي لاستخدامها, فينبغي أن تعرف متى تستخدمها.

 

نقطة جانبية, شهادة أندرويد (Associate Android Developer (AAD:
هي شهادة تمنحها Google لراغبين في اختبار مهارتهم في أندرويد في حال اجتازوا أختبار مكون من عدة مراحل, الأولى مرحلة العمل وهي أن تعطى تطبيق فيها مشاكل ويحتاج إضافات وتقوم بمعالجة المشاكل, وإضافة النواقص وتسليمه بعد إكمال المتطلبات في مدة لا تزيد عن ٢٤ ساعة, بعد هذه المرحلة يقيم المشروع في حال تم تحقيق المتطلبات, تتقدم لمقابلة تناقش فيها المشروع بشكل خاص وعن أندرويد بشكل عام, وفي حال اجتياز المقابلة تسلم الشهادة بإذن الله.

 

هنا سنتكلم عن بعض الممارسات المفيدة للمطور على الصعيد الشخصي, بعيداً عن البرمجة نفسها, وقد يستفيد منها غير المبرمج أيضا:

  1. إدارة الوقت:
    من خلال احتكاكي بأشخاص حققوا نجاحا استثنائيا, بعد فضل الله كان السبب هو إدارة الوقت فإذا لما تدر وقتك بكفاءة عالية, ستكون في ركب المتأخرين, ومن أهم الممارسات في إداراة الوقت, تخصص وقت معين لغاية معينة, على سبيل المثال بعد الظهر من كل يوم ثلاثاء وخميس هو يوم للقراءة عن موضوع كذا لمدة ساعتين, فهذه الطريقة مجدية جدا في الإلتزام – هنا استطراد بسيط تستطيع تجاوزه, في دراسة لـ British Journal of Health Psychology, تم تقسيم مجموعة من الأشخاص لثلاث مجموعات وطلبوا من الإلتزام بتمارين رياضية لمدة أسبوعين, المجموعة الأولى بدأت من دون أي تدخل, المجموعة الثانية تم تحفيزها بطلب أن يقرأوا عن فوائد التمارين الرياضية, وتم تحفيزهم ببعض العبارات, المجموعة الثالثة بالإضافة تم تحفيزهم كالمجموعة الثانية بالإضافة لطلب بسيط ومهم, وهو أن يحددوا وقت التمرين اليومي, كانت النتائج كالتالي, المجموعة الأولى التزم منهم ٣٨٪, المجموعة الثانية التزم منهم ٢٥٪, الثالثة التزم منهم ٩١٪, وهنا تظهر جليا فائدة تخصيص الوقت, للمزيد حول هذه الدراسة في هذه المقالة 
  2. كن متفاعل:
    شارك الناس ما تعمل عليه, ما تتعلمه, هذه الممارسة تساعد في أن تكون بين مجموعة ممن يشاركونك نفس الأهتمام وهذا يزيد من تحسنك, وتعلمك وعملك, لذلك دائما, شارك المصادر التي تعلمت منها, شارك المشاريع التي أنجزتها مؤخرا, أو حتى المشاريع التي تعمل عليها وتود أن يطلع عليها الناس, كنا متفاعلا كشخص يشارك في مشاريع الأخرين لو رأيت شخص نشر مكتبة معينة أو مشروع معين, أطلع عليه اقرأ كوده, لو وجدت ما يمكن أن تضيفه اضفه, وأطلب منه أن يطلع عليه ولو راّه جيد يضيفه, تأكد أنه لا ينبغي أن تكون ذكياً, كن فقط متفاعل.
  3. قم بتزكية علمك:
    فهذا يفيدك من عدة أوجه, الوجه الأول, أن التعليم إحسان وعطاء, فإنك بإذن الله تؤجر على ذلك, ويبارك الله في ما تعلمت فيبقى ولا ينسى, ويفتح الله عليك في أبواب العلم, الوجه الثاني: أن الناس تعرفك بمعرفة ما تقدم, كما قال الشافعي: المرء يعرف في الأنام بفعله, وفيجدك من يرغب في موظف لمناصب أنت تجيده, أو يجدك من لديه مشروع في المهارة التي تتقنها, فيكون هذا التعليم باب رزق عليك, الوجه الثالث: أن التعليم أحد أهم وسائل التعلم, وقد بنيت أحد أشهر طرق التعلم على مبدأ التعليم وهي طريقة Feynman, وهي مدخل لنقطة القادمة, والطرق في بذل العلم مختلفة تبدأ بتغريدة بسيطة وتنتهي بدورة تدريبية, وبين هذا وذاك, يمكن أن تسجل فيديو, أو تكتب مقالة, أو تعد تصميما, والمجال في هذا رحب ومتسع للمبدعين.
  4. كن هاوياً:
    تخاف الخطأ؟, وتخشى الناس وتعليقهم عليك؟ كلنا ذاك, لكن هذه ممارسة خاطئة جدا وغير صحية, أبدا بممارسة الأمور كشخص هاوي محب لما يعمل عليه, يرتكب الأخطاء, يهتم بما يعمله المحترفون ويسعى لأن يكون مثلهم, ويتعلم الأمور كالمبتدئين ويخطأ ويطلب المساعدة ويتعلم ويعلم, يظهر عليه شغفه وحبه للمجال.
  5. كن مبدعاً:
    دائما كن خارج عن المألوف بما يميزك عن أقرانك, إذا رأيت أداة جديدة وظفها بطريقة مبتكرة, أخرج منتجا مفيداً بما لم يفكر أحد به, لا يشتطر دائما أن يكون مفيدا, لكن يشترط أن يكون مبتكرا, فعلى سبيل المثال android IoT, Android TV, Android wear كل هذه مناطق رحبة للإبتكار بحكم قلة المطورين فيها, ولا شك أن بإمكانك الإبداع حتى على تطبيقات أندوريد للجوال, لذلك كن مبدعا.

 

هنا سنتحدث عن جانب أخر من الجوانب التي تهم المطورين وهو الوظيفة:
نبدأ هذا الجزء بحديث عبدالرحمن بن مسعود عن النبي صلى الله عليه وسلم إن أحدكم يجمع خلقه في بطن أمه أربعين يومًا نطفة ثم يكون علقةً مثل ذلك، ثم يكون مضغةً مثل ذلك، ثم يرسل إليه الملك فينفخ فيه الروح، ويؤمر بأربع كلماتٍ: بكَتْبِ رزقه وأجله وعمله، وشقي أو سعيدٌ, الحديث) متفق عليه. فمن هنا نعلم أنه لن تموت نفس حتى تستكمل رزقها وأجلها, هذه النقطة الأولى, النقطة الثانية هي حديث عمر -رضي الله تعالى عنه- قال: سمعت رسول الله -صلى الله عليه وسلم- يقول:لو أنكم تتوكلون على الله حق توكله لرزقكم كما يرزق الطير، تغدو خماصاً وتروح بطاناً، رواه الترمذي, وفي هذا الحديث فائدتين عظيمتين الأولى أنه من أهم أسباب الرزق التوكل على الله تعالى والإلتجاء إليه, الثانية أن الرزق يطلب, فلا يتكل المتوكل ثم يركن ويقول ما كتب لي سيأتيني, فكلمة تغدو هنا تدل على أن الرزق يطلب, ولذا سنتوكل على الله ونذكر هنا أهم الأمور المعينة بإذن الله في الحصول على وظيفة:

  1. github:
    كمبرمج هذا هو معرض أعمالك, فتجد في كثير من الوظائف يرجى إرسال أعمال سابقة, فحينما تكون أعمالك السابقة معروضة فستكون مطلب لمن يجد أن أعمالك جيدة, وهذا الشيء يدفعك لتحسن من أدائك فيكون في حسابك مشاريع رائعة, وسمعت من كثيرين أنهم وظفوفوا بمقابلة صورية أو بدون مقابلة أحيانا بحكم أن مهارتهم ومشاريعهم مشاهدة من قبل الجميع, واهتم بمظهر الحساب, وكتابة README للمشروع, والكثير من الممارسات الأخرى الجيدة, ربما نفرد لها مقالة أن تيسر الوقت, لكن حري بك أن تبحث في الموضوع وتبدأ فيه.
  2. Linkedin:
    كثير من مدراء التوظيف يعتمدون بشكل أساسي على هذا الموقع كمحرك بحث عن الموظفين الجيدين, فأبدا بتحسين صفحتك, وحدثها بشكل دوري, فهذا يعين على أن تكون محط أنظار الباحثين عن المبدعين.
  3. شارك ما تعرف, شارك ما تتعلم, شارك ما تعمل عليه:
    ذكرنا النقطة سابقاً لكن نعيدها هنا بحكم أنها من النقاط المهمة, الناس لا تعرف منك إلا ما ظهر منك, فإذا كنت تعمل أو تتعلم موضوع معين, فشارك الناس فهذا يساعد في تكوين علاقات جديدة, قد يكون أحدها هو زميل العمل التالي.

من المراجع المفيدة هنا كتاب show your work 

 

29 تعليق

أضف تعليقا ←

  1. محمد قال:

    مقاله جداً ممتازه, صراحه مرجع شامل لمن يريد البدء او الاستمرار في تطوير الاندرويد.
    شكراً

  2. Yaman قال:

    وفقك الله مدونة ممتازة ومعلومات مفيدة

  3. Hussam Nzeha قال:

    مقال مفيد وتوجيهات قيمة ..شكرا لك.

  4. هند السعدنى قال:

    موضوع شامل ومفيد فتح الله لك,
    أتمنى ان اجد امثلة على تصميم الواتس اب والتفاعل الحى
    اونموذج لمشروع مثله
    لكى تكتمل بعض الأفكار لدى

  5. youssef قال:

    جزاك الله خيرا معلومات قيمة جدا

  6. nessem قال:

    مقالة رائعة شكرا لمجهودك

  7. binkhanjar قال:

    مقاله رائعة ومعلومات مفيدة

  8. محمد قال:

    شكرا لك

  9. Asma قال:

    مقال رائع جداً جداً جزاك الله خيرا

  10. احمد ماهر قال:

    مقالة رائعه وفيها معلومات وخطوات كتير مفيده

  11. سمير عمران قال:

    جهد مبارك – لقد وجدت فيه أشياء كثيرة كنت ابحث عنها واشياء لم تكن تخطر على بالي انها موجودة
    شكراً مرة ثانية وجزاك الله خيراً

  12. حمزة قال:

    شكرا لك .. معلومات رائعة

  13. ابو معاذ قال:

    بارك الله فيك ووفقك الله لكل خير اخي الكريم

  14. الطيب قال:

    مقالة جيدة جدا،أشكرك على هذه القالة.
    أرجو أن ترسل لي كل ما هو جديد

  15. الطيب قال:

    شكرا جزيلا

  16. الطيب قال:

    شكرا

  17. إسماعيل قال:

    معلومات مفيدة .. بوركت على مجهودك، أتمنى أن تواصل على هذا المنوال.

  18. Haitham Alhad قال:

    This article is just amazing
    I have gotten more from it than I expected

    Mashallah

    May the author be blessed for the work of his hands
    This is a great resource

  19. Fatima قال:

    ما كنت أتمناه أن يأتي مختص ويختصر الطريق
    جزيتم خيرا

  20. محمد الخلفي قال:

    شكرا لك على المعلومات القيمة

  21. علياء قال:

    مقال جمييييل جدااا وفيه اجوبه عن معظم الاسئله التي كان تجوب في خاطري …تسلم

  22. أحمد صلاح قال:

    Hi Mr.Abdel Aziz, (I was intending to post this in Udacity forums but it’s closed to replies right now so i thought you could advice me sir) I have recently read about a new language called “Kotlin” and i heard that google actually implemented it in the current version of Android Studio but my question is about a feature called “Extension Functions” in the Kotlin language that grabbed my attention because i thought for example instead of creating a “Custom ArrayAdapter” to handle our custom “layout” why not just extend the method from the “ArrayAdapter” class, give it new functionality to support the custom “layout”? is this something we can do using this new language or i got the concept wrong ?
    I stumbled upon this new language while i was searching for a good book to learn Java from and some of the people recommended me to go for this “Kotlin” language instead of Java if i will specialize in Android Development only and here’s an article i found on google about the differences about the 2 languages:
    https://www.androidauthority.com/kotlin-vs-java-783187/

    please advice about this :slight_smile:

  23. الهرموشي عبد المجيد قال:

    شكرا معلومات ذهبية شكرا جزيلا
    بفضل الله و نعمه و دعم شباب مثلكم سوف نتطور للافضل ان شاء الله
    بالتوفيق

  24. مصطفى قال:

    مقاله جيده جدا شكرا لك

  25. طه حتيوش قال:

    ما أقول فيك يا بحر كالعادة أنتم غير عاديين بارك الله في علمكم و جعلكم شموس تضيء درب السالكين الى العلم النافع و العمل الصالح. شكرا ألف مرّة

  26. محمد قال:

    انا اشكرك من اعماق قلبي اروع ماقرأة من مقالات جمييله

  27. محمد قال:

    وفقك الله واسأل الله ان يحقق احلامك

  28. ايمان قال:

    جزاك الله خيرا

  29. Asmaa Thabet قال:

    مقال رائع ومعلومات قيمة . بارك الله فيك

اترك رداً على محمد إلغاء الرد