اهلا وسهلا من جديد.... شرفتوا يا ابطال
سنتعرف باذن الله بعد هذا المقال على خارطة الطريق التي ستتعلم البمجة من خلالها. لكن تذكر التطور في هذا المجال لاياتي الا بالاعتماد على نفسك.... خلونا نبلشششش...
بسم الله نبدأ
مميزات المجال وبعض المعلومات: ماهي المميزات؟ *دخلها كبير جدا *اسهل طريقة تقدر تسافر بيها * يمكنك تعلمها من الاف الى الياء.
كم من الوقت احتاج فيه تعلم واتقان البرمجة؟ يعتمد عليك وعلى الجهد الي راح تبذله, لكن متوسط ذلك من 6 اشهر اللى عامين, لا تقلق سوف تستمتع خلال التعلم.
ماذا احتاج لتعلمها؟
ان تكون جيد في اللغة الانجليزية وتستطيع فهمها. ان تستطيع استخدام الحاسوب بشطل اساسي ان لم تكن انصحك باخذ كورس الرخصة الدولية لقيادة الحاسوب ICDL ثم عد للتعلم. ان تكون لديك الرغبة والقدرة على التعلم.
يجب ان تعلم ان هذا المجال اكثر مجال مطلوب في العالم كله, واكثر مجال فيه نقص في سوق العرض. اذا كان طموحك التخصص في ال Front-end او Data Scienc فهذا المقال لن يخدم الا 20%.
سنقوم بتوضيح المفاهيم التالية وشرحها لذا المرجوا الانتباه والتركيز لاهميتها:
- ماهي لغة البرمجة التي يجب تعلمها اولا؟
- البرمجة الشيئية او الكائنية (OOP)
- هياكل البيانات (Data Structures)
- الخوارزميات (Algorthms)
- انماط التصميم (Design Patterns)
- حل المشاكل (Problem Solving)
بعض الاضافات
- ماهي لغة البرمجة التي يجب تعلمها اولا؟ ببساطة هي لغة سي بلس بلس (++C), لماذا هي تحديدا؟
اذا تعلمت Cpp فمن السهل عليك الانتقال من لغة برمجة الى لغة اخرى في وقت قياسي, حيث انها ستعلمك كيفية التعامل مع ال Hardware وكيفية عمل Memory Management بشكل افصل من اي لغة اخرى بالاضافة لمواضيع لا تتطرق لها باقي اللغات بشكل اوضح. الجزء هذا يسمى Structured Programming, وياخذ من ثلاثة اشهر لخمسة اشهر. لكن ما قمت بتعلمه للان هو كيفية كتابة دوال متناثرة, فما الذي عليك تعلمه لترتيب الكود الخاص بك وتطويره بشكل افضل؟
2. البرمجة الشيئية او الكائنية (OOP)
تعلم هذا الجزء مهم للغاية لاي مبرمج وعند تعلمه يجب التركيز على: Encapsulation
Inheritance
Polymorphism وها قد انتهينا من ++C واصبحنا اسودا بها باذن الله. عند الوصول لهذة المرحلة يجب القيام بمشروع يدل على اننا فهمنا ما تعلمنا مثل : لعبة Snale او Ping Pong الخ... ستجد الامر صعب جدا ولكنك في الوقت نفسه ستتعلم الكثير من الاشياء من خلال بنائك للمشروع مثل Analysis & Design الخ. اهم شي لا تنتقل الى اي موضوع اخر الا عند انتهائك من كامل المشروع. فعند الانتهاء تكون تعلمت تخزين المتغيرات في الرام وغيرها, ولكن ستجد الكثير من المتغيرات غير مرتبة بشكل صحيح في الكود, وبذلك المشروع لم يعد مرتب, فما العمل؟
3. هياكل البيانات (Data Structures)
ستتعلم كيفية استغلال الذاكرة (Memory) افضل استغلال ممكن, كيفية استخدام الموارد المتاحة, وكيفية جعل البرنامج يعمل بافضل طريقة ممكنة.
ماذا بعد؟
4. الخوارزميات (Algorthms)
الخوارزميات هو علم يدرس طريقة تنفيذ الشيء من خلال خطوات معينة يتم تحديدها, يمكن التفريق بين الخوارزمية الجيدة والسيئة من خلال شيئين:
التعقيد (Complexity): اي طول الكود وعدد اسطره.
الوقت المستغرق (Time Notation): نعني بذلك المدة او عدد ال Steps التي سياخذها الكود لتنفيذ ما تريد.
يوجد خوارزميات اساسية مثل:
Sorting Searching Graph Trees,
بعد دراسة الخوارزميات و هياكل البيانات نرجع للمشروع الي انشأناه من قبل لتطويره بشكل اكبر!
5. انماط التصميم (Design Patterns)
لا نقصد بالتصميم بمعناه الحرفي, بل هو التخطيط من داخل التطبيق و كيف يتم عمل ال Classes وغيرها من الامور االتي درستها في OPP فكلها المقصود بها التصميم. مع مرور الوقت وتزايد صعوبة البرامج تم اكتشاف ال Patterns لتسهيل عمل المبرمجين. حيث تم تجميع كل الانماط المشهورة التي تحل مشاكل متكررة في ما يسمى بمفهوم ال Design Patterns.
هل يجب عليها معرفتها؟
لا, ستتعلمها لوحدك مع الوقت والممارسة. لكنها ستفيدك كثيرا لو درستها في البداية, فهي ستوسع طريقة تفكيرك وتجعلك ترى الحياة بشكل مختلف وتقوم بحل المشاكل (حتى الحياتية منها)بشكل افضل.
الى الان تكون اتممت من 80% الى 90% من طريقك للاحتراف, ماذا بعد؟
6. حل المشاكل (Problem Solving)
ستواجهك بعض المشكلات عند تعلمك البرمجة وعملك على المشاربع. وافضل المواقع لهذة الوظيفة (عذرا ليس لي صلاحية نشر الموقع).
بعد ان انتهيت من ال Problem Solving انت قادر على ان تقوم بعمل مقابلات في اكبر الشركات (Google, Facebook, Amazon, Booking) وكل الشركات الكبرى, ففي الواقع اسئلتهم في المقابلات تطابق تماما اسئلة (الموقع الذي تعذر نشره سابقا) تماما.
لماذا اخبرك بهذا؟
لانه لم يعد هناك ما تقلق بشانه, فالباقي سهل. لم يتبقى الان الا ان تحدد المجال الذي ستعمل فيه ( صدقني لايهم اي مجال اخترت, فانت الان محترف يا بطل ويا بطلة وستبدع في اي مجال تخصصت به).
انصحك في البداية ان تاخذ Cross Platform اي انك تستطيع عمل تطبيقات على مختلف المنصات بنفس الكود وبنفس اللغة البرمجية. مثال على منصة تطبيقات الهواتف:
Flutter Zamarn React
ستجد ان اي نوع تريد ان تاخذه لن ياخذ منك الكثير من الوقت, لماذا؟ لانك حصلت على الاساس الصحيح بتطبيقك الحرفي لهذة الخطة.
ماذا بعد؟
لنفرض انك اخترت Android ستذهب Play store تبحث عن افضل عشر تطبيقات ناجحة وتقلدهم حتى تمتلك 7 ال 8 برامج رائعة لكي تحصل على Portfolio ممتاز.
الان امامك طريقين (انت حر الاختيار)
العمل في شركة
العمل الحر
وصدقني انت/ي تستحقون كل الخير بسبب تعبك وجهدك لتصل الى هنا, عاش الابطال.