للبرمجة أيضا أسرار التعلم ... 9 نصائح تجعلك قادرا على إكتساب أي لغة برمجة في ظرف وجيز

 في أيام دراستي لمجال البرمجة و المعلوميات عامة، أخبرني صديق لي ان تعلم البرمجة سهل و صعب في نفس الوقت، لم أقاطعه إطلاقا و تركته يردف قائلا ان البرمجة حبكة جميلة، ما إن تعرف أسسها و قواعدها و ألغازها، فقد قمت بتشفير نصف لغاتها و تقنياتها، و صرت قادرا على التعامل مع البرمجة بشكل سلس و إحترافي. اتذكر حينها و أتذكر جيدا انه قد دعاني للتمشي قليلا في أرجاء المنطقة، و ظل يخبرني طيلة الممشى أشياء مذهلة عن البرمجة، لم أكف إطلاقا عن الإنصات له و الصمت كذلك مستمعا لكل حرف يخرج من شفاهه، لقد لمح للبرمجة بالعديد من التلميحات، فقد لقبها بلعبة " Poker " ما إن تجيد قواعد اللعبة فستفوز دائما، و لقبها كذلك انها " عجين " ما إن تجيد صناعته و تدليكه يمكنك صناعة خبز منه، او رغيف، او حلوى او اي شيئ تريد.

للبرمجة أيضا أسرار التعلم ... 9 نصائح تجعلك قادرا على إكتساب أي لغة برمجة في ظرف وجيز


دعني انتقل معك للحاضر و أفسر لك ما إستفدته من صديق دراستي، ببساطة يا صديقي البرمجة لها قواعد أساسية، قواعد بُنيت على أساسها في الأصل شيئ إسمه " البرمجة "، ثم قامت العديد من الشركات و الأشخاص بأخذ هذه القواعد و دمجها مع بعض القواعد الأخرى من مجالات مختلفة، و تكوين لغات برمجية أخرى او تقنيات أخرى، لكنها كلها مبنية على نفس الأساس و على نفس القواعد، فإن إستطعت إيجاد قواعد البرمجة، تعلمت لغاتها مهما اختلفت بشكل سريع و فعال . 
في هذا المقال سنطرح عليك مجموعة من النصائح التي ستجعلك قادرا على تعلم أي لغة برمجة مهما كانت بسهولة و إحترافية و في وقت وجيز كذلك، و نستقبل نصائح أنت أيضا في التعليقات . 


1 - ليس الـ Php و ليس الـ Java ... بل الـ DSA : 

" مرحبا ... انا جديد في المجال، اي اللغات البرمجية تنصحوني بتعلمها ؟ "، كم مرة واجهت هذا السؤال في مجموعات فيسبوكية ؟ او مواقع مثل Quora ؟ او صفحتك على الفيسبوك كما نتوصل بها نحن دائما، ان السر ليس في لغة البرمجة، فتعلمك للجافا قد يأخذ منك وقتا طويلا لشساعتها و كبرها و إستخداماتها العديدة، فإن اردت تعلم الجافا عليك ان تتعلم الجافا الإختصاصية، فجافا الأندرويد ليست جافا المواقع و ليست جافا تطبيقات سطح المكتب و ليست جافا الذكاء الإصطناعي، مما سيضعك في حيرة من أمرك امام لغة ضخمة كهذه، و نفس المثال عن الـ Php , Python و غيرها من لغات البرمجة . 
إن السر يا صديقي لا يكمن في لغة البرمجة، يكمن في الأساسيات الهيكيلية للبرمجة، و هنا نتحدث عن الـ DSA، و هي إختصار لعبارة Data Stricture and Algorithm، هيكلة البيانات و الخوارزميات، تسمح لك الخوارزميات بتعلم العديد من الأشياء على رأسها الـ Problem Solving او حل المشاكل البرمجية و طريقة التخطيط لأي مشروع برمجي، الى جانب ان قواعدها مُطبقة في كل لغات البرمجة مع إختلاف الـ Syntax فقط، فإن تعلم أساسيات الخوارزميات و كيفية كتابة خوارزمية نظيفة و سليمة، فأنت قادر على كتابة سطر برمجي بأي لغة برمجة بإحترافية و بشكل سليم، الإختلاف يبقى فقط في الـ Syntax . 
ثم وجد لاحقا خبراء في المجال ان الخوارزميات جيدة، لكن يمكن لشخص كتابة خوارزمية بشكل عادي، و يمكن لشخص آخر ان يكتبها بذكاء، بإختصار للكود البرمجي، ليس هذا فقط، بل إبتكر طريقة أسهل و أيسر و أكثر حماية و فعالية، خصوصا حين يتعلق الأمر بالديناميكية او التعامل مع البيانات، فعلى سبيل المثال كيف نستطيع تسجيل عدد من البيانات غير معروف ؟ فنحن يمكننا فقط تسجيل Array مثلا بعدد من الخانات المحددة، ماذا لو كان عدد الخانات صغير جدا مقارنة مع حجم البيانات ؟ ماذا نقوم بوضع عدد كبير من الخانات نملأ بعضها و نترك بعضها فارغا ؟ هذا سيأخذ الكثير من المساحة، فكيف يمكن جعل المصفوفة ديناميكية قادرة على التقلص و التمدد حسب نوع البيانات ؟ 
او بمنطق آخر لنتحدث عن الفسيبوك، الفيسبوك لديها أزيد من 4 مليار مستخدم تقريبا، ماذا لو اراد شخص ما الدخول لحسابه ؟ هل سيتوجب علينا المرور على كل سطر من المستخدمين و مقارنة اليوزر و الباسوورد الى حين إيجاده ثم الدخول ؟ قد يستغرق الأمر أياما، ربما قرونا لو كان الفيسبوك موجودا سنة 1980 ... هنا تتدخل هيكلة البيانات التي تساعدنا في التعامل الدقيق و القوي مع البيانات بمختلف أنواعها . 
إذن الـ DSA هي البداية، إتقانك للـ DSA يعني تقليص حجم كبير من المعاناة في تعلم أي لغة برمجة مستقبلا . 


2 - تعلم الـبرمجة كائنية التوجه او الـ OOP :


البرمجة كائنية التوجه او الـ Object Oriented Programming هي الملاذ، و هي ثاني شيئ يجب عليك ان تتقنه كثيرا بعد ان تتعلم كتابة الـ Syntax في لغة برمجة معينة، فبعد ان تتعلم الطباعة و كتابة الـ if Else و الـ For , While , Switch و غيرها، عليك ان تبدأ في إتقان الـ OOP من أسفله لأعلاه، يوجد إختلاف طفيف في كيفية إستخدام تقنيات الـ OOP في اللغات البرمجية، لكن عموما يوجد مبادئ أساسية تتمتع بها البرمجة كائنية التوجه من الأساسي و الضروري فهمها بشكل عميق على رأسها الرباعي الذي يشكل أسس الـ OOP و هي الـ : Encapsulation , Inheritance, Abstratction و الـ Polymorphisme، هذه القواعد الأربعة تشكل تقريبا الـ OOP بأكمله، و ننصحك نصحاََ شديدا بتعلمها و فهمها و التعمق الكبير فيها، فهي أساس كل برنامج حي اليوم كيفما كان، او اي منصة او موقع في العالم كذلك . 


3 - إكتساب البرمجة يأتي بكثرة المشاريع لا بكثرة الكورسات : 

لطالما كررنا هذه الجملة في العديد من مقالاتنا و العديد من منشوراتنا كذلك، و ذلك لأنها حقيقة فذة لا يمكن إنكارها، ان تنوي البدئ في تطوير تطبيقات الأندرويد لا يعني ان تشاهد دورة على الفيسبوك مكونة من 186 فيديو لن تستفيد من معظمها، بل حتى انك ستقوم فقط بنسخ ما يقوم مقدم الدورة بكتابته و تعتقد انك قد تعلمت تلك اللغة او التقنية البرمجية، و هو خطأ شائع يقع فيه العديد من المطورين و المبرمجين خصوصا المبتدئين في المجال .
إن الطريقة الصحيحة للتعلم هي مواجهة الكود وجها لوجه و قبضة لقبضة، تريد تعلم تطوير تطبيقات الأندرويد بإستخدام الجافا ؟ الأمر سهل، قم بالبحث عن فكرة لتطبيق تريد إنشاءه، او قم بوضع هدف محاكاة تطبيق معين في هاتفك او تطبيق مشهور مثلا ( لا مشكلة في المحاكاة فالهدف هو التعلم أولا )، ثم حاول تجسيد كل جزء من التطبيق من الصفحة الرئيسية التي تتطلب الدخول الى تصدير البيانات ثم جلبها ثم التعامل معها، هنا ستواجه العديد من المشاكل مما سيجعلك تبحث أكثر و أكثر، تستغل قدراتك أيضا في الخوارزميات من أجل معرفة الطريقة الصحيحة لتحقيق كود ما في التطبيق، ستبحث عن تقنيات أخرى تدمجها مع التطبيق مثلا Firebase، شيئ لن يخبرك إياه مقدم الدورة، لأنها ببساطة دورة ممنهجة الهدف منها تعلم كتابة الكود، لا إستخدامه . 


4 - أو إقرأ أكواد برمجية لمبرمجين و مشاريع أخرى : 


سأخبرك بشيئ أخبرني به نفس الصديق ذو المحادثة أعلاه، لا احد في هذا العالم يجيد لغة البرمجة كاملة، حتى و إن كان مختصا فيها، بل ربما حتى صاحبها و مطورها لا يجيدها كاملة، لأنها ببساطة شاسعة الإستخدام و ليس نفس الكود البرمجي يُعاد إستخدامه في كل مشروع او كل مجال، لذلك ستتعلم أنت البرمجة او اللغة البرمجة حسب نوع الإستهلاك الذي تريد تطبيقه عليها، فإن كنت تريد تعلم برمجة تطبيقات الأندرويد ( و سنأخذ هذا كمثال لبقية هذا المقال ) فأنت ستتوجه مباشرة لتعلم الجافا المختصة في تطبيقات الأندرويد . 
لكن هذا بحد ذاته يخلق تفرعا كبيرا، فتطبيق للشات يتطلب أكوادا مختصة مختلفة كليا عن تطبيق موقع اجتماعي و عن تطبيق رفع للملفات و عن تطبيق للتعديل على الصور ...، و لتوسيع مداركك في الأندرويد بشكل عام، نقترح عليك نصيحة قوية، إقرأ أكواد المبرمجين الآخرين، توجه الى منصة مثل Github و تصفح مشاريع الآخرين الخاصة بالأندرويد، إطلع على الكود الخاص بكلاس معينة، تمعن في كيفية تسمية المعطيات مثل الـ Functions و الـ Variables، إقتبس منه طريقة كتابة الكود، تنظيم الكلاس، و تابع معه الكود البرمجي و كيف إستغله من أجل تحقيق غايته، حتى انه يمكنك إستغلال ذلك السطر أيضا في تحقيق نفس النتيجة، او ربما أفضل تطويره بشكل أفضل . 
ليس فقط قراءة الأكواد البرمجية، إن كنت ضمن مجموعات فيسبوك برمجية، فستجد ان الكثيرين يسعون للحصول على بعض الإجابات حول أكوادهم البرمجية، او أكوادهم البرمجية لا تشتغل بكفاءة، تطوع يا صديقي و حاول حل المشكل، سيساعدك هذا على تنمية مهاراتك و تعلم اللعاة البرمجية التي تريد في ظرف وجيز جدا و بإحترافية .

5 - إعتمد على مواقع الأحاجي في التعلم : 



في أيام دراستي أيضا، كنت أستعد للإمتحانات بطريقة مختلفة قليلا، إذ كنت ألج الى موقع HackerRank، ثم أختار اللغة البرمجية التي انا بصدد ان امتحن فيها، مثلا الـ SQL، ثم أبدأ في حل مجموعة من المشاكل التي يوفرها لي الموقع، أبدأ في تنفيذ أوامر و إستعلامات الـ SQL و أشغل بعض البديهة في حل المعقدة منها، حين أتواجه و الإمتحان، أجد نفسي قادرا على تحليل المسائل و قادر على كتابة إستعلام صحيح منطقيا . 
ما أحاول ان اخبرك به هنا، ان مواقع مثل HackerRank هي مواقع تسمح لك بتطوير قدراتك في مجال البرمجة، اشرنا سابقا إلى ان العمل على مشروع برمجي خير لك من مشاهدة كورس برمجي، لكن أحيانا مشروع برمجي قد يتطلب أشهر، و وقتك محدود في التعلم، لذلك يمكنك الإعتماد كليا على حل المشاكل البرمجية المقدمة لك من طرف مواقع مثل HackerRank . 



6 - إكتساب لغات التحليل تُساعدك أيضا على تعلم البرمجة في ظرف وجيز :


يُعتبر المبرمج الدرجة الأخيرة في سلم الـ IT، إذ يعلوه العديد من الأشخاص الآخرين المحترفين في المجال مثل الـ Project Manager و الـ Analysis و غيرها، و يعتبر المبرمج مجرد شخص يقوم بترجمة الأفكار و المعطيات و التحليلات الى كود برمجي لا أقل و لا أكثر، لكن من يعلوه في هذا السلم قد كان مبرمجا من قبل، بل يعرف كل جوانب البرمجة و ملم بكل تقنياتها كذلك، لكنه قرر ان يأخذ منحى آخر، قرر ان يمارس التحليل و حل المشاكل و توفير المشروع بشكل مبسط للمبرمجين من أجل تطويره، فإن لم يفعل ذلك، قد يقضي المبرمج أشهرا محاولا تفسير ذلك المشروع و تفكيكه.
يعتمد المحلل على تقنيات و لغات أخرى في التحليل مثل الـ UML او Merise، هذه التقنيات تساعد على تحليل المشروع البرمجي و تفكيكه، و لا يمكنك إطلاقا تفكيك مشروع برمجي إن لم تكن لديك خلفية قوية على البرمجة، فالـ UML على سبيل المثال يسمح لنا بتفكيك المشروع البرمجي او فكرته الى Diagrams مختلفة، بعض هذه الـ Diagrams و لنقل مثلا Class Diagram يسمح لك بتحديد الكلاسات و الـ Objects او الكائنات التي ستستخدمها في مشروعك البرمجي، و دورة حياتها (Object Lifecycle) و كذلك خصائصها و كيف تتحرك وسط مشروع برمجي ( هل ستكون عبارة عن Abstraction و لديها قيم أعلى او مجرد كلاسات عادية ... ). 
إتقانك لمهارات التحليل أشبه بإتقان الخوارزميات بشكل نظري، بحيث تستطيع حينها التعامل مع أي مشروع برمجي و برمجته كاملا في بضعة أسابيع بشكل نظيف و صحيح، بدل قضاء جل الوقت في مشاهدة كورس بسيط لمشروع يعتمد على كلاس واحدة و تطبيق عمليات الـ CRUD على الكائن الخاص بها . 

إقرأ أيضا : دورة تحليل و بناء مشروع متكامل على الويب [ الدرس الخامس] : الـ Merise ام الـ UML ؟

7 - لا تحاول تعلم الكثير في وقت واحد : 

سيخبرونك انه لبرمجة تطبيقات الأندرويد ( و كما أشرنا في الأعلى سنأخذ برمجة تطبيقات الأندرويد كمثال حي في هذا المقال ) سيتوجب عليك تعلم الجافا، ثم تعلم أساسيات الـ XML من أجل تطوير الواجهات، و إن اردت ربط التطبيق بقواعد بيانات عليك تعلم أساسيات الـ Php و الـ JSON، او يمكنك إستخدام الـ Firebase، او إستخدم قاعدة بيانات محلية SQLite و تعلم الـ SQL . 
قد تُطبق نصيحتنا أعلاه و تبدأ في برمجة مشروع برمجي بسيط قد يتطلب منك خبرة في كل التقنيات السابقة او بعضها، ثم تشاهد فيديو للـ XML و تقرأ توثيق الـ Firebase لتعلمها أيضا، و تراجع في نفس الوقت تقنية الجافا للأندرويد، النتيجة النهائية هي : لا مشروع حي + لم تكتسب أي شيئ . 
أولا، بما انها خطواتك الأولى في المجال، إختر مشروعا برمجيا بسيطا جدا لا يعتمد على قواعد البيانات إطلاقا، بالطريقة التالية قد ازحت العديد من الخيارات، ثم إبدأ بالأساسي او الرئيسي ( و هي الجافا ) ثم الثانوي ( الـ XML )، إستعن بالنصائح السابقة من أجل تعلم الجافا الخاصة بالأندرويد من أجل تطوير التطبيق الذي تريده، لا تعر للواجهة أي إهتمام في الوقت الراهن، فقط تأكد من معرفتك اليقينية للأكواد و تلاعب بها كما تريد، بعد إنتهائك من هذه الخطوات، لك الحرية في تطوير مهاراتك في اللغات الثانوية الأخرى حسب الحاجة، فإن اردت تطوير واجهات بأنيميشن إحترافية و جرافيك مثالي، إستعن بالـ XML و أساسياته، و تعلمها كذلك الى حد الإتقان ثم إنتقل للمهارة الأخرى مثل Firebase و هكذا دواليك.
عدم تركيزك على لغة برمجة محددة يعني ضياع وقت أطول في تعلمها و عدم إكتسابها بشكل يقيني . 

8 - لماذا تبرمج ؟ 

توقف لوهلة و أجب على السؤال التالي : لماذا تبرمج ؟ هل لأن جزء من مقررك التعليمي ؟ هل لأنك مولوع بالمعلوميات و تريد التخصص أكثر في مجال البرمجة ؟ هل لأن البرمجة مربحة الى حد قول البعض ؟ هل لأنك تعشق الأكواد ؟ او لأنك تريد فهم النكات البرمجية ؟ 
نحن نحكومون بقواعد السببية، فلكل سَبَبِِ هناك مُسَبِّب، و لكل فعل رد فعل، و هذين الفعلين يساعداننا على تحديد فترة التعلم و تقليصها أيضا إن كانت كبيرة، إنها أشبه بتحفيز او Motivation بالنسبة للمتعلم، إن لم يكن هناك سبب لتتعلم فلما نتعلم البرمجة من أساسه ؟ 
حدد أهدافك قبل كل شيئ، ضع نصب عينيك هدف عليك تحقيقه في فترة معينة او وجيزة، ثم اجرد كل مقتضياته من لغات برمجية او تقنيات تسويق و غيرها، ثم إبدأ في التعلم البرمجة، عليك ان تتعلم من أجل تحقيق الهدف X ، و من أجل تحقيقه وجب تعلم اللغة  Y و اللغة Z في المدة T . 

إقرأ أيضا : مجموعات عربية رائعة على الفيسبوك مخصصة للمبرمجين عليك الإنضمام اليها الآن !

9 - إنضم لمجتمعات برمجية لها نفس الإهتمامات : 

لا يوجد ما هو أفضل من أن تجد توأم روحك في هذه الحياة، الأمر سيان حين يتعلق الأمر بالبرمجة، توجه الى مجتمعات برمجية ( مجموعات فيسبوك، مجموعات واتساب، قنوات تيليجرام، صفحات برمجية .... ) ثم شاطرهم أطراف الحديث، إطرح إستفساراتك في المجال، قم بالإجابة عن إستفسارات الآخرين في المجال، شاركهم علمك و إقتبس من علمهم، إن واجه أحد مشكلة ما، قم بحلها فذلك سيفيدك على المدى البعيد، ستتعلم بحلك لذلك المشكل او التعليق على ذلك الإستفسار سطر برمجي جديد في اللغة التي انت بصدد تعلمها، ستتعلم معلومة جديدة حول تلك اللغة، مما يعني تلقائيا تميزك أكثر في المجال البرمجي و تقليص مدة التعلم الخاصة بتلك اللغة البرمجية او التقنية البرمجية مهما كانت .



شاركه على :


تعرف على كاتب المقال