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

هل يستطيع اي شخص تعلم البرمجة وان يكون مبرمج ؟

اذا كنت تقدر تفهم هذه المقالة فتقدر تتعلم البرمجة.

هل البرمجة تحتوى على الكثير من الرياضيات ؟

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

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

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

بدون معرفة الواقع و ايش لازم تتوقع , فا من السهل ان تفقد العزيمة قبل ما تتعود على البرمجة. الشيء الاول اللي لازم تعرفه انه مارح تكتب برنامج لشركة او تطبيق مثل تويتر مباشرة , على الاقل خلال الاشهر الاولى من تعلمك. راح تكون برامجك بالعادة بسيطة او على الكونسول (Console) واللي راح تساعدك تتعلم الاساسيات.

هذه الاساسيات هي مفاهيم برمجية مثل المتغيرات و  if الشرطية وعرض النصوص. يعني هذي المفاهيم مو مثل انك تعمل اضافات في لعبة او تعمل تطبيق سوشيال ميديا.

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

  • هل انت تتعلم؟
  • وهل انت تستمتع؟

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

البرمجة تغيرت كثير في السنوات الاخيرة خصوصا في العشر سنوات الماضية  , في 2011 انتشهر مفهوم البوت كامب Bootcamp واللي تعتبر طريقة مكثفة وسريعة لتعلم البرمجة وفي العادة تكون 3 الى 6 اشهر بدوام كامل .

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

كلامي ليس انتقاص بالمحركات الالعاب او لجهد الاشخاص اللي يشتغلون عليها. بس اذا كنت تريد تتعلم البرمجة , فلازم في مرحلة ما تعرف كيف تشتغل هذه الادوات. وتقدر تبدأ رحلة البرمجة باستعمال Minecraft mods او محرك Unity game engine.

نجي الان على السؤال الاخير اللي الكل يسأله.

اي لغة برمجة لازم اتعلم ؟

او بصغة اخرى ” هل لغة البرمجة هاي افضل من لغة البرمجة هذيك “. هنا يأتي جمال تعلم البرمجة, ما تفرق اي لغة تتعلم ! والسبب هو التالي:

  • لازم تبدأ من مكان معين
  • راح تتعلم لغات كثرة بمسيرتك المهنية

التقنية تتغير بسرعة هائلة خصوصا في الفترة الاخيرة , وتلاقي شعبية لغة معينة خفت او طلعت لغة جديدة , او تلاقي لغات تقريبا انقرضت او ماتت مثل Flash . واللي تجبرك انك تتعلم لغة جديدة.

Photo by Markus Spiske on Unsplash

من وجهة نظري الوقت اللي نناقش فيه اي لغة افضل من الثانية هو وقت ضائع ونخسره ويمكن نستغله بشكل اخر. اذا تريد احد يختار لك فا تعلم بايثون Python للاسباب التالية:

  • لغة بايثون مفتوحة المصدر
  • مصادر التعلم كثيرة وتقدر تلاقي حل بسهولة اذا واجهتك مشكلة.
  • لا تزال ذات شعبية عالية بين المبرمجين
  • مطلوبة في الشركات.
  • تقدر تنزلها على اي نظام تشغيل خلال دقائق.
  • النص الخاص ببايثون يعتبر شبيه جدا باللغة الانجليزية .

كيف تتعلم البرمجة؟

بشكل عام, تعلم البرمجة مثل تعلم اي شيء , تحتاج تدرس وتمارس و تتكلم مع الناس فيها مثل الزملاء المبرمجين والمدرسين او الدكاترة. الدراسة والممارسة تساعدك تبني المهارة وتعزز معرفتك. التحدث مع المبرمجين والمدرسين يساعدك تتجنب الممارسات الخطأ.

مصادر التعلم متوفرة بكثرة , ابحث في جووجل عن الكتب واستعمل اليوتيوب والمواقع اللي توفر دورات فيديو تعليمية و ايضا موقع لغة البرمجة الاساسي والي تسمى documentation.

بمرحلة ما  راح تسأل نفسك ” ايش راح ابرمج؟” , مهم جدا انك تختار مشروعك التالي بشكل صحيح, لانه اذا كان ما يجذبك راح تفقد الاهتمام وتوقف برمجة على المشروع , وبالتالي قد تتوقف عن التعلم.

ملاحظات مهمة لاختيار المشروع

الصعوبة

دائما اختر مشروع يتجاوز شوي مهارتك الحالية . هذه الطريقة او المفهوم يسمى ب نطاق المشروع project scope . ودائما الحماس الزايد يقتل المشاريع الشخصية , صحيح انه مغرية انك تقعد تتعلم اسبوع او اثنين اساسيات البرمجة وبعدها تبرمج التطبيق او الموقع اللي دائمًا تفكر تعمله. بس حاول انك تقسم المشروع الى اجزاء وابدأ فيها جزء جزء.

لنقل انك تحاول ان تعمل تطبيق شبيه ب تويتر. تقدر تقسم المشروع على الشكل التالي وتبدأ تبرمجها.

  • عداد للأحرف لما تكتب تغريدة وتنبهك بانك تجاوزت عدد الاحرف المسموحة لك.
  • موقع ينزل تلقائيا التغريدات الجديدة في حال عملت سكرول.
  • نظام تسجيل دخول .
  • تطبيق للجوال او كيف لازم تظهر الصفحة في الجوال.
  • نظام اختصار الروابط

اللستة اللي فوق ما اخذت وقت طويل لكتابتها, وما تتطرقت فيها لميزات معقدة في تويتر ولا حتى 5% من ميزات تويتر.

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

المجال

هل تحب الالعاب؟ التصميم؟ المواقع؟ التطبيقات ؟ السيرفرات؟ الشبكات؟ الادوات المساعدة؟

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

التصميم

البرمجة وتصميم المنتجات تحتاج الى دقة في التفاصيل. لازم تركز على التفاصيل الصغيرة والكبيرة .

Photo by Alexandru Acea on Unsplash
  • كيف راح يطلع شكل الموقع اذا صغرت الشاشة.
  • هل راح يعرف المستخدم انه هذا الزر يؤدي الغرض الفلاني.
  • هل اللعبة ممتعة اكثر اذا لغيت الفكرة الفلانية.

ما تقدر تتخلى ابدا عن مفهوم اتخاذ القرارات في البرمجة , لكن تقدر تخففها بشكل هائل عن طريق اعادة اختراع العجلة. اي انه تعمل شيء سبق وان كان موجود.

مثلا لنقل انك مهتم في صناعة الالعاب وبرمجتها, وحابب انك تعمل اللعبة الخاصة بك. الان صار عنك مهمتين: اول مهمة هي انك تصمم اللعبة, والثانية انك تتعلم كيف تعمل اللعبة وتبرمجها.

اذا بدل ذلك ترجع تصمم لعبة موجودة مثل Call of Duty او FIFA او السوليتير تقدر تركز الان على انك تتعلم اكثر. ( لا تدعي انك صممت هذه اللعبة او تبيعها على انها شغلك لان شغل شخص اخر )

سبق وان كنت احاول اتعلم برمجة التطبيقات فبدل اني اتعلم رسم الواجهات والتصميم اخترت تصميم جاهز من احد المواقع وركزت على اني اكتب الكود واتعلم.

ماذا اتعلم في البرمجة؟

تكلمنا عن كيف نتعلم , الان نتكلم عن ايش اتعلم في البرمجة بغض النظر عن لغة البرمجة اللي راح تبدأ فيها.

الاكتفاء الذاتي

البرمجة تعتمد بشكل كبير على الاكتفاء الذاتي. اذا سبق وان حليت مشكلة بالكمبيوتر عن طريق البحث عنها في Google فانت تعرف القوة اللي توفرها لك جووجل.

المبرمج الجيد لا يتذكر كل شيء , لكن يعرف كيف يحل المشكلة بمجرد ظهورها. للمبرمجين الجدد موقع StackOverflow يعتبر مصدر جدا مهم. تلاقي فيه اسئلة بسيطة مثل ايش يعني variable الى اسئلة معقدة مثل كيف تربط نظامين ببعض.

ذكرنا سابقا انه لازم تستعمل شغل الناس كمراجع والان نقول اكتفاء ذاتي , على ايها لازم نركز؟

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

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

حل المشكلات Debugging

كلنا نكتب كود في bugs 😁 , كلنا نحاول نتجنبها او اذا طلعت لك نحاول نحلها بسرعة. صح الخبرة تساعدك بس بكل تاكيد رح تواجهها حتى لو منت خبير بالبرمجة.

اغلب لغات البرمجة الحديثة فيها ادوات تساعدك تعمل debug , اهم شيء لازم تعرفه هو كيف تستعمل breakpoints و كيف تستعلم عن المتغيرات.

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

بس اعرف انه انت ماحليت ال bug الى ان تكون فهمتها كليًا. السبب انه هذه النقطة جدا مهمة هي لما تواجه bug رح يكون في بالك عدة احتمالات عن سببها, وتقد تجرب وتجرب الى ان تنحل معك.

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

اذا فكرت في الموضوع , هنالك احتمال انه الbug  باقي موجودة بس لسا ماطلعت. في هذا المثال لنفترض انه المشكلة سببها انه ما يقبل صور غير jpeg وفرضيا اجا شخص بعد فترة ورفع صورة png او اي صيغة اخرى , وطلعت المشكلة مرة ثانية.

انت افترضت انك حليت المشكلة , لذلك من المهم جدا فهم سبب المشكلة اللي طلعت ال bug.

كل ما وجدت bug وحليتها, لازم تسال نفسك الاسئلة التالية:

  • وين ممكن تكون موجودة ايضا في الكود ؟
  • كيف اتجنب ان تطلع لي الbug مرة ثانية؟
  • ايش التكنيك او الشيء اي تعلمته لاكتشاف الbug  بشكل اسرع ؟

اخرى

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

ليش نتعلم البرمجة؟

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

التقنية في كل مكان, كنت اتصفح امازون ولقيت النبات المنزلي صار له جهاز للسقاية وينوصل بتطبيق وينبهك اذا جت عليه حشرة او يحتاج عناية! ما تعرف ايش هي الامكانيات اللي ممكن تظهر في المستقبل ويمكن تحتاج للبرمجة في حياتك.

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

في البرمجة الكثير من الامور اللي تقدر تكتشفها. وراح تنتقل من مرحلة “اليرمجة غريبة ” الى مرحلة “كيف ممكن اعمل كذا وكذا” راح تكتب تطبيقات وبرامج اصحابك يحبوها , او تعمل automate لمشكلة عندك في الشغل, او حتى تتحكم باللمبة اللي في البيت.

الخاتمة

خلاصة المقالة الطويلة هي انه عليك ان تبدأ تتعلم. لا تهتم للصعوبات اللي تواجهك في طريقك ولا تهتم للنقاش الذي يدور عن اي لغة لازم تتعلم. ستجد نفسك تعرف فوق 5 لغات بعد فترة وتبرمج فيها. ابدأ التعلم .

مصدر الصورة Unsplash