كيف تعلم نفسك البرمجة؟ (تجربة شخصية)
البرمجة هي المستقبل وتعلم لغة البرمجة يجعلك تقف بثقة على مشارف العمل والإبداع والإنجاز
add تابِعني remove_red_eye 2,272
في عام (2014م) لأول مرة أحول رغبة ملحة في تعليم شيء ما إلى واقع وأبدأ فعلًا في تعلم هذا الشيء. وهذا الشيء كان رحلة التعليم الذاتى رحلة مرهقة وطويلة وفي بعض الأحيان ممكن أن تشعر بالتوهان، تعتقد أنك في صحراء لا تدرك ما هو الطريق الصحيح، فى هذا المقال سوف أصطحبك في تجربتي الشخصية في تعلم البرمجة، ماذا تفعل فى البداية؟ ما هي الأخطاء التي يجب عليك تجنبها؟ وما هي الأشياء التي يجب عليك فعلها؟
هذا المقال طويل نوعًا ما لكني أتمنى ألا يكون مملًّا فمن فضلك جهز كوب النسكافية الخاص بك وأهلا بك فى الرحلة، رحلتنا رغم أنها طويلة نوعًا ما إلا أنها تحتوى على محطتين فقط: مرحلة التعلم، مرحلة البناء
مرحلة التعلم
ما البرمجة؟
اختصارًا وبدون الدخول فى تفاصيل كثيرة لا تهمك حاليًّا وبشكل مبسط، البرمجة هي لغة التخاطب مع الكمبيوتر. أنت تخبر الكمبيوتر بما تريده أن يفعله، البرمجة هي وسيلة التواصل بينك وبين الكمبيوتر لكن الكمبيوتر لا يفهم إلا لغة واحدة وتسمى اللغة الثنائية وهي تتكون من رقمين فقط (0 و 1) لكن تعلم هذه اللغة سوف يكون صعب على الإنسان، فتم اختراع لغات البرمجة المختلفة لتكون وسيطًا بين اللغة الإنجليزية التي يفهمها الإنسان واللغة الثنائية التي يفهمها الكمبيوتر.
البرمجة لها أكثر من لغة بعضها صعب وبعضها سهل، بعض اللغات يتميز في شيء أفضل من غيره، فمثلًا إذا أردت تصميم موقع يجب أن تكون على دراية بلغة تسمى الجافا سكربت وإذا كنت تريد التعامل مع السيرفرات فالبايثون لغتك أما إذا أردت عمل برنامج لمنصة الأندرويد فلغة الجافا هي ملاذك.
قبل أن تفكر فى ما هى اللغة التى ترغب فى تعلمها يجب أن تعرف سبب تعلمك للبرمجة فى البداية.
لماذا تريد أن تتعلم البرمجة؟
سوف أخبرك سرًّا، أنا أكره هذا السؤال. منذ فكرت فى تعلم البرمجة قرأت الكثير من المقالات عن بداية تعلم البرمجة بالعربي وبالإنجليزي وفى الغالبية العظمى كان هذا السؤال يتردد، ألا تكفي رغبتي في التعلم أو حبي للتعامل مع الكمبيوتر، لماذا يجب أن يكون هناك سبب؟! الإجابة عرفتها لاحقًا لكن هناك إجابة نوعًا ما مقنعة وهي أن معرفة سبب رغبتك في تعلم البرمجة سوف يحدد المسار التعليمي الذي سوف تبدأ به، وسوف أشرح المسار التعليمي بشكل مفصل فى الجزئية القادمة لكن الآن أريدك أن تتوقف قليلًا وتسأل نفسك لماذا تريد أن تتعلم البرمجة؟
هل مثلًا ترغب فى عمل برنامج لمنصة التشغيل ويندوز أم أنك ترغب فى عمل موقع شخصي لك على الإنترنت أم أنك ترغب فى الدخول لعالم الأيفون. تحديد الغاية هيسهل عليك تحديد الطريق وهيختصر عليك الوقت لكن لو لم يكن هناك رغبة أو غاية محددة من البداية فلا بأس بهذا أيضا (أنا كنت هذا الشخص). ليس مطلوبًا منك معرفة وجهتك من البداية، إذا كنت تعرف ما تحب فعله فهذا جيد، فالبرمجة مثل المحيط وتحديد الغاية يسهل تحديد الطريق لكن إذا لم تكن تعرف فهذا أيضا جيد لأنك سوف تركز على الأساسيات وهذا سوف يسهل عليك الطريق لاحقًا. الآن أراك تتساءل ما المسار التعليمى؟ وكيف تحدده؟
ما المسار التعليمى؟ كيف تحدده؟
عندما تصبح طالبًا جامعيًّا فإن هناك منهجًا موضوعًا لك عن طريق نخبة من دكاترة المواد التى تدرسها، المنهج هو طريق تمشي فيه أثناء دراستك، هو ما يحدد ما المواد التى يجب أن تدرسها وما ترتيبها؟ هل في السنة الأولى أم الأخيرة وما حجم ما تدرسه منها؟ هل مقدمة فقط أم أدق التفاصيل؟ كل هذا يكون موضوعًا لك ومعروفًا من السنة الأولى لك في الجامعة لكن التعليم الذاتي مختلف عن كل هذا، فى البداية أنت لست على دراية كافية بما تريد أن تدرسه وما يجب أن تدرسه فى البداية وما تدرسه لاحقًا، وأيضا لا تعرف ما هو مهم لك فتهتم بتفاصيله وما هو ليس بالأهمية المناسبة فتكتفي بقشور عنه فقط.
التعليم الذاتى أيضا صعوبته فى تحديد المصادر التى سوف تدرس منها ليس لندرتها بل العكس تماما فحاليا يوجد العديد من المصادر لتعلم البرمجة (مجانية ومدفوعة). وهذا يجعلك في حيرة عن أيهم الأفضل لك فى البداية. لذلك فنصيحة قبل أن تبدأ فى الدراسة فعلًا يجب أن تأخذ من وقتك القليل لتضع خطة دراسية (بسيطة) ولا يجب أن تكون كاملة أو مثالية وليس الغرض منها أن تبحث عن أفضل الكورسات لكن الهدف منها هو معرفة خطواتك المبدئية.
الآن فهمت بشكل بسيط ما هو المسار التعليمي لكن كيف تحدده؟ كيف تعرف وأنت مازلت فى أول الطريق أى طريق تسيره . هناك سؤالين يختصران عليك الكثير ما اللغة المناسبة للبداية وما هو المصدر الذى سوف تبدأ منه؟
اللغة الأولى
كما قلنا البرمجة هى لغة وسيطة بين الإنسان والكمبيوتر، البعض يقف كثيرًا قبل بداية التعلم فى مرحلة اختيار اللغة ويقرأ عن مميزات هذه اللغة وتلك لكن الجزء الذي سوف تعرفه لاحقًا هو أن لغتك الأولى ليست هى نهاية المطاف وأنك بشكل أو بآخر سوف تتعلم لغة ثانية أو أكثر. فى البداية اعتبر لغتك الأولى هي وسيلة لكى تتعرف على عالم البرمجة فقط. لكى تتعلم الأساسيات ويجب أن تركز في هذه المرحلة فى تعلم أساسيات البرمجة أو بشكل أعم التفكير المنطقي ففى النهاية البرمجة هى وسيلة لحل المشكلات عن طريق عمل موقع أو برنامج فأنت بشكل ما بتحل مشكلة ما. لا تقف كثيرا أمام أختيار لغتك الأولى وإن كان اختيار لغتك الأولى لن يخرج عن أحد السبع لغات التالية:
- (Python – بايثون) – ( JavaScript – جافا سكربت) – (Ruby – روبى) – (Java – جافا)
- (Swift – سويفت) – ( C# – سى شارب) – ( C++ – سى بلس بلس)
أنصحك أن تبحث عن كل لغة بشكل منفرد وتقرأ عن استخدامتها وتقرر ما هو المناسب لك لكن بشكل شخصي أنا أنصحك بتعلم لغة بايثون أو لغة جافا سكربت في البداية وهذا لسهولتهما. فسهل أن تبدأ تتعلمهما وتفهمهما وأيضًا لأهميتهما، كما أن لغتك الأولى سوف تسهل عليك كثيرًا دراسة أى لغة تريدها فيما بعد فأيا كان اختيارك فأنت في مرحلة البداية مهتم فقط بتعلم الأساسيات وبايثون أو جافا سكربت أو غيرهم طريقك لتعلم الأساسيات.
مصادر التعلم
مصادر تعلم البرمجة حاليًّا كثيرة ومتعددة، فكورسات البرمجة سوف تجدها فى أي موقع تعليمي أو حتى على اليوتيوب. تنوع المصادر قد يكون ميزة لكنه في أحيان كثيرة يكون عيبًا ومشكلة –مشكلة الاختيار– فأنت تفترض أنك يجب أن تختار أفضل مصدر لكي لا تضيع وقتك فبالتالي أنت تضيع الكثير من الوقت فى مرحلة الاختيار فقط، أنا فعلت هذا وأتمنى ألا تفعل مثلي وأيضا فعلت الأسوأ أننى تعلمت نفس اللغه وكانت بايثون (نفس المنهج الخاص بالمبتدئين) من (3) مصادر مختلفة. لا أنكر أن التكرار قد يكون مفيدًا أحيانًا لكن هناك اختيارات أفضل لاستثمار وقتك في تعلم البرمجة بدلًا من تكرار ما تعرفه بالفعل.
الآن أجدك تتساءل فى ملل، ما هي المصادر التى تنصح بها؟ أفضل المصادر المجانية هي:
Codecademy – Coursera – edX – freecodecamp
إذا كنت تريد أن تتعرف على البرمجة بشكل بسيط تفاعلي بدون التسجيل في كورس فنصيحتي لك هي موقع كود كاديمي أو موقع فري كود كامب. الموقعان يعلمانك البرمجة بطريقة تفاعلية بسيطة. الموقع يقدم بعض التعليمات، كيف تكتب كودًا برمجيًّا والتى إذا اتبعتها بشكل صحيح تنتقل للدرس التالى. هذا ممتاز فى البداية أو إذا رغبت في تعلم بعض الأساسيات أو التعرف على لغة ما.
وإذا كنت تريد دراسة البرمجة بشكل أعمق فأنصحك بكورسيرا أو آي دي إكس. لقد جربت بالفعل كورس فى موقع كورسيرا عن لغة البايثون وكان مفيدًا ومميزًا جدًّا، وإذا كان باستطاعتك صرف بعض النقود القليلة فى سبيل التعلم فأنصحك بتصفح كورسات البرمجة (المدفوعة) على موقع Udemy فهناك الكثير من الكورسات المميزة بالفعل وقد درست لغة الجافا سكربت عن طريق أحد الكورسات المدفوعة وكان ذا فائدة كبيرة لي.
الآن أنت حددت اللغة والمصدر واخترت المسار التعليمي بالفعل وبدأت، وبعد ساعات من التركيز والدراسة أنهيته. مبروك أنت انتهيت من مرحلة التعلم لكن ما يجب عليك فعله الآن؟ هل أصبحت الآن مبرمجًا؟ الإجابة هي نعم ولا؟
مرحلة البناء
التدريب
تعلم الأساسيات أسهل كثيرا من بناء شيء ما بنفسك، في مرحلة البداية هناك معلم يعلمك ما الذى يجب عليك فعله، كيف تكتب هذا أو ذاك، كيف تحل هذه المشكلة عن طريق البرمجة، لكن بعد أن تنتهي من مرحلة البداية وتجد نفسك مطالب بأن تبني شيئا (موقعًا أو برنامجًا) بنفسك فتجد نفسك تائهًا ومحتارًا وتعتقد أنك نسيت كل شيء وهو إحساس طبيعي وكأنك اصطدمت بحائط لا تستطيع تجاوزه. مرحلة البناء هي أهم مرحلة في طريق تعلم البرمجة، البرمجة في الأساس وسيلة الإنسان فى حل مشكلة ما عن طريق كتابة كود لعمل برنامج أو موقع.
بدون البناء لا يمكن أن تصبح مبرمجًا ولا يمكن أن تستمر فى مرحلة تعلم الأساسيات أطول من اللازم. نصيحتي هنا أن تبدأ التدريب وأنت فى مرحلة التعلم فعندما تتعلم أي شيء حاول أن تطبقه وتصنع شيئًا بسيطًا جدًّا، لن يطلب منك أحد أن تصنع فيس بوك آخر لكن يمكن أن تعمل برنامج يتكون من أسطر بسيطة للتدريب، موقع كود كاديمي ممتاز لهذه المهمه فهو يعطيك بعض التحديات التي يجب أن تتخطاها عن طريق كتابة أسطر برمجية بسيطة إذا أردت الوصول للدرس التالي وهناك أيضًا موقع (codingame) الذى يعطيك تحديات برمجية فى هيئة ألعاب.
بشكل عام يكفي ان تكتب فى جوجل (programming practice) وسوف تجد العديد والعديد من المواقع التى تجعلك تفكر وتتحدى قدراتك وتحل مشكلات بسيطة.
ابنِ شيئًا تحبه
بعد مرحلة التعلم والتدريب على أي شيء تتعلمه تأتي مرحلة البناء الحقيقى، ابن شيئًا يجعلك متحمسًا لتكملته والانتهاء منه سواء كان برنامج للكمبيوتر أو المحمول أو موقع أونلاين وليس المطلوب مشروعًا كبيرًا، فقط مشروع صغير شخصي كموقع شخصي أو برنامج له مهام محدودة. هذه المرحلة اصعب مرحلة فى طريقك لتعلم البرمجة. سوف تجد نفسك في كثير من الأحيان لا تعرف ما يجب عليك فعله أو ما هو الكود المناسب لما تريد فعله. لا تقلق هذا طبيعي ومنطقي لن تعرف كل شيء بمجرد حصولك على كورس. مرحلة البناء هي مكملة لمرحلة التعلم وضرورية جدًّا. كل ما عليك فعله هو التخطيط لما تريد فعله وكتابة ما تريد بناءه بشكل واضح على ورقه بيضاء. خطط لكل شيء حتى التفاصيل لكن لا تجعلها معقدة أو كثيرة فهذا أول شيء تبنيه. إذا اصطدمت بحائط الإبداع ووجدت نفسك لا تعرف كيفية فعل شيء ما أو الكود المناسب له فيكفي أن تبحث فى جوجل باللغة الانجليزية عن ما تريد فعله ولا تنسى أن تكتب لغة البرمجة فى نهاية السؤال، سوف تجد غالبًا الإجابة في موقع (Stack Overflow) وهو موقع موسوعي أشبه بويكيبديا لكن على هيئة سؤال وجواب وخاص بالبرمجة فقط. من الممكن أن تشترك مع شخص آخر (مبتدئ مثلك وله مسار تعليمي مثلك أو مشابه) فى بناء شيء معًا. هذا قد يكون أفضل لأنه يجعلك تتحمس أكثر ومن يعلم قد تبني فى يوم ما موقعًا عملاقًا عالميًّا.
نصائح عامة
أريد أن أكتب أكثر وأكثر وأن يصبح هذا المقال موسوعيًّا لكن قد طال الكلام بالفعل وإذا قبل المحررون فى موقع “زد” المقال فلهم كامل شكري لكن هناك نصائح سريعة أحب أن أذكرها لك ونحن فى نهاية رحلتنا معا يا صديقي.
- لن تعجب بأول عمل لك، هناك مقولة منسوبة لمؤسس لينكد إن ريد هوفمان يقول فيها: “إذا أعجبت بأول موقع لك فأنت تأخرت كثيرًا”. المعنى أنه وأنت مبتدئ فمن الطبيعي أنك سوف تعمل بعض الأخطاء وسوف تنسى الكثير من الأشياء ولن يكون منتجك النهائي مثاليًّا لأنك سوف تتعلم عن طريق البناء فلا تتأخر.
- المثالية عدو الإنجاز، هذه الجملة وحدها غيرت مفهومي بشكل كبير عما أفعله فى حياتى فكنت لا أعمل أي شيء لأني لا أريد الناتج النهائي إلا في شكله المثالي. المشكلة هنا أنك لن تستطيع فعل هذا لأنه لا وجود لهذه “المثالية” في أي شيء. ابنِ ما تستطيع بناءه وطوّره كل يوم ليصبح فى أفضل شكل ممكن لاحقًا.
- لا تيأس من وقوعك فى فجوة الإبداع. في مرحلة ما سوف تشعر أنك غير موهوب/ ملائم للبرمجة فهناك الكثير من المشاريع الفردية سواء مواقع أو برامج التى تعجبك لكنك غير قادر على عمل مثلها. وقتها تشعر بأحباط نوعا ما. هذا طبيعي فأنت مازلت مبتدئًا وما تراه من مشاريع حتى لو فردية فهي لأشخاص قضوا أعوامًا كثيرة فى البرمجة. لا تقارن بين موضع قدمك في البرمجة وموضع قدمهم بل قارن موضع قدمك اليوم بموضع قدمك أمس وتقدم ولو بشكل بسيط يوميًّا.
- أنت دائمًا سوف تتعلم، البرمجة تتحدث يوميًّا، هذا محيط من التحديثات اليومية وليس علم ثابت تدرسه مرة وانتهى. سوف تتعلم دائمًا حتى بعد مشروعك رقم مائة، إذا توقفت عن التعلم ومعرفة ما الجديد فلن تواكب البرمجة.
طريق تعلم البرمجة صعب ومستمر لكنه طريق المستقبل فلا تتوقف أو تحبط. استمر فى التعلم يوميًّا ولو بمقدار بسيط و سوف تصل إلى هدفك.
إليك أيضًا
(5) تطبيقات مهمة تسهل عليك تعلم البرمجة
add تابِعني remove_red_eye 2,272
اذا كنت مهتمًا بتعلم البرمجة فأهلًا بك في هذا المقال
link https://ziid.net/?p=67979