دليلك للتغلب على العقبات الشائعة في تعلم البرمجة

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

مشكلة كثرة الأسئلة

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

هناك أشخاص يقفون حرفيًا عند مرحلة الأسئلة. قد يبدأ صديقان معًا في المجال، أحدهما يطرح بضعة أسئلة ثم يبدأ، والآخر يستمر في السؤال فقط، منتظرًا أن يجمع إجابات لكل أسئلته ليبدأ. ستجد أن الشخص الأول الذي بدأ قد تعلم والتحق بشركة للعمل بها، بينما لا تزال أنت في مرحلة الأسئلة. توقف عن السؤال وابدأ (Stop Asking and Start). أرجوك، ابدأ ودع الأسئلة لوقت لاحق، سيحدث هذا فارقًا كبيرًا معك وستُجاب أسئلتك.

مشكلة خارطة الطريق المثالية (Perfect Roadmap)

يدخل بعض الأشخاص مجالًا جديدًا عليهم، مثل البرمجة، ويريدون أن يتعلموا. يخبرهم الناس بوجود خارطة طريق للبدء بها. لكنهم عندما يطلعون على خارطة الطريق، يجدون بها ما يعتقدون أنها أخطاء:

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

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

يقول الدكتور إيهاب مسلم، مع كل التقدير له:

ابدأ وإن لم تكن كل الأمور مكتملة. ليس من الضروري أن تبدأ وكل شيء مثالي. يمكنك أن تبدأ وهناك أمور تنقصك، ولكن بعد أن تبدأ، ستكمل كل هذه الأمور، وستسير الأمور على ما يرام.

مشكلة المعلومات الكثيرة

عندما تختار مجالًا معينًا لتتعلمه، ستواجه كمًا هائلاً من المواد التعليمية، وكل مادة بها أقسام كثيرة جدًا. من الطبيعي أن تصاب بالإحباط لأنك تنظر إلى كل هذه المعلومات دفعة واحدة في أول يوم لك في التعلم، وهذا أكبر خطأ.

الصواب هو أن تأخذ هذه المشكلة الكبيرة وتقسمها إلى مجموعة مشاكل صغيرة، ثم تقسم كل مشكلة صغيرة إلى مجموعة مهام. بل إن المهمة الواحدة يمكن تقسيمها إلى مهام أصغر. اجعل كل شيء مقسمًا إلى أجزاء أصغر لتتمكن من معالجتها وإنهائها والانتقال إلى ما بعدها. هذا مبدأ يُعرف باسم “فرّق تسُد” (Divide and Conquer)، وهو مبدأ مهم جدًا ستقابله كثيرًا في مسيرتك البرمجية، وخصوصًا في حل المشكلات.

على سبيل المثال، إذا كنت أتعلم مجال تطوير الواجهات الأمامية (Front-end)، لدي مجموعة كبيرة من المواد. أبدأ بأول مادة، ولتكن HTML، وأقسمها إلى أقسام. أدرس كل قسم على حدة. إذا كان القسم مليئًا بالمعلومات وكبيرًا عليّ، لا بأس، أقسمه هو الآخر إلى أقسام أصغر. أنهي قسمًا تلو الآخر وأربطها ببعضها، ثم أنتقل إلى القسم التالي حتى تنتهي المادة التعليمية بأكملها.

أقولها لك بوضوح: لو وضعت كل المواد أمام عينيك من أول يوم ورأيت كل هذا الكم (HTML, CSS, JavaScript, Task Runners, Tools, Unit Testing, React, Frameworks)، ستصاب بالإحباط حتمًا. أنت بحاجة للتركيز على المرحلة التي أنت فيها حاليًا وإنهائها، ثم الانتقال إلى التالية. انسَ المواد التي لا تدرسها الآن وكأنها غير موجودة لتركز في المادة الحالية وتنجز مهمتك، ثم انتقل إلى ما بعدها.

مشكلة المقارنة مع الآخرين

هذه مشكلة عامة ستواجهك في كل مراحل حياتك. لقد بدأت تتعلم مادة في مسار تعليمي، ويأتي صديقك ليقول لك إنه يتعلم CSS الآن وقد أنهى HTML، بينما أنت لا تزال في بداية HTML. لا تقارن نفسك به. إذا أردت أن تقارن، فقارن نفسك بنفسك. أي مقارنة أخرى هي مقارنة فاشلة ستؤذيك وتسبب لك الإحباط.

أنت لا تعرف كم ساعة يذاكر الشخص الذي يسبقك؛ قد يكون يذاكر 16 ساعة وأنت تذاكر ساعتين في اليوم. قد تكون لديه خبرة سابقة كبيرة وأنت بدأت للتو. من الطبيعي أن يسبقك. قد يكون استيعابه أعلى منك، فطبيعي أن يسبقك. قد يكون قد اتخذ المذاكرة مسألة حياة أو موت، بينما أنت تعتبرها شيئًا تكميليًا، فسيسبقك أيضًا. هناك أسباب كثيرة جدًا تجعله يسبقك، فلا داعي للمقارنة.

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

المقارنة الوحيدة السليمة هي أن تقارن نفسك بنفسك لترى مدى تقدمك، وتكتشف الأخطاء التي وقعت فيها وتحاول إصلاحها.

مشكلة عدد ساعات المذاكرة

سألني شخص يريد تعلم البرمجة: “كم ساعة يجب أن أذاكر في اليوم؟” قلت له إنه لا يوجد عدد ساعات مناسب للجميع. سألته: “كم ساعة يمكنك توفيرها يوميًا؟” قال: “يمكنني توفير ساعة مذاكرة يوميًا، ويوم الجمعة ساعتين أو ثلاث”.

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

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

تخيل معي مرور سنة. بالتأكيد بعد سنة، الساعة التي تقضيها في اللعب على الهاتف لن تجلب لك وظيفة. لكن هناك احتمال، ولو ضئيل، أنك لو كنت تذاكر ساعة يوميًا، قد تحصل على وظيفة بعد سنة.

دعني أحكي لك عن حالة أعرفها لشخص كان يذاكر نصف ساعة فقط في اليوم، ويعمل في وظيفة صعبة جدًا براتب ضئيل جدًا. كان يمكنه أن يلغي هذه النصف ساعة، لكنه كان لديه أمل في أن مجال البرمجة قد يجلب له دخلاً أفضل. بعد فترة، كان أول توفيق له أن النصف ساعة أصبحت ساعة كاملة من المذاكرة. كان هذا نجاحًا بالنسبة له، وكان سعيدًا وممتنًا لأنه وجد ساعة ليذاكرها. بعد عدة أشهر، حالفه الحظ للمرة الثانية وجاءه عميل يعطيه مالًا قليلًا، لكنه مال. بدأت الأمور تؤتي ثمارها. كان سعيدًا لأنه لم يكن يتخيل أن المال سيأتي.

عندما بدأ يحصل على دخل، بدأ يسحب الساعات من وظيفته الصعبة ويوجهها للمذاكرة، محققًا نوعًا من التوازن. كان يأخذ ساعة أو ساعتين من وظيفته الصعبة ليذاكر، وبالطبع كان يُخصم من راتبه، لكن المال الذي كان يأتيه من البرمجة كان أحيانًا يعادل ما يُخصم، وأحيانًا أكثر أو أقل. لكنه كان سعيدًا لأنه يكسب من المجال الذي يحبه.

إلى أن جاءت فترة أصبح يعمل في مجال البرمجة بنفس الراتب الذي كان يتقاضاه في وظيفته الصعبة. قد تقول إنه لم يكسب شيئًا، لكنه في الحقيقة حقق مكاسب كثيرة:

  1. أصبح يعمل عدد ساعات أقل بنفس الراتب، في وظيفة أسهل، ومن منزله، ولديه الآن ساعات إضافية للمذاكرة.
  2. أصبح يكسب من مجال يحبه ويريد أن يتطور فيه، على عكس المجال الآخر الذي لن يتقدم فيه.

عندما انتقلتُ من مجال لا أحبه إلى البرمجة بنفس الراتب، كان هذا أكبر نجاح شعرت به. قد لا يزيد راتبك، لكنك تعمل في الوظيفة التي تحبها والتي يمكنك أن تتطور فيها. فلا تدع أحدًا يحبطك بشأن عدد الساعات التي تذاكرها، لأنك لا تعرف كيف ستكون هذه الساعات في المستقبل.

مشكلة الخوف من الخطأ

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

من الطبيعي جدًا أن تخطئ. هناك كتاب يتحدث عن هذه النقطة بعنوان “متعة عدم الكمال” (The Art of Imperfection) لديمون زاهاريادس، يحكي فيه عن الأشخاص غير المعتادين على الخطأ، وكيف أنهم يتجنبون فعل أي شيء يشكون للحظة أنهم قد يخطئون فيه.

أخطئ، لا بأس في ذلك. أنا لا أقول لك أن تنجز عملك بطريقة سيئة وتخربه، بل أعني أن تعوّد نفسك على فكرة أن الخطأ أمر وارد. لا مشكلة في أن تكون مخطئًا. بل على العكس، الشخص الذي لم يخطئ من قبل، لو اعتاد على الخطأ مرة أو مرتين، عندما يدخل في تجربة جديدة ويشعر أنه سيخطئ، سيقدم عليها لأنه أخطأ من قبل.

لذا يا صديقي، من الطبيعي جدًا أن تخطئ وأنت تتعلم البرمجة. إذا أعطاك من يعلمك مسألة وحللتها بشكل خاطئ، لا تخجل. أخطئ لتتعلم. لا مشكلة في ذلك على الإطلاق. قل “لقد أخطأت” ليصحح لك الآخرون خطأك ويعلموك معلومة جديدة. من يعلمك يخطئ، ولو أمضى 20 عامًا أخرى في المجال فسيظل يخطئ. فلا تخجل، فالأمر بسيط جدًا، ولا تخف من قصة الخطأ هذه أبدًا.

مشكلة الطريق المختصر

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

لا يوجد شيء اسمه “أسرار كونية” تجعلك تتعلم البرمجة بسرعة. هناك مواد تعليمية تحتاج وقتًا معينًا لتعلمها. إذا اختصرت لك من هذا الوقت، فهذا يعني أنني حذفت لك مواد تعليمية.

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

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

مشكلة التعلم بمفردك

عندما تتعلم بمفردك، فأنت في تحدٍ كبير. من المفترض أن تحصّل مردودًا معينًا من مذاكرتك، وهذا المردود سيزيد بشكل كبير لو كان معك أحد في دائرتك. ادخل مجموعات البرمجة على فيسبوك، أو مواقع مثل Stack Overflow وReddit وGitHub، وحاول تبادل الخبرات مع الآخرين لتسهيل الأمور على نفسك والتطور بسرعة.

أن تتعلم البرمجة بمفردك ليس مهارة. لن يأتي يوم تقول فيه: “لقد تعلمت البرمجة وحدي ولم يساعدني أحد”، فهذا لن يزيد من راتبك ولن يُقال عنك بطل. مستواك يجب أن يرتفع بأي وسيلة ممكنة. لا توجد مشكلة في أن تسأل شخصًا أو تتبادل خبراتك مع مليون شخص. لن يسألك أحد كيف حصلت على خبراتك، بل سيسألونك ماذا تعرف أن تفعل.

لا يوجد ما يدعو للخجل في أن تطلب من شخص تقييم عملك. هذا لا يقلل من مستواك. البعض يخجل ويفكر: “من هو ليقيمني؟ أنا أفضل منه”. فيظل منطويًا على نفسه. هذه ليست مهارة يا صديقي. أنت تحتاج إلى أناس في دائرتك ليساعدوك على التطور. لذا، انضم إلى الناس الذين يتحدثون نفس لغتك ليرتفع مستواك.

مشكلة التوقعات غير الواقعية السريعة

أنا في بداية مسيرتي في تعلم البرمجة وأريد فورًا وبسرعة شديدة أن أنشئ موقعًا مثل فيسبوك. إذا فكرت هكذا، فستدخل في سباق لن تتمكن فيه من التوقف للحظة عند أي مشكلة تواجهك. لن تجد وقتًا لتفهم ما فاتك وتغطيه وتتأكد أنك فعلته بالشكل السليم، لأنك في سباق.

لكن لو أنجزت مشاريع صغيرة في بداية مسيرتك، حتى لو كانت آلة حاسبة، فلن يسخر منك أحد. هناك ملايين الأشخاص الذين يتعلمون البرمجة ولم يصنعوا حتى الآلة الحاسبة التي لا تعجبك.

يمكنك أن تنجز مشاريع بحجم فيسبوك في فترة لاحقة من حياتك، لا مشكلة في ذلك. لكنك الآن لا تزال تتعلم. تحتاج إلى إنجاز مشاريع، وعندما تنهي مشروعًا، انظر هل أنجزته بالشكل الصحيح؟ هل اتبعت أفضل الممارسات؟ ماذا تعلمت منه؟ ما الخبرة التي اكتسبتها؟ بعد أن تكون راضيًا عنه، يمكنك الانتقال إلى المشروع التالي. ومع كل مشروع جديد، ارفع مستوى الصعوبة والإمكانيات قليلًا. هكذا تتقدم.

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

مشكلة عدم وجود دافع أو حافز

الدافع هو أحد أهم الأشياء في حياتك. بعد التغلب على كل المشاكل السابقة، قد لا يكون لديك دافع أصلًا لتعلم البرمجة. لماذا تتعلم البرمجة؟ إذا كانت إجابتك: “صديقي طلب مني أن أتعلمها”، فهذا ليس دافعًا كافيًا.

يجب أن يكون لديك هدف، حتى لو كان بسيطًا، مثل: “هناك شركة في منطقتي أتمنى أن أعمل بها”. هذا هو دافعك. إذا لم يكن الدافع موجودًا، ستسقط عند أول مشكلة أو تحدٍ ولن تكمل. ما الذي يجبرك على الاستمرار؟ الدافع. الدافع يجعلك تواجه المشكلة وتحاول حلها لأن لديك هدفًا تريد الوصول إليه.

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

عندما يكون لديك دافع جيد وحافز قوي، ستتمكن من الاستمرار نفسيًا. وجود الدافع والحافز معًا يحدثان فارقًا كبيرًا في مسيرتك.

اقتراح: اعمل على فكرة مشروعك الخاص

هذا ليس مشكلة، بل اقتراح سيحدث فارقًا في مسيرتك التعليمية. أن يكون لديك فكرة تعمل عليها من أول يوم. فكرة تفيدك أو تفيد أحدًا من أفراد أسرتك.

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

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

  1. البداية: ابدأ بكتابة صفحات الموقع وما ستحتويه.
  2. تعلم HTML: ابدأ في إنشاء هياكل الصفحات. كلما تعلمت شيئًا جديدًا، أضفه إلى مشروعك.
  3. تعلم CSS: بعد إتقانها، يمكنك إضافة الألوان والخطوط والصور، وسيبدأ شكل الموقع في الظهور.
  4. تعلم JavaScript: ابدأ في إضافة التفاعلية للموقع.
  5. تعلم البرمجة الخلفية وقواعد البيانات: مع تقدمك، ستتعلم كيف تنشئ قاعدة بيانات ولوحة تحكم، ويصبح لديك موقع كامل يمكن للمستخدمين إضافة الكتب ومعلوماتها.

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

هذه فرصة عظيمة لتتعلم، وقد يكون من المفيد أن تحجز نطاقًا (domain) واستضافة لرفع مشروعك عليه ليكون متاحًا للجميع. هذه التجربة ستكون مفيدة جدًا لك.

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

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

شارك المقال

أحدث المقالات

CONNECTED
ONLINE: ...
SECURE
00:00:00