“لا تجعل هدفك من تعلم البرمجة أن تُسهل الأمور (قدر) المستطاع، بل اجعل هدفك أن تُسهل الأمور (أكثر من) المستطاع.”
بروس مكيني
هل تهدف إلى أن تصبح مبرمجًا محترفًا يومًا ما؟
هل ترغب أيضًا في تطوير تطبيقات موبايل أو موقع إلكتروني أو ألعاب ليقوم الكثير من الناس بالعديد من الأماكن استخدامهم ؟
هل أنت متحمس بما يكفي لاتخاذ خطوة كبيرة لدخول عالم البرمجة؟
فأنت في المكان المناسب لأنه في نهاية هذه المقالة سوف تحصل على مقدمة موجزة توجهك لدخول عالم البرمجة.
ماهي البرمجة؟
البرمجة هي كتابة التعليمات والأوامر(سطور برمجية) التي يراد تنفيذها على الحاسب، لحل مشكلة أو تأدية مُهمة مُعينة، يتم كتابة هذه التعليمات على إحدى بيئات العمل البرمجية باستخدام لغات برمجة، ثم تحويلها إلى لغة الآلة ليستطيع الحاسب فهمها وتنفيذها.
لماذا يجب تعلم البرمجة؟
على الصعيد الشخصي، فإنَّ تعلم البرمجة سيوسع أفق تفكيرك كثيرًا، خصوصًا أن تعاملك مع الحاسوب يتبع إلى التفكير المنطقي والتحليلي الذي يكون مسؤول عنه النصف الأيسر من الدماغ وبالتالي تعلم البرمجة وممارستها ستنمي قدرتنا على الاستنتاجات وتحليل المشكلات المعقدة وإيجاد حلول لها، وتطوير التفكير المنطقي واستيعاب المعلومات النظرية، وبالتالي ستختلف طريقتك للتعامل مع أمورك الحياتية.
على الصعيد المهني، احتلت وظيفة مُطور البرمجيات المرتبة رقم واحد بقائمة المهن الأعلى دخلاً لعام 2022، فالعالم بأكمله اتجه نحو التحول الرقمي، ويزداد التطور والطلب على هذا المجال بشكل انفجاري، والأهم من هذا كُله، أن العمل في مجال البرمجة لا يتطلب بالضرورة التواجد الفيزيائي ضمن مقر شركة معينة، بل تستيطع العمل من منزلك ببيئة العمل التي تريحك وتُعد هذه الميزة ثاني أهم ميزة بعد كونها الوظيفة الأعلى دخلاً بالعالم.
ماهي لغات البرمجة؟
لغات البرمجة هي مجموعة من المفردات والقواعد اللغوية التي تشكل لغةً وسيطةً للتخاطب مع الحاسوب وأمره بتنفيذ تعليمات وأشياء محدَّدة، فالحاسوب يفهم لغة الآلة التي تعتمد على نظام العد الثنائي (أصفار وواحدات) ولا يمكن للبشر التعامل معها بشكل مباشر وذلك لإن من الصعب تفسيرها أو التعديل عليها من قبل مُبرمج آخر، لذا كان هنالك حاجة مُلّحة لوجود لغة وسيطة بين الحاسوب والمبرمج ؛ نتيجةً لذلك، انبثق مفهوم لغات البرمجة التي يكتبها المبرمج ثم تمر بعدة مراحل ليتم ترجمتها في النهاية إلى لغة الآلة التي يفهمها الحاسوب ليقوم بتنفيذ التعليمات التي طُلبت منه.
الأمر يُشبه وجود شخصين يتكلمون لغة مختلفة وكل منهم لا يعرف التحدث بلغة الآخر، فليستطيعوا التخاطب يستعينوا بشخص ثالث يعرف بلغة كل منهما ليترجم ما يقول أحدهما للآخر.
ماهي بيئات العمل البرمجية؟
بيئات العمل البرمجية أو ما يُعرف “إطارات العمل” frameworks، إطارات العمل هي مجموعة من المكونات البرمجية المجهزة مسبقًا ببعض الأدوات والتقنيات والمكتبات التي قام ببناءها مبرمجون آخرون واختبروها وبنوها بحيث يمكن لأي شخص أن يستخدمها بسهولة بحيث يركز المُبرمج على ما يميز برنامجه دون بناء البرنامج من الصفر، أي يُمكن اعتبارها البنية التحتية الضرورية التي يستخدمها المُبرمج لتساعده في البرمجة بأكبر سرعة وأقل جهد.
لتبسيط الموضوع أكثر لنوضحه بمثال، لو شبهنا المُبرمج بالكاتب الذي يريد كتابة مقالة مُعينة، فأولًا سيحتاج لمعرفة لغة مُعينة يكتب بها مقالته وأيضاً يحتاج لأداة تساعده على الكتابة وعلى سبيل المثال لتكون هذه الأداة هي برنامج Word، إذ يحتوي مايكروسوفت وورد على أدوات جاهزة كتصحيح الأخطاء الإملائية وإمكانية تصدير المقال كملف بلاحقة pfd ، فكذلك الأمر في البرمجة فأنت بحاجة لمعرفة لغة برمجية مُعينة تكتب برنامجك بها لتتخاطب بها مع الحاسب، بالإضافة إلى بيئة برمجية تكتب برنامجك عليها والتي ستكون مزودة بأدوات تسهل عليك عملية البرمجة.
ماهي مجالات البرمجة؟
يجب أولًا تحديد أهدافك بشكل أكثر دقة واحترافية، لأنّ مجال البرمجة كبير ولا يقتصر فقط على عدد معين من المجالات، ولكن يجب أن تكون على دراية بأكثر المجالات المطلوبة بوقتنا الحالي ومن ثم بعد أن تصل لمرحلة الاحترافية يُمكنك التوسع في المجالات الأكثر دقة كبرمجة أنظمة السيارات ذاتية القيادة، لكن في مقالنا هذا سنذكر المجالات الأكثر طلباً في سوق العمل البرمجي والتي تستطيع الانطلاق منها لدخولك عالم البرمحة، ومن هذه المجالات الأكثر شيوعاً على سبيل المثال لا الحصر:
برمجة تطبيقات الموبايل Mobile Applications
النظامان الرئيسيان المسيطران على سوق الجوال حاليًا هما أندرويد ثم iOS، يمكنك برمجة تطبيقات أندرويد بلغة Java أو Kotlin (أو غيرهما) وبرمجة تطبيقات iOS باستخدام Swift (وغيرها).
ستكتشف أنَّ عليك تطوير تطبيقين منفصلين تمامًا، واحد لهواتف أندرويد وآخر لهواتف iOS، وذلك يسبب زيادةً في حجم العمل المطلوب وصعوبةً في إدارة التغييرات.
ولكن في مطلع عام 2017 ظهرت حزمة أدوات برمجية تسمى Flutter، يمكنك بواسطة إطار العمل Flutter برمجة تطبيق يعمل على نظام التشغيل Android و على نظام التشغيل IOS على عكس باقي إطارات العمل الأخرى التي تخصص البرمجة لتعمل على نظام التشغيل Android أو على نظام التشغيل IOS كل منهم على حدى، لذلك هذا يوفر عليك وقت كبير لتعلم البرمجة.
برمجة تطبيقات مواقع الويب Web Applications
تُعد تطبيقات الويب من المجالات المُهمة في عالم البرمجة، إذ تعمل من خلال الويب وبالتالي يكون مناسب لاستخدامه من مختلف الأجهزة إن كانت موبايل أو كمبيوتر أو لابتوب، حيث يتم وضع تطبيق الويب على السيرفر ليستطيع أي شخص لديه رابط موقع الويب الوصول إليه،أما بالنسبة لإطارات العمل واللغات المستخدمة في هذا المجال فسنذكر الأكثر شهرة واستخداماً، فبعض الشركات تستخدم إطار العمل ASP.NET باسخدام لغة إظهار مثل HTML و CSS ولغة JavaScript، والشركات أخرى تستخدم إطار عمل منتشر جداً Laravel باستخدام لغة PHP، فلكل شركة توجهاتها وأسبابها لاختيار الإطار واللغة الأنسب لها.
برمجة تطبيقات سطح المكتب Desktop Applications
ستحتاج في مجال تطوير تطبيقات سطح المكتب لتحديد الاتجاه الذي ترغب السير فيه، فهنالك الكثير من أنظمة التشغيل المكتبية، أشهرها نظام التشغيل ويندوز، ولينكس، وماك ، ولكل منهم جمهوره و تطبيقاته المكتبية الخاصة به، لذا سيتوجب عليك حديد نظام التشغيل الذي تود برمجة تطبيقاته، وبعد تحديد نظام التشغيل المستهدف، يجب عليك تحديد اللغات المفضل استعمالها في ذلك النظام لبرمجة تطبيقاته، فعلى سبيل المثال، اللغات C و C++ و C# هي الأكثر استعمالًا في برمجة تطبيقات نظام التشغيل ويندوز، واللغات C و C++ و Bash هي الأكثر استعمالًا في برمجة تطبيقات نظام التشغيل لينكس، أمَّا نظام الشغيل ماك، فينفرد باستعمال لغة Objective-C.
تطوير الألعاب Gaming
لتطوير الألعاب ستحتاج إلى إيجاد استراتيجية للعبة أولاً، ويجب أن تكون استراتيجية فعال تجذب اللاعب وتجعله يشعر بالحماس لإكمال اللعبة حتى النهاية وأكثر ما تعمل عليه شركات تطوير الألعاب هو العمل على جعل المستخدم يُدمن لعبة ما ليصبح متشوقاً لإصدار نسخ جديدة من اللعبة، فبرمجة الألعاب تتطلب عملًا كثيرًا من فريق عمل متخصص، مدعوم من شركة تجارية.
تُطور أغلبية الألعاب باستخدام محرِّك (engine) والذي يسهِّل عمل المطورين ويتيح لهم بيئة تطوير جيدةة للألعاب. كما يتيح الميزات الأساسية لكافة الألعاب، مثل: نمذجة شخصيات 3D والتحكم بالكاميرا وأمور الأخرى. هنالك الكثير من محركات تطوير الألعاب، وغالبًا شاهدت شعارها في الألعاب التي لعبتها من قبل، نذكر من أشهرها: Unreal Engine و Unity.
يمكن التعامل مع هذه المحركات باستخدام عدِّة لغات، مثل C++ (وهي أشهرها)، وجافا (خصوصًا للألعاب على هواتف أندرويد) و #C.
تذكر أنّ الألعاب غير محدودة بتطبيقات سطح المكتب أو الهواتف، فهنالك ألعاب كثيرة تعمل على المتصفحات باستخدام تقنيات HTML5 و JavaScript والتي يُمكن برمجتها من قبل أفراد هواة وليس بالضرورة شركات ضخمة وكبيرة.
ما هي أفضل لغة برمجة؟
لكل لغة خصائصها التي تميزها وتجعلها أكثر مناسبة من غيرها لمجال معين من مجالات البرمجة، فلكل مجال لغاته وتقنياته وإطارات عمله، فعليك أن تختار اللغة البرمجية التي تخدم مجال تخصصك أولاً ومن ثم تخدم هدفك ومشروعك الذي تريد برمجته، ويُنصح في بداية مسارك البرمجي أن تختار لغة منتشرة ومستخدمة كثيراً لتسطيع إيجاد مجتمعات برمجية تدعم الحلول للمشاكل والأخطاء التي ستواجهها .
يمكنك اختيار لغة البرمجة اعتمادًا على المجال الذي تحب العمل فيه، سألخص لك مسار التعلم لهذه المجالات:
- العمل كمطور ويب full-stack: ويقسم قسمين، الأول هو تعلم تطوير واجهات المستخدم (Front-end) وهي الشكل الخارجي الذي نراه في المواقع التي نتصفحها. والثاني تطوير الواجهات الخلفية (Back-end) وهو عبارة عن ما يحدث خلف واجهة المستخدم من عمليات حسابية ومعالجة التعليمات البرمجية. في الحقيقة، الأمر يشبه التكامل بين عمل المهندس المدني ومهندس الإكساء الداخلي، يمكن التخصص بمجال واحد من هذين المجالين أو كلاهما، ولكل قسم من القسمين السابقين لغاته وإطارات عمله وأخيراً يجب عليك تعلم طرق الربط بينهما.
- العمل كمطور تطبيقات للهواتف المحمولة: أيضاً يقسم لقسمين مثل مجال الويب، وإضافة إلى ذلك يجب عليك تحديد نظام الموبايل الذي تريد برمجته هل ترغب بالتوجه لتطبيقات أندرويد أو iOS كلًا منهم على حدى، أم استعمال تقنيات مثل Cordova أو Flutter لتطوير كلا النظامين معًا، فبناء على جوابك تستيطع تحديد اللغة وإطار العمل المناسب.
- العمل كمطور تطبيقات سطح المكتب: يمكنك البدء بالتخصص في تطوير تطبيقات مكتبية لأنظمة تشغيل محدَّدة مثل: نظام تشغيل ويندوز أو نظام لينكس. يمكنك القيام بذلك بتعلم لغة البرمجة المستعملة في ذاك المجال (كما أشرنا إلى ذلك في قسم تطوير تطبيقات سطح المكتب).
الأدوات اللازمة لأصبح مبرمجًا
يتردد الكثيرون في تعلم البرمجة متذرعين بأن مستواهم في الرياضيات ليس ممتازًا، وهذا ليس صحيحًا، فصحيحٌ أنَّ هنالك أمور تعترضك أثناء أداء عملك كمبرمج تتطلب خبرة في الرياضيات، إلا أنَّه قد تمر عليك فترات طويلة لا تحتاج فيها إلى مسائل رياضية.
كل ما يلزمك للبدء في تعلم البرمجة هو الأساسيات التي يعرفها الجميع. إلى حين اعتراضك أية مسألة أو مشكلة تتطلب مهارة في الرياضيات، هنالك الكثير من المصادر والمراجع التي تستطيع الرجوع إليها آنذاك. بعبارة أخرى، أجِّل هذا الأمر قليلًا ولا تخف. الأهم من ذلك هو أن تكون قادرًا على التفكير بشكل منطقي وبعض المهارات المهمة التي سنذكرها:
التفكير المنطقي
التفكير المنطقي هو المهارة التي تجمع كافة المبرمجين تحت مظلة واحدة، وهي أساس كتابة الخوارزميات، إذ يجب أن تكون قادرًا على اكتساب هذه المهارة وتطويرها من خلال حل المسائل البرمجية التي تعتمد على الحلول المنطقية، وسنقترح لك موقع عربي يطرح مسائل برمجية منطقية بمستويات مختلفة وعليك حلها لتزيد من خبرتك ومهاراتك في التفكير المنطقي، اسم الموقع كودرهَب.
وأيضاً ننصحك بحل مسائل على مواقع أجنبية عالمية مثل Codeforces
الخوارزميات
ينفر منها البعض ممن يريدون تعلم البرمجة ولأسباب حتى أنها لاتبدو منطقية. للأسف كل ما يتخيله المبتدئ عند ذكر “الخوارزميات” هو الرياضيات المعقدة والمعادلات الطويلة والرموز الغريبة. لكن مالايعرفه هؤلاء هو أن الأمر بسيط جدًا. الخوازرميات ماهي إلا تطبيقٌ للتفكير المنطقي في خطوات متسلسلة واضحة تمامًا لحل مشكلة ما. أما كيف تصبح محترفاً بكتابة الخوارزميات؟ الجواب بسيط: يجب عليك أولاً قراءة خوارزميات سابقة لحلول لمسائل برمجية وفهمها ثم ستحتاج لمعرفة وفهم بنى معطيات برمجية. لتحقيق ذلك تستطيع الاستعانة بموقع geeksforgeeks أو أي مواقع أخرى تشرح منطق الخوارزميات وبنى المعطيات.
اللغة الإنكليزية
تُشكل اللغة الإنكليزية عامل مهم في مجال البرمجة، فهي اللغة الأم لهذه العلوم، إضافة إلى ضعف المحتوى العربي في شرح بعض المحتويات، لذا ننصح بتحسين لغتك للحد الذي تستطيع فيه قراءة المقالات الأجنبية وفهمها وأيضاً تطوير مهارات الاستماع لتسطيع فهم الكورسات والفيديوهات الأجنبية.
مهارات البحث
ستحتاج للكثير من عمليات البحث عن حلول للمشاكل التي ستظهر معك، إضافة لمهارات البحث عن مصادر تقدم معلومات مُفيدة فسيقع على عاتقك مهمة انتقاء الجيد منها وإلا ستقع فريسة للمصادر التي تقدم معلومات غير موثوقة وقد تكون ربحية على حساب وقتك وأموالك.
التعلم الذاتي
ستصاحبك مهارة التعلم الذاتي على طول مسارك البرمجي، وذلك لإنه مجال متجدد بشكل مستمر ، فأنت بحاجة لتعلم كل تقنية جديدة تظهر في مجالك، وهذا بحاجة إلى تعلم مستمر وذاتي منك وإلا ستصبح خارج السرب.
كم يستغرق تعلم البرمجة؟
الأمر يتعلق بكم الوقت الذي تقضيه في تعلم البرمجة يومياً، هل تخصص ساعة او ساعتين أو أكثر وماذا تريد أن تتعلم بالضبط ،هل الويب أم تطبيقات الموبايل أو إلخ من المجالات، وهل تتعلم من كورسات منتظمة أم فيدوهات عشوائية، لذا ننصحك بتحديد مسار محدد وعم التشتت بأكثر من مجال بنفس الوقت، وحسب تجارب المبرمجين الذين كانوا يخصصوا من 4 ل 6 ساعات يومياً فإنهم خلال من 4 ل 6 شهور استطاعوا بناء تطبيقهم الأول المتكامل بشكل يؤهلهم لدخول سوق العمل، لكن نعيد وننوه بإن الأمر يختلف من شخص لآخر، فإن العامل الأهم هو التركيز على مسار محدد وتخصيص عدد ساعات ثابت بشكل يومي فالاستمرارية والانضباط هما العاملان اللذان تستيطع التعويل عليهم.
نصائح لتعلم البرمجة
- لا سبيل لاحتراف البرمجة بغير الممارسة وعمل المشاريع، لذلك ننصحك أن تبدأ ببناء برامج وتطبيقات حتى لو كانت بسيطة وأثناء برمجتك لها ستظهر لك مشاكل وأخطاء برمجية، ابحث عن حلول لها ولا تتركها دون أن تقوم بحلها واحدة تلو الأخرى حتى تصل لبرنامج نهائي، ثم في كل مرة زد من مستوى صعوبة البرنامج الذي تريد برمجته، هذه الطريقة الاحترافية والأكثر فعالية لاحترافك البرمجة.
- لا تأخذ المعلومات من مصادر غير موثوقة، ويُفضل بحال عدم وجود خبير تسأله عن مصدر معلومات مُعين، فلتقوم بالبحث عن رأي الأشخاص بهذا المحتوى من خلال التعليقات أو الآراء التي يتركونها في المكان المخصص للمناقشة.
- حاول تنظيم وقتك قدر المستطاع، فالانضباط والاستمراية هما المفاتيح الذهبية لتعلم أي مهارة، ويمكنك استخدام استراتيجيات تنظيم الوقت مثل استراتيجية pomofocus التي تنصح بضبط مؤقت 25 دقيقة عمل و5 قائق راحة ثم وبعد ثلالث إلى 4 فترات عمل يمكن أخذ استراحة طويلة مدتها نصف ساعة.
- وختاماً ننصحك بعد الوصول لمرحلة جيدة من تعلم البرمجة بإن تبدأ مسارك بالعمل الحر كاستلام مشاريع صغيرة على مواقع مثل خمسات ومستقل ليكون لديك دافع حقيقي لتوظيف مهاراتك و إنهاء مشروع متكامل.
مصادر تعلم البرمجة
يوجد العديد من المنصات العربية التي تقدم دورات لتعليم البرمجة لكن يُنصح بالتحري من عناوين محتوى الكورس والتأكد بإنه كورس كامل ومنتهي، ويُفضل الاستعانة برأي خبير في بداية مشوارك البرمجي ليقيم لك مدى أهمية المواضيع التي سيطرحها المصدر، ونذكر لك بعض المصادر العربية التي تُعد مفيدة برأي الأشخاص الذين بدأوا مسارهم البرمجي بناء على تجربتهم :
وأيضاً مواقع أجنبية مثل : geeksforgeeks و w3schools و codecademy من أفضل المواقع لتعلم البرمجة وكل ما يتعلق بها.