كيف اتعلم البرمجة
سنتعرف في هذا المقال على خطة تعلم البرمجة للمبتدئين المقدمة من المبرمج محمد مشرف الذي يعمل كمبرمج في شركة امازون.
وكذلك عمل قبلها لدى شركة مايكروسوفت و بوكينغ وتلقا عروض للعمل في تويتر وفيسبوك وغيرها من الشركات العالمية.
ملاحظة: كل المعلومات التي سنكتبها في هذا المقال جاءت
على فمه في فيديو له لكن الفيديو تم حذفه من قناته لاسباب غير معروفة.
اولا ماهي مميزات تعلم البرمجه :
1) الدخل الكبير لهذه المهارة .
2) يمكنك ان تتعلمها من البيت دون الحاجة لمعاهد او جامعات.
ثانيا كم وقت يستغرق الامر :
يستغرق تعليم البرمجة من 6 اشهر لسنتين و ستحتاج لتعلمها معرفة بسيطة للغة الإنجليزي وكيفية استخدام الحاسوب + الرغبة فقط .
كما يجب ان تعرف ان مجال البرمجه من اكثر المجالات المطلوبة في العالم.
ثالثا ملاحظة مهمة :
1)اذا كنت تريد ان تتخصص في الفرونت اند ( front-end)او data science فهذا المقال لن يخدمك كثيرا .
2)عليك ان تدرك اهمية التأسيس في تعلم البرمجة وان السبب الرئيسي لفشل معضم المبرمجين هو غياب التأسيس السليم .
والأن دعونا نبدا في مراحل هذه الخطة :
مراحل عملية التأسيس :
و قسم هذه المرحلة الى المراحل التالية
1)لغة البرمجة التي يجب ان تتعلمها اولا .
2) الخورزميات ( algorithms).
3) هياكل البيانات ( data structures).
4)انماط التصميم ( design patterns).
5)حل المشاكل ( problem solving).
واعتبر ان هذا هو الاساس الذي يجب ان يكون موجود عند اي شخص قبل ان يفكر في التخصص في مجال من مجالات البرمجة ( ويب ..موبايل...ذكاء صناعي ...الخ) وهو الإجابة الأفضل على السؤال المشهور
اريد تعلم
البرمجة من أين أبدأ ?.
اولا : لغة البرمجة التي يجب ان تدرسها اولا :
يقول " من خبرتي الشخصية لاكثر من 17 سنة اول لغة تبدأ بيها هي c++ لانك لو تعلمتها من السهل ان تنتقل الى اي لغة برمجة اخرى في فترة قصيرة جدا والسبب ان لغة c++ تستعلمك كيف تتعامل مع الهارد وير ( hardware)
وكيفية عمل memory management بشكل احسن من اي لغة برمجة حديثة اضافة لانها تحتوي مواضيع اساسية لم تتطرق لها لغات البرمجة الاخرى .
سيأخذ منك هذه المرحلة المسمات ( structured programming) من ثلاث الى 5 اشهر .
كذلك فإنك حتى لو لم تستعمل هذه اللغة بعد اليوم يبقى التأسيس الذي ستمنحك اياه مهم جدا جدا لك قبل الإنتقال الى لغات عالية المستوى ممكن ان مشاكلها تكون صعبة بالنسبة لك نتيجة عدم وجود التأسيس الكافي ".
وبهذه الطريقة انت تسير في الطريق الصحيح لي كيفية تعلم البرمجة
ووضع الاستاذ مشرف عدة روابط لكتب ينصح بها لتعلم هذه اللغة اضعها بين ايديكم :
كتب c++
الاول
الثاني :
ثانيا : البرمجة الشيئية او الكائنية التوجه ( oop)
الى حد الان كل متعلمته في لغة . c++(مع اهميته في خطة تعلم البرمجة للمبتدئين) هو كتابة دوال متناثرة' فما الذي عليك تعلمه لجعل الكود الخاص بك اكثر
تطورا ؟ ...... انها البرمجة الشيئية oop وهي تختص في كيفية التفكير في البرمجة بشكل يشبه ما ترى به الحياة من حولك .
فكل كائن مثلا داخل لعبة يبرمج بشكل منفرد ويحمل هذا الكائن خصائصه ( طول وزن سرعة ) مخزنة فيه ولا نضطر لكتابته في الكود الخاص بنا
وتعلمها مهم جدا لاي مبرمج ويجب التركيز فيها على ثلاث عناصر ( مع اهمية باقي العناصر) تعتبر هي اهم المحاور فيها
1) encapsulation
2) inheritance
3) polymorphism
4) operator overloding
مع ملاحظة ان الخيار الرابع ليس متواجد في كل لغات البرمجة فمثلا لن تحتاجه اذا كنت ستتخصص في لغة الجافا.
بعد الإنتهاء من تعلم البرمجة كائنية التوجه يجب ان تقوم بعمل مشروع يدل على انك فهمت ما تعلمته مثل لعبة
Snake او ping pong ومن الأحسن ان تنفذ اللعبتين .
ستجد ان الامر صعب جدا وهذا سيعلمك اشياء لن تجدها في الكتب مثل: التحليل( analysis)و.التصميم(desingn) .....الخ ولا تنتقل الى اي شئ قبل اكمال المشروع وبذلك تكون قد سرت خطوات كبيرة في برنامج تعلم البرمجة للمبتدئين.
ثالثا : هياكل البيانات
رغم تعلمك للبرمجة الكائنية وتنفيذك لمشروع لكن ستبقى هناك بعض المشاكل لديك خاصة حول ترتيب المتغيرات في الكود والحل لهذه المشكلة هو تعلم هياكل البيانات " (data structure) وتعني كيف نبني اللعبة الخاصة بنا بشكل يسمح لنا بالإستعمال الامثل للذاكرة اي كيف تستعمل اقل ذاكرة ممكنة وبأحسن طريقة وكيف تستغل الموارد المتاحة بشكل افضل وجعل البرامج تعمل يأحسن طريقة .
الكتب التي ينصح بها :
الاول
الثاني
رابعا : الخورزميات
وهو علم يعني بطريقة تنفيذ الشئ عبر خطوات محددة ومنظمة.
لكن كيف نفرق بين خوارزمية سيئة وجيدة :
الفرق هو time notation اي الوقت الذي سيستغرقه البرنامج لكي ينفذ و complexity اي طول الكود وعدد اسطره وما مدى تعقيده .
بعد دراسة الخوارزميات و هياكل البيانات يمكنك ان تعود الى المشاريع التي نفذتها في لغة c++ وانظر ماذا يمكنك
ان تحسن فيها بناء على ما تعلمته في هذين المجالين بحيث تستعمل احسن خوارزمية واحسن هيكل بيانات.
وضع روابط لكتب :
الاول
الثاني :
خامسا: انماط التصميم
الان ندخل في الديزاين باترن ويقصد به طريقة تصميمك للبرنامج ( لا يقصد الشكل الخارجي )بل من حيث التخطيط الداخلي اي تقسيم الملفات وال. Classes ...الخ وليس شرط ان تدرس هذا المجال مع الاساسيات لكن ستفيدك جدا لو درستها في البداية .
الكتب :
الاول :
الثاني :
سادسا : حل المشاكل :
افضل المواقع لتعلم هذه المهارة هو :
Hackerrank.com
وعليك ان تحل اكبر عدد تستطيعه من المشاكل وبعد هذا تستطيع بإذن الله ان تقوم ب interviews مع الشركات لان معضم اسئلتهم تأتي من هذا الموقع السابق الذكر .
المرحلة الأخيرة :
اذا اردت ان تعمل مع شركات كبيرة مثل. Google و امازون فأنت ينقصك شئ واحد فقط وهي تحديد مجال تريد ان تعمل فيه فيوجد عدة تخصصات في البرمجة ( مواقع .. تطبيقات ... برامج الديسك توب ) فإذا اخترت تطبيقات الاندرويد مثلا اذهب لقوقل بلاي و اختر بضع تطبيقات مشهورة وحاول تقليدها وضعها على معرض الاعمال الخاص بك .
كما انصحك بأخذ كورس cross platform اي انك تستطيع عمل تطبيقات على مختلف المنصات بنفس لغة البرمجة والكود مثل :
Flutter.....Zamorn....react
وبفضل التأسيس الذي تأسسته ستجد ان اي مجال ستختاره لن يأخذ منك الكثير من الوقت .
وهكذا ستكون قد طبقت خطة زاى اتعلم برمجة من صفر.
يمكنك مشاهدة الفيديو الذي شرح فيه المبرمج محمد مشرف الخطة من هنا:
تعليقات
إرسال تعليق